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

ChainedFrameworkConnection   A

Complexity

Total Complexity 17

Size/Duplication

Total Lines 75
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 30
dl 0
loc 75
rs 10
c 1
b 0
f 0
wmc 17

7 Methods

Rating   Name   Duplication   Size   Complexity  
A getAcceptLanguage() 0 9 3
A getOverviewUrlForResourceClass() 0 9 3
A getService() 0 3 1
A getExampleUrl() 0 9 3
A __construct() 0 4 1
A getUrlForResource() 0 9 3
A getContentLanguage() 0 9 3
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