From 55dad5ea13da577e86122fb832b8534627d1f03c Mon Sep 17 00:00:00 2001 From: rafaelmmiller <150964962+rafaelsideguide@users.noreply.github.com> Date: Fri, 3 Jan 2025 13:56:39 -0300 Subject: [PATCH] fixed empty data with next causing infinite loop --- apps/js-sdk/firecrawl/src/index.ts | 12 ++++++++++++ apps/python-sdk/firecrawl/firecrawl.py | 9 +++++++++ 2 files changed, 21 insertions(+) diff --git a/apps/js-sdk/firecrawl/src/index.ts b/apps/js-sdk/firecrawl/src/index.ts index 6b89960e..687325d3 100644 --- a/apps/js-sdk/firecrawl/src/index.ts +++ b/apps/js-sdk/firecrawl/src/index.ts @@ -565,6 +565,10 @@ export default class FirecrawlApp { if ("data" in statusData) { let data = statusData.data; while (typeof statusData === 'object' && 'next' in statusData) { + if (data.length === 0) { + console.warn("Expected 'data' is missing.") + break + } statusData = (await this.getRequest(statusData.next, headers)).data; data = data.concat(statusData.data); } @@ -812,6 +816,10 @@ export default class FirecrawlApp { if ("data" in statusData) { let data = statusData.data; while (typeof statusData === 'object' && 'next' in statusData) { + if (data.length === 0) { + console.warn("Expected 'data' is missing.") + break + } statusData = (await this.getRequest(statusData.next, headers)).data; data = data.concat(statusData.data); } @@ -995,6 +1003,10 @@ export default class FirecrawlApp { if ("data" in statusData) { let data = statusData.data; while (typeof statusData === 'object' && 'next' in statusData) { + if (data.length === 0) { + console.warn("Expected 'data' is missing.") + break + } statusResponse = await this.getRequest(statusData.next, headers); statusData = statusResponse.data; data = data.concat(statusData.data); diff --git a/apps/python-sdk/firecrawl/firecrawl.py b/apps/python-sdk/firecrawl/firecrawl.py index 8eb7acee..812f7bd1 100644 --- a/apps/python-sdk/firecrawl/firecrawl.py +++ b/apps/python-sdk/firecrawl/firecrawl.py @@ -250,6 +250,9 @@ class FirecrawlApp: if 'data' in status_data: data = status_data['data'] while 'next' in status_data: + if len(status_data['data']) == 0: + logger.warning("Expected 'data' is missing.") + break next_url = status_data.get('next') if not next_url: logger.warning("Expected 'next' URL is missing.") @@ -467,6 +470,9 @@ class FirecrawlApp: if 'data' in status_data: data = status_data['data'] while 'next' in status_data: + if len(status_data['data']) == 0: + logger.warning("Expected 'data' is missing.") + break next_url = status_data.get('next') if not next_url: logger.warning("Expected 'next' URL is missing.") @@ -685,6 +691,9 @@ class FirecrawlApp: if 'data' in status_data: data = status_data['data'] while 'next' in status_data: + if len(status_data['data']) == 0: + logger.warning("Expected 'data' is missing.") + break status_response = self._get_request(status_data['next'], headers) status_data = status_response.json() data.extend(status_data.get('data', []))