From bf5368d47e992dd8aab9c801001f90cd898eb58c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Yusuf=20Akg=C3=BCl?= <s86116@bht-berlin.de>
Date: Wed, 24 May 2023 18:12:55 +0200
Subject: [PATCH] fix deployment url 3 error catching

---
 app/api/games/route.ts |  8 ++++++--
 lib/igdb.ts            | 32 ++++++++++++++++++--------------
 2 files changed, 24 insertions(+), 16 deletions(-)

diff --git a/app/api/games/route.ts b/app/api/games/route.ts
index 842198f..23a5fa5 100644
--- a/app/api/games/route.ts
+++ b/app/api/games/route.ts
@@ -3,6 +3,10 @@ import { NextRequest, NextResponse } from "next/server";
 
 export async function GET(req: NextRequest) {
     const p = req.nextUrl.searchParams;
-    const games = await getGames(p.get('page') ? parseInt(p.get('page') as string) : undefined);
-    return NextResponse.json(games);
+    try {
+        const games = await getGames(p.get('page') ? parseInt(p.get('page') as string) : undefined);
+        return NextResponse.json(games);
+    } catch (error) {
+        return NextResponse.json(error, { status: 500 });
+    }
 }
\ No newline at end of file
diff --git a/lib/igdb.ts b/lib/igdb.ts
index 0542905..b924e9b 100644
--- a/lib/igdb.ts
+++ b/lib/igdb.ts
@@ -28,29 +28,33 @@ async function getToken(): Promise<IAuth> {
 }
 
 // fetches the top 200 games with a rating of 96 or higher
-export async function getGames(page = 1): Promise<IGame[]> {
+export async function getGames(page = 1): Promise<IGame[] | unknown> {
     const auth = await getToken()
     const url = new URL(`${IGDB_BASE_URL}/games`)
 
     let offset = calculateOffset(page, limit)
 
-    const response = await fetch(url, {
-        method: 'POST',
-        headers: {
-            'Client-ID': CLIENT_ID,
-            'Authorization': `Bearer ${auth.access_token}`
-        },
-        body: `fields name, cover.*; limit ${limit}; offset ${offset};
+    try {
+        const response = await fetch(url, {
+            method: 'POST',
+            headers: {
+                'Client-ID': CLIENT_ID,
+                'Authorization': `Bearer ${auth.access_token}`
+            },
+            body: `fields name, cover.*; limit ${limit}; offset ${offset};
             sort total_rating desc; where total_rating_count > 2
             & cover != null & total_rating != null & rating != null;`
-    })
-    const games = await response.json() as IGame[]
+        })
+        const games = await response.json() as IGame[]
 
-    games.forEach(game => {
-        game.cover.url = getImageURL(game.cover.image_id, 'cover_big')
-    })
+        games.forEach(game => {
+            game.cover.url = getImageURL(game.cover.image_id, 'cover_big')
+        })
 
-    return games
+        return games
+    } catch (error) {
+        console.log(error)
+    }
 }
 
 // fetches a single game by id
-- 
GitLab