Always send UUID for games
[gamestick-pjgsapi.git] / bin / functions.php
index 72769ed4f69dcfbb94dec7c52397f8d3f65ac742..a5f9d1873398b4d7f0ba5be2e9c42cfa7f047cbb 100644 (file)
@@ -54,7 +54,7 @@ function loadGames(array $gameFiles): array
  * Convert a meta data game info into a structure that is suitable
  * for http://l2.gamestickservices.net/api/rest/connect/stick/stick/xxx/view.json
  */
-function convertGameDataForConnect(object $gameData, array $popular): array
+function convertGameDataForConnect(object $gameData, array $popular): ?array
 {
     $userCurrency = 'EUR';
 
@@ -64,7 +64,6 @@ function convertGameDataForConnect(object $gameData, array $popular): array
         'name'        => $gameData->name,
         'description' => $gameData->description,
 
-        //FIXME: use original value once changing age works on the server
         'minAge' => $gameData->minAge,
         'genre'  => current($gameData->genres),
         'genres' => [],
@@ -132,20 +131,33 @@ function convertGameDataForConnect(object $gameData, array $popular): array
         }
         if ($release->versionCode > $highestVersionCode) {
             $highestVersionCode = $release->versionCode;
-            $highestVersionKey = $releaseKey;
+            $highestVersionKey  = $releaseKey;
         }
     }
+
     if ($highestVersionKey !== null) {
         $release = $gameData->releases[$highestVersionKey];
         $connectData['version']     = $release->uuid;
         $connectData['gameversion'] = $release->gsName ?? $release->name;
+
         $connectData['size']        = round($release->size / 1024 / 1024 * 1000);
         $connectData['download']    = [
             'url'     => $release->url,
             'version' => $release->versionCode,
         ];
+
+    } else if (count($gameData->releases)) {
+        $firstRelease = reset($gameData->releases);
+        $connectData['name']        = '!! ' . $connectData['name'];
+        $connectData['description']
+            = "Download broken!\n\n" . $connectData['description'];
+        $connectData['version']     = $firstRelease->uuid;
+        $connectData['gameversion'] = $firstRelease->gsName ?? $firstRelease->name;
+
     } else {
-        $connectData['name'] = '!! ' . $connectData['name'];
+        $connectData['name']        = '!!! ' . $connectData['name'];
+        $connectData['description']
+            = "Release data missing!\n\n" . $connectData['description'];
     }
 
     foreach ($gameData->videos as $videoNum => $video) {