zend-blog-3-backend

Форк
0
46 строк · 1.2 Кб
1
<?php
2

3
namespace Mtt\TestBundle\Service\IpInfo;
4

5
use App\Service\IpInfo\IpInfoClientInterface;
6
use App\Service\IpInfo\LocationInfo;
7
use Faker\Factory as FakerFactory;
8
use Symfony\Component\Intl\Intl;
9

10
class IpInfoDummyClient implements IpInfoClientInterface
11
{
12
    /**
13
     * @param string $ip
14
     *
15
     * @return LocationInfo|null
16
     */
17
    public function getLocationInfo(string $ip): ?LocationInfo
18
    {
19
        if (!filter_var($ip, FILTER_VALIDATE_IP)) {
20
            return null;
21
        }
22

23
        $faker = FakerFactory::create();
24
        $faker->seed(ip2long($ip));
25

26
        $countries = Intl::getRegionBundle()->getCountryNames('en_US');
27
        do {
28
            $countryCode = null;
29
            $country = $faker->country;
30
            foreach ($countries as $key => $value) {
31
                if ($country == $value) {
32
                    $countryCode = $key;
33
                    break;
34
                }
35
            }
36
        } while (is_null($countryCode));
37

38
        return LocationInfo::createFromArray([
39
            'countryCode' => $countryCode,
40
            'countryName' => $country,
41
            'regionName' => $faker->state,
42
            'cityName' => $faker->city,
43
            'zipCode' => $faker->postcode,
44
        ]);
45
    }
46
}
47

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

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

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

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