RestResponseFactory   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 59
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 15
c 1
b 0
f 0
dl 0
loc 59
ccs 17
cts 17
cp 1
rs 10
wmc 7

3 Methods

Rating   Name   Duplication   Size   Complexity  
A noContent() 0 3 1
A resource() 0 13 2
A fractal() 0 18 4
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
use Symfony\Component\HttpFoundation\JsonResponse;
9
10
class RestResponseFactory
11
{
12
    /**
13
     * @param RestRequestContract    $request
14
     * @param ResourceInterface|null $resource
15
     * @param int                    $httStatus
16
     * @param array                  $headers
17
     * @param int                    $jsonOptions
18
     *
19
     * @return RestResponse
20
     */
21 19
    static public function resource(
22
        RestRequestContract $request,
23
        ResourceInterface   $resource = null,
24
        int                 $httStatus = RestResponse::HTTP_OK,
25
        array               $headers = [],
26
        int                 $jsonOptions = JsonResponse::DEFAULT_ENCODING_OPTIONS
27
    ) {
28 19
        $data = $resource ? static::fractal($request)->createData($resource)->toArray() : null;
29
30 19
        $response = RestResponse::create($data, $httStatus, $headers);
31 19
        $response->setEncodingOptions($jsonOptions);
32
33 19
        return $response;
34
    }
35
36
    /**
37
     * @return RestResponse
38
     */
39 4
    static public function noContent()
40
    {
41 4
        return RestResponse::noContent();
42
    }
43
44
    /**
45
     * Return configured fractal by request format.
46
     *
47
     * @param RestRequestContract $request
48
     *
49
     * @return Manager
50
     */
51 19
    static protected function fractal(RestRequestContract $request)
52
    {
53 19
        $fractal = new Manager(new ScopeFactory(), $request);
54 19
        $fractal->setSerializer(new JsonApiSerializer($request));
55
56 19
        if ($includes = $request->getInclude()) {
57 19
            $fractal->parseIncludes($includes);
58
        }
59
60 19
        if ($excludes = $request->getExclude()) {
61 1
            $fractal->parseExcludes($excludes);
62
        }
63
64 19
        if ($fields = $request->getFields()) {
65 5
            $fractal->parseFieldsets($fields);
66
        }
67
68 19
        return $fractal;
69
    }
70
}
71