Passed
Pull Request — release/2.0.0 (#26)
by Yo
02:53 queued 58s
created

JsonRpcHttpEndpoint::httpOptions()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 14
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 1

Importance

Changes 0
Metric Value
eloc 7
dl 0
loc 14
ccs 8
cts 8
cp 1
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
crap 1
1
<?php
2
namespace Yoanm\SymfonyJsonRpcHttpServer\Endpoint;
3
4
use Symfony\Component\HttpFoundation\Request;
5
use Symfony\Component\HttpFoundation\Response;
6
use Yoanm\JsonRpcServer\Infra\Endpoint\JsonRpcEndpoint as SDKJsonRpcEndpoint;
7
8
/**
9
 * Class JsonRpcHttpEndpoint
10
 */
11
class JsonRpcHttpEndpoint
12
{
13
    /** @var SdkJsonRpcEndpoint */
14
    private $sdkEndpoint;
15
16
    /** @var string[] */
17
    private $allowedMethodList = [];
18
19
    /**
20
     * @param SDKJsonRpcEndpoint $sdkEndpoint
21
     */
22 2
    public function __construct(SDKJsonRpcEndpoint $sdkEndpoint)
23
    {
24 2
        $this->sdkEndpoint = $sdkEndpoint;
25 2
        $this->allowedMethodList = [Request::METHOD_POST, Request::METHOD_OPTIONS];
26 2
    }
27
28
    /**
29
     * @return Response
30
     */
31 1
    public function httpOptions() : Response
32
    {
33 1
        $response = new Response();
34 1
        $response->headers->set('Content-Type', 'application/json');
35
36
        // Set allowed http methods
37 1
        $response->headers->set('Allow', $this->allowedMethodList);
38 1
        $response->headers->set('Access-Control-Request-Method', $this->allowedMethodList);
39
40
        // Set allowed content type
41 1
        $response->headers->set('Accept', 'application/json');
42 1
        $response->headers->set('Access-Control-Allow-Headers', 'Content-Type');
43
44 1
        return $response;
45
    }
46
47
    /**
48
     * @param Request $request
49
     *
50
     * @return Response
51
     */
52 1
    public function httpPost(Request $request) : Response
53
    {
54 1
        $response = new Response();
55 1
        $response->headers->set('Content-Type', 'application/json');
56
57 1
        $response->setContent(
58 1
            $this->sdkEndpoint->index(
59 1
                $request->getContent()
60
            )
61
        );
62
63 1
        return $response;
64
    }
65
}
66