origin_storage_manager
Version:
multi cloud's storage event manager
70 lines (55 loc) • 1.63 kB
JavaScript
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;