// // OBSBaseConstDefinition.h // OBS // // Created by MaxZhang on 10/10/2017. // Copyright © 2017 obs. All rights reserved. // #ifndef OBSBaseDefinition_h #define OBSBaseDefinition_h static NSString *const OBSSDKVersion =@"3.24.4"; static NSUInteger const maxConcurrentRequestCountDefault =3; static NSString *const OBSURLReservedCharacters =@"-_.~!*'();:=@&=+$,/?#[]%"; static NSString *const OBSURLAllowedSpecialCharacters =@"-_."; static NSString *const OBSAbstractClassPrefix =@"OBSAbstract"; #pragma mark - Errors messages; static NSString *const OBSClientErrorDomain =@"com.obs.clientError"; static NSString *const OBSServerErrorDomain =@"com.obs.serverError"; static NSString *const OBSErrorMessageTOKEN =@"ErrorMessage"; static NSString *const OBSClientErrorHTTPRequestIDKey =@"RequestID"; static NSString *const OBSClientErrorHTTPCodeKey =@"HTTPErrorCode"; static NSString *const OBSClientErrorHTTPBodyKey =@"HTTPErrorBody"; static NSString *const OBSClientErrorInvalidParameter =@"InvalidParameter"; static char *const OBSProcessorsQueueName ="com.obs.sdk.processors"; static NSString *const OBSMaxConcurrentCommandRequestCountKey =@"maxConcurrentCommandRequestCount"; static NSString *const OBSMaxConcurrentUploadRequestCountKey =@"maxConcurrentUploadRequestCount"; static NSString *const OBSMaxConcurrentDownloadRequestCountKey =@"maxConcurrentDownloadRequestCount"; static NSString *const OBSUploadBackgroundIdentifierDefault =@"com.obs.sdk.upload"; static NSString *const OBSDownloadBackgroundIdentifierDefault =@"com.obs.sdk.download"; //networking request definition dict keys; //common fields; static NSString *const OBSRequestTypeKey =@"requestType"; static NSString *const OBSRequestIDKey =@"requestID"; static NSString *const OBSRequestHTTPMethodKey =@"requestMethod"; static NSString *const OBSRequestResourceStringKey =@"requestResourceString"; static NSString *const OBSRequestResourceParametersKey =@"requestResourceParameters"; static NSString *const OBSRequestQueryParametersKey =@"requestQueryParameters"; static NSString *const OBSRequestHeaderParametersKey =@"requestHeadersParameters"; static NSString *const OBSRequestBodyParameterKey =@"requestBodyParameters"; static NSString *const OBSRequestAddonRequestPostProcessorsKey =@"addonRequestPostProcessorsParameters"; static NSString *const OBSRequestAddonResponsePreProcessorsKey =@"addonResponsePreProcessorsParameters"; static NSString *const OBSRequestAuthRequiredKey =@"authenticationRequired"; //upload data fields; static NSString *const OBSRequestUploadDataKey =@"uploadData"; static NSString *const OBSRequestUploadProgressBlockKey =@"uploadProgressBlock"; //download data fields; static NSString *const OBSRequestOnReceiveDataBlockKey =@"onReceiveDataBlock"; static NSString *const OBSRequestDownloadProgressBlockKey =@"downloadProgressBlock"; //upload and download fields; static NSString *const OBSRequestUploadFilePathKey =@"uploadFilePath"; static NSString *const OBSRequestDownloadFilePathKey =@"downloadFilePath"; static NSString *const OBSRequestBackgroundKey =@"background"; // headesr key; static NSString *const OBSHeadersUAKey =@"User-Agent"; static NSString *const OBSHeadersHostKey =@"Host"; static NSString *const OBSHeadersContentTypeKey =@"Content-Type"; static NSString *const OBSHeadersContentLengthKey =@"Content-Length"; static NSString *const OBSHeadersAuthorizationKey =@"Authorization"; static NSString *const OBSDefaultContentType =@"binary/octet-stream"; //date format; static NSString *const OBSDateShortFormat =@"yyyyMMdd"; static NSString *const OBSDateRFC1123Format =@"E, dd MMM yyyy HH:mm:ss z"; static NSString *const OBSDateISO8601Format1 =@"yyyy-MM-dd'T'HH:mm:ss'Z'"; static NSString *const OBSDateISO8601Format2 =@"yyyyMMdd'T'HHmmss'Z'" ; static NSString *const OBSDateISO8601Format3 =@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"; //output keys and download temp file extention; static NSString *const OBSOutputCodeKey =@"statusCode"; static NSString *const OBSOutputHeadersKey =@"headers"; static NSString *const OBSOutputBodyKey =@"body"; static NSString *const OBSXMLDefaultNS =@" xmlns=\"http://s3.amazonaws.com/doc/2006-03-01/\""; static NSString *const OBSXMLDefaultNS_OBS =@" xmlns=\"http://myhwclouds.com/doc/2015-06-30/\""; static NSString *const OBSXMLDictionaryNodeOrderKey =@"__order"; #pragma mark -Enum /** * OBS鉴权版本枚举 */ typedef NS_ENUM(NSInteger, OBSContentType) { /** * 默认类型 */ OBSContentTypeNULL0, /** * mp4 */ OBSContentTypeMP4, /** * 二进制流 */ OBSContentTypeBinary, /** * JPEG */ OBSContentTypeJPEG, /** * PNG */ OBSContentTypePNG, /** * HTML */ OBSContentTypeHTML, /** * GIF */ OBSContentTypeGIF, /** * PDF */ OBSContentTypePDF, /** * MP3 */ OBSContentTypeMP3, /** * WAV */ OBSContentTypeWAV, /** * MOV */ OBSContentTypeMOV, /** * m3u8 */ OBSContentTypeM3U8, }; typedef NS_ENUM(NSInteger, OBSAuthVersion) { /** * 默认鉴权 */ OBSAuthVersionNULL0, /** * V2鉴权 */ OBSAuthVersionV2, /** * V4鉴权 */ OBSAuthVersionV4, }; /** * OBS协议种类 */ typedef NS_ENUM(NSInteger, OBSProtocolType) { /** * 旧版本协议 */ OBSProtocolTypeOld, /** * 自研协议 */ OBSProtocolTypeOBS, }; /** * OBS错误码枚举 */ typedef NS_ENUM(NSInteger, OBSErrorCode) { /** * 默认 */ OBSErrorCodeNoErrorCode0, /** * 服务器错误 */ OBSErrorCodeServerErrorStatus, /** * 客户端错误 */ OBSErrorCodeClientErrorStatus, }; /** * OBS客户端错误码枚举 */ typedef NS_ENUM(NSInteger, OBSClientErrorCODE) { /** * 默认 */ OBSRequestNoErrorCode0, /** * 定义未找到 */ OBSClientErrorRequestDefinitionNotFoundCode, /** * 响应错误码 */ OBSClientErrorHTTPResponseCodeError, /** * 签名错误 */ OBSClientErrorCodeSignFailed, // OBSClientErrorCodeNetworkingFailWithResponseCode0, // OBSClientErrorCodeFileCantWrite, // OBSClientErrorCodeInvalidArgument, // OBSClientErrorCodeNilUploadid, // OBSClientErrorCodeTaskCancelled, // OBSClientErrorCodeNetworkError, // OBSClientErrorCodeCannotResumeUpload, // OBSClientErrorCodeExcpetionCatched, // OBSClientErrorCodeNotKnown }; /** * OBS请求代理类型 */ typedef NS_ENUM(NSInteger, OBSHTTPProxyType) { /** * 默认 */ OBSHTTPRroxyTypeNull0, /** * HTTP */ OBSHTTPRroxyTypeHTTP, /** * HTTPS */ OBSHTTPRroxyTypeHTTPS, /** * HTTP & HTTPS */ OBSHTTPRroxyTypeHTTPAndHTTPS, }; /** * 请求类型 */ typedef NS_ENUM(NSInteger, OBSRequestType){ /** * 默认 */ OBSRequestTypeNull0, /** * 命令 */ OBSRequestTypeCommandRequest, /** * 上传数据 */ OBSRequestTypeUploadDataRequest, /** * 上传文件 */ OBSRequestTypeUploadFileRequest, /** * 下载数据 */ OBSRequestTypeDownloadDataRequest, /** * 下载文件 */ OBSRequestTypeDownloadFileRequest, }; /** * 请求体内容 */ typedef NS_ENUM(NSInteger, OBSBodyType){ /** * 默认 */ OBSBodyTypeNull0, /** * JSON */ OBSBodyTypeJSON, /** * XML */ OBSBodyTypeXML, /** * 字符串 */ OBSBodyTypeStringData, }; /** * 请求方法类型枚举 */ typedef NS_ENUM(NSInteger, OBSHTTPMethod){ OBSHTTPMethodNull0, OBSHTTPMethodGET, OBSHTTPMethodHEAD, OBSHTTPMethodPUT, OBSHTTPMethodPOST, OBSHTTPMethodTRACE, OBSHTTPMethodOPTIONS, OBSHTTPMethodDELETE, OBSHTTPMethodLOCK, OBSHTTPMethodMKCOL, OBSHTTPMethodMOVE, }; #pragma mark - ignore warn #define SuppressPerformSelectorLeakWarning(code) \ _Pragma("clang diagnostic push") \ _Pragma("clang diagnostic ignored \"-Warc-performSelector-leaks\"") \ code\ _Pragma("clang diagnostic pop") \ #define SuppressMethodDefinitionNotFoundWarning(code) \ _Pragma("clang diagnostic push") \ _Pragma("clang diagnostic ignored \"-Wincomplete-implementation\"") \ code\ _Pragma("clang diagnostic pop") \ #define MakeDispatchOnceDictBEGIN \ static NSDictionary *dict; \ static dispatch_once_t onceToken; \ dispatch_once(&onceToken, ^{ #define MakeDispatchOnceDictEND\ }); \ #define MakeDispatchOnceArrayBEGIN \ static NSArray *array; \ static dispatch_once_t onceToken; \ dispatch_once(&onceToken, ^{ #define MakeDispatchOnceArrayEND\ }); \ #define MakeDispatchOnceTransformerBEGIN \ static NSValueTransformer *transformer; \ static dispatch_once_t onceToken; \ dispatch_once(&onceToken, ^{ #define MakeDispatchOnceTransformerEND \ }); \ #define metamacro_concat(A,B) A ## B #define weakify(VAR) \ autoreleasepool {} \ __weak __typeof__(VAR) weak##VAR = VAR // __weak __typeof__(VAR) metamacro_concat(VAR, _weak_) = (VAR) #define strongify(VAR) \ autoreleasepool {} \ _Pragma("clang diagnostic push") \ _Pragma("clang diagnostic ignored \"-Wshadow\"") \ __strong __typeof__(VAR) VAR = metamacro_concat(VAR, _weak_)\ _Pragma("clang diagnostic pop") \ #pragma mark - Progress block typedef void (^OBSNetworkingUploadProgressBlock) (int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend); typedef void (^OBSNetworkingDownloadProgressBlock) (int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite); typedef void (^OBSNetworkingOnReceiveDataBlock)(NSData *data); #endif /* OBSConstDefinition_h */