// // 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