From 24ddcd4a6d8f605d78391d21794a25ced1c2dfed Mon Sep 17 00:00:00 2001
From: Nicolas <nicolascamara29@gmail.com>
Date: Sat, 18 Jan 2025 23:53:33 -0300
Subject: [PATCH] Update check-fire-engine.ts

---
 .../controllers/v0/admin/check-fire-engine.ts | 76 +++++++++++--------
 1 file changed, 43 insertions(+), 33 deletions(-)

diff --git a/apps/api/src/controllers/v0/admin/check-fire-engine.ts b/apps/api/src/controllers/v0/admin/check-fire-engine.ts
index e32918d754..0559514e05 100644
--- a/apps/api/src/controllers/v0/admin/check-fire-engine.ts
+++ b/apps/api/src/controllers/v0/admin/check-fire-engine.ts
@@ -15,44 +15,54 @@ export async function checkFireEngine(req: Request, res: Response) {
     const controller = new AbortController();
     const timeout = setTimeout(() => controller.abort(), 30000);
 
-    try {
-      const response = await fetch(
-        `${process.env.FIRE_ENGINE_BETA_URL}/scrape`,
-        {
-          method: "POST",
-          headers: {
-            "Content-Type": "application/json",
-            "X-Disable-Cache": "true",
+    const urls = ["https://roastmywebsite.ai", "https://example.com"];
+    let lastError : string | null = null;
+
+    for (const url of urls) {
+      try {
+        const response = await fetch(
+          `${process.env.FIRE_ENGINE_BETA_URL}/scrape`,
+          {
+            method: "POST",
+            headers: {
+              "Content-Type": "application/json",
+              "X-Disable-Cache": "true",
+            },
+            body: JSON.stringify({
+              url,
+            }),
+            signal: controller.signal,
           },
-          body: JSON.stringify({
-            url: "https://roastmywebsite.ai",
-          }),
-          signal: controller.signal,
-        },
-      );
+        );
 
-      clearTimeout(timeout);
+        clearTimeout(timeout);
 
-      if (response.ok) {
-        const responseData = await response.json();
-        return res.status(200).json({
-          data: responseData,
-        });
-      } else {
-        return res.status(response.status).json({
-          success: false,
-          error: `Fire engine returned status ${response.status}`,
-        });
-      }
-    } catch (error) {
-      if (error.name === "AbortError") {
-        return res.status(504).json({
-          success: false,
-          error: "Request timed out after 30 seconds",
-        });
+        if (response.ok) {
+          const responseData = await response.json();
+          return res.status(200).json({
+            data: responseData,
+          });
+        }
+        lastError = `Fire engine returned status ${response.status}`;
+      } catch (error) {
+        if (error.name === "AbortError") {
+          return res.status(504).json({
+            success: false,
+            error: "Request timed out after 30 seconds",
+          });
+        }
+        lastError = error;
       }
-      throw error;
     }
+
+    // If we get here, all retries failed
+    logger.error(lastError);
+    Sentry.captureException(lastError);
+    return res.status(500).json({
+      success: false,
+      error: "Internal server error - all retry attempts failed",
+    });
+
   } catch (error) {
     logger.error(error);
     Sentry.captureException(error);