NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky

Publikuje sa do config/geolocation.php. Celý súbor so zbalenými blokmi rate_limits jednotlivých poskytovateľov (tie opisuje časť Obmedzenie požiadaviek):

use RoundlyConsulting\Geolocation\Providers\DefaultLocationProvider;
use RoundlyConsulting\Geolocation\Providers\GoogleProvider;
use RoundlyConsulting\Geolocation\Providers\IP2LocationProvider;
use RoundlyConsulting\Geolocation\Providers\IpInfoProvider;
use RoundlyConsulting\Geolocation\Providers\MaxMindDatabaseProvider;
use RoundlyConsulting\Geolocation\Providers\MaxMindWebServiceProvider;

return [
    'pipeline' => ['maxmind_database', 'maxmind_web', 'ip2location', 'ipinfo', 'google', 'default'],

    'providers' => [
        'maxmind_database' => MaxMindDatabaseProvider::class,
        'maxmind_web' => MaxMindWebServiceProvider::class,
        'ip2location' => IP2LocationProvider::class,
        'ipinfo' => IpInfoProvider::class,
        'google' => GoogleProvider::class,
        'default' => DefaultLocationProvider::class,
    ],

    'timeout' => env('GEOLOCATION_TIMEOUT', 5),

    'cache' => [
        'enabled' => env('GEOLOCATION_CACHE', false),
        'store' => env('GEOLOCATION_CACHE_STORE'),
        'ttl' => env('GEOLOCATION_CACHE_TTL', 86400),
        'prefix' => env('GEOLOCATION_CACHE_PREFIX', 'geolocation'),
    ],

    'events' => [
        'enabled' => env('GEOLOCATION_EVENTS', true),
    ],

    'default' => [
        'humanReadable' => env('GEOLOCATION_DEFAULT_HUMAN_READABLE', ''),
        'street' => env('GEOLOCATION_DEFAULT_STREET', ''),
        'city' => env('GEOLOCATION_DEFAULT_CITY', ''),
        'country' => env('GEOLOCATION_DEFAULT_COUNTRY_ISO_CODE', ''),
        'latitude' => env('GEOLOCATION_DEFAULT_LATITUDE', 0.0),
        'longitude' => env('GEOLOCATION_DEFAULT_LONGITUDE', 0.0),
    ],

    'services' => [
        'ipinfo' => [
            'url' => env('IPINFO_URL', 'https://ipinfo.io/'),
            'token' => env('IPINFO_TOKEN'),
            'retry' => env('IPINFO_RETRY_TIMES', 3),
            'retry_delay' => env('IPINFO_RETRY_DELAY_MS', 100),
            'rate_limits' => [/* see Rate limiting */],
        ],

        'google' => [
            'url' => env('GOOGLE_MAPS_URL', 'https://maps.googleapis.com/maps/api'),
            'key' => env('GOOGLE_MAPS_API_KEY'),
            'retry' => env('GOOGLE_MAPS_RETRY_TIMES', 3),
            'retry_delay' => env('GOOGLE_MAPS_RETRY_DELAY_MS', 100),
            'rate_limits' => [/* ... */],
        ],

        'ip2location' => [
            'url' => env('IP2LOCATION_URL', 'https://api.ip2location.io'),
            'key' => env('IP2LOCATION_API_KEY'),
            'retry' => env('IP2LOCATION_RETRY_TIMES', 2),
            'retry_delay' => env('IP2LOCATION_RETRY_DELAY_MS', 100),
            'rate_limits' => [/* ... */],
        ],

        'maxmind_web' => [
            'enabled' => env('MAXMIND_WEB_ENABLED', false),
            'base_url' => env('MAXMIND_WEB_URL', 'https://geoip.maxmind.com/geoip/v2.1'),
            'account_id' => env('MAXMIND_ACCOUNT_ID'),
            'license_key' => env('MAXMIND_LICENSE_KEY'),
            'service' => env('MAXMIND_WEB_SERVICE', 'city'), // city|country|insights
            'retry' => env('MAXMIND_WEB_RETRY_TIMES', 2),
            'retry_delay' => env('MAXMIND_WEB_RETRY_DELAY_MS', 100),
            'rate_limits' => [/* ... */],
        ],

        'maxmind_database' => [
            'enabled' => env('MAXMIND_DB_ENABLED', false),
            'path' => env('MAXMIND_DB_PATH', storage_path('app/geolocation/GeoLite2-City.mmdb')),

            // Used by the geolocation:db:update command to download the .mmdb file.
            'license_key' => env('MAXMIND_LICENSE_KEY'),
            'edition' => env('MAXMIND_DB_EDITION', 'GeoLite2-City'),
            'download_url' => env('MAXMIND_DB_DOWNLOAD_URL', 'https://download.maxmind.com/app/geoip_download'),
        ],
    ],
];

Všetky kľúče

KľúčPredvolenéEnvÚčel
pipelinevšetkých šesť mien—Poradie mien poskytovateľov; vyhráva prvý neprázdny výsledok a nedostupný poskytovateľ sa preskočí. Pribalené meno, ktoré ste z providers odstránili, sa preskočí; akékoľvek iné nezaregistrované meno vyhodí UnknownProviderException a hodnota, ktorá nie je zoznam, InvalidConfigurationException. Prázdny zoznam prejde providers v ich vlastnom poradí.
providerspribalená mapa—Meno → trieda poskytovateľa. Každá položka potrebuje meno; položka bez mena vyhodí UnknownProviderException.
timeout5GEOLOCATION_TIMEOUTHTTP timeout v sekundách pre všetkých HTTP poskytovateľov, najmenej 1. Rovnaké pravidlo platí aj pre timeout nastavený pre jedno volanie (prázdny sa považuje za nenastavený, takže platí konfigurácia).
cache.enabledfalseGEOLOCATION_CACHECachovať úspešné vyhľadávania a vzdialenosti (nikdy nie záložnú polohu).
cache.storenullGEOLOCATION_CACHE_STORECache store; null alebo prázdna hodnota = predvolený store. Hodnota, ktorá nie je reťazcom, vyhodí výnimku.
cache.ttl86400GEOLOCATION_CACHE_TTLPlatnosť cache v sekundách, najmenej 1.
cache.prefixgeolocationGEOLOCATION_CACHE_PREFIXPrefix kľúčov v cache. Prázdna hodnota sa považuje za nenastavenú (platí predvolená); hodnota, ktorá nie je reťazcom, vyhodí výnimku.
events.enabledtrueGEOLOCATION_EVENTSOdosielať udalosti o výsledku.
default.humanReadable''GEOLOCATION_DEFAULT_HUMAN_READABLEZobrazovaný názov záložnej polohy.
default.street''GEOLOCATION_DEFAULT_STREETUlica záložnej polohy.
default.city''GEOLOCATION_DEFAULT_CITYMesto záložnej polohy.
default.country''GEOLOCATION_DEFAULT_COUNTRY_ISO_CODEISO kód krajiny záložnej polohy.
default.latitude0.0GEOLOCATION_DEFAULT_LATITUDEZemepisná šírka záložnej polohy, -90 až 90. Prázdna hodnota sa považuje za nenastavenú (0.0); hodnota, ktorá nie je číslom, vyhodí výnimku.
default.longitude0.0GEOLOCATION_DEFAULT_LONGITUDEZemepisná dĺžka záložnej polohy, -180 až 180. Prázdna hodnota sa považuje za nenastavenú (0.0); hodnota, ktorá nie je číslom, vyhodí výnimku. Kým sú všetky hodnoty default.* prázdne alebo nulové (ako po inštalácii), poskytovateľ default odpovie null.
services.ipinfo.urlhttps://ipinfo.io/IPINFO_URLZákladná URL IPinfo. Prázdna hodnota sa považuje za nenastavenú (platí predvolená); hodnota, ktorá nie je reťazcom, vyhodí výnimku.
services.ipinfo.tokennullIPINFO_TOKENToken IPinfo; pri null sa neposiela (neautentifikovaná požiadavka).
services.ipinfo.retry3IPINFO_RETRY_TIMESPočet opakovaní, 0 alebo viac.
services.ipinfo.retry_delay100IPINFO_RETRY_DELAY_MSPauza medzi opakovaniami v ms, 0 alebo viac.
services.google.urlhttps://maps.googleapis.com/maps/apiGOOGLE_MAPS_URLZákladná URL Google Maps API. Prázdna hodnota sa považuje za nenastavenú (platí predvolená); hodnota, ktorá nie je reťazcom, vyhodí výnimku.
services.google.keynullGOOGLE_MAPS_API_KEYAPI kľúč Google Maps.
services.google.retry3GOOGLE_MAPS_RETRY_TIMESPočet opakovaní, 0 alebo viac.
services.google.retry_delay100GOOGLE_MAPS_RETRY_DELAY_MSPauza medzi opakovaniami v ms, 0 alebo viac.
services.ip2location.urlhttps://api.ip2location.ioIP2LOCATION_URLZákladná URL IP2Location.io. Prázdna hodnota sa považuje za nenastavenú (platí predvolená); hodnota, ktorá nie je reťazcom, vyhodí výnimku.
services.ip2location.keynullIP2LOCATION_API_KEYAPI kľúč IP2Location.io.
services.ip2location.retry2IP2LOCATION_RETRY_TIMESPočet opakovaní, 0 alebo viac.
services.ip2location.retry_delay100IP2LOCATION_RETRY_DELAY_MSPauza medzi opakovaniami v ms, 0 alebo viac.
services.maxmind_web.enabledfalseMAXMIND_WEB_ENABLEDZapne poskytovateľa webovej služby MaxMind.
services.maxmind_web.base_urlhttps://geoip.maxmind.com/geoip/v2.1MAXMIND_WEB_URLZákladná URL webovej služby. Prázdna hodnota sa považuje za nenastavenú (platí predvolená); hodnota, ktorá nie je reťazcom, vyhodí výnimku.
services.maxmind_web.account_idnullMAXMIND_ACCOUNT_IDID účtu MaxMind (používateľ HTTP Basic).
services.maxmind_web.license_keynullMAXMIND_LICENSE_KEYLicenčný kľúč MaxMind (heslo HTTP Basic); withToken('maxmind_web', …) ho nahradí pre jedno volanie.
services.maxmind_web.servicecityMAXMIND_WEB_SERVICEcity, country alebo insights; prázdna hodnota sa považuje za nenastavenú (city); iná hodnota vyhodí InvalidConfigurationException.
services.maxmind_web.retry2MAXMIND_WEB_RETRY_TIMESPočet opakovaní, 0 alebo viac.
services.maxmind_web.retry_delay100MAXMIND_WEB_RETRY_DELAY_MSPauza medzi opakovaniami v ms, 0 alebo viac.
services.maxmind_database.enabledfalseMAXMIND_DB_ENABLEDZapne poskytovateľa lokálnej databázy .mmdb.
services.maxmind_database.pathstorage_path('app/geolocation/GeoLite2-City.mmdb')MAXMIND_DB_PATHCesta k súboru .mmdb.
services.maxmind_database.license_keynullMAXMIND_LICENSE_KEYLicenčný kľúč pre geolocation:db:update.
services.maxmind_database.editionGeoLite2-CityMAXMIND_DB_EDITIONEdícia, ktorú stiahne príkaz na aktualizáciu. Prázdna hodnota sa považuje za nenastavenú (platí predvolená); hodnota, ktorá nie je reťazcom, vyhodí výnimku.
services.maxmind_database.download_urlhttps://download.maxmind.com/app/geoip_downloadMAXMIND_DB_DOWNLOAD_URLZákladná URL na sťahovanie. Prázdna hodnota sa považuje za nenastavenú (platí predvolená); hodnota, ktorá nie je reťazcom, vyhodí výnimku.
services.<provider>.rate_limits.*pozri Obmedzenie požiadaviekGEOLOCATION_<PROVIDER>_RATELIMIT*Tempo odchádzajúcich požiadaviek pre google, ipinfo, ip2location a maxmind_web.

Každý logický prepínač (cache.enabled, events.enabled, prepínače enabled oboch poskytovateľov MaxMind a kľúče enabled / adaptive v rate_limits) prijíma true/false, 1/0, on/off alebo yes/no, z .env aj z publikovaného súboru; nenastavený alebo prázdny prepínač má predvolenú hodnotu a čokoľvek iné (napríklad GEOLOCATION_CACHE=disabled) vyhodí pri prvom vyhľadávaní InvalidConfigurationException z package-toolkit s názvom kľúča.

Rovnako prísne sa číta každé ďalšie nastavenie. Celé číslo musí byť celé číslo (30 alebo „30“; five, 5.5 a 1e3 vyhodia výnimku, namiesto toho, aby sa zmenili na 0), reťazcové nastavenie musí byť reťazec a pevný slovník (per, services.maxmind_web.service) odmietne všetko mimo neho. Nenastavený kľúč — chýbajúci, null alebo prázdny (riadok KEY= v .env) — má predvolenú hodnotu (voliteľné max_wait / jitter zostanú vypnuté).

Prostredie (env)

Prístupové údaje sa čítajú z prostredia vašej aplikácie, takže nikdy nie sú v balíku ani vo verziovacom systéme. Typický produkčný .env:

GEOLOCATION_TIMEOUT=5
GEOLOCATION_CACHE=true
GEOLOCATION_CACHE_STORE=redis
GEOLOCATION_EVENTS=true

IPINFO_TOKEN=your-ipinfo-token
GOOGLE_MAPS_API_KEY=your-google-maps-key
IP2LOCATION_API_KEY=your-ip2location-key

MAXMIND_DB_ENABLED=true
MAXMIND_LICENSE_KEY=your-license-key

services.maxmind_web.license_key aj services.maxmind_database.license_key čítajú MAXMIND_LICENSE_KEY, takže jeden kľúč pokryje webovú službu aj sťahovanie databázy.

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.