From fdbd3b162848656a821388414ec32f835ddec617 Mon Sep 17 00:00:00 2001 From: Axe Date: Sun, 11 Feb 2024 19:15:24 +0000 Subject: [PATCH] add file download retry --- src/utils/utils.js | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/src/utils/utils.js b/src/utils/utils.js index 66f103d3..698a1745 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -12,20 +12,30 @@ function fileExist (path) { return fs.existsSync(path); } -// TODO: implement retry or remove retries param async function downloadFile (url, dest, retries = 3) { const writer = fs.createWriteStream(dest); - const response = await axios({ - url, - method: "GET", - responseType: "stream" - }); - response.data.pipe(writer); - - return new Promise((resolve, reject) => { - writer.on("finish", resolve); - writer.on("error", reject); - }); + + for (let i = 0; i < retries; i++) { + try { + const response = await axios({ + url, + method: "GET", + responseType: "stream" + }); + + response.data.pipe(writer); + + await new Promise((resolve, reject) => { + writer.on("finish", resolve); + writer.on("error", reject); + }); + break; + } catch (error) { + if (i === retries - 1) { + throw new Error(`Failed to download file from ${url} to ${dest} after ${retries} attempts`); + } + } + } } function unzip (file) {