123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- //
- // RNAliyunOSS+OBJECT.m
- // aliyun-oss-rn-sdk
- //
- // Created by 罗章 on 2018/5/8.
- //
-
- #import "RNAliyunOSS+OBJECT.h"
-
- @implementation RNAliyunOSS (OBJECT)
-
- /*
- asyncListObjects
- */
-
- RCT_REMAP_METHOD(asyncListObjects, bucketName:(NSString*)bucketName prefix:(NSString*)prefix resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- OSSGetBucketRequest * getBucket = [OSSGetBucketRequest new];
- getBucket.bucketName = bucketName;
- // 可选参数,具体含义参考:https://docs.aliyun.com/#/pub/oss/api-reference/bucket&GetBucket
- // getBucket.marker = @"";
- getBucket.prefix = prefix;
- // getBucket.delimiter = @"";
- OSSTask * getBucketTask = [self.client getBucket:getBucket];
- [getBucketTask continueWithBlock:^id(OSSTask *task) {
- if (!task.error) {
- OSSGetBucketResult * result = task.result;
- // NSLog(@"get bucket success!");
- // for (NSDictionary * objectInfo in result.contents) {
- // NSLog(@"list object: %@", objectInfo);
- // }
- resolve(result.contents);
- } else {
- NSLog(@"get bucket failed, error: %@", task.error);
- reject(@"Error",@"get bucket failed",task.error);
- }
- return nil;
- }];
- }
-
- /*
- * doesObjectExist
- */
- RCT_REMAP_METHOD(doesObjectExist, bucketName:(NSString*)bucketName objectKey:(NSString*)objectKey resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject ) {
- NSError * error = nil;
- BOOL isExist = [self.client doesObjectExistInBucket:bucketName objectKey:objectKey error:&error];
- if (!error) {
- if(isExist) {
- NSLog(@"File exists.");
- resolve(@"File exists.");
- } else {
- NSLog(@"File not exists.");
- resolve(@"File not exists.");
- }
- } else {
- NSLog(@"Error!");
- reject(@"error",@"error",error);
- }
- }
-
- /*
- *asyncCopyObject
- */
-
- RCT_REMAP_METHOD(asyncCopyObject, srcBucketName:(NSString*)srcBucketName srcObjectKey:(NSString*)srcObjectKey desBucketName:(NSString*)desBucketName desObjectKey:(NSString*)desObjectKey options:(NSDictionary*)options resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject ) {
- OSSCopyObjectRequest * copy = [OSSCopyObjectRequest new];
- copy.bucketName = desBucketName;
- copy.objectKey = desObjectKey;
- copy.sourceCopyFrom = [NSString stringWithFormat:@"/%@/%@", srcBucketName, srcObjectKey];
- OSSTask * task = [self.client copyObject:copy];
- [task continueWithBlock:^id(OSSTask *task) {
- if (!task.error) {
- resolve(@"copy success!");
- // ...
- } else {
- NSLog(@"coppy fail error");
- reject(@"Error",@"Copy fail",task.error);
- }
- return nil;
- }];
- }
-
- /*
- asyncHeadObject
- */
- RCT_REMAP_METHOD(asyncHeadObject, withBucketName:(NSString*)bucketName withObjectKey:(NSString*)objectKey resolver: (RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- OSSHeadObjectRequest * head = [OSSHeadObjectRequest new];
- head.bucketName = bucketName;
- head.objectKey = objectKey;
- OSSTask * headTask = [self.client headObject:head];
- [headTask continueWithBlock:^id(OSSTask *task) {
- if (!task.error) {
- OSSHeadObjectResult * headResult = task.result;
- // NSLog(@"all response header: %@", headResult.httpResponseHeaderFields);
- // some object properties include the 'x-oss-meta-*'s
- // NSLog(@"head object result: %@", headResult.objectMeta);
- resolve(headResult.objectMeta);
- } else {
- NSLog(@"head object error: %@", task.error);
- reject(@"Error",@"head object error",task.error);
- }
- return nil;
- }];
- }
-
- /*
- astncDeleteObject
- */
- RCT_REMAP_METHOD(asyncDeleteObject, bucketName:(NSString*)bucketName withObjectKey:(NSString*)objectKey resolver: (RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- OSSDeleteObjectRequest * delete = [OSSDeleteObjectRequest new];
- delete.bucketName = bucketName;
- delete.objectKey = objectKey;
- OSSTask * deleteTask = [self.client deleteObject:delete];
- [deleteTask continueWithBlock:^id(OSSTask *task) {
- if (!task.error) {
- resolve(@"delete object success");
- } else {
- reject(@"error",@"delete error",task.error);
- }
- return nil;
- }];
- }
-
- @end
|