123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715 |
- //
- // MtopExtRequest.h
- // mtopext
- //
- // 封装的mtop api 请求
- //
- // Created by sihai on 4/11/14.
- // Copyright (c) 2014 Taobao. All rights reserved.
- //
- #import <Foundation/Foundation.h>
- #import <mtopext/MtopExtRequestDelegate.h>
- #import <mtopext/MtopAuthProtocol.h>
- #import <mtopext/TBSDKUTUtility.h>
- @class TBSDKRequest;
- #pragma mark - 枚举定义
- /**
- * cache 策略
- */
- typedef NS_ENUM(NSUInteger,CachePolicy) {
- /**
- * 默认cache策略。使用这个策略时,request会先查看cache中是否有可用的缓存数据。如果没有,request会像普通request那样工作。
- * 如果有缓存数据并且缓存数据没有过期,那么request会使用缓存的数据,而且不会向服务器通信。如果缓存数据过期了,request会先
- * 进行GET请求来向服务器询问数据是否有新的版本。如果服务器说缓存的数据就是当前版本,那么缓存数据将被使用,不会下载新数据。
- * 在这种情况下,cache的有效期将被设定为服务器端提供的新的有效期。如果服务器提供更新的内容,那么新内容会被下载,并且新的数据
- * 以及它的有效期将被写入cache。
- */
- AskServerIfModifiedWhenStaleCachePolicy = 0,
-
-
- /**
- * 不使用任何cache策略,普通的请求
- */
- DoNotReadAndWriteCacheCachePolicy,
-
-
- /**
- * 用于强制刷新,没有cache回调,一定请求网络数据
- */
- AskServerIfModifiedCachePolicy,
-
-
- /**
- * 用于强制刷新,有cache回调,一定请求网络数据
- */
- AskServerIfModifiedCacheAndReturnCachePolicy,
-
-
- /**
- * 用于MessageBox使用,有cache回调,一定请求网络数据
- */
- AskServerIfModifiedCacheAndReturnCachePolicyMessageBox
-
- };
- /**
- * 登录控制参数
- */
- typedef NS_ENUM(NSInteger,MtopSessionExpiredOption) {
- /**
- * SDK内部标记用,外部业务禁止使用
- */
- MtopSessionExpiredOptionDummy = -1,
-
-
- /**
- * Session失效时,什么都不做
- */
- MtopSessionExpiredOptionNone = 0,
-
-
- /**
- * Session失效时,只做Auto Login
- */
- MtopSessionExpiredOptionAutoLogin = 1,
-
-
- /**
- * Session失效时,先Auto Login,如果Auto Login失败,唤起登录界面
- */
- MtopSessionExpiredOptionAutoLoginAndManualLogin = 2
- };
- /**
- * 授权控制参数
- */
- typedef NS_ENUM(NSInteger,MtopAuthExpiredOption){
- /**
- * SDK内部标记用,外部业务禁止使用
- */
- MtopAuthExpiredOptionDummy = -1,
-
-
- /**
- * Auth失效时,什么都不做
- */
- MtopAuthExpiredOptionNone = 0,
-
-
- /**
- * Auth失效时,只做Auto Auth
- */
- MtopAuthExpiredOptionAutoAuth = 1,
-
-
- /**
- * Auth失效时,先Auto Auth,如果Auto Auth失败,唤起登录界面
- */
- MtopAuthExpiredOptionAutAuthAndManualAuth = 2
- };
- /**
- * WUA 控制参数
- */
- typedef NS_ENUM(NSUInteger,WuaType) {
- kWuaDefault = 3,
- kWuaGeneral,
- kWuaMini,
- kWuaAtlas
- };
- /**
- * 控制请求是属于导购单元还是交易单元。该参数最终体现在请求域名上。
- */
- typedef NS_ENUM(NSUInteger,MtopUnitStrategy) {
- /**
- * 导购单元(默认所有请求走导购单元)
- */
- MtopUnitStrategyGuideUnit = 1,
-
-
- /**
- * 交易单元
- */
- MtopUnitStrategyTradeUnit
- };
- #pragma mark - MTOP请求对象
- /**
- * MTOP请求对象接口。
- */
- @interface MtopExtRequest : NSObject
- /**
- * 本地请求的自定义域名。
- */
- @property(nonatomic, strong) NSString* customHost;
- /**
- * 同步请求, 还是异步请求。默认值为 NO。
- * 其值取决于对象 [MtopService sync_call:] 与 [MtopService async_call:]
- */
- @property(nonatomic, assign) BOOL isSync;
- /**
- * 指示是否需要登录态,由业务设置。
- * P.S. 登录相关为什么如此命名?具体原因己不可考。基于兼容性考虑,已不便变动。
- */
- @property(nonatomic, assign) BOOL isNeedEcode;
- /**
- * Session 失效选项。isNeedEcode = YES 的情况下有效。
- */
- @property(nonatomic, assign) MtopSessionExpiredOption sessionExpiredOption;
- /**
- * 指示是否需要Auth授权
- */
- @property(nonatomic, assign) BOOL isNeedAuth;
- /**
- * 授权过期选项。isNeedAuth = YES 的情况下有效。
- */
- @property(nonatomic, assign) MtopAuthExpiredOption authExpiredOption;
- /**
- * 是否启用虚机签名
- */
- @property(nonatomic, assign) BOOL isEnableWUA;
- /**
- * 虚机签名类型。isEnableWUA = YES 的情况下有效。
- */
- @property(nonatomic, assign) WuaType wuaType;
- /**
- * 本地请求的 ttid (渠道号)。如业务未设置,以 TBSDKConfiguration.wapTTID 值为准。
- */
- @property(nonatomic, strong) NSString* ttid;
- /**
- * cache策略
- */
- @property(nonatomic, assign) CachePolicy cachePolicy;
- /**
- * 计算cache key 时需要排查的参数名列表.
- * 备注:目前用数组而没有用dict是合理的, 参数数量不会多。
- */
- @property(nonatomic, strong) NSMutableArray* excludedCacheKeyParameters;
- /**
- * 是否已经被取消
- */
- @property(atomic, assign) BOOL isCanceled;
- /**
- * 是否需要校验服务端的响应
- */
- @property(assign, nonatomic) BOOL isNeedValidateResponse;
- /**
- * 重试的次数
- */
- @property(nonatomic, assign, readonly) int8_t retryCount;
- /**
- * 自定义请求user id, 影响请求 x-uid 头域
- */
- @property(nonatomic, strong) NSString *userID;
- /**
- * SDK 内部生成的端側trace id, 请求 x-c-traceid 头域值。
- */
- @property(nonatomic, strong, readonly) NSString *clientTraceId;
- /**
- * 全链路埋点ID。
- */
- @property (nonatomic, copy, readonly) NSString *fullTraceID;
- /**
- * 业务ID,值由构造参数传入
- */
- @property(nonatomic, strong, readonly) NSString *bizID;
- /**
- * 当前请求的page name, 埋点用。
- */
- @property(nonatomic, copy) NSString *pageName;
- /**
- * 当前请求的page url, 埋点用。
- */
- @property(nonatomic, copy) NSString *pageUrl;
- /**
- * 当前请求的单元域名策略。
- */
- @property(nonatomic, assign) MtopUnitStrategy UnitStrategy;
- /**
- * 是否使用主线程回调。YES: 不从主线程回调, NO: 从主线程回调。
- */
- @property(nonatomic, assign) BOOL isNotUseMainThreadCallback;
- /**
- * 淘内开放API授权参数对象
- */
- @property (nonatomic,strong, readonly) AuthParamObj *authObj;
- #pragma mark - 小程序开放体系参数
- /**
- * 开放小程序 Appkey. 影响协议头: x-mini-appkey
- */
- @property (nonatomic, strong) NSString *miniAppkey;
- /**
- * 小程序appkey/插件appkey. 影响协议头: x-req-appkey
- */
- @property (nonatomic, strong) NSString *requestAppkey;
- /**
- * 开放业务平台标识码, 目前只有 mini-app / baichuan 两种类型。影响协议头: x-open-biz
- */
- @property (nonatomic, strong) NSString *openBizCode;
- /**
- * 开放业务拓展字段。影响协议头: x-open-biz-data
- */
- @property (nonatomic, strong) NSString *openBizData;
- /**
- * 原底层的 mtop 请求对象. 外部业务禁止修改。
- */
- @property(nonatomic, strong) TBSDKRequest* mrequest;
- #pragma mark - 回调
- /**
- * Block回调,请求开始
- */
- @property(atomic, copy) MtopExtRequestStarted startedBlock;
- /**
- * Block回调,请求失败
- */
- @property(atomic, copy) MtopExtRequestFailed failedBlock;
- /**
- * Block回调,请求成功
- */
- @property(atomic, copy) MtopExtRequestSucceed succeedBlock;
- /**
- * Delegate回调, 该回调与block回调语义等价,业务方可选择合适自己的方式来设置回调。
- */
- @property(atomic, weak, atomic) id<MtopExtRequestDelegate> delegate;
- #pragma mark - 埋点信息
- /**
- * 埋点信息
- */
- @property(strong, nonatomic) UTDataSet* mtopUT;
- #pragma mark - 废弃参数
- @property(nonatomic, strong) NSString *h5URL DEPRECATED_MSG_ATTRIBUTE("使用 pageUrl 代替");
- @property(nonatomic, strong) NSString* wuaPageName DEPRECATED_MSG_ATTRIBUTE("无用参数");
- @property(nonatomic, strong) NSString* wuaCtrlName DEPRECATED_MSG_ATTRIBUTE("无用参数");
- @property(nonatomic, assign) float xCoordinate DEPRECATED_MSG_ATTRIBUTE("无用参数");
- @property(nonatomic, assign) float yCoordinate DEPRECATED_MSG_ATTRIBUTE("无用参数");
- @property(nonatomic, strong) NSArray *customHostList DEPRECATED_MSG_ATTRIBUTE("无用参数");
- @property(nonatomic, weak) id context DEPRECATED_MSG_ATTRIBUTE("无用参数");
- @property(nonatomic, assign) BOOL isFromOfflineOperation DEPRECATED_MSG_ATTRIBUTE("无用参数");
- @property(nonatomic, assign) ServerType serverType DEPRECATED_MSG_ATTRIBUTE("无用参数");
- @property(nonatomic, assign) BOOL isForceHttps DEPRECATED_MSG_ATTRIBUTE("无用参数");
- @property(nonatomic, assign) BOOL isForceSpdy DEPRECATED_MSG_ATTRIBUTE("无用参数");
- /**
- * 初始化一个API请求对象
- * @param apiName API名称
- * @param apiVersion API版本
- * @return
- * MtopExtRequest
- */
- - (MtopExtRequest*) initWithApiName: (NSString*) apiName apiVersion: (NSString*) apiVersion;
- /*!
- * 初始化一个API请求对象
- * @param apiName API名称
- * @param apiVersion API版本
- * @param bizID 业务组件ID
- * @return
- * MtopExtRequest
- */
- - (MtopExtRequest *)initWithApiName:(NSString *)apiName apiVersion:(NSString *)apiVersion bizID:(NSString *)bizID;
- /*
- * 设置请求不被网络库接管
- */
- - (MtopExtRequest *)unHostedByNetWork;
- /*!
- * 设置网络超时
- * @param timeout 超时时间,单位秒
- * @return
- * MtopExtRequest 以便可以链式操作
- */
- - (MtopExtRequest*) setNetworkTimeout: (int) timeout;
- /*!
- * 走https
- * @return
- * MtopExtRequest 以便可以链式操作
- */
- - (MtopExtRequest*) useHttps;
- /*!
- * 禁止走https
- * @return
- * MtopExtRequest 以便可以链式操作
- */
- - (MtopExtRequest*) disableHttps;
- /*!
- * 使用post
- * @return
- * MtopExtRequest 以便可以链式操作
- */
- - (MtopExtRequest*) useHttpPost;
- /*!
- * 添加一个http请求头
- * @param value HTTP头value, 请不要做urlencode, 底层会统一做的
- * @param key HTTP头key
- * @return
- * MtopExtRequest 以便可以链式操作
- */
- - (MtopExtRequest*) addHttpHeader: (NSString*) value forKey: (NSString*) key;
- /*!
- * 一次添加多个头
- * @param kvs
- * @return
- * MtopExtRequest 以便可以链式操作
- */
- - (MtopExtRequest*) addHttpHeaders: (NSDictionary*) kvs;
- /*!
- * 添加一个http请求头 (该接口请求头不做UrlEncode)
- * @param value HTTP头value, 请不要做urlencode, 底层会统一做的
- * @param key HTTP头key
- * @return
- * MtopExtRequest 以便可以链式操作
- */
- - (MtopExtRequest*) addCustomHttpHeader: (NSString*) value forKey: (NSString*) key;
- /*!
- * 一次添加多个头 (该接口请求头不做UrlEncode)
- * @param kvs
- * @return
- * MtopExtRequest 以便可以链式操作
- */
- - (MtopExtRequest*) addCustomHttpHeaders: (NSDictionary*) kvs;
- /*!
- * 添加一个协议级参数
- * @param value 参数值
- * @param key 参数名
- * @return
- * MtopExtRequest 以便可以链式操作
- */
- - (MtopExtRequest*) addProtocolParameter: (NSString*) value forKey: (NSString*) key;
- /*!
- * 添加一个扩展参数和data参数平级
- * @param value 参数值
- * @param key 参数名
- * @return
- * MtopExtRequest 以便可以链式操作
- */
- - (MtopExtRequest*) addExtParameter: (id) value forKey: (NSString*) key;
- /*!
- * 一次添加多个扩展参数和data参数平级
- * @param kvs
- * @return
- * MtopExtRequest 以便可以链式操作
- */
- - (MtopExtRequest*) addExtParameters: (NSDictionary*) kvs;
- /*!
- * 移除一个扩展参数
- * @param key
- * @return
- * MtopExtRequest 以便可以链式操作
- *
- */
- - (MtopExtRequest*) removeExtParameter: (NSString*) key;
- /*!
- * 添加一个业务参数(业务级别参数)
- * @param value 参数值
- * @param key 参数名
- * @return
- * MtopExtRequest 以便可以链式操作
- */
- - (MtopExtRequest*) addBizParameter: (id) value forKey: (NSString*) key;
- /*!
- * 一次添加多个业务参数(业务级别参数)
- * @param kvs
- * @return
- * MtopExtRequest 以便可以链式操作
- */
- - (MtopExtRequest*) addBizParameters: (NSDictionary*) kvs;
- /*!
- * 移除一个业务参数
- * @param key
- * @return
- * MtopExtRequest 以便可以链式操作
- */
- - (MtopExtRequest*) removeBizParameter:(NSString*) key;
- /*!
- * 为了TBSDKMtopServer兼容提供的, 不建议使用
- * @return
- * MtopExtRequest 以便可以链式操作
- */
- - (MtopExtRequest*) clearBizParameters;
- #pragma mark 排队SDK用来设置请求优先级相关参数
- /*!
- * 设置API请求优先级参数
- * @param data 优先级参数
- */
- - (MtopExtRequest*)addPriorityData:(NSDictionary*)data;
- /*!
- * 设置API请求优先级参数
- * @param value
- * @param key
- */
- - (MtopExtRequest*) addPriorityData:(id)value forKey:(NSString *)key;
- #pragma mark 排队SDK用来设置API请求优先级
- /*!
- * 设置API请求优先级Flag
- * @param priorityFlag 优先级标识
- */
- - (void) setPriorityFlag:(BOOL)priorityFlag;
- /*!
- * 添加要上传的文件
- * @param data 文件数据
- * @param fileName 本地文件名(全路径)
- * @param forKey form field 的 key
- * @return
- * MtopExtRequest 以便可以链式操作
- *
- */
- - (MtopExtRequest*) addUploadFileWithData: (NSData*) data fileName: (NSString*) fileName forKey: (NSString*) key;
- /*!
- * 添加一个计算cache key 时排查的参数名
- * @param name 参数名
- * @return
- * MtopExtRequest 以便可以链式操作
- */
- - (MtopExtRequest*) addExcludedCacheKeyParameter: (NSString*) name;
- #pragma mark - 淘内开发api授权设置参数
- /*!
- *
- * @param appkey 需授权的三方应用appkey
- * @param authParam 授权参数
- * @return
- * MtopExtRequest 以便可以链式操作
- */
- - (MtopExtRequest*)setNeedAuth:(NSString *)appkey andAuthParam:(NSDictionary *)authParam;
- /**
- 指示生成WUA, 并设定WUA可选参数
-
- @param pageName
- @param ctrlName
- @param xCoordinate
- @param yCoordinate
- @return 带wua的MtopExtRequest
- */
- - (MtopExtRequest*) enableWUAWithPageName: (NSString*) pageName
- ctrlName: (NSString*) ctrlName
- xCoordinate: (float) xCoordinate
- yCoordinate: (float) yCoordinate
- DEPRECATED_MSG_ATTRIBUTE("enableWUAWithPageName is deprecated");
- /*!
- * 获取请求id (请求id是系统生成的唯一的标识)
- * @return
- * NSString
- */
- - (NSString*) getRequestId;
- /*!
- * 获取API名称
- * @return
- * NSString
- */
- - (NSString*) getApiName;
- /*!
- * 获取API版本
- * @return
- * NSString
- */
- - (NSString*) getApiVersion;
- /*!
- * 为了TBSDKMtopServer兼容提供的, 不建议使用
- * @param apiVersion
- *
- */
- - (void) setApiName: (NSString*) apiName;
- /*!
- * 为了TBSDKMtopServer兼容提供的, 不建议使用
- * @param apiVersion
- *
- */
- - (void) setApiVersion: (NSString*) apiVersion;
- /*!
- * 获取扩展参数
- * @return
- * NSDictionary
- */
- - (NSDictionary*) getExtParameters;
- /*!
- * 获取业务参数
- * @return
- * NSDictionary
- */
- - (NSDictionary*) getBizParameters;
- /*!
- * 获取http请求头(不包含协议参数头)
- */
- - (NSDictionary *)getHttpHeaders;
- /*!
- * 判断请求是否要求使用了post
- * @return
- * YES
- * NO
- */
- - (BOOL) isUseHttpPost;
- /*!
- * 判断请求是否要求使用了https
- * @return
- * YES
- * NO
- */
- - (BOOL) isUseHttps;
- /*!
- * 重试计数 retryCount += 1
- */
- - (void) retryed;
- /*!
- * 是否需要重试
- */
- - (BOOL) isNeedRetry;
- /*!
- * mtop ut 开始 (开始请求)
- * @param isSync
- */
- - (void) utStart: (BOOL) isSync;
- /*!
- * mtop ut 结束
- */
- - (void) utEnd;
- /*!
- * mtop ut json解析开始
- */
- - (void) utJsonParseStartTime;
- /*!
- * mtop ut json解析结束
- */
- - (void) utJsonParseEndTime;
- /*!
- * 取消
- */
- - (void) cancel;
- /*!
- *
- */
- - (BOOL) isNeedCallback;
- @end
|