Setest / geoData

IP geolocation provider for Laravel 5.7 and above.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

About

Компонент GeoData предназначен для использования в Laravel 5.7 и выше, представляет из себя "фабрику" (обертку) для получения информации по IP адресу. В теущей версии в качестве основы используется определитель локаций SypexGeo с помощью открытого кода scriptixru (последний его релиз на данный момент датируется Apr 3, 2015 и применить его в качестве vendor не представляется возможным, поэтому его начинка была немного изменена).

Зачем

Во-первых хотелось чуть разобраться в Laravel, во-вторых я не нашел достойного решения поставленной задачи и в-третьих, из-за того что база от Sypex довольно большая и ее использование в том виде, которое рекомендует разработчик это расточительство ресурсов, я решил написать универсальный механизм создающий основу для агрегатора данных геолокационных систем, который позволит, без больших затрат, подключать и использовать любой доступный механизм сбора данных по IP адресу. И в случае отказа от одного из них заменять его на другой без изменения всего остального кода.

Installation and usage

Потребуются следующие библиотеки:

composer require spatie/temporary-directory

composer require guzzlehttp/guzzle:~6.0

composer require chumper/zipper

После вам нужно вручную разместить в своих файлах основываясь на примерах:

geoData/app/Http/Kernel.php

geoData/config/app.php

geoData/config/geodata.php

Остальные файлы, перенести через копирование.

Для проверки работы middleware можете использовать предложенный маршрут из routes/publicApi.php

После чего необходимо запустить скачивание БД php artisan geodata:download. Этот же скрипт можно использовать для ее обновления.

Extending

Для того что бы добавить стороннюю библиотеку определения локации, например MaxMind geoIp необходимо:

  • Создать свой сервис по примеру app/Services/GeoData/SypexGeo.php
  • разместить файлы в папке сервис провайдеров app/Services/GeoData.
  • внести изменения в helper app/Helpers/GeoDataHelpers.php
  • добавить свой файл конфигурации в geoData/config/geodata.php

TODO

  • кешировать результаты
  • добавить загрузчик БД с проверкой данных
  • добавить блокирование хранилища при обновлении
  • добавить логер событий неудачного обновления с оповещением в mattermost
  • переписать чтение БД sypex-a для экономии ресурсов
  • использовать очередь сообщений
  • создать получение комбинированных данных
  • создать универсальный формат получения данных и его валидацию
  • создать установщик

Authors

License

This project is licensed under the MIT License - see the LICENSE.md file for details.

About

IP geolocation provider for Laravel 5.7 and above.

License:MIT License


Languages

Language:PHP 100.0%