Passed
Pull Request — master (#16)
by Woody
02:09
created

RequestDefinitions   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Test Coverage

Coverage 89.47%

Importance

Changes 0
Metric Value
wmc 8
eloc 13
dl 0
loc 52
ccs 17
cts 19
cp 0.8947
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A getRequestDefinition() 0 7 2
A __construct() 0 4 2
A unserialize() 0 4 1
A serialize() 0 4 1
A addRequestDefinition() 0 3 1
A getIterator() 0 3 1
1
<?php
2
namespace ElevenLabs\Api\Definition;
3
4
class RequestDefinitions implements \Serializable, \IteratorAggregate
5
{
6
    /**
7
     * @var array
8
     */
9
    private $definitions;
10
11 3
    public function __construct(array $requestDefinitions = [])
12
    {
13 3
        foreach ($requestDefinitions as $requestDefinition) {
14 1
            $this->addRequestDefinition($requestDefinition);
15
        }
16 3
    }
17
18
    /**
19
     * @param string $operationId
20
     *
21
     * @return RequestDefinition
22
     */
23 2
    public function getRequestDefinition($operationId)
24
    {
25 2
        if (!isset($this->definitions[$operationId])) {
26 1
            throw new \InvalidArgumentException('Unable to find request definition for operationId '.$operationId);
27
        }
28
29 1
        return $this->definitions[$operationId];
30
    }
31
32 1
    private function addRequestDefinition(RequestDefinition $requestDefinition)
33
    {
34 1
        $this->definitions[$requestDefinition->getOperationId()] = $requestDefinition;
35 1
    }
36
37
    /**
38
     * @return \ArrayIterator|RequestDefinition[]
39
     */
40
    public function getIterator()
41
    {
42
        return new \ArrayIterator($this->definitions);
43
    }
44
45 1
    public function serialize()
46
    {
47 1
        return serialize([
48 1
            'definitions' => $this->definitions
49
        ]);
50
    }
51
52 1
    public function unserialize($serialized)
53
    {
54 1
        $data = unserialize($serialized);
55 1
        $this->definitions = $data['definitions'];
56 1
    }
57
}
58