From 86725fab2694b204b6bbbd580808755830d182cb Mon Sep 17 00:00:00 2001 From: Matt Buck Date: Tue, 2 Sep 2025 18:51:15 -0400 Subject: [PATCH] Handle 429 Too Many Requests status --- lib/request.ts | 2 ++ tests/unit/openGraphScraper.spec.ts | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/lib/request.ts b/lib/request.ts index 76031d4..ef41e8f 100644 --- a/lib/request.ts +++ b/lib/request.ts @@ -90,6 +90,8 @@ export default async function requestAndResultsFormatter(options: OpenGraphScrap throw new Error('408 Request Timeout'); case 410: throw new Error('410 Gone'); + case 429: + throw new Error('429 Too Many Requests'); case 500: throw new Error('500 Internal Server Error'); case 502: diff --git a/tests/unit/openGraphScraper.spec.ts b/tests/unit/openGraphScraper.spec.ts index 84aae5e..f7169bd 100644 --- a/tests/unit/openGraphScraper.spec.ts +++ b/tests/unit/openGraphScraper.spec.ts @@ -505,6 +505,28 @@ describe('return ogs', function () { }); }); + it('when the request sends a 429 error', function () { + mockAgent.get('http://www.testerror.com') + .intercept({ path: '/' }) + .reply(429, { + message: '429 Too Many Requests', + code: '429', + }); + + return ogs({ url: 'http://www.testerror.com' }) + .then(function () { + expect('').to.be.eql('this should not happen'); + }) + .catch(function (data) { + expect(data.error).to.be.eql(true); + expect(data.result.error).to.eql('429 Too Many Requests'); + expect(data.result.errorDetails.toString()).to.eql('Error: 429 Too Many Requests'); + expect(data.result.success).to.eql(false); + expect(data.response).to.be.eql(undefined); + expect(data.html).to.be.eql(undefined); + }); + }); + it('when the request sends a general error', function () { mockAgent.get('http://www.testerror.com') .intercept({ path: '/' })