diff --git a/app/Services/LodestoneApiService.php b/app/Services/LodestoneApiService.php index 0745396..410754f 100644 --- a/app/Services/LodestoneApiService.php +++ b/app/Services/LodestoneApiService.php @@ -56,6 +56,9 @@ class LodestoneApiService throw new Exception('Error:' . curl_error($ch)); } curl_close($ch); - return json_decode($result); + $json = json_decode($result); + if (property_exists($json, 'Error') && $json->Error === true) + return null; + return $json; } } diff --git a/app/Services/LodestoneCacheService.php b/app/Services/LodestoneCacheService.php index c58d042..caa3f09 100644 --- a/app/Services/LodestoneCacheService.php +++ b/app/Services/LodestoneCacheService.php @@ -13,6 +13,10 @@ class LodestoneCacheService $character = LodestoneCache::where('type', LodestoneCacheType::character)->where('lodestoneId', $id)->first(); if ($character !== null && $character->updated_at > $this->getCacheFreshTime()) return $character; $fetchedCharacter = $lodestoneApiService->getCharacterById($id); + if ($fetchedCharacter === null) { + if ($character === null) return abort(502); + return $character; + } $character = LodestoneCache::updateOrCreate([ 'type' => LodestoneCacheType::character, 'lodestoneId' => $fetchedCharacter->Character->ID, @@ -28,6 +32,10 @@ class LodestoneCacheService $character = LodestoneCache::where('type', LodestoneCacheType::character)->where('server', $server)->where('name', $name)->first(); if ($character !== null && $character->updated_at > $this->getCacheFreshTime()) return $character; $fetchedCharacter = $lodestoneApiService->getCharacterByName($server, $name); + if ($fetchedCharacter === null) { + if ($character === null) return abort(502); + return $character; + } $character = LodestoneCache::updateOrCreate([ 'type' => LodestoneCacheType::character, 'lodestoneId' => $fetchedCharacter->Character->ID, @@ -43,6 +51,10 @@ class LodestoneCacheService $freeCompany = LodestoneCache::where('type', LodestoneCacheType::freeCompany)->where('lodestoneId', $id)->first(); if ($freeCompany !== null && $freeCompany->updated_at > $this->getCacheFreshTime()) return $freeCompany; $fetchedFreeCompany = $lodestoneApiService->getFreeCompanyById($id); + if ($fetchedFreeCompany === null) { + if ($freeCompany === null) return abort(502); + return $freeCompany; + } $freeCompany = LodestoneCache::updateOrCreate([ 'type' => LodestoneCacheType::freeCompany, 'lodestoneId' => $fetchedFreeCompany->FreeCompany->ID, @@ -58,6 +70,10 @@ class LodestoneCacheService $freeCompany = LodestoneCache::where('type', LodestoneCacheType::freeCompany)->where('server', $server)->where('name', $name)->first(); if ($freeCompany !== null && $freeCompany->updated_at > $this->getCacheFreshTime()) return $freeCompany; $fetchedFreeCompany = $lodestoneApiService->getFreeCompanyByName($server, $name); + if ($fetchedFreeCompany === null) { + if ($freeCompany === null) return abort(502); + return $freeCompany; + } $freeCompany = LodestoneCache::updateOrCreate([ 'type' => LodestoneCacheType::freeCompany, 'lodestoneId' => $fetchedFreeCompany->FreeCompany->ID,