RestApiEventSubscriberFactory::getOptions()   A
last analyzed

Complexity

Conditions 5
Paths 16

Size

Total Lines 19
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 11
CRAP Score 5

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 5
eloc 9
c 1
b 0
f 0
nc 16
nop 1
dl 0
loc 19
ccs 11
cts 11
cp 1
crap 5
rs 9.6111
1
<?php
2
3
namespace MediaMonks\RestApi\EventSubscriber;
4
5
use MediaMonks\RestApi\Model\ResponseModel;
6
use MediaMonks\RestApi\Model\ResponseModelFactory;
7
use MediaMonks\RestApi\Request\PathRequestMatcher;
8
use MediaMonks\RestApi\Request\RequestTransformer;
9
use MediaMonks\RestApi\Response\ResponseTransformer;
10
use MediaMonks\RestApi\Serializer\JsonSerializer;
11
12
class RestApiEventSubscriberFactory
13
{
14
    public static function create(array $options = []): RestApiEventSubscriber
15
    {
16
        $options = self::getOptions($options);
17
        $requestTransformer = new RequestTransformer($options['serializer']);
18 2
        $responseModelFactory = new ResponseModelFactory($options['response_model']);
19
        $responseTransformer = new ResponseTransformer(
20 2
            $options['serializer'],
21 2
            $responseModelFactory,
22 2
            self::getResponseTransformerOptions($options)
23 2
        );
24 2
25 2
        return new RestApiEventSubscriber($options['request_matcher'], $requestTransformer, $responseTransformer);
26 2
    }
27 2
28
    protected static function getOptions(array $options = []): array
29 2
    {
30
        if (empty($options['path'])) {
31
            $options['path'] = '/api';
32
        }
33
34
        if (empty($options['serializer'])) {
35
            $options['serializer'] = new JsonSerializer();
36 2
        }
37
38 2
        if (empty($options['response_model'])) {
39 2
            $options['response_model'] = new ResponseModel();
40 2
        }
41 2
42 2
        if (empty($options['request_matcher'])) {
43 2
            $options['request_matcher'] = new PathRequestMatcher($options['path']);
44 2
        }
45 2
46 2
        return $options;
47 2
    }
48 2
49 2
    protected static function getResponseTransformerOptions(array $options = []): array
50
    {
51 2
        $responseTransformerOptions = [];
52
        if (isset($options['debug'])) {
53
            $responseTransformerOptions['debug'] = $options['debug'];
54
        }
55
        if (isset($options['post_message_origin'])) {
56
            $responseTransformerOptions['post_message_origin'] = $options['post_message_origin'];
57
        }
58 2
59
        return $responseTransformerOptions;
60 2
    }
61
}
62