From 14b7420557619d4c78c42e7c896541185af6e0b6 Mon Sep 17 00:00:00 2001 From: Redume Date: Mon, 21 Oct 2024 20:57:46 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81=20=D1=80=D0=B5=D0=BA?= =?UTF-8?q?=D1=83=D1=80=D1=81=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- collect-currency/save_fiat.js | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/collect-currency/save_fiat.js b/collect-currency/save_fiat.js index 8fc97f8..da4386e 100644 --- a/collect-currency/save_fiat.js +++ b/collect-currency/save_fiat.js @@ -3,16 +3,14 @@ const axios = require('axios'); const config = require('../shared/config/src/main.js')(); const logger = require('../shared/logger/src/main.js'); -/** - * Saves exchange rate of the fiat currency - * @returns {Object} - - */ -async function save_fiat() { +async function save_fiat(depth = 0) { if (!config['currency']['collecting']['fiat']) return; + const max_depth = 5; config['currency']['fiat'].forEach((value) => config['currency']['fiat'].forEach(async (pair) => { if (value === pair) return; + await axios .get( `https://duckduckgo.com/js/spice/currency/1/${value}/${pair}`, @@ -55,12 +53,19 @@ async function save_fiat() { ], ); }) - .catch((err) => { + .catch(async (err) => { logger.error(err); - setTimeout( - save_fiat, - err.config?.timeout ? err.config?.timeout : 3000, - ); + + if (depth < max_depth) { + await new Promise((resolve) => + setTimeout(resolve, max_depth), + ); + await save_fiat(depth + 1); + } else { + logger.error( + 'Max retry limit reached for saving fiat data.', + ); + } }); }), );