zend-blog-3-backend

Форк
0
43 строки · 1.0 Кб
1
<?php
2

3
namespace App\Service\IpInfo;
4

5
class IpInfoDbClient implements IpInfoClientInterface
6
{
7
    private string $key;
8

9
    /**
10
     * @param string $key
11
     */
12
    public function __construct(string $key)
13
    {
14
        $this->key = $key;
15
    }
16

17
    public function getLocationInfo(string $ip): ?LocationInfo
18
    {
19
        if (filter_var($ip, FILTER_VALIDATE_IP)) {
20
            $params = http_build_query([
21
                'key' => $this->key,
22
                'ip' => $ip,
23
                'format' => 'json',
24
            ]);
25

26
            $context = stream_context_create([
27
                'http' => [
28
                    'timeout' => 5,
29
                ],
30
            ]);
31
            try {
32
                $json = file_get_contents('https://api.ipinfodb.com/v3/ip-city/?' . $params, false, $context);
33
                sleep(2);
34

35
                return LocationInfo::createFromArray(json_decode($json, true, 512, JSON_THROW_ON_ERROR));
36
            } catch (\Throwable $e) {
37
                return null;
38
            }
39
        }
40

41
        return null;
42
    }
43
}
44

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.