QNResponseInfo.h 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. //
  2. // QNResponseInfo.h
  3. // QiniuSDK
  4. //
  5. // Created by bailong on 14/10/2.
  6. // Copyright (c) 2014年 Qiniu. All rights reserved.
  7. //
  8. #import "QNErrorCode.h"
  9. /**
  10. * 上传完成后返回的状态信息
  11. */
  12. @interface QNResponseInfo : NSObject
  13. /// 状态码,具体见 QNErrorCode.h
  14. @property (readonly) int statusCode;
  15. /// response 信息
  16. @property (nonatomic, copy, readonly) NSDictionary *responseDictionary;
  17. /// response 头信息
  18. @property (nonatomic, copy, readonly) NSDictionary *responseHeader;
  19. /// response message
  20. @property (nonatomic, copy, readonly) NSString *message;
  21. /// 七牛服务器生成的请求ID,用来跟踪请求信息,如果使用过程中出现问题,请反馈此ID
  22. @property (nonatomic, copy, readonly) NSString *reqId;
  23. /// 七牛服务器内部跟踪记录
  24. @property (nonatomic, copy, readonly) NSString *xlog;
  25. /// cdn服务器内部跟踪记录
  26. @property (nonatomic, copy, readonly) NSString *xvia;
  27. /// 错误信息,出错时请反馈此记录
  28. @property (nonatomic, copy, readonly) NSError *error;
  29. /// 服务器域名
  30. @property (nonatomic, copy, readonly) NSString *host;
  31. /// 客户端id
  32. @property (nonatomic, readonly) NSString *id;
  33. /// 时间戳
  34. @property (readonly) UInt64 timeStamp;
  35. /// 是否取消
  36. @property (nonatomic, readonly, getter=isCancelled) BOOL canceled;
  37. /// 成功的请求
  38. @property (nonatomic, readonly, getter=isOK) BOOL ok;
  39. /// 是否网络错误
  40. @property (nonatomic, readonly, getter=isConnectionBroken) BOOL broken;
  41. /// 是否TLS错误
  42. @property (nonatomic, readonly) BOOL isTlsError;
  43. /// 是否可以再次重试,当遇到权限等怎么重试都不可能成功的问题时,返回NO
  44. @property (nonatomic, readonly) BOOL couldRetry;
  45. /// 单个host是否可以再次重试
  46. @property (nonatomic, readonly) BOOL couldHostRetry;
  47. /// 单个Region是否可以再次重试
  48. @property (nonatomic, readonly) BOOL couldRegionRetry;
  49. /// 当前host是否可达
  50. @property (nonatomic, readonly) BOOL canConnectToHost;
  51. /// 当前host是否可用
  52. @property (nonatomic, readonly) BOOL isHostUnavailable;
  53. /// 在断点续上传过程中,ctx 信息已过期。
  54. @property (nonatomic, readonly) BOOL isCtxExpiedError;
  55. /// 是否为 七牛响应
  56. @property (nonatomic, readonly, getter=isNotQiniu) BOOL notQiniu;
  57. //MARK:-- 构造函数 【内部使用】
  58. + (instancetype)successResponse;
  59. + (instancetype)cancelResponse;
  60. + (instancetype)responseInfoWithNetworkError:(NSString *)desc;
  61. + (instancetype)responseInfoWithInvalidArgument:(NSString *)desc;
  62. + (instancetype)responseInfoWithInvalidToken:(NSString *)desc;
  63. + (instancetype)responseInfoWithFileError:(NSError *)error;
  64. + (instancetype)responseInfoOfZeroData:(NSString *)path;
  65. + (instancetype)responseInfoWithLocalIOError:(NSString *)desc;
  66. + (instancetype)responseInfoWithMaliciousResponseError:(NSString *)desc;
  67. // 使用responseInfoWithSDKInteriorError替代
  68. + (instancetype)responseInfoWithNoUsableHostError:(NSString *)desc NS_UNAVAILABLE;
  69. + (instancetype)responseInfoWithSDKInteriorError:(NSString *)desc;
  70. + (instancetype)responseInfoWithUnexpectedSysCallError:(NSString *)desc;
  71. + (instancetype)errorResponseInfo:(int)errorType
  72. errorDesc:(NSString *)errorDesc;
  73. - (instancetype)initWithResponseInfoHost:(NSString *)host
  74. response:(NSHTTPURLResponse *)response
  75. body:(NSData *)body
  76. error:(NSError *)error;
  77. @end