mirror of
https://github.com/rico-vz/HeimerdingerLoL.git
synced 2026-03-21 21:12:43 +01:00
fix: normalize champion payload to support multiple data formats
This commit is contained in:
@@ -20,11 +20,13 @@ class BorisStaticDataClient
|
|||||||
|
|
||||||
public function getChampions(): array
|
public function getChampions(): array
|
||||||
{
|
{
|
||||||
return $this->fetchWithFallback(
|
$payload = $this->fetchWithFallback(
|
||||||
self::CHAMPIONS_ENDPOINT,
|
self::CHAMPIONS_ENDPOINT,
|
||||||
self::MERAKI_CHAMPIONS_URL,
|
self::MERAKI_CHAMPIONS_URL,
|
||||||
fn (mixed $payload): bool => $this->isChampionPayload($payload)
|
fn (mixed $payload): bool => $this->isChampionPayload($payload)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
return $this->normalizeChampionPayload($payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getChampionRates(): array
|
public function getChampionRates(): array
|
||||||
@@ -138,7 +140,17 @@ class BorisStaticDataClient
|
|||||||
|
|
||||||
private function isChampionPayload(mixed $payload): bool
|
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
|
private function isChampionRatesPayload(mixed $payload): bool
|
||||||
@@ -160,4 +172,13 @@ class BorisStaticDataClient
|
|||||||
{
|
{
|
||||||
return rtrim((string) config('services.boris.url'), '/');
|
return rtrim((string) config('services.boris.url'), '/');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function normalizeChampionPayload(array $payload): array
|
||||||
|
{
|
||||||
|
if (array_is_list($payload)) {
|
||||||
|
return $payload;
|
||||||
|
}
|
||||||
|
|
||||||
|
return array_values($payload);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user