Add trip caching

This commit is contained in:
Ben Goldsworthy 2022-10-05 19:30:39 +00:00
parent b56c82fd82
commit baadb8f982

View file

@ -1,6 +1,7 @@
<?php <?php
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Storage;
use GuzzleHttp\Client; use GuzzleHttp\Client;
/* /*
@ -15,7 +16,19 @@ use GuzzleHttp\Client;
*/ */
Route::get('/', function () { Route::get('/', function () {
if (config('app.current_trip_id')) { if (!config('app.current_trip_id')) return view('no-trip');
$tripFile = config('app.current_trip_id') . '.json';
if (Storage::disk('local')->exists($tripFile)) {
$cachedData = json_decode(Storage::disk('local')->get($tripFile));
$cachedDataUpdatedAt = new DateTime($cachedData->trip->updated_at);
$now = new DateTime();
if (intval(($now->getTimestamp() - $cachedDataUpdatedAt->getTimestamp()) / 3600) <= 5) {
return view('tracker', ['trip' => $cachedData->trip]);
}
}
$client = new Client([ $client = new Client([
'base_uri' => 'https://app.wayward.travel/', 'base_uri' => 'https://app.wayward.travel/',
'timeout' => 3.0 'timeout' => 3.0
@ -25,13 +38,23 @@ Route::get('/', function () {
if ($response->getStatusCode() == 200) { if ($response->getStatusCode() == 200) {
$data = json_decode($response->getBody()); $data = json_decode($response->getBody());
if (Storage::disk('local')->missing($tripFile)) {
Storage::disk('local')->put($tripFile, json_encode($data));
} else {
$cachedData = json_decode(Storage::disk('local')->get($tripFile));
if ($data->trip->updated_at !== $cachedData->trip->updated_at) {
Storage::disk('local')->put($tripFile, json_encode($data));
// TODO: Cache photos locally
} else {
$data = $cachedData;
}
}
return view('tracker', ['trip' => $data->trip]); return view('tracker', ['trip' => $data->trip]);
} else { } else {
return 'Something went wrong'; return 'Something went wrong';
} }
} else {
return view('no-trip');
}
}); });
Route::get('/past-trips', function () { Route::get('/past-trips', function () {