Add error checking to the api caching

This commit is contained in:
Daniel_I_Am 2020-08-29 15:58:59 +02:00
parent 57903bdfcd
commit d5f228f226
No known key found for this signature in database
GPG Key ID: 80C428FCC9743E84
2 changed files with 20 additions and 1 deletions

View File

@ -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;
}
}

View File

@ -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,