get the vars from sysvar and/or post values, check if file not expired and return...
authorEduardo <[email protected]>
Sat, 28 Oct 2023 00:29:15 +0000 (02:29 +0200)
committerEduardo <[email protected]>
Sat, 28 Oct 2023 00:29:15 +0000 (02:29 +0200)
index.php

index 955ec4c9e6eda37cacc8668ed5c3cd144b8f7172..db93875efa1af9bf9e66aba02eb79df95e6f4bf9 100644 (file)
--- 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