Passed
Push — master ( 4727a8...9d62eb )
by Kévin
03:32
created

RequestDataCollector::getMethod()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 1
eloc 1
nc 1
nop 0
1
<?php
2
3
/*
4
 * This file is part of the API Platform project.
5
 *
6
 * (c) Kévin Dunglas <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
declare(strict_types=1);
13
14
namespace ApiPlatform\Core\Bridge\Symfony\Bundle\DataCollector;
15
16
use ApiPlatform\Core\Metadata\Resource\Factory\ResourceMetadataFactoryInterface;
17
use Symfony\Component\HttpFoundation\Request;
18
use Symfony\Component\HttpFoundation\Response;
19
use Symfony\Component\HttpKernel\DataCollector\DataCollector;
20
21
/**
22
 * @author Julien DENIAU <[email protected]>
23
 */
24
final class RequestDataCollector extends DataCollector
25
{
26
    private $metadataFactory;
27
28
    public function __construct(ResourceMetadataFactoryInterface $metadataFactory)
29
    {
30
        $this->metadataFactory = $metadataFactory;
31
    }
32
33
    /**
34
     * {@inheritdoc}
35
     */
36
    public function collect(Request $request, Response $response, \Exception $exception = null)
37
    {
38
        $resourceClass = $request->attributes->get('_api_resource_class');
39
        $resourceMetadata = $resourceClass ? $this->metadataFactory->create($resourceClass) : null;
40
41
        $this->data = [
42
            'resource_class' => $resourceClass,
43
            'resource_metadata' => $resourceMetadata,
44
            'method' => $request->getMethod(),
45
            'acceptable_content_types' => $request->getAcceptableContentTypes(),
46
        ];
47
    }
48
49
    public function getMethod(): string
50
    {
51
        return $this->data['method'] ?? '';
52
    }
53
54
    public function getAcceptableContentTypes(): array
55
    {
56
        return $this->data['acceptable_content_types'] ?? [];
57
    }
58
59
    public function getResourceClass()
60
    {
61
        return $this->data['resource_class'] ?? null;
62
    }
63
64
    public function getResourceMetadata()
65
    {
66
        return $this->data['resource_metadata'] ?? null;
67
    }
68
69
    /**
70
     * {@inheritdoc}
71
     */
72
    public function getName(): string
73
    {
74
        return 'api_platform.data_collector.request';
75
    }
76
77
    /**
78
     * {@inheritdoc}
79
     */
80
    public function reset()
81
    {
82
        $this->data = [];
83
    }
84
}
85