Completed
Push — master ( 15f141...d8571c )
by
unknown
04:34
created

RestApiEventSubscriberFactory::create()   B

Complexity

Conditions 4
Paths 8

Size

Total Lines 24
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 15
CRAP Score 4

Importance

Changes 0
Metric Value
dl 0
loc 24
ccs 15
cts 15
cp 1
rs 8.6845
c 0
b 0
f 0
cc 4
eloc 17
nc 8
nop 5
crap 4
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\Model\ResponseModelInterface;
8
use MediaMonks\RestApi\Request\RequestMatcher;
9
use MediaMonks\RestApi\Request\RequestTransformer;
10
use MediaMonks\RestApi\Response\ResponseTransformer;
11
use MediaMonks\RestApi\Serializer\JsonSerializer;
12
use MediaMonks\RestApi\Serializer\SerializerInterface;
13
14
class RestApiEventSubscriberFactory
15
{
16
    /**
17
     * @param array $whitelist
18
     * @param array $blacklist
19
     * @param SerializerInterface|null $serializer
20
     * @param ResponseModelInterface|null $responseModel
21
     * @param array $options
22
     * @return RestApiEventSubscriber
23
     */
24 1
    public static function create(
25
        array $whitelist = [],
26
        array $blacklist = [],
27
        SerializerInterface $serializer = null,
28
        ResponseModelInterface $responseModel = null,
29
        $options = []
30
    ) {
31 1
        if (empty($whitelist)) {
32 1
            $whitelist = ['~^/api/$~', '~^/api~'];
33 1
        }
34 1
        if (empty($serializer)) {
35 1
            $serializer = new JsonSerializer();
36 1
        }
37 1
        if (empty($responseModel)) {
38 1
            $responseModel = new ResponseModel();
39 1
        }
40
41 1
        $requestMatcher = new RequestMatcher($whitelist, $blacklist);
42 1
        $requestTransformer = new RequestTransformer($serializer);
43 1
        $responseModelFactory = new ResponseModelFactory($responseModel);
44 1
        $responseTransformer = new ResponseTransformer($serializer, $responseModelFactory, $options);
45
46 1
        return new RestApiEventSubscriber($requestMatcher, $requestTransformer, $responseTransformer);
47
    }
48
}
49