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([ 'base_uri' => 'https://app.wayward.travel/', 'timeout' => 3.0 ]); $response = $client->get('trip/'.config('app.current_trip_id').'/user/zmld8ko6qy7d9j3xvq10/json'); if ($response->getStatusCode() == 200) { $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]); } else { return 'Something went wrong'; } }); Route::get('/past-trips', function () { return view('past-trips'); }); Route::get('/past-trip/{tripId}', function ($tripId) { $client = new Client([ 'base_uri' => 'https://app.wayward.travel/', 'timeout' => 3.0 ]); $response = $client->get('trip/'.$tripId.'/user/zmld8ko6qy7d9j3xvq10/json'); if ($response->getStatusCode() == 200) { $data = json_decode($response->getBody()); return view('past-trip', ['trip' => $data->trip]); } else { return 'Something went wrong'; } });