Send "304 Not Modified" responses to the gamestick if nothing changed
[gamestick-pjgsapi.git] / www / api / rest / connect.php
index 5e5c7e68b1672cc338a65065cab365a9e94bc521..625cbaa41634635699522b8bb29db5dde05a33ff 100644 (file)
@@ -57,6 +57,18 @@ if ($gamestick === null || !$gamestick->getUser()->complete()) {
 }
 
 
+$calculatedSessionId = $gamestick->calculateSessionId();
+if ($sessionId === $calculatedSessionId) {
+    header('HTTP/1.0 304 Not Modified');
+    exit();
+}
+
+if ($gamestick->sessionId !== $calculatedSessionId) {
+    $gamestick->sessionId = $calculatedSessionId;
+    $gamestick->update(['sessionId' => $calculatedSessionId]);
+}
+
+
 $data = [
     'sid'             => $gamestick->sessionId,
     'time'            => (string) $nowMilli,
@@ -90,10 +102,12 @@ $data = [
 $json = json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
 
 
+require_once $rootDir . '/src/Paths.php';
+$paths = new Paths();
 $placeholderFiles = [
-    'PLACEHOLDER_APPS'          => $cacheDir . 'connect-apps.min.json',
-    'PLACEHOLDER_AGES'          => $cacheDir . 'connect-featured-ages.min.json',
-    'PLACEHOLDER_UITRANSLATION' => $cacheDir . 'connect-uitranslation.min.json',
+    'PLACEHOLDER_APPS'          => $paths->apps(),
+    'PLACEHOLDER_AGES'          => $paths->featuredAges(),
+    'PLACEHOLDER_UITRANSLATION' => $paths->uiTranslation(),
 ];
 foreach ($placeholderFiles as $placeholder => $cacheFile) {
     //inject apps