Failed Conditions
Push — master ( a96c48...74e563 )
by Florent
02:28
created

CheckerCollector::addClaimCheckerManager()   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 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->collectHeaderCheckerManagers($data);
53
        $this->collectSupportedHeaderCheckers($data);
54
        $this->collectClaimCheckerManagers($data);
55
        $this->collectSupportedClaimCheckers($data);
56
    }
57
58
    /**
59
     * @param array $data
60
     */
61
    private function collectHeaderCheckerManagers(array &$data)
62
    {
63
        $data['checker']['header_checker_managers'] = [];
64
        foreach ($this->headerCheckerManagers as $id => $checkerManager) {
65
            $data['checker']['header_checker_managers'][$id] = [];
66
            foreach ($checkerManager->getCheckers() as $checker) {
67
                $data['checker']['header_checker_managers'][$id][] = [
68
                    'header' => $checker->supportedHeader(),
69
                    'protected' => $checker->protectedHeaderOnly(),
70
                ];
71
            }
72
        }
73
    }
74
75
    /**
76
     * @param array $data
77
     */
78
    private function collectSupportedHeaderCheckers(array &$data)
79
    {
80
        $data['checker']['header_checkers'] = [];
81
        if (null !== $this->headerCheckerManagerFactory) {
82
            $aliases = $this->headerCheckerManagerFactory->all();
83
            foreach ($aliases as $alias => $checker) {
84
                $data['checker']['header_checkers'][$alias] = [
85
                    'header' => $checker->supportedHeader(),
86
                    'protected' => $checker->protectedHeaderOnly(),
87
                ];
88
            }
89
        }
90
    }
91
92
    /**
93
     * @param array $data
94
     */
95
    private function collectClaimCheckerManagers(array &$data)
96
    {
97
        $data['checker']['claim_checker_managers'] = [];
98
        foreach ($this->claimCheckerManagers as $id => $checkerManager) {
99
            $data['checker']['claim_checker_managers'][$id] = [];
100
            foreach ($checkerManager->getCheckers() as $checker) {
101
                $data['checker']['claim_checker_managers'][$id][] = [
102
                    'claim' => $checker->supportedClaim(),
103
                ];
104
            }
105
        }
106
    }
107
108
    /**
109
     * @param array $data
110
     */
111
    private function collectSupportedClaimCheckers(array &$data)
112
    {
113
        $data['checker']['claim_checkers'] = [];
114
        if (null !== $this->headerCheckerManagerFactory) {
115
            $aliases = $this->claimCheckerManagerFactory->all();
116
            foreach ($aliases as $alias => $checker) {
117
                $data['checker']['claim_checkers'][$alias] = [
118
                    'claim' => $checker->supportedClaim(),
119
                ];
120
            }
121
        }
122
    }
123
124
    /**
125
     * @var HeaderCheckerManager[]
126
     */
127
    private $headerCheckerManagers = [];
128
129
    /**
130
     * @param string               $id
131
     * @param HeaderCheckerManager $headerCheckerManager
132
     */
133
    public function addHeaderCheckerManager(string $id, HeaderCheckerManager $headerCheckerManager)
134
    {
135
        $this->headerCheckerManagers[$id] = $headerCheckerManager;
136
    }
137
138
    /**
139
     * @var ClaimCheckerManager[]
140
     */
141
    private $claimCheckerManagers = [];
142
143
    /**
144
     * @param string              $id
145
     * @param ClaimCheckerManager $claimCheckerManager
146
     */
147
    public function addClaimCheckerManager(string $id, ClaimCheckerManager $claimCheckerManager)
148
    {
149
        $this->claimCheckerManagers[$id] = $claimCheckerManager;
150
    }
151
}
152