codeblog.pro/laravel-geo-location

The package allows you to get the location of the user by his IP. The package provides the ability to use several services at the same time to increase accuracy and to increase free limits.

v0.1.2 2020-10-06 13:08 UTC

README

Build Status Scrutinizer Code Quality Code Coverage Code Intelligence Status Total Downloads Version

The package is a wrapper for several geolocation services at once. The main task of the package is to determine the user's location by IP. Due to the possibility of using several providers at once, the free limit of each provider is summed up.

Install

Via Composer

$ composer require codeblog.pro/geo-location

Usage

// First way: in code
$geoLocationService = new \CodeblogPro\GeoLocation\Application\Services\GeoLocationService();
$location = $geoLocationService->getLocationByIpAndLanguageResultCode('8.8.8.8', 'EN');
var_dump($location);

$locationArray = $geoLocationService->getLocationArrayByIpAndLanguageResultCode('8.8.8.8', 'RU');
var_dump($locationArray);

$currentIpResolver = new \CodeblogPro\GeoLocation\Application\Services\CurrentIpResolver();
$currentIp = $geoLocationService->getCurrentIpByIpResolver($currentIpResolver)->getValue();
var_dump($currentIp);

$locationByIpResolverAndLanguageResultCode = $geoLocationService->getLocationByIpResolverAndLanguageResultCode(
    $currentIpResolver,
    'RU'
);
var_dump($locationByIpResolverAndLanguageResultCode);

// Second way (only for Laravel): using a GET request, 
// for example by url http://<our-domain>/api/geo-location/46.174.50.30/en
// Result: 
// {
//   "data":{
//     "latitude":55.07944,
//     "longitude":38.77833,
//     "country_name":"Russia",
//     "country_code":"RU",
//     "region_name":"Moskovskaya Oblast'",
//     "region_code":"RU-MOS",
//     "street_name":"",
//     "postal_code":"1404xx",
//     "locality":"Kolomna"
//   }
// }

Testing

$ composer test

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email panov@codeblog.pro instead of using the issue tracker.

Credits

License

The Apache License License. Please see License File for more information.