From: Eduardo Date: Sat, 28 Oct 2023 00:29:15 +0000 (+0200) Subject: get the vars from sysvar and/or post values, check if file not expired and return... X-Git-Url: http://git.edufdez.es/?a=commitdiff_plain;h=f6e6c023af1e0a409e1ea6e0ce3d7109d071d0c2;p=g-sheets-php.git get the vars from sysvar and/or post values, check if file not expired and return the data --- diff --git a/index.php b/index.php index 955ec4c..db93875 100644 --- a/index.php +++ b/index.php @@ -7,14 +7,78 @@ $credentialsPath = "credentials.json"; // the spreadsheet id (can be found in the url of the doc) $sheetId = "1usr8QgimS11BjY_Vwxe7ALSoZLA8fUrLDYrGQ8TCY9Y"; -$sheetSync = new GSheetSync($credentialsPath, $sheetId); - -# $sheetSync->put("Hoja 1", ["taco", "gato colore", 6]); -$res = $sheetSync->get("Hoja 1!A1:F10"); +// get vars +$sheet = filter_var($_POST["sheet"], FILTER_SANITIZE_URL); +// set content type header('Content-Type: application/json'); -print($res); + +switch ($_SERVER['REQUEST_METHOD']) { + case 'GET': + // generate filename + $filename = generateFilename($_ENV["sheetId"], $sheet); + if (fileExpired($filename)) { + $sheetSync = new GSheetSync($_ENV["credentialsPath"], $_ENV["sheetId"]); + $res = $sheetSync->get($sheet); + + error_log("database not available!"); + print($res); + + // save res as file with filename + $file = fopen($filename, "w"); + fwrite($file, $res); + fclose($file); + } else { + readfile($filename); + } + break; + + case 'POST': + case 'PUT': + // handle PUT request + // get values + $formData = filter_var_array($_POST["form"], FILTER_SANITIZE_ADD_SLASHES); + + $sheetSync = new GSheetSync(getenv("credentialsPath"), getenv("sheetId")); + $sheetSync->put($sheet, $formData); + http_response_code(201); + break; + + default: + // Bad request, method not allowed + http_response_code(405); + header('Allow: GET, POST, PUT'); + print('{"error": "405", "message": "Method Not Allowed"}'); + break; +} # TODO: if get: save the json and serve always the same for 5 minutes or something like that -# use a sha or md5 on the input to return the same output as requested. \ No newline at end of file +# use a sha or md5 on the input to return the same output as requested. + +// $filepath = "test.json"; + +// $file = fopen($filepath, "w"); +// fwrite($file, "test"); +// fclose($file); + +/** + * @return bool true if expired or does not exist, false if still valid + */ +function fileExpired(string $filename): bool +{ + $filetime = filemtime($filename); + + // if file does not exist counts as expired + if (!$filetime) return true; + + // if file older than 5 minutes IS expired + if ($filetime < time() - 300) return true; + + // else file is NOT expired + return false; +} + +function generateFilename(string $sheetid, string $sheet): string { + return md5($sheetid . $sheet) . ".json"; +} \ No newline at end of file