Failed Conditions
Push — master ( 2c044d...7f3b43 )
by Florent
02:21
created

CheckerCollector::getClaimCheckers()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 1
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
     * @param ClaimCheckerManagerFactory|null $claimCheckerManagerFactory
38
     * @param HeaderCheckerManagerFactory|null $headerCheckerManagerFactory
39
     */
40
    public function __construct(?ClaimCheckerManagerFactory $claimCheckerManagerFactory = null, ?HeaderCheckerManagerFactory $headerCheckerManagerFactory = null)
41
    {
42
        $this->claimCheckerManagerFactory = $claimCheckerManagerFactory;
43
        $this->headerCheckerManagerFactory = $headerCheckerManagerFactory;
44
    }
45
46
    /**
47
     * {@inheritdoc}
48
     */
49
    public function collect(array &$data, Request $request, Response $response, \Exception $exception = null)
50
    {
51
        $this->collectSupportedHeaderCheckers($data);
52
        $this->collectSupportedClaimCheckers($data);
53
    }
54
55
    public function name(): string
56
    {
57
        return 'checker';
58
    }
59
60
    /**
61
     * @param array $data
62
     *
63
     * @return array
64
     */
65
    public function getHeaderCheckers(array $data): array
66
    {
67
        return $data['header_checkers'];
68
    }
69
70
    /**
71
     * @param array $data
72
     *
73
     * @return array
74
     */
75
    public function getClaimCheckers(array $data): array
76
    {
77
        return $data['claim_checkers'];
78
    }
79
80
    /**
81
     * @param array $data
82
     */
83
    private function collectSupportedHeaderCheckers(array &$data)
84
    {
85
        $data['header_checkers'] = [];
86
        if (null !== $this->headerCheckerManagerFactory) {
87
            $aliases = $this->headerCheckerManagerFactory->all();
88
            foreach ($aliases as $alias => $checker) {
89
                $data['header_checkers'][$alias] = [
90
                    'header' => $checker->supportedHeader(),
91
                    'protected' => $checker->protectedHeaderOnly(),
92
                ];
93
            }
94
        }
95
    }
96
97
    /**
98
     * @param array $data
99
     */
100
    private function collectSupportedClaimCheckers(array &$data)
101
    {
102
        $data['claim_checkers'] = [];
103
        if (null !== $this->headerCheckerManagerFactory) {
104
            $aliases = $this->claimCheckerManagerFactory->all();
105
            foreach ($aliases as $alias => $checker) {
106
                $data['claim_checkers'][$alias] = [
107
                    'claim' => $checker->supportedClaim(),
108
                ];
109
            }
110
        }
111
    }
112
113
    /**
114
     * @var HeaderCheckerManager[]
115
     */
116
    private $headerCheckerManagers = [];
117
118
    /**
119
     * @param string               $id
120
     * @param HeaderCheckerManager $headerCheckerManager
121
     */
122
    public function addHeaderCheckerManager(string $id, HeaderCheckerManager $headerCheckerManager)
123
    {
124
        $this->headerCheckerManagers[$id] = $headerCheckerManager;
125
    }
126
127
    /**
128
     * @var ClaimCheckerManager[]
129
     */
130
    private $claimCheckerManagers = [];
131
132
    /**
133
     * @param string              $id
134
     * @param ClaimCheckerManager $claimCheckerManager
135
     */
136
    public function addClaimCheckerManager(string $id, ClaimCheckerManager $claimCheckerManager)
137
    {
138
        $this->claimCheckerManagers[$id] = $claimCheckerManager;
139
    }
140
}
141