error 500 fix

This commit is contained in:
2026-10-31 15:34:53 +01:00
parent f7edd64c8a
commit a888fe3695
4 changed files with 37 additions and 10 deletions
+33 -7
View File
@@ -217,6 +217,34 @@ class MakerWorldService
return Setting::get('makerworld_user');
}
/**
* Safely extract a normalized list of model items from diverse API response formats.
*
* @return array<int, array<string, mixed>>
*/
public function extractModelsList(mixed $data): array
{
if (! is_array($data)) {
return [];
}
if (isset($data['data']) && is_array($data['data'])) {
$data = $data['data'];
}
$list = $data['hits'] ?? $data['designs'] ?? $data['list'] ?? $data['items'] ?? null;
if (is_array($list)) {
return array_values(array_filter($list, fn ($item) => is_array($item)));
}
if (array_is_list($data)) {
return array_values(array_filter($data, fn ($item) => is_array($item)));
}
return [];
}
/**
* Fetch user's favorited models from MakerWorld.
*/
@@ -233,9 +261,7 @@ class MakerWorldService
]);
if ($response->successful()) {
$data = $response->json();
return $data['hits'] ?? $data['designs'] ?? $data['list'] ?? (is_array($data) ? $data : []);
return $this->extractModelsList($response->json());
}
} catch (\Throwable $e) {
Log::error('MakerWorld getFavorites error: '.$e->getMessage());
@@ -260,9 +286,7 @@ class MakerWorldService
]);
if ($response->successful()) {
$data = $response->json();
return $data['hits'] ?? $data['designs'] ?? $data['list'] ?? (is_array($data) ? $data : []);
return $this->extractModelsList($response->json());
}
} catch (\Throwable $e) {
Log::error('MakerWorld getPublished error: '.$e->getMessage());
@@ -289,7 +313,9 @@ class MakerWorldService
foreach ($data['hits'] as $contest) {
if (! empty($contest['designs']) && is_array($contest['designs'])) {
foreach ($contest['designs'] as $design) {
$allDesigns[$design['id']] = $design;
if (is_array($design) && ! empty($design['id'])) {
$allDesigns[$design['id']] = $design;
}
}
}
}