UNPKG

@onereach/orest-input-cli

Version:

The tool for creating, serving, and publishing OREST Inputs

58 lines (46 loc) 1.35 kB
const FormData = require('form-data'); const fs = require('fs'); const { Store } = require('@or-sdk/store'); class StoreApi extends Store { constructor({ userToken, storeApiUrl, packageType }) { super({ token: userToken, storeApiUrl: storeApiUrl, packageType: packageType, }); this.packageType = packageType; } uploadBundle({ filePath, destFileName, url, fields }, onProgress) { const formData = new FormData(); Object.keys(fields).forEach(key => formData.append(key, fields[key])); const fileSize = fs.statSync(filePath).size; const stream = fs.createReadStream(filePath); formData.append('file', stream, { filename: destFileName, knownLength: fileSize, }); return new Promise((resolve, reject) => { let uploadSize = 0; try { uploadSize = formData.getLengthSync(); } catch (error) { // bug: zero file size } let uploaded = 0; formData.submit(url, (err, res) => { if (err) { return reject(err); } resolve(res); }); if (onProgress) { formData.on('data', function (data) { uploaded += data.length; const progress = (uploaded * 100) / uploadSize; onProgress(progress); }); } }); } } module.exports = StoreApi;