From 1c1ffcd19b37d6b24c93677fc30b35b44e64cab2 Mon Sep 17 00:00:00 2001 From: WebStreamr <210764791+webstreamr@users.noreply.github.com> Date: Tue, 13 May 2025 18:31:34 +0000 Subject: [PATCH] feat(fetcher): add retry capability using axios-retry --- package-lock.json | 25 +++++++++++++++++++++++++ package.json | 1 + src/index.ts | 6 +++++- 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 6fefa38..d235b01 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "@isaacs/ttlcache": "^1.4.1", "axios-cache-interceptor": "^1.8.0", + "axios-retry": "^4.5.0", "bytes": "^3.1.2", "cheerio": "^1.0.0", "country-emoji": "^1.5.6", @@ -2137,6 +2138,18 @@ "axios": ">= 0.17.0" } }, + "node_modules/axios-retry": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-4.5.0.tgz", + "integrity": "sha512-aR99oXhpEDGo0UuAlYcn2iGRds30k366Zfa05XWScR9QaQD4JYiP3/1Qt1u7YlefUOK+cn0CcwoL1oefavQUlQ==", + "license": "Apache-2.0", + "dependencies": { + "is-retry-allowed": "^2.2.0" + }, + "peerDependencies": { + "axios": "0.x || 1.x" + } + }, "node_modules/babel-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", @@ -4364,6 +4377,18 @@ "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", "license": "MIT" }, + "node_modules/is-retry-allowed": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz", + "integrity": "sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", diff --git a/package.json b/package.json index 35aa294..b78c4e5 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "dependencies": { "@isaacs/ttlcache": "^1.4.1", "axios-cache-interceptor": "^1.8.0", + "axios-retry": "^4.5.0", "bytes": "^3.1.2", "cheerio": "^1.0.0", "country-emoji": "^1.5.6", diff --git a/src/index.ts b/src/index.ts index b1330b5..693698c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,6 @@ import express, { NextFunction, Request, Response } from 'express'; import axios from 'axios'; +import axiosRetry from 'axios-retry'; import { setupCache } from 'axios-cache-interceptor'; import winston from 'winston'; import { FrenchCloud, Handler, KinoKiste, MeineCloud, MostraGuarda, VerHdLink } from './handler'; @@ -19,7 +20,10 @@ const logger = winston.createLogger({ ], }); -const fetcher = new Fetcher(setupCache(axios), logger); +setupCache(axios); +axiosRetry(axios, { retries: 3, retryDelay: axiosRetry.exponentialDelay }); + +const fetcher = new Fetcher(axios, logger); const embedExtractors = new EmbedExtractorRegistry(logger, fetcher);