Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
100.00% |
8 / 8 |
|
100.00% |
2 / 2 |
CRAP | |
100.00% |
1 / 1 |
InfoManager | |
100.00% |
8 / 8 |
|
100.00% |
2 / 2 |
3 | |
100.00% |
1 / 1 |
__construct | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
retrieveFromIP | |
100.00% |
7 / 7 |
|
100.00% |
1 / 1 |
2 |
1 | <?php |
2 | |
3 | namespace MediaWiki\IPInfo; |
4 | |
5 | use MediaWiki\IPInfo\InfoRetriever\InfoRetriever; |
6 | use Wikimedia\IPUtils; |
7 | |
8 | class InfoManager { |
9 | /** @var InfoRetriever[] */ |
10 | private $retrievers; |
11 | |
12 | /** |
13 | * @param InfoRetriever[] $retrievers |
14 | */ |
15 | public function __construct( |
16 | array $retrievers |
17 | ) { |
18 | $this->retrievers = $retrievers; |
19 | } |
20 | |
21 | /** |
22 | * Retrieve info about an IP address. |
23 | * |
24 | * TODO: Make this return a domain object, e.g. InfoManagerResponse. |
25 | * |
26 | * @param string $ip |
27 | * @return array |
28 | */ |
29 | public function retrieveFromIP( string $ip ): array { |
30 | $data = []; |
31 | |
32 | foreach ( $this->retrievers as $retriever ) { |
33 | $data[$retriever->getName()] = $retriever->retrieveFromIP( $ip ); |
34 | } |
35 | |
36 | return [ |
37 | 'subject' => IPUtils::prettifyIP( $ip ), |
38 | 'data' => $data, |
39 | ]; |
40 | } |
41 | } |