/
itp_practice
/
itp_backend
Обзор
Документация
Войти
/
itp_practice
/
itp_backend
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
app/Repositories/SessionCreator/SessionCreatorRepository.php
70 строк
2 KB
vivanenko
add tg account creation
28 май 2025, 13:36
28 май 2025, 13:36
b84c0d8
Код
Авторство
О чём код?
<?php namespace App\Repositories\SessionCreator; use App\DTOs\SessionCreator\GetQueryDTO; use Illuminate\Http\Client\PendingRequest; use Illuminate\Http\Client\Response; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; class SessionCreatorRepository { private string $baseUrl; private string $getQueryPath; public function __construct() { $this->baseUrl = config('services.session_creator.url'); $this->getQueryPath = config('services.session_creator.get_query_path'); } private function client(): PendingRequest { return Http::baseUrl($this->baseUrl) ->timeout(30) ->asJson() ->acceptJson(); } public function getQuery(GetQueryDTO $dto): ?string { try { $response = $this->client() ->post($this->getQueryPath, $dto->toArray()); $this->validateResponse($response); $data = $response->json(); if (!$data['result']) { Log::error('Failed to get query from session-creator', [ 'error' => $data['error'] ?? 'Unknown error', 'dto' => $dto->toArray(), ]); return null; } return $data['query']; } catch (\Exception $e) { Log::error('Error while getting query from session-creator', [ 'error' => $e->getMessage(), 'dto' => $dto->toArray(), ]); return null; } } private function validateResponse(Response $response): void { if (!$response->successful()) { Log::error('Session-creator API error', [ 'status' => $response->status(), 'body' => $response->body(), ]); throw new \RuntimeException( "Session-creator API error: {$response->status()} - {$response->body()}" ); } } }