12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304 |
- //
- // OSSModel.h
- // oss_ios_sdk
- //
- // Created by zhouzhuo on 8/16/15.
- // Copyright (c) 2015 aliyun.com. All rights reserved.
- //
-
- #import <Foundation/Foundation.h>
-
- @class OSSAllRequestNeededMessage;
- @class OSSFederationToken;
- @class OSSTask;
-
- typedef NS_ENUM(NSInteger, OSSOperationType) {
- OSSOperationTypeGetService,
- OSSOperationTypeCreateBucket,
- OSSOperationTypeDeleteBucket,
- OSSOperationTypeGetBucket,
- OSSOperationTypeGetBucketACL,
- OSSOperationTypeHeadObject,
- OSSOperationTypeGetObject,
- OSSOperationTypePutObject,
- OSSOperationTypePutObjectACL,
- OSSOperationTypeAppendObject,
- OSSOperationTypeDeleteObject,
- OSSOperationTypeCopyObject,
- OSSOperationTypeInitMultipartUpload,
- OSSOperationTypeUploadPart,
- OSSOperationTypeCompleteMultipartUpload,
- OSSOperationTypeAbortMultipartUpload,
- OSSOperationTypeListMultipart
- };
-
- typedef NS_ENUM(NSInteger, OSSClientErrorCODE) {
- OSSClientErrorCodeNetworkingFailWithResponseCode0,
- OSSClientErrorCodeSignFailed,
- OSSClientErrorCodeFileCantWrite,
- OSSClientErrorCodeInvalidArgument,
- OSSClientErrorCodeNilUploadid,
- OSSClientErrorCodeTaskCancelled,
- OSSClientErrorCodeNetworkError,
- OSSClientErrorCodeCannotResumeUpload,
- OSSClientErrorCodeExcpetionCatched,
- OSSClientErrorCodeNotKnown
- };
-
- typedef void (^OSSNetworkingUploadProgressBlock) (int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend);
- typedef void (^OSSNetworkingDownloadProgressBlock) (int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite);
- typedef void (^OSSNetworkingCompletionHandlerBlock) (id responseObject, NSError *error);
- typedef void (^OSSNetworkingOnRecieveDataBlock) (NSData * data);
-
- typedef NSString * (^OSSCustomSignContentBlock) (NSString * contentToSign, NSError **error);
- typedef OSSFederationToken * (^OSSGetFederationTokenBlock) ();
-
- /**
- 扩展NSString
- */
- @interface NSString (OSS)
- - (NSString *)oss_stringByAppendingPathComponentForURL:(NSString *)aString;
- - (NSString *)oss_trim;
- @end
-
- /**
- 扩展NSDictionary
- */
- @interface NSDictionary (OSS)
- - (NSString *)base64JsonString;
- @end
-
- /**
- 扩展NSDate
- */
- @interface NSDate (OSS)
- + (void)oss_setStandardTimeIntervalSince1970:(NSTimeInterval)standardTime;
- + (void)oss_setClockSkew:(NSTimeInterval)clockSkew;
- + (NSDate *)oss_dateFromString:(NSString *)string;
- + (NSDate *)oss_clockSkewFixedDate;
- - (NSString *)oss_asStringValue;
- @end
-
- /**
- 线程安全的字典
- */
- @interface OSSSyncMutableDictionary : NSObject
- @property (nonatomic, strong) NSMutableDictionary *dictionary;
- @property (nonatomic, strong) dispatch_queue_t dispatchQueue;
-
- - (id)objectForKey:(id)aKey;
- - (NSArray *)allKeys;
- - (void)setObject:(id)anObject forKey:(id <NSCopying>)aKey;
- - (void)removeObjectForKey:(id)aKey;
- @end
-
- /**
- FederationToken类
- */
- @interface OSSFederationToken : NSObject
- @property (nonatomic, strong) NSString * tAccessKey;
- @property (nonatomic, strong) NSString * tSecretKey;
- @property (nonatomic, strong) NSString * tToken;
-
- /**
- 指明Token的失效时间,为linux时间对应的毫秒数,即自UTC时间1970年1月1日经过的毫秒数
- */
- @property (atomic, assign) int64_t expirationTimeInMilliSecond;
-
- /**
- 指明Token的失效时间,格式为GMT字符串,如: "2015-11-03T08:51:05Z"
- */
- @property (atomic, strong) NSString * expirationTimeInGMTFormat;
- @end
-
- /**
- CredentialProvider协议,要求实现加签接口
- */
- @protocol OSSCredentialProvider <NSObject>
- @optional
- - (NSString *)sign:(NSString *)content error:(NSError **)error;
- @end
-
- /**
- 用明文AK/SK实现的加签器,建议只在测试模式时使用
- */
-
- @interface OSSPlainTextAKSKPairCredentialProvider : NSObject <OSSCredentialProvider>
- @property (nonatomic, strong) NSString * accessKey;
- @property (nonatomic, strong) NSString * secretKey;
-
- - (instancetype)initWithPlainTextAccessKey:(NSString *)accessKey
- secretKey:(NSString *)secretKey __attribute__((deprecated("We recommend the STS authentication mode on mobile")));
- @end
-
- /**
- 用户自实现加签接口的加签器
- */
- @interface OSSCustomSignerCredentialProvider : NSObject <OSSCredentialProvider>
- @property (nonatomic, copy) NSString * (^signContent)(NSString *, NSError **);
-
- /**
- 任务执行时,这个方法会被调用,进行加签
- 会在任务执行的后台线程被调用,而非UI线程
- */
- - (instancetype)initWithImplementedSigner:(OSSCustomSignContentBlock)signContent;
- @end
-
- /**
- 用户自实现的通过获取FederationToken来加签的加签器
- */
- @interface OSSFederationCredentialProvider : NSObject <OSSCredentialProvider>
- @property (nonatomic, strong) OSSFederationToken * cachedToken;
- @property (nonatomic, copy) OSSFederationToken * (^federationTokenGetter)();
-
- /**
- 任务执行时,这个方法会被调用,获取新的ststoken
- 会在任务执行的后台线程被调用,而非UI线程
- */
- - (instancetype)initWithFederationTokenGetter:(OSSGetFederationTokenBlock)federationTokenGetter;
- - (OSSFederationToken *)getToken:(NSError **)error;
- @end
-
- /**
- 通过已经获取到的StsToken来加签的加签器
- */
- @interface OSSStsTokenCredentialProvider : NSObject <OSSCredentialProvider>
- @property (nonatomic, strong) NSString * accessKeyId;
- @property (nonatomic, strong) NSString * secretKeyId;
- @property (nonatomic, strong) NSString * securityToken;
-
- - (OSSFederationToken *)getToken;
- - (instancetype)initWithAccessKeyId:(NSString *)accessKeyId
- secretKeyId:(NSString *)secretKeyId
- securityToken:(NSString *)securityToken;
- @end
-
- /**
- OSSClient可以设置的参数
- */
- @interface OSSClientConfiguration : NSObject
-
- /**
- 最大重试次数
- */
- @property (nonatomic, assign) uint32_t maxRetryCount;
-
- /**
- 最大并发请求数
- */
- @property (nonatomic, assign) uint32_t maxConcurrentRequestCount;
-
- /**
- 是否开启后台传输服务
- 注意:只在上传文件时有效
- */
- @property (nonatomic, assign) BOOL enableBackgroundTransmitService;
-
- /**
- 是否使用Httpdns解析域名
- */
- @property (nonatomic, assign) BOOL isHttpdnsEnable;
-
- /**
- 设置后台传输服务使用session的Id
- */
- @property (nonatomic, strong) NSString * backgroundSesseionIdentifier;
-
- /**
- 请求超时时间
- */
- @property (nonatomic, assign) NSTimeInterval timeoutIntervalForRequest;
-
- /**
- 单个Object下载的最长持续时间
- */
- @property (nonatomic, assign) NSTimeInterval timeoutIntervalForResource;
-
- /**
- 设置代理Host、端口
- */
- @property (nonatomic, strong) NSString * proxyHost;
- @property (nonatomic, strong) NSNumber * proxyPort;
-
- /**
- 设置Cname排除列表
- */
- @property (nonatomic, strong, setter=setCnameExcludeList:) NSArray * cnameExcludeList;
-
- @end
-
- @protocol OSSRequestInterceptor <NSObject>
- - (OSSTask *)interceptRequestMessage:(OSSAllRequestNeededMessage *)request;
- @end
-
- /**
- 构造请求过程中做加签
- */
- @interface OSSSignerInterceptor : NSObject <OSSRequestInterceptor>
- @property (nonatomic, strong) id<OSSCredentialProvider> credentialProvider;
-
- - (instancetype)initWithCredentialProvider:(id<OSSCredentialProvider>)credentialProvider;
- @end
-
- /**
- 构造请求过程中修改UA
- */
- @interface OSSUASettingInterceptor : NSObject <OSSRequestInterceptor>
- @end
-
- /**
- 构造请求过程中设置发起请求的标准时间
- */
- @interface OSSTimeSkewedFixingInterceptor : NSObject <OSSRequestInterceptor>
- @end
-
- /**
- 下载时指定范围
- */
- @interface OSSRange : NSObject
- @property (nonatomic, assign) int64_t startPosition;
- @property (nonatomic, assign) int64_t endPosition;
-
- - (instancetype)initWithStart:(int64_t)start
- withEnd:(int64_t)end;
-
- /**
- * 转换为字符串: 'bytes=${start}-${end}'
- */
- - (NSString *)toHeaderString;
- @end
-
-
- #pragma mark RequestAndResultClass
-
- /**
- 请求头的基类
- */
- @interface OSSRequest : NSObject
- /**
- 指明该请求是否需要鉴权,单次有效
- */
- @property (nonatomic, assign) BOOL isAuthenticationRequired;
-
- /**
- 指明该请求是否已经被取消
- */
- @property (nonatomic, assign) BOOL isCancelled;
-
- /**
- 取消这个请求
- */
- - (void)cancel;
- @end
-
- /**
- 请求结果的基类
- */
- @interface OSSResult : NSObject
-
- /**
- 请求HTTP响应码
- */
- @property (nonatomic, assign) NSInteger httpResponseCode;
-
- /**
- 请求HTTP响应头部,以KV形式放在字典中
- */
- @property (nonatomic, strong) NSDictionary * httpResponseHeaderFields;
-
- /**
- x-oss-request-id是由Aliyun OSS创建,并唯一标识这个response的UUID。如果在使用OSS服务时遇到问题,可以凭借该字段联系OSS工作人员,快速定位问题。
- */
- @property (nonatomic, strong) NSString * requestId;
- @end
-
- /**
- 罗列用户拥有的所有Bucket的请求。
- */
- @interface OSSGetServiceRequest : OSSRequest
-
- /**
- 限定返回的bucket name必须以prefix作为前缀,可以不设定,不设定时不过滤前缀信息
- */
- @property (nonatomic, strong) NSString * prefix;
-
- /**
- 设定结果从marker之后按字母排序的第一个开始返回,可以不设定,不设定时从头开始返回
- */
- @property (nonatomic, strong) NSString * marker;
-
- /**
- 限定此次返回bucket的最大数,如果不设定,默认为100,max-keys取值不能大于1000
- */
- @property (nonatomic, assign) int32_t maxKeys;
-
-
- /**
- 根据参数各字段构造URL中的查询串
- */
- - (NSMutableDictionary *)getQueryDict;
- @end
-
- /**
- 罗列用户拥有的所有Bucket的请求结果
- */
- @interface OSSGetServiceResult : OSSResult
-
- /**
- Bucket拥有者的用户ID
- */
- @property (nonatomic, strong) NSString * ownerId;
-
- /**
- Bucket拥有者的名称 (目前和ID一致)。
- */
- @property (nonatomic, strong) NSString * ownerDispName;
-
- /**
- 本次查询结果的前缀,当bucket未全部返回时才有此节点
- */
- @property (nonatomic, strong) NSString * prefix;
-
- /**
- 标明这次GetService(ListBucket)的起点,当bucket未全部返回时才有此节点
- */
- @property (nonatomic, strong) NSString * marker;
-
- /**
- 响应请求内返回结果的最大数目,当bucket未全部返回时才有此节点
- */
- @property (nonatomic, assign) int32_t maxKeys;
-
- /**
- 指明是否所有的结果都已经返回:“true”表示本次没有返回全部结果;“false”表示本次已经返回了全部结果。当bucket未全部返回时才有此节点。
- */
- @property (nonatomic, assign) BOOL isTruncated;
-
- /**
- 表示下一次GetService(ListBucket)可以以此为marker,将未返回的结果返回。当bucket未全部返回时才有此节点。
- */
- @property (nonatomic, strong) NSString * nextMarker;
-
- /**
- 保存bucket信息的容器,结构上是一个数组,数组每个元素是一个字典,字典的key有 ["Name", "CreationDate", "Location" ]
- */
- @property (nonatomic, strong) NSArray * buckets;
- @end
-
- /**
- 创建Bucket的请求
- */
- @interface OSSCreateBucketRequest : OSSRequest
-
- /**
- 要创建的Bucket的名称
- */
- @property (nonatomic, strong) NSString * bucketName;
-
- /**
- 指定Bucket所在的数据中心。
- 关于数据中心和终端域名的更多内容,参见访问域名和数据中心<a>https://docs.aliyun.com/#/pub/oss/product-documentation/domain-region</a>
- */
- @property (nonatomic, strong) NSString * location;
-
- /**
- 设置Bucket 访问权限。目前Bucket有三种访问权限:public-read-write,public-read和private。
- */
- @property (nonatomic, strong) NSString * xOssACL;
- @end
-
- /**
- 创建Bucket的请求结果
- */
- @interface OSSCreateBucketResult : OSSResult
-
- /**
- Bucket所在的数据中心
- */
- @property (nonatomic, strong) NSString * location;
- @end
-
- /**
- 删除Bucket的请求
- */
- @interface OSSDeleteBucketRequest : OSSRequest
-
- /**
- Bucket的名称
- */
- @property (nonatomic, strong) NSString * bucketName;
- @end
-
- /**
- 删除Bucket的请求结果
- */
- @interface OSSDeleteBucketResult : OSSResult
- @end
-
- /**
- 罗列Bucket中Objects的请求
- */
- @interface OSSGetBucketRequest : OSSRequest
-
- /**
- Bucket名称
- */
- @property (nonatomic, strong) NSString * bucketName;
-
- /**
- 是一个用于对Object名字进行分组的字符。所有名字包含指定的前缀且第一次出现delimiter字符之间的object作为一组元素——CommonPrefixes。
- */
- @property (nonatomic, strong) NSString * delimiter;
-
- /**
- 设定结果从marker之后按字母排序的第一个开始返回。
- */
- @property (nonatomic, strong) NSString * marker;
-
- /**
- 限定此次返回object的最大数,如果不设定,默认为100,max-keys取值不能大于1000。
- */
- @property (nonatomic, assign) int32_t maxKeys;
-
- /**
- 限定返回的object key必须以prefix作为前缀。注意使用prefix查询时,返回的key中仍会包含prefix。
- */
- @property (nonatomic, strong) NSString * prefix;
-
- /**
- 根据请求的各个字段生成URL中的查询串
- */
- - (NSMutableDictionary *)getQueryDict;
- @end
-
- /**
- 罗列Bucket中Objects的请求结果
- */
- @interface OSSGetBucketResult : OSSResult
-
- /**
- Bucket名称
- */
- @property (nonatomic, strong) NSString * bucketName;
-
- /**
- 限定返回的object key必须以prefix作为前缀。注意使用prefix查询时,返回的key中仍会包含prefix。
- */
- @property (nonatomic, strong) NSString * prefix;
-
- /**
- 设定结果从marker之后按字母排序的第一个开始返回。
- */
- @property (nonatomic, strong) NSString * marker;
-
- /**
- 限定此次返回object的最大数,如果不设定,默认为100,max-keys取值不能大于1000。
- */
- @property (nonatomic, assign) int32_t maxKeys;
-
- /**
- 是一个用于对Object名字进行分组的字符。所有名字包含指定的前缀且第一次出现delimiter字符之间的object作为一组元素——CommonPrefixes。
- */
- @property (nonatomic, strong) NSString * delimiter;
-
- /**
- 如果因为max-keys的设定无法一次完成listing,返回结果会附加一个<NextMarker>,提示继续listing可以以此为marker。
- NextMarker中的值仍在list结果之中。
- */
- @property (nonatomic, strong) NSString * nextMarker;
-
- /**
- 指明是否所有的结果都已经返回; “true”表示本次没有返回全部结果;“false”表示本次已经返回了全部结果。
- */
- @property (nonatomic, assign) BOOL isTruncated;
-
- /**
- 装载文件信息的容器,结构为一个数组,数组中元素是一个个字典,代表每个文件,字典的key有 [ "Key", "LastModified", "ETag", "Type", "Size", "StorageClass", "Owner" ]
- */
- @property (nonatomic, strong) NSArray * contents;
-
- /**
- 装载公共前缀信息的容器,结构为一个数组,数组中元素是NSString,每个代表一个前缀
- */
- @property (nonatomic, strong) NSArray * commentPrefixes;
- @end
-
- /**
- 获取指定Bucket的读写权限
- */
- @interface OSSGetBucketACLRequest : OSSRequest
-
- /**
- Bucket名称
- */
- @property (nonatomic, strong) NSString * bucketName;
- @end
-
- /**
- 获取指定Bucket的ACL的请求结果
- */
- @interface OSSGetBucketACLResult : OSSResult
-
- /**
- 获取到的Bucket的ACL,有 private/public-read/public-read-write
- */
- @property (nonatomic, strong) NSString * aclGranted;
- @end
-
- /**
- 获取Object Meta信息的请求
- */
- @interface OSSHeadObjectRequest : OSSRequest
-
- /**
- Object所在Bucket的名称
- */
- @property (nonatomic, strong) NSString * bucketName;
-
- /**
- Object名称
- */
- @property (nonatomic, strong) NSString * objectKey;
- @end
-
- /**
- 获取Object Meta信息的结果
- */
- @interface OSSHeadObjectResult : OSSResult
-
- /**
- Obejct的Meta信息
- */
- @property (nonatomic, strong) NSDictionary * objectMeta;
- @end
-
- /**
- 下载Object的请求头
- */
- @interface OSSGetObjectRequest : OSSRequest
-
- /**
- Bucket名称
- */
- @property (nonatomic, strong) NSString * bucketName;
-
- /**
- Object名称
- */
- @property (nonatomic, strong) NSString * objectKey;
-
- /**
- 指定文件传输的范围。如,设定 bytes=0-9,表示传送第0到第9这10个字符。
- */
- @property (nonatomic, strong) OSSRange * range;
-
- /**
- 如果希望Object直接下载到文件中,通过这个字段指明文件地址
- */
- @property (nonatomic, strong) NSURL * downloadToFileURL;
-
- /**
- 图片处理配置
- */
- @property (nonatomic, strong) NSString * xOssProcess;
-
- /**
- 回调下载进度
- 会在任务执行的后台线程被回调,而非UI线程
- */
- @property (nonatomic, copy) OSSNetworkingDownloadProgressBlock downloadProgress;
-
- /**
- Object下载过程中,会在接收每一段数据后回调这个Block
- 会在任务执行的后台线程被回调,而非UI线程
- */
- @property (nonatomic, copy) OSSNetworkingOnRecieveDataBlock onRecieveData;
- @end
-
- /**
- 下载Object的请求结果
- */
- @interface OSSGetObjectResult : OSSResult
-
- /**
- 如果下载时未指明下载到文件,那么Object会被下载到内存中,类型为NSData
- */
- @property (nonatomic, strong) NSData * downloadedData;
-
- /**
- 下载文件时的HTTP响应头的KV字典
- */
- @property (nonatomic, strong) NSDictionary * objectMeta;
- @end
-
- /**
- 修改Object的访问权限请求头
- */
- @interface OSSPutObjectACLRequest : OSSRequest
-
- /**
- Bucket名称
- */
- @property (nonatomic, strong) NSString * bucketName;
-
- /**
- Object名称
- */
- @property (nonatomic, strong) NSString * objectKey;
-
- /**
- */
- @property (nonatomic, strong) NSString * acl;
-
- @end
-
- /**
- 修改Object的访问权限响应
- */
- @interface OSSPutObjectACLResult : OSSResult
- @end
-
- /**
- 上传Object的请求头
- */
- @interface OSSPutObjectRequest : OSSRequest
-
- /**
- Bucket名称
- */
- @property (nonatomic, strong) NSString * bucketName;
-
- /**
- Object名称
- */
- @property (nonatomic, strong) NSString * objectKey;
-
- /**
- 从内存中的NSData上传时,通过这个字段设置
- */
- @property (nonatomic, strong) NSData * uploadingData;
-
- /**
- 从文件上传时,通过这个字段设置
- */
- @property (nonatomic, strong) NSURL * uploadingFileURL;
-
- /**
- server回调参数设置
- */
- @property (nonatomic, strong) NSDictionary * callbackParam;
-
- /**
- server回调变量设置
- */
- @property (nonatomic, strong) NSDictionary * callbackVar;
-
- /**
- 设置文件类型
- */
- @property (nonatomic, strong) NSString * contentType;
-
- /**
- 根据协议RFC 1864对消息内容(不包括头部)计算MD5值获得128比特位数字,对该数字进行base64编码为一个消息的Content-MD5值。
- 该请求头可用于消息合法性的检查(消息内容是否与发送时一致)。虽然该请求头是可选项,OSS建议用户使用该请求头进行端到端检查。
- */
- @property (nonatomic, strong) NSString * contentMd5;
-
- /**
- 指定该Object被下载时的名称;更详细描述请参照RFC2616。
- */
- @property (nonatomic, strong) NSString * contentDisposition;
-
- /**
- 指定该Object被下载时的内容编码格式;更详细描述请参照RFC2616。
- */
- @property (nonatomic, strong) NSString * contentEncoding;
-
- /**
- 指定该Object被下载时的网页的缓存行为;更详细描述请参照RFC2616。
- */
- @property (nonatomic, strong) NSString * cacheControl;
-
- /**
- 过期时间(milliseconds);更详细描述请参照RFC2616。
- */
- @property (nonatomic, strong) NSString * expires;
-
- /**
- 可以在这个字段中携带以x-oss-meta-为前缀的参数,则视为user meta,比如x-oss-meta-location。一个Object可以有多个类似的参数,但所有的user meta总大小不能超过8k。
- 如果上传时还需要指定其他HTTP请求头字段,也可以在这里设置
- */
- @property (nonatomic, strong) NSDictionary * objectMeta;
-
- /**
- 上传进度回调,
- 会在任务执行的后台线程被回调,而非UI线程
- */
- @property (nonatomic, copy) OSSNetworkingUploadProgressBlock uploadProgress;
- @end
-
- /**
- 上传Object的请求结果
- */
- @interface OSSPutObjectResult : OSSResult
-
- /**
- ETag (entity tag) 在每个Object生成的时候被创建,用于标示一个Object的内容。
- 对于Put Object请求创建的Object,ETag值是其内容的MD5值;对于其他方式创建的Object,ETag值是其内容的UUID。
- ETag值可以用于检查Object内容是否发生变化。
- */
- @property (nonatomic, strong) NSString * eTag;
-
- /**
- 如果设置了server回调,回调的响应内容
- */
- @property (nonatomic, strong) NSString * serverReturnJsonString;
- @end
-
- /**
- * append object request
- */
- @interface OSSAppendObjectRequest : OSSRequest
-
- /**
- Bucket名称
- */
- @property (nonatomic, strong) NSString * bucketName;
-
- /**
- Object名称
- */
- @property (nonatomic, strong) NSString * objectKey;
-
- /**
- 指定从何处进行追加。首次追加操作的position必须为0,后续追加操作的position是Object的当前长度。
- 例如,第一次Append Object请求指定position值为0,content-length是65536;那么,第二次Append Object需要指定position为65536。
- 每次操作成功后,响应头部x-oss-next-append-position也会标明下一次追加的position。
- */
- @property (nonatomic, assign) int64_t appendPosition;
-
- /**
- 从内存中的NSData上传时,通过这个字段设置
- */
- @property (nonatomic, strong) NSData * uploadingData;
-
- /**
- 从文件上传时,通过这个字段设置
- */
- @property (nonatomic, strong) NSURL * uploadingFileURL;
-
- /**
- 设置文件类型
- */
- @property (nonatomic, strong) NSString * contentType;
-
- /**
- 根据协议RFC 1864对消息内容(不包括头部)计算MD5值获得128比特位数字,对该数字进行base64编码为一个消息的Content-MD5值。
- 该请求头可用于消息合法性的检查(消息内容是否与发送时一致)。虽然该请求头是可选项,OSS建议用户使用该请求头进行端到端检查。
- */
- @property (nonatomic, strong) NSString * contentMd5;
-
- /**
- 指定该Object被下载时的名称;更详细描述请参照RFC2616。
- */
- @property (nonatomic, strong) NSString * contentDisposition;
-
- /**
- 指定该Object被下载时的内容编码格式;更详细描述请参照RFC2616。
- */
- @property (nonatomic, strong) NSString * contentEncoding;
-
- /**
- 指定该Object被下载时的网页的缓存行为;更详细描述请参照RFC2616。
- */
- @property (nonatomic, strong) NSString * cacheControl;
-
- /**
- 过期时间(milliseconds);更详细描述请参照RFC2616。
- */
- @property (nonatomic, strong) NSString * expires;
-
- /**
- 可以在这个字段中携带以x-oss-meta-为前缀的参数,则视为user meta,比如x-oss-meta-location。一个Object可以有多个类似的参数,但所有的user meta总大小不能超过8k。
- 如果上传时还需要指定其他HTTP请求头字段,也可以在这里设置
- */
- @property (nonatomic, strong) NSDictionary * objectMeta;
-
- /**
- 上传进度回调
- 会在任务执行的后台线程被回调,而非UI线程
- */
- @property (nonatomic, copy) OSSNetworkingUploadProgressBlock uploadProgress;
- @end
-
- /**
- * append object result
- */
- @interface OSSAppendObjectResult : OSSResult
-
- /**
- ETag (entity tag) 在每个Object生成的时候被创建,用于标示一个Object的内容。
- 对于Put Object请求创建的Object,ETag值是其内容的MD5值;对于其他方式创建的Object,ETag值是其内容的UUID。
- ETag值可以用于检查Object内容是否发生变化。
- */
- @property (nonatomic, strong) NSString * eTag;
-
- /**
- 指明下一次请求应当提供的position。实际上就是当前Object长度。
- 当Append Object成功返回,或是因position和Object长度不匹配而引起的409错误时,会包含此header。
- */
- @property (nonatomic, assign, readwrite) int64_t xOssNextAppendPosition;
- @end
-
- /**
- 删除指定Object
- */
- @interface OSSDeleteObjectRequest : OSSRequest
-
- /**
- Bucket名称
- */
- @property (nonatomic, strong) NSString * bucketName;
-
- /**
- Object名称
- */
- @property (nonatomic, strong) NSString * objectKey;
- @end
-
- /**
- 删除指定Object的响应
- */
- @interface OSSDeleteObjectResult : OSSResult
- @end
-
- /**
- 复制一个Object的请求
- */
- @interface OSSCopyObjectRequest : OSSRequest
-
- /**
- Bucket名称
- */
- @property (nonatomic, strong) NSString * bucketName;
-
- /**
- Object名称
- */
- @property (nonatomic, strong) NSString * objectKey;
-
- /**
- 复制源地址(必须有可读权限)
- */
- @property (nonatomic, strong) NSString * sourceCopyFrom;
-
- /**
- 设置文件类型
- */
- @property (nonatomic, strong) NSString * contentType;
-
- /**
- 根据协议RFC 1864对消息内容(不包括头部)计算MD5值获得128比特位数字,对该数字进行base64编码为一个消息的Content-MD5值。
- 该请求头可用于消息合法性的检查(消息内容是否与发送时一致)。虽然该请求头是可选项,OSS建议用户使用该请求头进行端到端检查。
- */
- @property (nonatomic, strong) NSString * contentMd5;
-
- /**
- 可以在这个字段中携带以x-oss-meta-为前缀的参数,则视为user meta,比如x-oss-meta-location。一个Object可以有多个类似的参数,但所有的user meta总大小不能超过8k。
- 如果上传时还需要指定其他HTTP请求头字段,也可以在这里设置
- */
- @property (nonatomic, strong) NSDictionary * objectMeta;
- @end
-
- /**
- 复制Object的请求结果
- */
- @interface OSSCopyObjectResult : OSSResult
-
- /**
- 新Object最后更新时间。
- */
- @property (nonatomic, strong) NSString * lastModifed;
-
- /**
- 新Object的ETag值。
- */
- @property (nonatomic, strong) NSString * eTag;
- @end
-
- /**
- 初始化分块上传的请求
- */
- @interface OSSInitMultipartUploadRequest : OSSRequest
-
- /**
- Bucket名称
- */
- @property (nonatomic, strong) NSString * bucketName;
-
- /**
- Object名称
- */
- @property (nonatomic, strong) NSString * objectKey;
-
- /**
- 设置文件类型
- */
- @property (nonatomic, strong) NSString * contentType;
-
- /**
- 指定该Object被下载时的名称;更详细描述请参照RFC2616。
- */
- @property (nonatomic, strong) NSString * contentDisposition;
-
- /**
- 指定该Object被下载时的内容编码格式;更详细描述请参照RFC2616。
- */
- @property (nonatomic, strong) NSString * contentEncoding;
-
- /**
- 指定该Object被下载时的网页的缓存行为;更详细描述请参照RFC2616。
- */
- @property (nonatomic, strong) NSString * cacheControl;
-
- /**
- 过期时间(milliseconds);更详细描述请参照RFC2616。
- */
- @property (nonatomic, strong) NSString * expires;
-
- /**
- 可以在这个字段中携带以x-oss-meta-为前缀的参数,则视为user meta,比如x-oss-meta-location。一个Object可以有多个类似的参数,但所有的user meta总大小不能超过8k。
- 如果上传时还需要指定其他HTTP请求头字段,也可以在这里设置
- */
- @property (nonatomic, strong) NSDictionary * objectMeta;
- @end
-
- /**
- 初始化分块上传的请求结果
- */
- @interface OSSInitMultipartUploadResult : OSSResult
-
- /**
- 唯一标示此次Multipart Upload事件的ID。
- */
- @property (nonatomic, strong) NSString * uploadId;
- @end
-
- /**
- 上传单个分块的请求
- */
- @interface OSSUploadPartRequest : OSSRequest
-
- /**
- Bucket名称
- */
- @property (nonatomic, strong) NSString * bucketName;
-
- /**
- Object名称
- */
- @property (nonatomic, strong) NSString * objectkey;
-
- /**
- 唯一标示此次Multipart Upload事件的ID。
- */
- @property (nonatomic, strong) NSString * uploadId;
-
- /**
- 指定本次上传分块的标识号码
- */
- @property (nonatomic, assign) int partNumber;
-
- /**
- 根据协议RFC 1864对消息内容(不包括头部)计算MD5值获得128比特位数字,对该数字进行base64编码为一个消息的Content-MD5值。
- 该请求头可用于消息合法性的检查(消息内容是否与发送时一致)。虽然该请求头是可选项,OSS建议用户使用该请求头进行端到端检查。
- */
- @property (nonatomic, strong) NSString * contentMd5;
-
- /**
- 从内存中的NSData上传时,通过这个字段设置
- */
- @property (nonatomic, strong) NSData * uploadPartData;
-
- /**
- 从文件上传时,通过这个字段设置
- */
- @property (nonatomic, strong) NSURL * uploadPartFileURL;
-
- /**
- 上传进度回调
- 会在任务执行的后台线程被回调,而非UI线程
- */
- @property (nonatomic, copy) OSSNetworkingUploadProgressBlock uploadPartProgress;
- @end
-
- /**
- 上传单个分块的结果
- */
- @interface OSSUploadPartResult : OSSResult
- @property (nonatomic, strong) NSString * eTag;
- @end
-
- /**
- 分块上传中每个分块的信息,这些信息将会在调用‘完成分块上传’的接口中使用
- */
- @interface OSSPartInfo : NSObject
-
- /**
- 指定本次上传分块的标识号码
- */
- @property (nonatomic, assign) int32_t partNum;
-
- /**
- Part成功上传后,OSS返回的ETag值。
- */
- @property (nonatomic, strong) NSString * eTag;
-
- /**
- 分块数据长度
- */
- @property (nonatomic, assign) int64_t size;
-
- + (instancetype)partInfoWithPartNum:(int32_t)partNum
- eTag:(NSString *)eTag
- size:(int64_t)size;
- @end
-
- /**
- 完成分块上传请求
- */
- @interface OSSCompleteMultipartUploadRequest : OSSRequest
-
- /**
- Bucket名称
- */
- @property (nonatomic, strong) NSString * bucketName;
-
- /**
- Object名称
- */
- @property (nonatomic, strong) NSString * objectKey;
-
- /**
- 唯一标示此次Multipart Upload事件的ID。
- */
- @property (nonatomic, strong) NSString * uploadId;
-
- /**
- 根据协议RFC 1864对消息内容(不包括头部)计算MD5值获得128比特位数字,对该数字进行base64编码为一个消息的Content-MD5值。
- 该请求头可用于消息合法性的检查(消息内容是否与发送时一致)。虽然该请求头是可选项,OSS建议用户使用该请求头进行端到端检查。
- */
- @property (nonatomic, strong) NSString * contentMd5;
-
- /**
- 各个分块的信息
- */
- @property (nonatomic, strong) NSArray * partInfos;
-
- /**
- server回调参数设置
- */
- @property (nonatomic, strong) NSDictionary * callbackParam;
-
- /**
- server回调变量设置
- */
- @property (nonatomic, strong) NSDictionary * callbackVar;
-
- /**
- 完成分块上传附带的请求头
- */
- @property (nonatomic, strong) NSDictionary * completeMetaHeader;
- @end
-
- /**
- 完成分块上传请求的结果
- */
- @interface OSSCompleteMultipartUploadResult : OSSResult
-
- /**
- 新创建Object的URL。
- */
- @property (nonatomic, strong) NSString * location;
-
- /**
- ETag (entity tag) 在每个Object生成的时候被创建,用于标示一个Object的内容。
- Complete Multipart Upload请求创建的Object,ETag值是其内容的UUID。ETag值可以用于检查Object内容是否发生变化。.
- */
- @property (nonatomic, strong) NSString * eTag;
-
- /**
- 如果设置了server回调,回调的响应内容
- */
- @property (nonatomic, strong) NSString * serverReturnJsonString;
- @end
-
- /**
- 罗列某次分块上传事件已经上传的分块请求
- */
- @interface OSSListPartsRequest : OSSRequest
-
- /**
- Bucket名称
- */
- @property (nonatomic, strong) NSString * bucketName;
-
- /**
- Object名称
- */
- @property (nonatomic, strong) NSString * objectKey;
-
- /**
- 唯一标示此次Multipart Upload事件的ID。
- */
- @property (nonatomic, strong) NSString * uploadId;
-
- /**
- 返回请求中最大的Part数目。
- */
- @property (nonatomic, assign) int maxParts;
-
- /**
- 指定List的起始位置,只有Part Number数目大于该参数的Part会被列出。
- */
- @property (nonatomic, assign) int partNumberMarker;
- @end
-
- /**
- 罗列分块请求的结果
- */
- @interface OSSListPartsResult : OSSResult
-
- /**
- 如果本次没有返回全部结果,响应请求中将包含NextPartNumberMarker元素,用于标明接下来请求的PartNumberMarker值。
- */
- @property (nonatomic, assign) int nextPartNumberMarker;
-
- /**
- 返回请求中最大的Part数目。
- */
- @property (nonatomic, assign) int maxParts;
-
- /**
- 标明是否本次返回的List Part结果列表被截断。“true”表示本次没有返回全部结果;“false”表示本次已经返回了全部结果。
- */
- @property (nonatomic, assign) BOOL isTruncated;
-
- /**
- 保存Part信息的容器。
- */
- @property (nonatomic, strong) NSArray * parts;
- @end
-
- /**
- 取消分块上传事件请求
- */
- @interface OSSAbortMultipartUploadRequest : OSSRequest
-
- /**
- Bucket名称
- */
- @property (nonatomic, strong) NSString * bucketName;
-
- /**
- Object名称
- */
- @property (nonatomic, strong) NSString * objectKey;
-
- /**
- 唯一标示此次Multipart Upload事件的ID。
- */
- @property (nonatomic, strong) NSString * uploadId;
- @end
-
- /**
- 取消分块上传事件的结果
- */
- @interface OSSAbortMultipartUploadResult : OSSResult
- @end
-
- /**
- 断点续传请求
- */
- @interface OSSResumableUploadRequest : OSSRequest
-
- /**
- 一个续传事件对应着同一个唯一的UploadId
- */
- @property (nonatomic, strong) NSString * uploadId;
-
- /**
- Bucket名称
- */
- @property (nonatomic, strong) NSString * bucketName;
-
- /**
- Object名称
- */
- @property (nonatomic, strong) NSString * objectKey;
-
- /**
- 从文件上传时,通过这个字段设置
- */
- @property (nonatomic, strong) NSURL * uploadingFileURL;
-
- /**
- 自定义分块大小,最小100KB
- */
- @property (nonatomic, assign) int64_t partSize;
-
- /**
- 上传进度
- 会在任务执行的后台线程被回调,而非UI线程
- */
- @property (nonatomic, copy) OSSNetworkingUploadProgressBlock uploadProgress;
-
- /**
- server回调参数设置
- */
- @property (nonatomic, strong) NSDictionary * callbackParam;
-
- /**
- server回调变量设置
- */
- @property (nonatomic, strong) NSDictionary * callbackVar;
-
- /**
- 完成分块上传附带的请求头
- */
- @property (nonatomic, strong) NSDictionary * completeMetaHeader;
-
- /**
- 当前正在处理的子请求
- */
- @property (atomic, weak) OSSRequest * runningChildrenRequest;
-
- - (void)cancel;
- @end
-
- /**
- 断点续传的结果
- */
- @interface OSSResumableUploadResult : OSSResult
- /**
- 如果设置了server回调,回调的响应内容
- */
- @property (nonatomic, strong) NSString * serverReturnJsonString;
- @end
-
- #pragma mark 其他
-
- /**
- HTTP响应内容解析器
- */
- @interface OSSHttpResponseParser : NSObject
- @property (nonatomic, strong) NSURL * downloadingFileURL;
- @property (nonatomic, copy) OSSNetworkingOnRecieveDataBlock onRecieveBlock;
-
- - (instancetype)initForOperationType:(OSSOperationType)operationType;
- - (void)consumeHttpResponse:(NSHTTPURLResponse *)response;
- - (OSSTask *)consumeHttpResponseBody:(NSData *)data;
- - (id)constructResultObject;
- - (void)reset;
- @end
|