Completed
Push — master ( a130e0...04731c )
by
unknown
06:38
created

getResponseTransformerOptions()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 12
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 3

Importance

Changes 0
Metric Value
dl 0
loc 12
ccs 9
cts 9
cp 1
rs 9.4285
c 0
b 0
f 0
cc 3
eloc 7
nc 4
nop 1
crap 3
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
    /**
15
     * @param array $options
16
     * @return RestApiEventSubscriber
17
     */
18 2
    public static function create(array $options = [])
19
    {
20 2
        $options = self::getOptions($options);
21 2
        $requestTransformer = new RequestTransformer($options['serializer']);
22 2
        $responseModelFactory = new ResponseModelFactory($options['response_model']);
23 2
        $responseTransformer = new ResponseTransformer(
24 2
            $options['serializer'],
25 2
            $responseModelFactory,
26 2
            self::getResponseTransformerOptions($options)
27 2
        );
28
29 2
        return new RestApiEventSubscriber($options['request_matcher'], $requestTransformer, $responseTransformer);
30
    }
31
32
    /**
33
     * @param array $options
34
     * @return array
35
     */
36 2
    protected static function getOptions(array $options = [])
37
    {
38 2
        if (empty($options['path'])) {
39 2
            $options['path'] = '/api';
40 2
        }
41 2
        if (empty($options['serializer'])) {
42 2
            $options['serializer'] = new JsonSerializer();
43 2
        }
44 2
        if (empty($options['response_model'])) {
45 2
            $options['response_model'] = new ResponseModel();
46 2
        }
47 2
        if (empty($options['request_matcher'])) {
48 2
            $options['request_matcher'] =  new PathRequestMatcher($options['path']);
49 2
        }
50
51 2
        return $options;
52
    }
53
54
    /**
55
     * @param array $options
56
     * @return array
57
     */
58 2
    protected static function getResponseTransformerOptions(array $options = [])
59
    {
60 2
        $responseTransformerOptions = [];
61 2
        if (isset($options['debug'])) {
62 1
            $responseTransformerOptions['debug'] = $options['debug'];
63 1
        }
64 2
        if (isset($options['post_message_origin'])) {
65 1
            $responseTransformerOptions['post_message_origin'] = $options['post_message_origin'];
66 1
        }
67
68 2
        return $responseTransformerOptions;
69
    }
70
}
71