46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace Negundo\Client;
 | |
| 
 | |
| use Laminas\Diactoros\Response\HtmlResponse;
 | |
| use Psr\Http\Message\ResponseInterface,
 | |
|     Psr\Http\Message\ServerRequestInterface,
 | |
|     Psr\Http\Server\MiddlewareInterface,
 | |
|     Psr\Http\Server\RequestHandlerInterface;
 | |
| 
 | |
| class NegundoMiddleware extends Handler implements MiddlewareInterface {
 | |
|     
 | |
|     protected ServerRequestInterface $request;
 | |
|     
 | |
|     public $registerExceptionHandler = false;
 | |
| 
 | |
|     public function process(ServerRequestInterface $request, RequestHandlerInterface $handler) : ResponseInterface
 | |
|     {
 | |
|         $this->request = $request;
 | |
| 
 | |
|         try {
 | |
|             $response = $handler->handle($request);
 | |
|         }
 | |
|         catch (\Throwable $ex)
 | |
|         {
 | |
|             $this->pushData($ex);
 | |
| 
 | |
|             if ( $this->callback ?? false ) {
 | |
|                 return call_user_func_array($this->callback, [ $ex, $request ] );
 | |
|             }
 | |
|             else {
 | |
|                 throw $ex;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         return $response ?? new HtmlResponse("...");
 | |
|     }
 | |
| 
 | |
|     public function handleException(\Throwable $ex) : array 
 | |
|     {
 | |
|         $server = isset($this->request) ? $this->request->getServerParams() : $_SERVER;
 | |
|         $body = isset($this->request) ? $this->request->getParsedBody() : $_POST;
 | |
| 
 | |
|         return $this->exceptionHandler->extractExceptionData($ex, $server, $body);
 | |
|     }
 | |
| } |