Completed
Push — master ( b7cea0...6248c9 )
by Pavel
02:17
created

RestResponseFactory::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
c 0
b 0
f 0
nc 1
nop 1
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 1
rs 10
1
<?php namespace Pz\Doctrine\Rest;
2
3
use League\Fractal\Resource\ResourceInterface;
4
use Pz\Doctrine\Rest\Contracts\RestRequestContract;
5
use Pz\Doctrine\Rest\Fractal\JsonApiSerializer;
6
use Pz\Doctrine\Rest\Fractal\Manager;
7
use Pz\Doctrine\Rest\Fractal\ScopeFactory;
8
9
class RestResponseFactory
10
{
11
    /**
12
     * @var int
13
     */
14
    static public $jsonEncodingOptions;
15
16
    /**
17
     * @param RestRequestContract    $request
18
     * @param ResourceInterface|null $resource
19
     * @param int                    $httStatus
20
     * @param array                  $headers
21
     *
22
     * @return RestResponse
23
     */
24 19
    static public function resource(
25
        RestRequestContract $request,
26
        ResourceInterface   $resource = null,
27
        int                 $httStatus = RestResponse::HTTP_OK,
28
        array               $headers = []
29
    ) {
30 19
        $data = $resource ? static::fractal($request)->createData($resource)->toArray() : null;
31
32 19
        $response = RestResponse::create($data, $httStatus, $headers);
33
34 19
        if (static::$jsonEncodingOptions) {
35
            $response->setEncodingOptions(static::$jsonEncodingOptions);
36
        }
37
38 19
        return $response;
39
    }
40
41
    /**
42
     * @return RestResponse
43
     */
44 4
    static public function noContent()
45
    {
46 4
        return RestResponse::noContent();
47
    }
48
49
    /**
50
     * Return configured fractal by request format.
51
     *
52
     * @param RestRequestContract $request
53
     *
54
     * @return Manager
55
     */
56 19
    static protected function fractal(RestRequestContract $request)
57
    {
58 19
        $fractal = new Manager(new ScopeFactory(), $request);
59 19
        $fractal->setSerializer(new JsonApiSerializer($request));
60
61 19
        if ($includes = $request->getInclude()) {
62 19
            $fractal->parseIncludes($includes);
63
        }
64
65 19
        if ($excludes = $request->getExclude()) {
66 1
            $fractal->parseExcludes($excludes);
67
        }
68
69 19
        if ($fields = $request->getFields()) {
70 5
            $fractal->parseFieldsets($fields);
71
        }
72
73 19
        return $fractal;
74
    }
75
}
76