From ae915989cc94a32733291a214994738588182950 Mon Sep 17 00:00:00 2001 From: Rico Date: Mon, 2 Mar 2026 00:08:16 +0100 Subject: [PATCH] fix: normalize champion payload to support multiple data formats --- app/Services/BorisStaticDataClient.php | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/app/Services/BorisStaticDataClient.php b/app/Services/BorisStaticDataClient.php index c295018..f3dfeda 100644 --- a/app/Services/BorisStaticDataClient.php +++ b/app/Services/BorisStaticDataClient.php @@ -20,11 +20,13 @@ class BorisStaticDataClient public function getChampions(): array { - return $this->fetchWithFallback( + $payload = $this->fetchWithFallback( self::CHAMPIONS_ENDPOINT, self::MERAKI_CHAMPIONS_URL, fn (mixed $payload): bool => $this->isChampionPayload($payload) ); + + return $this->normalizeChampionPayload($payload); } public function getChampionRates(): array @@ -138,7 +140,17 @@ class BorisStaticDataClient private function isChampionPayload(mixed $payload): bool { - return is_array($payload) && array_is_list($payload); + if (! is_array($payload) || $payload === []) { + return false; + } + + if (array_is_list($payload)) { + return isset($payload[0]['id']); + } + + $firstChampion = reset($payload); + + return is_array($firstChampion) && isset($firstChampion['id']); } private function isChampionRatesPayload(mixed $payload): bool @@ -160,4 +172,13 @@ class BorisStaticDataClient { return rtrim((string) config('services.boris.url'), '/'); } + + private function normalizeChampionPayload(array $payload): array + { + if (array_is_list($payload)) { + return $payload; + } + + return array_values($payload); + } }