QNResponseInfo.h 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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. /// 状态码
  14. @property (readonly) int statusCode;
  15. /// response 信息
  16. @property (nonatomic, copy, readonly) NSDictionary *responseDictionary;
  17. /// response message
  18. @property (nonatomic, copy, readonly) NSString *message;
  19. /// 七牛服务器生成的请求ID,用来跟踪请求信息,如果使用过程中出现问题,请反馈此ID
  20. @property (nonatomic, copy, readonly) NSString *reqId;
  21. /// 七牛服务器内部跟踪记录
  22. @property (nonatomic, copy, readonly) NSString *xlog;
  23. /// cdn服务器内部跟踪记录
  24. @property (nonatomic, copy, readonly) NSString *xvia;
  25. /// 错误信息,出错时请反馈此记录
  26. @property (nonatomic, copy, readonly) NSError *error;
  27. /// 服务器域名
  28. @property (nonatomic, copy, readonly) NSString *host;
  29. /// 客户端id
  30. @property (nonatomic, readonly) NSString *id;
  31. /// 时间戳
  32. @property (readonly) UInt64 timeStamp;
  33. /// 是否取消
  34. @property (nonatomic, readonly, getter=isCancelled) BOOL canceled;
  35. /// 成功的请求
  36. @property (nonatomic, readonly, getter=isOK) BOOL ok;
  37. /// 是否网络错误
  38. @property (nonatomic, readonly, getter=isConnectionBroken) BOOL broken;
  39. /// 是否TLS错误
  40. @property (nonatomic, readonly) BOOL isTlsError;
  41. /// 是否可以再次重试,当遇到权限等怎么重试都不可能成功的问题时,返回NO
  42. @property (nonatomic, readonly) BOOL couldRetry;
  43. /// 单个host是否可以再次重试
  44. @property (nonatomic, readonly) BOOL couldHostRetry;
  45. /// 单个Region是否可以再次重试
  46. @property (nonatomic, readonly) BOOL couldRegionRetry;
  47. /// 当前host是否可达
  48. @property (nonatomic, readonly) BOOL canConnectToHost;
  49. /// 当前host是否可用
  50. @property (nonatomic, readonly) BOOL isHostUnavailable;
  51. /// 是否为 七牛响应
  52. @property (nonatomic, readonly, getter=isNotQiniu) BOOL notQiniu;
  53. //MARK:-- 构造函数 【内部使用】
  54. + (instancetype)successResponse;
  55. + (instancetype)cancelResponse;
  56. + (instancetype)responseInfoWithNetworkError:(NSString *)desc;
  57. + (instancetype)responseInfoWithInvalidArgument:(NSString *)desc;
  58. + (instancetype)responseInfoWithInvalidToken:(NSString *)desc;
  59. + (instancetype)responseInfoWithFileError:(NSError *)error;
  60. + (instancetype)responseInfoOfZeroData:(NSString *)path;
  61. + (instancetype)responseInfoWithLocalIOError:(NSString *)desc;
  62. + (instancetype)responseInfoWithMaliciousResponseError:(NSString *)desc;
  63. // 使用responseInfoWithSDKInteriorError替代
  64. + (instancetype)responseInfoWithNoUsableHostError:(NSString *)desc NS_UNAVAILABLE;
  65. + (instancetype)responseInfoWithSDKInteriorError:(NSString *)desc;
  66. + (instancetype)responseInfoWithUnexpectedSysCallError:(NSString *)desc;
  67. + (instancetype)errorResponseInfo:(int)errorType
  68. errorDesc:(NSString *)errorDesc;
  69. - (instancetype)initWithResponseInfoHost:(NSString *)host
  70. response:(NSHTTPURLResponse *)response
  71. body:(NSData *)body
  72. error:(NSError *)error;
  73. @end