| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 | import {DeviceEventEmitter, NativeEventEmitter, NativeModules, Platform} from "react-native";
const {RNAliyunOSS} = NativeModules;
let subscription;
//default configuration for OSS Client
const conf = {
    maxRetryCount: 3,
    timeoutIntervalForRequest: 30,
    timeoutIntervalForResource: 24 * 60 * 60
};
const imageXOssProcess = {
    "x-oss-process":''
}
let partSize = 128 * 1024
const mulitpartUploadConfig = {
    "partSize":partSize
}
//appendObject
const appendOptions = {
    "appendPosition":0,
    "contentType":'',
    "contentMd5":'',
    "contentEncoding":'',
    "contentDisposition":''
}
export default AliyunOSS = {
    //Enable dev mode
    enableDevMode() {
        RNAliyunOSS.enableDevMode();
    },
    
    /**
     * Initialize the OSS Client
     * Mode: PlainTextAKSK
     */
    initWithPlainTextAccessKey(accessKey, secretKey, endPoint, configuration = conf) {
        RNAliyunOSS.initWithPlainTextAccessKey(accessKey, secretKey, endPoint, configuration);
    },
    /**
     * Initialize the OSS Client
     * Mode: ImplementedSigner
     */
    initWithImplementedSigner(signature, accessKey, endPoint, configuration = conf) {
        RNAliyunOSS.initWithImplementedSigner(signature, accessKey, endPoint, configuration);
    },
    /**
     * Initialize the OSS Client
     * Mode: SecurityToken (STS)
     */
    initWithSecurityToken(securityToken, accessKey, secretKey, endPoint, configuration = conf) {
        RNAliyunOSS.initWithSecurityToken(securityToken, accessKey, secretKey, endPoint, configuration);
    },
    /**
     * Initialize the OSS Client
     * Server STS
     */
    initWithServerSTS(server, endPoint, configuration = conf) {
        RNAliyunOSS.initWithServerSTS(server, endPoint, configuration);
    },    
    /**
     * Asynchronously uploading
     */
    asyncUpload(bucketName, objectKey, filepath,options) {
        return RNAliyunOSS.asyncUpload(bucketName, objectKey, filepath,options);
    },
     /**
     * Asynchronously 
     */
    asyncResumableUpload(bucketName, objectKey, filepath='',options={}) {
        return RNAliyunOSS.asyncResumableUpload(bucketName, objectKey, filepath,options);
    },
     /**
     * Asynchronously asyncAppendObject
     */
    asyncAppendObject(bucketName,objectKey,filepath,options = appendOptions) {
        return RNAliyunOSS.asyncAppendObject(bucketName, objectKey, filepath,options);
    },
    /**
     * Asynchronously 
     */
    initMultipartUpload(bucketName,objectKey) {
        return RNAliyunOSS.initMultipartUpload(bucketName, objectKey);
    },
    /**
     * Asynchronously multipartUpload
     */
    multipartUpload(bucketName,objectKey,uploadId,filepath ='',options = mulitpartUploadConfig) {
        return RNAliyunOSS.multipartUpload(bucketName, objectKey, uploadId,filepath, options);
    },
     /**
     * Asynchronously listParts
     */
    listParts (bucketName,objectKey,uploadId) {
        return RNAliyunOSS.listParts(bucketName, objectKey, uploadId)
    },
     /**
     * Asynchronously abortMultipartUpload
     */
    abortMultipartUpload(bucketName,objectKey,uploadId) {
        return RNAliyunOSS.abortMultipartUpload(bucketName, objectKey, uploadId);
    },
    /**
     * Asynchronously downloading
     */
    asyncDownload(bucketName, objectKey, filepath='',options = imageXOssProcess) {
        return RNAliyunOSS.asyncDownload(bucketName, objectKey, filepath,options);
    },
    
    /*
    asyncListBuckets
    */
    asyncListBuckets () {
        return RNAliyunOSS.asyncListBuckets()
    },
     /**
     * Asynchronously getHeadObject
     */
    asyncHeadObject (bucketName, objectKey) {
        return RNAliyunOSS.asyncHeadObject(bucketName,objectKey)
    }, 
    
    /**
     * Asynchronously getAsyncObjects
     */
    asyncListObjects (bucketName,options) {
        return RNAliyunOSS.asyncListObjects(bucketName,options)
    },
    /**
     * Asynchronously asyncCopyObject
     */
    asyncCopyObject (srcBucketName, srcObjectKey, desBucketName,destObjectKey, options) {
        return RNAliyunOSS.asyncCopyObject (srcBucketName, srcObjectKey, desBucketName,destObjectKey, options)
    },
    /**
     * Asynchronously doesObjectExist
     */
     doesObjectExist (bucketName, objectKey) {
        return RNAliyunOSS.doesObjectExist(bucketName, objectKey)
     },
     /**
     * Asynchronously asyncDeleteObject
     */
     asyncDeleteObject (bucketName, objectKey) {
        return RNAliyunOSS.asyncDeleteObject(bucketName, objectKey)
     },
     /**
     * Asynchronously createBucket
     */
    asyncCreateBucket (bucketName,acl="private",region) {
        return RNAliyunOSS.asyncCreateBucket(bucketName,acl,region)
    }, 
    /**
     * Asynchronously getBucketACL
     */
    asyncGetBucketACL (bucketName) {
        return RNAliyunOSS.asyncGetBucketACL(bucketName)
    },
    /**
     * Asynchronously getBucketACL
     */
    asyncGetBucketACL(bucketName) {
        return RNAliyunOSS.asyncGetBucketACL(bucketName)
    },
    /**
     * Asynchronously deleteBucket
     */
    asyncDeleteBucket (bucketName) {
        return RNAliyunOSS.asyncDeleteBucket(bucketName)
    },   
    /**
     * event listener for native upload/download event
     * @param event one of 'uploadProgress' or 'downloadProgress'
     * @param callback a callback function accepts one params: event
     */
    addEventListener(event, callback) {
        const RNAliyunEmitter = Platform.OS === 'ios' ? new NativeEventEmitter(RNAliyunOSS) : DeviceEventEmitter;
        switch (event) {
            case 'uploadProgress':
                subscription = RNAliyunEmitter.addListener(
                    'uploadProgress',
                    e => callback(e)
                );
                break;
            case 'downloadProgress':
                subscription = RNAliyunEmitter.addListener(
                    'downloadProgress',
                    e => callback(e)
                );
                break;
            default:
                break;
        }
    },
    /**
     * remove event listener for native upload/download event
     * @param event one of 'uploadProgress' or 'downloadProgress'
     */
    removeEventListener(event) {
        switch (event) {
            case 'uploadProgress':
                subscription.remove();
                break;
            case 'downloadProgress':
                subscription.remove();
                break;
            default:
                break;
        }
    }
};
 |