From 73a0a6fe9c65eb93235e4655c92d097c58e7b892 Mon Sep 17 00:00:00 2001 From: F4ilji Date: Fri, 10 Jul 2026 16:47:18 +0500 Subject: [PATCH] feat(vikon): extract API URL from hardcoded to integration_credentials MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Rename ViconApiToken → ViconApiConfig with token() and apiUrl() - Replace 9 hardcoded db-nica.ru URLs with dynamic apiUrl() - Payload now stores both token and api_url with fallback --- .../Vicon/DirectionStudy/AdmissionPlanService.php | 12 ++++++------ .../Vicon/DirectionStudy/DirectionStudyService.php | 14 +++++++------- .../EducationalProgramService.php | 8 ++++---- .../{ViconApiToken.php => ViconApiConfig.php} | 13 +++++++++++-- 4 files changed, 28 insertions(+), 19 deletions(-) rename app/Services/Vicon/{ViconApiToken.php => ViconApiConfig.php} (64%) diff --git a/app/Services/Vicon/DirectionStudy/AdmissionPlanService.php b/app/Services/Vicon/DirectionStudy/AdmissionPlanService.php index 3501230..4a85d0d 100755 --- a/app/Services/Vicon/DirectionStudy/AdmissionPlanService.php +++ b/app/Services/Vicon/DirectionStudy/AdmissionPlanService.php @@ -4,14 +4,14 @@ namespace App\Services\Vicon\DirectionStudy; use App\Jobs\CreateDirectionStudy; use App\Jobs\CreateEducationalProgram; -use App\Services\Vicon\ViconApiToken; +use App\Services\Vicon\ViconApiConfig; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; class AdmissionPlanService { public function __construct( - private readonly ViconApiToken $viconApiToken, + private readonly ViconApiConfig $viconApiConfig, ) {} public function getLevelEducationCodes(object $campaign) : array { @@ -31,8 +31,8 @@ class AdmissionPlanService { try { $response = $this->callAPI( - "https://db-nica.ru/api/v1/campaigns", - $this->viconApiToken->get() + "{$this->viconApiConfig->apiUrl()}/campaigns", + $this->viconApiConfig->token() ); if (!is_array($response)) { Log::channel('app')->warning('Unexpected response type in getCampaigns', [ @@ -55,8 +55,8 @@ class AdmissionPlanService { try { $response = $this->callAPI( - "https://db-nica.ru/api/v1/planPriema/$campaign_levels_code", - $this->viconApiToken->get() + "{$this->viconApiConfig->apiUrl()}/planPriema/$campaign_levels_code", + $this->viconApiConfig->token() ); if (!is_object($response)) { diff --git a/app/Services/Vicon/DirectionStudy/DirectionStudyService.php b/app/Services/Vicon/DirectionStudy/DirectionStudyService.php index a8513af..bfc9183 100755 --- a/app/Services/Vicon/DirectionStudy/DirectionStudyService.php +++ b/app/Services/Vicon/DirectionStudy/DirectionStudyService.php @@ -2,14 +2,14 @@ namespace App\Services\Vicon\DirectionStudy; -use App\Services\Vicon\ViconApiToken; +use App\Services\Vicon\ViconApiConfig; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; class DirectionStudyService { public function __construct( - private readonly ViconApiToken $viconApiToken, + private readonly ViconApiConfig $viconApiConfig, ) {} const EDU_LEVELS = [1, 2, 3, 4, 5, 6]; @@ -44,31 +44,31 @@ class DirectionStudyService public function getNaprs(int $edu_level): object { - $data = $this->callAPI("https://db-nica.ru/api/v1/naprs?perPage=200&filter_edu_level=$edu_level", $this->viconApiToken->get()); + $data = $this->callAPI("{$this->viconApiConfig->apiUrl()}/naprs?perPage=200&filter_edu_level=$edu_level", $this->viconApiConfig->token()); return $data; } public function getNapr(string $uuid): object { - $data = $this->callAPI("https://db-nica.ru/api/v1/napr/$uuid", $this->viconApiToken->get()); + $data = $this->callAPI("{$this->viconApiConfig->apiUrl()}/napr/$uuid", $this->viconApiConfig->token()); return $data; } public function getPrograms(int $edu_level): object { - $data = $this->callAPI("https://db-nica.ru/api/v1/programs?filter_edu_level=$edu_level&perPage=200", $this->viconApiToken->get()); + $data = $this->callAPI("{$this->viconApiConfig->apiUrl()}/programs?filter_edu_level=$edu_level&perPage=200", $this->viconApiConfig->token()); return $data; } public function getProgram(string $uuid): object { - $data = $this->callAPI("https://db-nica.ru/api/v1/program/$uuid", $this->viconApiToken->get()); + $data = $this->callAPI("{$this->viconApiConfig->apiUrl()}/program/$uuid", $this->viconApiConfig->token()); return $data; } public function getProgramDocs(string $uuid): object { - $data = $this->callAPI("https://db-nica.ru/api/v1/program/$uuid/edu-docs?perPage=200", $this->viconApiToken->get()); + $data = $this->callAPI("{$this->viconApiConfig->apiUrl()}/program/$uuid/edu-docs?perPage=200", $this->viconApiConfig->token()); return $data; } diff --git a/app/Services/Vicon/EducationalProgram/EducationalProgramService.php b/app/Services/Vicon/EducationalProgram/EducationalProgramService.php index dedb009..75586b1 100755 --- a/app/Services/Vicon/EducationalProgram/EducationalProgramService.php +++ b/app/Services/Vicon/EducationalProgram/EducationalProgramService.php @@ -4,14 +4,14 @@ namespace App\Services\Vicon\EducationalProgram; use App\Jobs\CreateDirectionStudy; use App\Jobs\CreateEducationalProgram; -use App\Services\Vicon\ViconApiToken; +use App\Services\Vicon\ViconApiConfig; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; class EducationalProgramService { public function __construct( - private readonly ViconApiToken $viconApiToken, + private readonly ViconApiConfig $viconApiConfig, ) {} const EDU_LEVELS = [1,2,3,4,5,6]; @@ -31,13 +31,13 @@ class EducationalProgramService public function getPrograms(int $edu_level) : object { - $data = $this->callAPI("https://db-nica.ru/api/v1/programs?filter_edu_level=$edu_level&perPage=200", $this->viconApiToken->get()); + $data = $this->callAPI("{$this->viconApiConfig->apiUrl()}/programs?filter_edu_level=$edu_level&perPage=200", $this->viconApiConfig->token()); return $data; } public function getProgram(string $uuid) : object { - $data = $this->callAPI("https://db-nica.ru/api/v1/program/$uuid", $this->viconApiToken->get()); + $data = $this->callAPI("{$this->viconApiConfig->apiUrl()}/program/$uuid", $this->viconApiConfig->token()); return $data; } diff --git a/app/Services/Vicon/ViconApiToken.php b/app/Services/Vicon/ViconApiConfig.php similarity index 64% rename from app/Services/Vicon/ViconApiToken.php rename to app/Services/Vicon/ViconApiConfig.php index 12c2cb6..59fce7b 100644 --- a/app/Services/Vicon/ViconApiToken.php +++ b/app/Services/Vicon/ViconApiConfig.php @@ -4,13 +4,15 @@ namespace App\Services\Vicon; use App\Containers\Dashboard\Tasks\IntegrationCredentials\GetIntegrationCredentialTask; -class ViconApiToken +class ViconApiConfig { + private const FALLBACK_API_URL = 'https://db-nica.ru/api/v1'; + public function __construct( private readonly GetIntegrationCredentialTask $getCredential, ) {} - public function get(): string + public function token(): string { $credential = $this->getCredential->run('vikon_api'); @@ -20,4 +22,11 @@ class ViconApiToken return $credential->payload['token']; } + + public function apiUrl(): string + { + $credential = $this->getCredential->run('vikon_api'); + + return $credential->payload['api_url'] ?? self::FALLBACK_API_URL; + } }