UNPKG

origin_storage_manager

Version:

multi cloud's storage event manager

70 lines (55 loc) 1.63 kB
import work from 'webworkify-webpack'; import getSha256 from '../cores/getSha256'; import NotImplementedError from '../errors/notImplementedError'; class Storage { constructor(storageSDK, expiration, region) { this.storageSDK = storageSDK; this.expiration = expiration; this.region = region; this.assumeCall = 0; } upload(params, subscriber, cbAssume) { throw new NotImplementedError(this.upload.name); }; downloadFile(fileName, path) { throw new NotImplementedError(this.downloadFile.name); }; abortUpload(params, subscriber, cbAssume) { throw new NotImplementedError(this.abortUpload.name); }; workHashWorker(file, uploader, stateUpdateFn) { const worker = new work(require.resolve('../cores/getSha256Worker')); worker.onmessage = (e) => { try { uploader.postMessage(e.data); } catch (e) { stateUpdateFn(); } }; worker.postMessage(file); }; calculateFileMD5AndUpload(file, uploader, subscriber) { if (window.Worker) { this.workHashWorker(file, uploader, () => { subscriber.publish('onError'); }); } else { getSha256(file, uploader); } }; resetAssumeRole(cbAssume, cb) { if (this.assumeCall < 3) { this.assumeCall++; cbAssume((data) => { this.storageSDK = this.makeCredentials(data); cb(); }); } else { this.assumeCall = 0; } }; makeCredentials(data) { throw new NotImplementedError(this.makeCredentials.name); }; } export default Storage;