PHP Classes

File: src/Request/Handler/Psr/PsrRequestHandler.php

Recommend this page to a friend!
  Packages of Thierry Feuzeu   Jaxon   src/Request/Handler/Psr/PsrRequestHandler.php   Download  
File: src/Request/Handler/Psr/PsrRequestHandler.php
Role: Class source
Content type: text/plain
Description: Class source
Class: Jaxon
Call PHP classes from JavaScript using AJAX
Author: By
Last change:
Date: 4 months ago
Size: 2,359 bytes
 

Contents

Class file image Download
<?php

/**
 * PsrRequestHandler.php
 *
 * A Psr7 Jaxon ajax request handler.
 *
 * @package jaxon-core
 * @author Thierry Feuzeu <thierry.feuzeu@gmail.com>
 * @copyright 2022 Thierry Feuzeu <thierry.feuzeu@gmail.com>
 * @license https://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License
 * @link https://github.com/jaxon-php/jaxon-core
 */

namespace Jaxon\Request\Handler\Psr;

use
Jaxon\App\I18n\Translator;
use
Jaxon\Di\Container;
use
Jaxon\Exception\RequestException;
use
Jaxon\Request\Handler\RequestHandler;
use
Jaxon\Response\Manager\ResponseManager;
use
Psr\Http\Message\ResponseInterface;
use
Psr\Http\Message\ServerRequestInterface;
use
Psr\Http\Server\RequestHandlerInterface;

class
PsrRequestHandler implements RequestHandlerInterface
{
   
/**
     * @var Container
     */
   
private $di;

   
/**
     * @var RequestHandler
     */
   
private $xRequestHandler;

   
/**
     * @var ResponseManager
     */
   
private $xResponseManager;

   
/**
     * @var Translator
     */
   
private $xTranslator;

   
/**
     * The constructor
     *
     * @param Container $di
     * @param RequestHandler $xRequestHandler
     * @param ResponseManager $xResponseManager
     * @param Translator $xTranslator
     */
   
public function __construct(Container $di, RequestHandler $xRequestHandler,
       
ResponseManager $xResponseManager, Translator $xTranslator)
    {
       
$this->di = $di;
       
$this->xRequestHandler = $xRequestHandler;
       
$this->xResponseManager = $xResponseManager;
       
$this->xTranslator = $xTranslator;
    }

   
/**
     * @inheritDoc
     * @throws RequestException
     */
   
public function handle(ServerRequestInterface $request): ResponseInterface
   
{
       
// Save the request in the container. This will override the default request,
        // and the other classes will get this request from there.
       
$this->di->val(ServerRequestInterface::class, $request);

        if(!
$this->xRequestHandler->canProcessRequest())
        {
           
// Unable to find a plugin to process the request
           
throw new RequestException($this->xTranslator->trans('errors.request.plugin'));
        }

       
// Process the request
       
$this->xRequestHandler->processRequest();
       
// Return a Psr7 response
       
return $this->xResponseManager->getResponse()->toPsr();
    }
}