brainstud/geolocation

一个Laravel包,用于获取请求的国家和时区(地理位置)

v1.0.0 2022-05-02 05:12 UTC

README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

使用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)。有关更多信息,请参阅许可文件