Passed
Push — master ( 73997f...b8272a )
by Felipe
02:04
created

RequestHandlerClient::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 2
dl 0
loc 6
rs 10
c 0
b 0
f 0
1
<?php declare(strict_types=1);
2
/*
3
 * This file is part of coisa/http.
4
 *
5
 * (c) Felipe Sayão Lobato Abreu <[email protected]>
6
 *
7
 * This source file is subject to the license that is bundled
8
 * with this source code in the file LICENSE.
9
 */
10
11
namespace CoiSA\Http\Client;
12
13
use CoiSA\Http\Message\ServerRequestFactory;
14
use Psr\Http\Client\ClientInterface;
15
use Psr\Http\Message\RequestInterface;
16
use Psr\Http\Message\ResponseInterface;
17
use Psr\Http\Message\ServerRequestFactoryInterface;
18
use Psr\Http\Message\ServerRequestInterface;
19
use Psr\Http\Server\RequestHandlerInterface;
20
21
/**
22
 * Class RequestHandlerClient
23
 *
24
 * @package CoiSA\Http
25
 */
26
final class RequestHandlerClient implements ClientInterface
27
{
28
    /**
29
     * @var RequestHandlerInterface
30
     */
31
    private $handler;
32
33
    /**
34
     * @var ServerRequestFactoryInterface
35
     */
36
    private $serverRequestFactory;
37
38
    /**
39
     * RequestHandlerClient constructor.
40
     *
41
     * @param RequestHandlerInterface            $defaultHandler
42
     * @param null|ServerRequestFactoryInterface $serverRequestFactory
43
     */
44
    public function __construct(
45
        RequestHandlerInterface $defaultHandler,
46
        ServerRequestFactoryInterface $serverRequestFactory = null
47
    ) {
48
        $this->handler              = $defaultHandler;
49
        $this->serverRequestFactory = $serverRequestFactory ?? new ServerRequestFactory();
50
    }
51
52
    /**
53
     * @param RequestInterface $request
54
     *
55
     * @return ResponseInterface
56
     */
57
    public function sendRequest(RequestInterface $request): ResponseInterface
58
    {
59
        if (!$request instanceof ServerRequestInterface) {
60
            $request = $this->serverRequestFactory->createServerRequest(
61
                $request->getMethod(),
62
                $request->getUri(),
63
                $_SERVER
64
            );
65
        }
66
67
        return $this->handler->handle($request);
68
    }
69
}
70