react-native-cos-sdk
Version:
Tencent COS XML SDK for React Native
117 lines (115 loc) • 6.45 kB
JavaScript
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
import uuid from 'react-native-uuid';
export class CosTransferManger {
//回调map
constructor(transferKey, cosTransferModule) {
_defineProperty(this, "cosTransferModule", void 0);
_defineProperty(this, "transferKey", void 0);
_defineProperty(this, "resultListeners", void 0);
_defineProperty(this, "stateCallBacks", void 0);
_defineProperty(this, "progressCallBacks", void 0);
_defineProperty(this, "initMultipleUploadCallbacks", void 0);
this.cosTransferModule = cosTransferModule;
this.transferKey = transferKey;
this.resultListeners = new Map();
this.stateCallBacks = new Map();
this.progressCallBacks = new Map();
this.initMultipleUploadCallbacks = new Map();
}
async upload(bucket, cosPath, fileUri, parameters) {
let resultCallbackKey = this.addResultListener(parameters.resultListener);
let stateCallbackKey = this.addStateCallBack(parameters.stateCallback);
let progressCallbackKey = this.addProgressCallBack(parameters.progressCallback);
let initMultipleUploadCallbackKey = this.addInitMultipleUploadCallback(parameters.initMultipleUploadCallback);
let taskId = await this.cosTransferModule.upload(this.transferKey, bucket, cosPath, fileUri, parameters.uploadId, resultCallbackKey, stateCallbackKey, progressCallbackKey, initMultipleUploadCallbackKey, parameters.stroageClass, parameters.trafficLimit != undefined ? parameters.trafficLimit.toString() : parameters.trafficLimit, parameters.region);
return new TransferTask(this.transferKey, taskId, this.cosTransferModule);
}
async download(bucket, cosPath, savePath, parameters) {
let resultCallbackKey = this.addResultListener(parameters.resultListener);
let stateCallbackKey = this.addStateCallBack(parameters.stateCallback);
let progressCallbackKey = this.addProgressCallBack(parameters.progressCallback);
let taskId = await this.cosTransferModule.download(this.transferKey, bucket, cosPath, savePath, resultCallbackKey, stateCallbackKey, progressCallbackKey, parameters.versionId, parameters.trafficLimit != undefined ? parameters.trafficLimit.toString() : parameters.trafficLimit, parameters.region);
return new TransferTask(this.transferKey, taskId, this.cosTransferModule);
}
runResultSuccessCallBack(key, header) {
var _this$resultListeners;
(_this$resultListeners = this.resultListeners.get(key)) === null || _this$resultListeners === void 0 ? void 0 : _this$resultListeners.successCallBack(header);
this.resultListeners.delete(key);
this.stateCallBacks.delete(key);
this.progressCallBacks.delete(key);
}
runResultFailCallBack(key, clientException, serviceException) {
var _this$resultListeners2;
(_this$resultListeners2 = this.resultListeners.get(key)) === null || _this$resultListeners2 === void 0 ? void 0 : _this$resultListeners2.failCallBack(clientException, serviceException);
this.resultListeners.delete(key);
this.stateCallBacks.delete(key);
this.progressCallBacks.delete(key);
}
runStateCallBack(key, state) {
var _this$stateCallBacks$;
(_this$stateCallBacks$ = this.stateCallBacks.get(key)) === null || _this$stateCallBacks$ === void 0 ? void 0 : _this$stateCallBacks$(state);
}
runProgressCallBack(key, complete, target) {
var _this$progressCallBac;
(_this$progressCallBac = this.progressCallBacks.get(key)) === null || _this$progressCallBac === void 0 ? void 0 : _this$progressCallBac(complete, target);
}
runInitMultipleUploadCallback(key, bucket, cosKey, uploadId) {
var _this$initMultipleUpl;
(_this$initMultipleUpl = this.initMultipleUploadCallbacks.get(key)) === null || _this$initMultipleUpl === void 0 ? void 0 : _this$initMultipleUpl(bucket, cosKey, uploadId);
}
/// 生成回调key并加入回调map
addResultListener(resultListener) {
if (resultListener != null && resultListener != undefined) {
let resultCallbackKey = uuid.v4().toString();
this.resultListeners.set(resultCallbackKey, resultListener);
return resultCallbackKey;
}
return undefined;
}
addStateCallBack(stateCallback) {
if (stateCallback != null && stateCallback != undefined) {
let stateCallbackKey = uuid.v4().toString();
this.stateCallBacks.set(stateCallbackKey, stateCallback);
return stateCallbackKey;
}
return undefined;
}
addProgressCallBack(progressCallBack) {
if (progressCallBack != null && progressCallBack != undefined) {
let progressCallbackKey = uuid.v4().toString();
this.progressCallBacks.set(progressCallbackKey, progressCallBack);
return progressCallbackKey;
}
return undefined;
}
addInitMultipleUploadCallback(initMultipleUploadCallback) {
if (initMultipleUploadCallback != null && initMultipleUploadCallback != undefined) {
let initMultipleUploadCallbackKey = uuid.v4().toString();
this.initMultipleUploadCallbacks.set(initMultipleUploadCallbackKey, initMultipleUploadCallback);
return initMultipleUploadCallbackKey;
}
return undefined;
}
}
export class TransferTask {
constructor(transferKey, taskId, cosTransferModule) {
_defineProperty(this, "cosTransferModule", void 0);
_defineProperty(this, "transferKey", void 0);
_defineProperty(this, "taskId", void 0);
this.cosTransferModule = cosTransferModule;
this.transferKey = transferKey;
this.taskId = taskId;
}
pause() {
return this.cosTransferModule.pause(this.transferKey, this.taskId);
}
resume() {
return this.cosTransferModule.resume(this.transferKey, this.taskId);
}
cancel() {
return this.cosTransferModule.cancel(this.transferKey, this.taskId);
}
}
//# sourceMappingURL=cos_transfer.js.map