brainstud / geolocation
一个Laravel包,用于获取请求的国家和时区(地理位置)
v1.0.0
2022-05-02 05:12 UTC
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.4
- illuminate/contracts: ^9.0
- spatie/laravel-package-tools: ^1.9.2
Requires (Dev)
- nunomaduro/collision: ^6.0
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^7.0
- pestphp/pest: ^1.21
- pestphp/pest-plugin-laravel: ^1.1
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
- spatie/laravel-ray: ^1.26
This package is auto-updated.
Last update: 2024-09-09 19:44:23 UTC
README
使用Cloudflare国家头部或回退到付费地理位置API获取请求的国家和时区。
$location = Geolocation::getLocation($request); // { countryCode: "NL", timeZone: "Europe/Amsterdam" }
本包的目标是优先使用Cloudflare头部以降低成本。如果失败,则进行API调用。根据这种理念,只有最少的必要信息将可用。(国家代码和时区)
安装
您可以通过Composer安装此包
composer require brainstud/geolocation
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="geolocation-config"
这是已发布配置文件的内容
return [ 'header' => 'CF-IPCountry', // The cloudflare header that contains the country code 'geocoder' => GeoLocator::IpRegistry, // The geocoder to use if the header is empty 'ip-registry' => [ // Credentials for the ip registry API 'base_url' => env('IP_REGISTRY_URL', 'https://api.ipregistry.co'), 'key' => env('IP_REGISTRY_KEY'), ], 'ip-stack' => [ // Credentials for the ip stack API 'base_url' => env('IP_STACK_URL', 'https://api.ipstack.com'), 'key' => env('IP_STACK_KEY'), ], 'cache_ttl' => DateInterval::createFromDateString('2 months'), // Cache TTL for the geocoder services. ];
支持的服务
贡献
您可以通过在src/GeoLocators文件夹中创建一个实现GeoLocatorContract的类来添加一个地理编码器。然后将其添加到GeoLocator枚举和GeoLocatorFactory中。
更新日志
有关最近更改的更多信息,请参阅更新日志。
鸣谢
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。