HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
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;
    }

}