Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
InfoManager
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
2 / 2
3
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 retrieveFromIP
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2
3namespace MediaWiki\IPInfo;
4
5use MediaWiki\IPInfo\InfoRetriever\InfoRetriever;
6use Wikimedia\IPUtils;
7
8class 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}