RequestGenerator   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 53
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 5
dl 0
loc 53
ccs 23
cts 23
cp 1
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
B generate() 0 25 4
1
<?php
2
3
/*
4
 * This file is part of the PostmanGeneratorBundle package.
5
 *
6
 * (c) Vincent Chalamon <[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
namespace PostmanGeneratorBundle\Generator;
13
14
use Dunglas\ApiBundle\Api\Operation\OperationInterface;
15
use Dunglas\ApiBundle\Api\ResourceInterface;
16
use PostmanGeneratorBundle\Model\Request;
17
use PostmanGeneratorBundle\RequestParser\RequestParserChain;
18
use Ramsey\Uuid\Uuid;
19
20
class RequestGenerator implements GeneratorInterface
21
{
22
    /**
23
     * @var RequestParserChain
24
     */
25
    private $requestParser;
26
27
    /**
28
     * @var string
29
     */
30
    private $baseUrl;
31
32
    /**
33
     * @param RequestParserChain $requestParser
34
     * @param string             $baseUrl
35
     */
36 1
    public function __construct(RequestParserChain $requestParser, $baseUrl)
37
    {
38 1
        $this->requestParser = $requestParser;
39 1
        $this->baseUrl = $baseUrl;
40 1
    }
41
42
    /**
43
     * {@inheritdoc}
44
     *
45
     * @return Request[]
46
     */
47 1
    public function generate(ResourceInterface $resource = null)
48
    {
49
        /** @var OperationInterface[] $operations */
50 1
        $operations = array_merge($resource->getCollectionOperations(), $resource->getItemOperations());
51 1
        $requests = [];
52
53 1
        foreach ($operations as $operation) {
54 1
            $route = $operation->getRoute();
55 1
            foreach ($route->getMethods() as $method) {
56 1
                $request = new Request();
57 1
                $request->setResource($resource);
58 1
                $request->setId((string) Uuid::uuid4());
59 1
                $request->setUrl($this->baseUrl.$route->getPath());
60 1
                $request->setMethod($method);
61 1
                if (isset($operation->getContext()['hydra:title'])) {
62 1
                    $request->setName($operation->getContext()['hydra:title']);
63 1
                }
64
65 1
                $this->requestParser->parse($request);
66 1
                $requests[] = $request;
67 1
            }
68 1
        }
69
70 1
        return $requests;
71
    }
72
}
73