Add download forcing

This commit is contained in:
Ben Goldsworthy 2022-11-29 23:58:11 +00:00
parent 428645245b
commit 172131e1e6

View file

@ -36,15 +36,28 @@ class TrackerController extends Controller
$viewMode = $request->input('show', null); $viewMode = $request->input('show', null);
$fromCheckin = $request->input('from', null); $fromCheckin = $request->input('from', null);
$toCheckin = $request->input('to', null); $toCheckin = $request->input('to', null);
$forceDownload = $request->input('force', false);
$tripData = $this->get_trip_data($tripId); $tripData = $this->get_trip_data($tripId, $forceDownload);
if ($fromCheckin) { if ($fromCheckin) {
$tripData->checkins = array_filter($tripData->checkins, function($key) use ($fromCheckin) { return $key >= $fromCheckin; }, ARRAY_FILTER_USE_KEY); $tripData->checkins = array_filter(
$tripData->checkins,
function($key) use ($fromCheckin) {
return $key >= $fromCheckin;
},
ARRAY_FILTER_USE_KEY
);
} }
if ($toCheckin) { if ($toCheckin) {
$tripData->checkins = array_filter($tripData->checkins, function($key) use ($toCheckin) { return $key <= $toCheckin; }, ARRAY_FILTER_USE_KEY); $tripData->checkins = array_filter(
$tripData->checkins,
function($key) use ($toCheckin) {
return $key <= $toCheckin;
},
ARRAY_FILTER_USE_KEY
);
} }
return view( return view(
@ -75,15 +88,16 @@ class TrackerController extends Controller
* 3. If new trip data is downloaded, overwrite any cached data. * 3. If new trip data is downloaded, overwrite any cached data.
* *
* @param string $tripId * @param string $tripId
* @param bool $forceDownload
* @return string * @return string
*/ */
public function get_trip_data(string $tripId) { public function get_trip_data(string $tripId, bool $forceDownload = false) {
$tripFileName = ( $tripId ?? config('app.current_trip_id') ) . '.json'; $tripFileName = ( $tripId ?? config('app.current_trip_id') ) . '.json';
// Returns the cached trip data if the trip is inactive (i.e., finished) // Returns the cached trip data if the trip is inactive (i.e., finished)
// or less than 13 hours old, depending on whether it was tracking // or less than 13 hours old, depending on whether it was tracking
// at last check or not. // at last check or not.
if (Storage::disk('local')->exists($tripFileName)) { if (!$forceDownload && Storage::disk('local')->exists($tripFileName)) {
Log::debug("Cached trip file '{$tripFileName}' found..."); Log::debug("Cached trip file '{$tripFileName}' found...");
$cachedData = json_decode(Storage::disk('local')->get($tripFileName))->trip; $cachedData = json_decode(Storage::disk('local')->get($tripFileName))->trip;
@ -106,7 +120,12 @@ class TrackerController extends Controller
} }
// Otherwise, download the trip data from the Wayward API. // Otherwise, download the trip data from the Wayward API.
if ($forceDownload) {
Log::debug("Forcing download for '{$tripFileName}'.");
} else {
Log::debug("No cached trip file found for '{$tripFileName}'."); Log::debug("No cached trip file found for '{$tripFileName}'.");
}
$client = new Client([ $client = new Client([
'base_uri' => 'https://app.wayward.travel/', 'base_uri' => 'https://app.wayward.travel/',
'timeout' => 3.0 'timeout' => 3.0