Failed Conditions
Push — master ( 7e3ce2...57efe1 )
by Florent
10:33
created

CheckerCollector::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 2
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * The MIT License (MIT)
7
 *
8
 * Copyright (c) 2014-2017 Spomky-Labs
9
 *
10
 * This software may be modified and distributed under the terms
11
 * of the MIT license.  See the LICENSE file for details.
12
 */
13
14
namespace Jose\Bundle\JoseFramework\DataCollector;
15
16
use Jose\Component\Checker\ClaimCheckerManager;
17
use Jose\Component\Checker\ClaimCheckerManagerFactory;
18
use Jose\Component\Checker\HeaderCheckerManager;
19
use Jose\Component\Checker\HeaderCheckerManagerFactory;
20
use Symfony\Component\HttpFoundation\Request;
21
use Symfony\Component\HttpFoundation\Response;
22
23
final class CheckerCollector implements Collector
24
{
25
    /**
26
     * @var ClaimCheckerManagerFactory|null
27
     */
28
    private $claimCheckerManagerFactory;
29
30
    /**
31
     * @var HeaderCheckerManagerFactory|null
32
     */
33
    private $headerCheckerManagerFactory;
34
35
    /**
36
     * CheckerCollector constructor.
37
     *
38
     * @param ClaimCheckerManagerFactory|null  $claimCheckerManagerFactory
39
     * @param HeaderCheckerManagerFactory|null $headerCheckerManagerFactory
40
     */
41
    public function __construct(?ClaimCheckerManagerFactory $claimCheckerManagerFactory = null, ?HeaderCheckerManagerFactory $headerCheckerManagerFactory = null)
42
    {
43
        $this->claimCheckerManagerFactory = $claimCheckerManagerFactory;
44
        $this->headerCheckerManagerFactory = $headerCheckerManagerFactory;
45
    }
46
47
    /**
48
     * {@inheritdoc}
49
     */
50
    public function collect(array &$data, Request $request, Response $response, \Exception $exception = null)
51
    {
52
        $this->collectSupportedHeaderCheckers($data);
53
        $this->collectSupportedClaimCheckers($data);
54
    }
55
56
    public function name(): string
57
    {
58
        return 'checker';
59
    }
60
61
    /**
62
     * @return HeaderCheckerManager[]
63
     */
64
    public function getHeaderCheckerManagers(): array
65
    {
66
        return $this->headerCheckerManagers;
67
    }
68
69
    /**
70
     * @return ClaimCheckerManager[]
71
     */
72
    public function getClaimCheckerManagers(): array
73
    {
74
        return $this->claimCheckerManagers;
75
    }
76
77
78
79
    /**
80
     * @param array $data
81
     *
82
     * @return array
83
     */
84
    public function getHeaderCheckers(array $data): array
85
    {
86
        return $data['header_checkers'];
87
    }
88
89
    /**
90
     * @param array $data
91
     *
92
     * @return array
93
     */
94
    public function getClaimCheckers(array $data): array
95
    {
96
        return $data['claim_checkers'];
97
    }
98
99
    /**
100
     * @param array $data
101
     */
102
    private function collectSupportedHeaderCheckers(array &$data)
103
    {
104
        $data['header_checkers'] = [];
105
        if (null !== $this->headerCheckerManagerFactory) {
106
            $aliases = $this->headerCheckerManagerFactory->all();
107
            foreach ($aliases as $alias => $checker) {
108
                $data['header_checkers'][$alias] = [
109
                    'header' => $checker->supportedHeader(),
110
                    'protected' => $checker->protectedHeaderOnly(),
111
                ];
112
            }
113
        }
114
    }
115
116
    /**
117
     * @param array $data
118
     */
119
    private function collectSupportedClaimCheckers(array &$data)
120
    {
121
        $data['claim_checkers'] = [];
122
        if (null !== $this->headerCheckerManagerFactory) {
123
            $aliases = $this->claimCheckerManagerFactory->all();
124
            foreach ($aliases as $alias => $checker) {
125
                $data['claim_checkers'][$alias] = [
126
                    'claim' => $checker->supportedClaim(),
127
                ];
128
            }
129
        }
130
    }
131
132
    /**
133
     * @var HeaderCheckerManager[]
134
     */
135
    private $headerCheckerManagers = [];
136
137
    /**
138
     * @param string               $id
139
     * @param HeaderCheckerManager $headerCheckerManager
140
     */
141
    public function addHeaderCheckerManager(string $id, HeaderCheckerManager $headerCheckerManager)
142
    {
143
        $this->headerCheckerManagers[$id] = $headerCheckerManager;
144
    }
145
146
    /**
147
     * @var ClaimCheckerManager[]
148
     */
149
    private $claimCheckerManagers = [];
150
151
    /**
152
     * @param string              $id
153
     * @param ClaimCheckerManager $claimCheckerManager
154
     */
155
    public function addClaimCheckerManager(string $id, ClaimCheckerManager $claimCheckerManager)
156
    {
157
        $this->claimCheckerManagers[$id] = $claimCheckerManager;
158
    }
159
}
160