From 4485d44959fbf046ca4912f47c86a3c5f189a4cd Mon Sep 17 00:00:00 2001 From: Ladislav Palider Date: Sun, 23 Oct 2022 14:18:53 +0200 Subject: [PATCH] #64 IpAddressV4Service: added support for parsing IPv4 addresses --- .../Service/IpAddressV4Service.php | 56 +++++++++++++++++++ src/libs/BetterLocation/ServicesManager.php | 2 + 2 files changed, 58 insertions(+) create mode 100644 src/libs/BetterLocation/Service/IpAddressV4Service.php diff --git a/src/libs/BetterLocation/Service/IpAddressV4Service.php b/src/libs/BetterLocation/Service/IpAddressV4Service.php new file mode 100644 index 00000000..af500fee --- /dev/null +++ b/src/libs/BetterLocation/Service/IpAddressV4Service.php @@ -0,0 +1,56 @@ +add(new BetterLocation('$this->inputUrl', $response->lat, $response->lon, self::class)); + } + } + } + return $collection; + } + + private static function loadApi(string $ipAddress): \stdClass + { + $response = (new MiniCurl('http://ip-api.com/json/' . $ipAddress)) // 24.48.0.1 + ->allowCache(Config::CACHE_TTL_BANNERGRESS) + ->run() + ->getBody(); + return json_decode($response); + } + + private static function getPlaceName($finder): ?string + { + $placeNameRaw = $finder->query('//h1/text()')->item(0)->textContent; + if (Strings::startsWith($placeNameRaw, 'studna bez jména (') || Strings::startsWith($placeNameRaw, 'jiný vodní zdroj bez jména (')) { + return null; + } else { + return preg_replace('/ \([0-9]+\)$/', '', $placeNameRaw); + } + } +} diff --git a/src/libs/BetterLocation/ServicesManager.php b/src/libs/BetterLocation/ServicesManager.php index 9dc32347..aca491e2 100644 --- a/src/libs/BetterLocation/ServicesManager.php +++ b/src/libs/BetterLocation/ServicesManager.php @@ -30,6 +30,7 @@ use App\BetterLocation\Service\HradyCzService; use App\BetterLocation\Service\IngressIntelService; use App\BetterLocation\Service\IngressPrimeService; +use App\BetterLocation\Service\IpAddressV4Service; use App\BetterLocation\Service\MapyCzPanoramaGeneratorService; use App\BetterLocation\Service\MapyCzService; use App\BetterLocation\Service\NeshanOrgService; @@ -82,6 +83,7 @@ class ServicesManager public function __construct() { + $this->services[IpAddressV4Service::ID] = IpAddressV4Service::class; $this->services[BetterLocationService::ID] = BetterLocationService::class; $this->services[WGS84DegreesService::ID] = WGS84DegreesService::class; $this->services[WGS84DegreeCompactService::ID] = WGS84DegreeCompactService::class;