From b5d3dab6839fc8eb7ed0bbeb04561d324848c676 Mon Sep 17 00:00:00 2001 From: Sergey Pastushenya Date: Sat, 13 Apr 2024 14:07:37 +0300 Subject: [PATCH 1/3] MaxMind's localizations based on config --- src/Services/MaxMindDatabase.php | 22 ++++++++++++++++++++++ src/Services/MaxMindWebService.php | 22 ++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/src/Services/MaxMindDatabase.php b/src/Services/MaxMindDatabase.php index 180c672..3c54dc6 100644 --- a/src/Services/MaxMindDatabase.php +++ b/src/Services/MaxMindDatabase.php @@ -2,6 +2,8 @@ namespace Torann\GeoIP\Services; +use GeoIp2\Model\City; +use Illuminate\Support\Arr; use PharData; use Exception; use GeoIp2\Database\Reader; @@ -55,9 +57,29 @@ public function locate($ip) 'lon' => $record->location->longitude, 'timezone' => $record->location->timeZone, 'continent' => $record->continent->code, + 'localizations' => $this->getLocallizations($record), ]); } + /** + * Get localized country name, state name and city name based on config languages + * + * @param City $record + * @return array + */ + private function getLocallizations(City $record) + { + $locales = []; + + foreach ($this->config('locales') as $lang) { + $locales[$lang]['country'] = Arr::get($record->country->names, $lang); + $locales[$lang]['state_name'] = Arr::get($record->mostSpecificSubdivision->names, $lang); + $locales[$lang]['city'] = Arr::get($record->city->names, $lang); + } + + return $locales; + } + /** * Update function for service. * diff --git a/src/Services/MaxMindWebService.php b/src/Services/MaxMindWebService.php index 189f13f..b53b320 100644 --- a/src/Services/MaxMindWebService.php +++ b/src/Services/MaxMindWebService.php @@ -2,7 +2,9 @@ namespace Torann\GeoIP\Services; +use GeoIp2\Model\City; use GeoIp2\WebService\Client; +use Illuminate\Support\Arr; class MaxMindWebService extends AbstractService { @@ -46,6 +48,26 @@ public function locate($ip) 'lon' => $record->location->longitude, 'timezone' => $record->location->timeZone, 'continent' => $record->continent->code, + 'localizations' => $this->getLocallizations($record), ]); } + + /** + * Get localized country name, state name and city name based on config languages + * + * @param City $record + * @return array + */ + private function getLocallizations(City $record) + { + $locales = []; + + foreach ($this->config('locales') as $lang) { + $locales[$lang]['country'] = Arr::get($record->country->names, $lang); + $locales[$lang]['state_name'] = Arr::get($record->mostSpecificSubdivision->names, $lang); + $locales[$lang]['city'] = Arr::get($record->city->names, $lang); + } + + return $locales; + } } \ No newline at end of file From 31639cccb8f84424bbc966b81786de272a951686 Mon Sep 17 00:00:00 2001 From: Sergey Pastushenya Date: Sat, 13 Apr 2024 14:29:14 +0300 Subject: [PATCH 2/3] Empty config fix --- src/Services/MaxMindDatabase.php | 12 ++++++------ src/Services/MaxMindWebService.php | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/Services/MaxMindDatabase.php b/src/Services/MaxMindDatabase.php index 3c54dc6..7ad3194 100644 --- a/src/Services/MaxMindDatabase.php +++ b/src/Services/MaxMindDatabase.php @@ -69,15 +69,15 @@ public function locate($ip) */ private function getLocallizations(City $record) { - $locales = []; + $localizations = []; - foreach ($this->config('locales') as $lang) { - $locales[$lang]['country'] = Arr::get($record->country->names, $lang); - $locales[$lang]['state_name'] = Arr::get($record->mostSpecificSubdivision->names, $lang); - $locales[$lang]['city'] = Arr::get($record->city->names, $lang); + foreach ($this->config('locales', ['en']) as $lang) { + $localizations[$lang]['country'] = Arr::get($record->country->names, $lang); + $localizations[$lang]['state_name'] = Arr::get($record->mostSpecificSubdivision->names, $lang); + $localizations[$lang]['city'] = Arr::get($record->city->names, $lang); } - return $locales; + return $localizations; } /** diff --git a/src/Services/MaxMindWebService.php b/src/Services/MaxMindWebService.php index b53b320..0a71699 100644 --- a/src/Services/MaxMindWebService.php +++ b/src/Services/MaxMindWebService.php @@ -60,14 +60,14 @@ public function locate($ip) */ private function getLocallizations(City $record) { - $locales = []; + $localizations = []; - foreach ($this->config('locales') as $lang) { - $locales[$lang]['country'] = Arr::get($record->country->names, $lang); - $locales[$lang]['state_name'] = Arr::get($record->mostSpecificSubdivision->names, $lang); - $locales[$lang]['city'] = Arr::get($record->city->names, $lang); + foreach ($this->config('locales', ['en']) as $lang) { + $localizations[$lang]['country'] = Arr::get($record->country->names, $lang); + $localizations[$lang]['state_name'] = Arr::get($record->mostSpecificSubdivision->names, $lang); + $localizations[$lang]['city'] = Arr::get($record->city->names, $lang); } - return $locales; + return $localizations; } } \ No newline at end of file From 5d926ab6dcb52c3a359a057bfc6ad268b9102e0e Mon Sep 17 00:00:00 2001 From: Sergey Pastushenya Date: Fri, 19 Apr 2024 21:21:46 +0300 Subject: [PATCH 3/3] Fix method name --- src/Services/MaxMindDatabase.php | 4 ++-- src/Services/MaxMindWebService.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Services/MaxMindDatabase.php b/src/Services/MaxMindDatabase.php index 7ad3194..f871fa5 100644 --- a/src/Services/MaxMindDatabase.php +++ b/src/Services/MaxMindDatabase.php @@ -57,7 +57,7 @@ public function locate($ip) 'lon' => $record->location->longitude, 'timezone' => $record->location->timeZone, 'continent' => $record->continent->code, - 'localizations' => $this->getLocallizations($record), + 'localizations' => $this->getLocalizations($record), ]); } @@ -67,7 +67,7 @@ public function locate($ip) * @param City $record * @return array */ - private function getLocallizations(City $record) + private function getLocalizations(City $record): array { $localizations = []; diff --git a/src/Services/MaxMindWebService.php b/src/Services/MaxMindWebService.php index 0a71699..49ed00b 100644 --- a/src/Services/MaxMindWebService.php +++ b/src/Services/MaxMindWebService.php @@ -48,7 +48,7 @@ public function locate($ip) 'lon' => $record->location->longitude, 'timezone' => $record->location->timeZone, 'continent' => $record->continent->code, - 'localizations' => $this->getLocallizations($record), + 'localizations' => $this->getLocalizations($record), ]); } @@ -58,7 +58,7 @@ public function locate($ip) * @param City $record * @return array */ - private function getLocallizations(City $record) + private function getLocalizations(City $record): array { $localizations = [];