// 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