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

Nastavenia pre jedno volanie

Výber poskytovateľov

Nemusíte konfigurovať všetkých poskytovateľov. Ak chcete spustiť práve jedného, nastavte pipeline v konfigurácii na jedno meno alebo ho pripnite pri volaní. provider() berie jedno meno, using() viac mien v poradí:

Geolocation::provider('ipinfo')->locateIp($request->ip());
Geolocation::using('maxmind_database')->locateIp($request->ip());
Geolocation::using('maxmind_database', 'ipinfo')->locateIp($request->ip());

// The scope covers the whole call it is chained to — every IP of a batch included
Geolocation::provider('maxmind_database')->batch($ips);

Pripnutie nahradí pipeline pre dané volanie — ostatných poskytovateľov netreba konfigurovať. Nezaregistrované meno vyhodí UnknownProviderException.

Prepísanie prístupového údaja alebo timeoutu

Prístupový údaj alebo timeout poskytovateľa upravíte pre jedno volanie bez zásahu do globálnej konfigurácie. Prístupový údaj patrí konkrétnemu dodávateľovi, preto withToken() a withConfig() uvádzajú meno cieľového poskytovateľa a žiadny iný poskytovateľ danú hodnotu neuvidí. withTimeout() platí pre všetkých poskytovateľov:

// A credential is vendor-specific: name the provider it belongs to
Geolocation::withToken('ipinfo', 'runtime-token')->locateIp('8.8.8.8');
Geolocation::withConfig('ipinfo', ['token' => 'runtime-token', 'timeout' => 3])->locateIp('8.8.8.8');

// A timeout applies to every provider
Geolocation::withTimeout(10)->locateIp('8.8.8.8');

// e.g. a tenant's own Google key, for this one call
Geolocation::withToken('google', 'tenant-google-key')->locateAddress('Main Street 1, Springfield');
  • Pribalení HTTP poskytovatelia čítajú dva kľúče prepisu. token nahradí token IPinfo, kľúč Google či IP2Location alebo licenčný kľúč webovej služby MaxMind (ID účtu zostane nastavené).
  • timeout nahradí geolocation.timeout. Offline poskytovatelia maxmind_database a default žiadny prepis nečítajú.
  • withConfig() zlúči ľubovoľné kľúče pre uvedeného poskytovateľa; vlastní poskytovatelia môžu čítať akýkoľvek kľúč (pozrite Vlastní poskytovatelia).
  • Meno poskytovateľa, ktorý nie je zaregistrovaný, vyhodí UnknownProviderException.

Pravidlá rozsahu

  • provider(), using() aj každé with*() vracajú kópiu manažéra s obmedzeným rozsahom. Zdieľaný manažér sa nikdy nezmení, takže rozsah nepresiakne do neskorších volaní — ani keď poskytovateľ vyhodí výnimku.
  • Rozsah alebo prepis platí presne tak dlho ako reťazec volaní, ku ktorému je pripojený, vrátane každej IP v batch().
  • Pripnuté alebo prepísané volania obchádzajú cache — ani z nej nečítajú, ani do nej nezapisujú.

Makrá

GeolocationManager je Macroable, takže mu môžete pridať vlastné metódy a volať ich cez fasádu:

use RoundlyConsulting\Geolocation\GeolocationManager;

GeolocationManager::macro('countryOf', function (string $ip): ?string {
    /** @var GeolocationManager $this */
    return $this->locateIp($ip)?->countryIsoCode;
});

Geolocation::countryOf('8.8.8.8'); // "US"

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.