middlewares/geolocation
![SensioLabs Insight][ico-sensiolabs]
Middleware to geolocate the client using the ip address and Geocoder and save the result as a request attribute.
Requirements
- PHP >= 7.0
- A PSR-7 http library
- A PSR-15 middleware dispatcher
- A PHP-HTTP adapter, for example Guzzle6
- A Geocoder ip-based provider
Installation
This package is installable and autoloadable via Composer as middlewares/geolocation.
composer require middlewares/geolocation
Example
$freeGeoIpProvider = new Geocoder\Provider\FreeGeoIp($adapter);
$dispatcher = new Dispatcher([
new Middlewares\Geolocation($freeGeoIpProvider),
function ($request) {
//Get the client location
$location = $request->getAttribute('client-location');
$country = $location->first()->getCountry();
}
]);
$response = $dispatcher->dispatch(new ServerRequest());
Options
__construct(Geocoder\Provider\Provider $provider)
The geocoder provider used to geolocate the client.
It's also recommended to configure it to caching responses.
ipAttribute(string $ipAttribute)
By default uses the REMOTE_ADDR
server parameter to get the client ip. This option allows to use a request attribute. Useful to combine with a ip detection middleware, for example client-ip.
attribute(string $attribute)
The attribute name used to store the client addresses in the server request. By default is client-location
.
Please see CHANGELOG for more information about recent changes and CONTRIBUTING for contributing details.
The MIT License (MIT). Please see LICENSE for more information.