PsrRequestHandler   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 59
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 14
c 1
b 0
f 0
dl 0
loc 59
rs 10
wmc 3

2 Methods

Rating   Name   Duplication   Size   Complexity  
A handle() 0 16 2
A __construct() 0 7 1
1
<?php
2
3
/**
4
 * PsrRequestHandler.php
5
 *
6
 * A Psr7 Jaxon ajax request handler.
7
 *
8
 * @package jaxon-core
9
 * @author Thierry Feuzeu <[email protected]>
10
 * @copyright 2022 Thierry Feuzeu <[email protected]>
11
 * @license https://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License
12
 * @link https://github.com/jaxon-php/jaxon-core
13
 */
14
15
namespace Jaxon\Request\Handler\Psr;
16
17
use Jaxon\App\I18n\Translator;
18
use Jaxon\Di\Container;
19
use Jaxon\Exception\RequestException;
20
use Jaxon\Request\Handler\RequestHandler;
21
use Jaxon\Response\ResponseManager;
22
use Psr\Http\Message\ResponseInterface;
23
use Psr\Http\Message\ServerRequestInterface;
24
use Psr\Http\Server\RequestHandlerInterface;
25
26
class PsrRequestHandler implements RequestHandlerInterface
27
{
28
    /**
29
     * @var Container
30
     */
31
    private $di;
32
33
    /**
34
     * @var RequestHandler
35
     */
36
    private $xRequestHandler;
37
38
    /**
39
     * @var ResponseManager
40
     */
41
    private $xResponseManager;
42
43
    /**
44
     * @var Translator
45
     */
46
    private $xTranslator;
47
48
    /**
49
     * The constructor
50
     *
51
     * @param Container $di
52
     * @param RequestHandler $xRequestHandler
53
     * @param ResponseManager $xResponseManager
54
     * @param Translator $xTranslator
55
     */
56
    public function __construct(Container $di, RequestHandler $xRequestHandler,
57
        ResponseManager $xResponseManager, Translator $xTranslator)
58
    {
59
        $this->di = $di;
60
        $this->xRequestHandler = $xRequestHandler;
61
        $this->xResponseManager = $xResponseManager;
62
        $this->xTranslator = $xTranslator;
63
    }
64
65
    /**
66
     * @inheritDoc
67
     * @throws RequestException
68
     */
69
    public function handle(ServerRequestInterface $request): ResponseInterface
70
    {
71
        // Save the request in the container. This will override the default request,
72
        // and the other classes will get this request from there.
73
        $this->di->val(ServerRequestInterface::class, $request);
74
75
        if(!$this->xRequestHandler->canProcessRequest())
76
        {
77
            // Unable to find a plugin to process the request
78
            throw new RequestException($this->xTranslator->trans('errors.request.plugin'));
79
        }
80
81
        // Process the request
82
        $this->xRequestHandler->processRequest();
83
        // Return a Psr7 response
84
        return $this->xResponseManager->getResponse()->toPsr();
85
    }
86
}
87