UNPKG

jiocloud-node

Version:

sdk for ril jiocloud

69 lines (62 loc) 2.61 kB
const axios = require('axios'); const path = require('path'); const context = require("../context"); const fs = require('fs'); const { pipeline } = require('stream'); const { promisify } = require('util'); const streamPipeline = promisify(pipeline); const getFiles = require("./GetFiles"); const getJioHeaders = require("../util/getJioHeaders") class DownloadFile { ensureDownloadDir(downloadDir) { if (!fs.existsSync(downloadDir)) { fs.mkdirSync(downloadDir, { recursive: true }); console.log(`Created directory: ${downloadDir}`); } else { console.log(`Directory already exists: ${downloadDir}`); } } async download(objectKey,downloadDir) { if (!objectKey) { console.error("Object key is required for downloading."); return; } if (!downloadDir) { console.error("Download directory is required."); return; } const downloadsDir = path.join(downloadDir); const headers = getJioHeaders({ 'x-session-id': context.loginInfo.sessionId, 'x-user-id': context.userId, 'authorization': 'Basic ' + Buffer.from(context.authToken.accessToken, 'utf-8').toString('base64'), 'x-device-key': context.loginInfo.deviceKey, 'X-User-Id': context.userId, }) try { const fileList = new getFiles(); const files = await fileList.getFiles(); const file = files.find(obj => obj.objectKey === objectKey); console.log(file) const response = await axios.get(file.url, { headers: headers, responseType: 'stream' });2 let filename = file.objectName; const disposition = response.headers['content-disposition']; if (disposition && disposition.includes('filename=')) { filename = disposition.split('filename=')[1].replace(/['"]/g, ''); } // if directory doesnt exist, make one if(!fs.existsSync(downloadsDir)){ fs.mkdirSync(downloadsDir, { recursive: true }); } const downloadPath = path.join(downloadsDir, filename); await streamPipeline(response.data, fs.createWriteStream(downloadPath)); console.log("File downloaded successfully:", filename); } catch (error) { console.error("Error downloading file:", error.message); } } } module.exports = DownloadFile;