File: /var/www/limestate-admin/app/Client/CianClient.php
<?php
namespace App\Client;
use Illuminate\Support\Facades\Http;
class CianClient
{
private static array $subwayDictionary = [];
public static function getSubwayId(string $subwayName): ?string
{
if (empty(self::$subwayDictionary)) {
$response = Http::get('https://www.cian.ru/metros-petersburg-v2.xml');
$xml = simplexml_load_string($response->body());
foreach ($xml->line as $line) {
foreach ($line->location as $location) {
self::$subwayDictionary[mb_strtolower($location)] = (int) $location->attributes()['id'];
}
}
}
$subwayName = mb_strtolower($subwayName);
switch ($subwayName) {
case 'технологический институт 1':
case 'технологический институт 2':
$subwayName = 'технологический институт';
break;
case 'площадь александра невского 1':
case 'площадь александра невского 2':
$subwayName = 'площадь александра невского';
break;
case 'звёздная':
$subwayName = 'звездная';
break;
}
return self::$subwayDictionary[$subwayName] ?? null;
}
}