Kinopoisk¶
Описание: Главный класс для работы с API Kinopoisk.dev Предоставляет базовую функциональность для выполнения HTTP запросов к API, обработки ответов, кэширования и управления ошибками. Использует современные PHP 8.3 возможности и архитектурные паттерны. Основные возможности:
- Выполнение HTTP запросов к API Kinopoisk.dev
- Автоматическое кэширование ответов
- Валидация входных данных
- Обработка ошибок API
- Логирование операций
С версии: 1.0.0
Версия: 1.0.0
См. также:
\KinopoiskDev\Http\MovieRequests
: Для работы с фильмами\KinopoiskDev\Http\PersonRequests
: Для работы с персонами\KinopoiskDev\Http\StudioRequests
: Для работы со студиями\KinopoiskDev\Contracts\CacheInterface
: Интерфейс кэширования\KinopoiskDev\Contracts\LoggerInterface
: Интерфейс логирования
__construct()
¶
Описание: Конструктор клиента API Kinopoisk Инициализирует клиент API с указанными параметрами. Если параметры не переданы, используются значения по умолчанию. API токен может быть передан напрямую или получен из переменной окружения KINOPOISK_TOKEN.
С версии: 1.0.0
Параметры:
$apiToken
(string|null): Токен авторизации API (если null, берется из $_ENV['KINOPOISK_TOKEN'])$httpClient
(HttpClient|null): HTTP клиент (если null, создается новый)$cache
(CacheInterface|null): Сервис кэширования (если null, создается FilesystemAdapter)$logger
(LoggerInterface|null): Логгер (если null, логирование отключено)$useCache
(bool): Использовать кэширование (по умолчанию false)$responseValidator
(ValidationService|null): Валидатор ответов API (если null, валидация отключена)
Исключения:
ValidationException
: При отсутствии токена или неверном форматеKinopoiskDevException
: При ошибке инициализации компонентов
Пример:
validateAndSetApiToken()
¶
Описание: Валидирует и устанавливает API токен Проверяет наличие и формат API токена. Если токен не передан, пытается получить его из переменной окружения KINOPOISK_TOKEN. Валидирует формат токена Kinopoisk.dev.
С версии: 1.0.0
Параметры:
$apiToken
(string|null): Токен API для валидации
Исключения:
ValidationException
: При отсутствии токена или неверном формате
createDefaultHttpClient()
¶
Описание: Создает HTTP клиент по умолчанию Создает экземпляр GuzzleHttp\Client с базовыми настройками для работы с API Kinopoisk.dev.
С версии: 1.0.0
Возвращает: HttpClient
Экземпляр HTTP клиента с настроенными параметрами
makeRequestWithValidation()
¶
Описание: Выполняет HTTP запрос к API с валидацией ответа Расширенная версия makeRequest, которая также выполняет валидацию ответа с эталонными данными, если включена валидация.
Параметры:
$method
(string): HTTP метод$endpoint
(string): Конечная точка API$apiVersion
(string|null): Версия API
Возвращает: array<string, mixed>
Декодированные данные ответа
Исключения:
KinopoiskDevException
: При ошибках запроса или валидации
buildFullUrl()
¶
Описание: Строит полный URL для запроса
Параметры:
$method
(string): HTTP метод$endpoint
(string): Конечная точка$version
(string): Версия API
Возвращает: string
Полный URL
makeRequest()
¶
Описание: Выполняет HTTP запрос к API с поддержкой кэширования Основной метод для выполнения запросов к API Kinopoisk.dev. Поддерживает автоматическое кэширование GET запросов и обработку различных HTTP методов. Валидирует входные параметры перед выполнением запроса.
С версии: 1.0.0
Параметры:
$method
(string): HTTP метод (GET, POST, PUT, DELETE, PATCH)$endpoint
(string): Конечная точка API (без версии)$apiVersion
(string|null): Версия API (если null, используется API_VERSION)
Возвращает: ResponseInterface
Ответ от API
Исключения:
KinopoiskDevException
: При ошибках валидации или HTTP запросаValidationException
: При неверных параметрах запроса
Пример:
PHP | |
---|---|
validateHttpMethod()
¶
Описание: Валидирует HTTP метод Проверяет, что переданный HTTP метод поддерживается API.
С версии: 1.0.0
Параметры:
$method
(string): HTTP метод для валидации
Исключения:
ValidationException
: При неверном или неподдерживаемом методе
validateEndpoint()
¶
Описание: Валидирует конечную точку API Проверяет формат и валидность конечной точки API. Допускает только буквы, цифры, слеши, подчеркивания и дефисы.
С версии: 1.0.0
Параметры:
$endpoint
(string): Конечная точка для валидации
Исключения:
ValidationException
: При неверном формате конечной точки
generateCacheKey()
¶
Описание: Генерирует ключ для кэширования Создает уникальный ключ кэша на основе параметров запроса. Использует SHA256 хэш для обеспечения уникальности и безопасности.
С версии: 1.0.0
Параметры:
$method
(string): HTTP метод$endpoint
(string): Конечная точка$version
(string): Версия API
Возвращает: string
Уникальный ключ кэша
executeHttpRequest()
¶
Описание: Выполняет HTTP запрос Формирует полный URL запроса и выполняет его через HTTP клиент. Добавляет API токен в заголовки запроса.
С версии: 1.0.0
Параметры:
$method
(string): HTTP метод$endpoint
(string): Конечная точка$version
(string): Версия API
Возвращает: ResponseInterface
Ответ от сервера
Исключения:
GuzzleException
: При ошибке выполнения HTTP запроса
parseResponse()
¶
Описание: Обрабатывает ответ от API с валидацией Парсит HTTP ответ от API, проверяет статус код и декодирует JSON. Обрабатывает различные типы ошибок API и логирует результаты. Если включена валидация ответов, сравнивает с эталонными данными.
С версии: 1.0.0
Параметры:
$response
(ResponseInterface): HTTP ответ от API$requestUrl
(string|null): Полный URL запроса для валидации (опционально)
Возвращает: array<string, mixed>
Декодированные данные ответа
Исключения:
KinopoiskDevException
: При ошибках обработки ответаKinopoiskResponseException
: При ошибках API (401, 403, 404, 500)\JsonException
: При ошибках парсинга JSON
Пример:
PHP | |
---|---|
handleErrorStatusCode()
¶
Описание: Обрабатывает ошибочные статус коды Проверяет статус код ответа и выбрасывает соответствующие исключения для известных ошибок API (401, 403, 404).
С версии: 1.0.0
Параметры:
$statusCode
(HttpStatusCode|null): Статус код как enum$rawStatusCode
(int|null): Сырой статус код
Исключения:
KinopoiskResponseException
: При известных ошибках API
validateResponse()
¶
Описание: Валидирует ответ API с эталонными данными
Параметры:
$requestUrl
(string): URL запроса