1 | <?php |
||
2 | |||
3 | namespace Faxity\IP; |
||
4 | |||
5 | use Anax\Commons\ContainerInjectableInterface; |
||
6 | use Anax\Commons\ContainerInjectableTrait; |
||
7 | |||
8 | /** |
||
9 | * Controller for the /ip routes |
||
10 | */ |
||
11 | class Controller implements ContainerInjectableInterface |
||
12 | { |
||
13 | use ContainerInjectableTrait; |
||
14 | |||
15 | /** List of IP addresses to have available as test */ |
||
16 | private const TEST_ADDRS = [ |
||
17 | "2001:db8::1", |
||
18 | "2a03:2880:f00a:8:face:b00c:0:2", |
||
19 | "1200::ABYX:1234::2552:7777:1313", |
||
20 | "194.47.150.9", |
||
21 | "192.168.1.20", |
||
22 | "83.230.116.044", |
||
23 | ]; |
||
24 | |||
25 | /** API response example for a failed response */ |
||
26 | private const API_EXAMPLE_ERR = [ |
||
27 | "message" => "Ingen IP address skickades.", |
||
28 | ]; |
||
29 | |||
30 | /** API response example for a successfull response */ |
||
31 | private const API_EXAMPLE_OK = [ |
||
32 | "ip" => "194.47.150.9", |
||
33 | "valid" => true, |
||
34 | "domain" => "dbwebb.se", |
||
35 | "type" => "ipv4", |
||
36 | "region" => "Blekinge", |
||
37 | "country" => "Sweden", |
||
38 | "location" => [ |
||
39 | "latitude" => 56.16122055053711, |
||
40 | "longitude" => 15.586899757385254, |
||
41 | ], |
||
42 | ]; |
||
43 | |||
44 | /** |
||
45 | * @var object $examples API response examples |
||
46 | */ |
||
47 | private $examples; |
||
48 | |||
49 | |||
50 | /** |
||
51 | * Initializer for the class |
||
52 | */ |
||
53 | 3 | public function initialize() |
|
54 | { |
||
55 | 3 | $this->examples = (object) [ |
|
56 | 3 | "err" => json_encode(self::API_EXAMPLE_ERR, JSON_PRETTY_PRINT), |
|
57 | 3 | "ok" => json_encode(self::API_EXAMPLE_OK, JSON_PRETTY_PRINT), |
|
58 | ]; |
||
59 | 3 | } |
|
60 | |||
61 | |||
62 | /** |
||
63 | * Handles / for the controller |
||
64 | * |
||
65 | * @return object |
||
66 | */ |
||
67 | 3 | public function indexActionGet() : object |
|
68 | { |
||
69 | // Deal with the action and return a response. |
||
70 | 3 | $ip = $this->di->request->getGet("ip"); |
|
0 ignored issues
–
show
Bug
introduced
by
![]() |
|||
71 | |||
72 | 3 | if (empty($ip)) { |
|
73 | 1 | $ip = $this->di->ip->getAddress(); |
|
0 ignored issues
–
show
|
|||
74 | } |
||
75 | |||
76 | 3 | $res = (array) $this->di->ip->validate($ip); |
|
77 | |||
78 | 3 | $this->di->page->add("faxity/ip/index", $res); |
|
0 ignored issues
–
show
|
|||
79 | 3 | $this->di->page->add("faxity/ip/api", [ |
|
80 | 3 | "ip" => $ip, |
|
81 | 3 | "addrs" => $this::TEST_ADDRS, |
|
82 | 3 | "apiUrl" => $this->di->url->create("ip-api"), |
|
0 ignored issues
–
show
|
|||
83 | 3 | "examples" => $this->examples, |
|
84 | ]); |
||
85 | |||
86 | 3 | return $this->di->page->render([ |
|
87 | 3 | "title" => "IP validerare", |
|
88 | ]); |
||
89 | } |
||
90 | } |
||
91 |