error 500 fix
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user