Completed
Branch v4 (4e54dd)
by Pieter
03:26
created

getOverviewUrlForResourceClass()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
eloc 5
nc 3
nop 2
dl 0
loc 9
rs 10
c 1
b 0
f 0
1
<?php
2
3
4
namespace W2w\Lib\Apie\Core\Bridge;
5
6
use W2w\Lib\Apie\Core\SearchFilters\SearchFilterRequest;
7
use W2w\Lib\Apie\PluginInterfaces\FrameworkConnectionInterface;
8
9
class ChainedFrameworkConnection implements FrameworkConnectionInterface
10
{
11
    /**
12
     * @var FrameworkConnectionInterface[]
13
     */
14
    private $connections;
15
16
    /**
17
     * @param FrameworkConnectionInterface[] $connections
18
     * @param FrameworkConnectionInterface $default
19
     */
20
    public function __construct(array $connections, FrameworkConnectionInterface $default)
21
    {
22
        $this->connections = $connections;
23
        $this->connections[] = $default;
24
    }
25
26
    public function getService(string $id): object
27
    {
28
        return reset($this->connections)->getService($id);
29
    }
30
31
    public function getUrlForResource(object $resource): ?string
32
    {
33
        foreach ($this->connections as $connection) {
34
            $url = $connection->getUrlForResource($resource);
35
            if (null !== $url) {
36
                return $url;
37
            }
38
        }
39
        return null;
40
    }
41
42
    public function getExampleUrl(string $resourceClass): ?string
43
    {
44
        foreach ($this->connections as $connection) {
45
            $url = $connection->getExampleUrl($resourceClass);
46
            if (null !== $url) {
47
                return $url;
48
            }
49
        }
50
        return null;
51
    }
52
53
    public function getOverviewUrlForResourceClass(string $resourceClass, ?SearchFilterRequest $filterRequest = null
54
    ): ?string {
55
        foreach ($this->connections as $connection) {
56
            $url = $connection->getOverviewUrlForResourceClass($resourceClass, $filterRequest);
57
            if (null !== $url) {
58
                return $url;
59
            }
60
        }
61
        return null;
62
    }
63
64
    public function getAcceptLanguage(): ?string
65
    {
66
        foreach ($this->connections as $connection) {
67
            $language = $connection->getAcceptLanguage();
68
            if (null !== $language) {
69
                return $language;
70
            }
71
        }
72
        return null;
73
    }
74
75
    public function getContentLanguage(): ?string
76
    {
77
        foreach ($this->connections as $connection) {
78
            $language = $connection->getContentLanguage();
79
            if (null !== $language) {
80
                return $language;
81
            }
82
        }
83
        return null;
84
    }
85
}
86