QNRequestTransaction.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. //
  2. // QNRequestTransaction.h
  3. // QiniuSDK
  4. //
  5. // Created by yangsen on 2020/4/30.
  6. // Copyright © 2020 Qiniu. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import "QNUploadRegionInfo.h"
  10. NS_ASSUME_NONNULL_BEGIN
  11. @class QNUpToken, QNConfiguration, QNUploadOption, QNResponseInfo, QNUploadRegionRequestMetrics;
  12. typedef void(^QNRequestTransactionCompleteHandler)(QNResponseInfo * _Nullable responseInfo, QNUploadRegionRequestMetrics * _Nullable metrics, NSDictionary * _Nullable response);
  13. // 单个对象只能执行一个事务,多个事务需要创建多个事务对象完成
  14. @interface QNRequestTransaction : NSObject
  15. //MARK:-- 构造方法
  16. - (instancetype)initWithHosts:(NSArray <NSString *> *)hosts
  17. regionId:(NSString * _Nullable)regionId
  18. token:(QNUpToken *)token;
  19. //MARK:-- upload事务构造方法 选择
  20. - (instancetype)initWithConfig:(QNConfiguration *)config
  21. uploadOption:(QNUploadOption *)uploadOption
  22. targetRegion:(id <QNUploadRegion>)targetRegion
  23. currentRegion:(id <QNUploadRegion>)currentRegion
  24. key:(NSString * _Nullable)key
  25. token:(QNUpToken *)token;
  26. - (instancetype)initWithConfig:(QNConfiguration *)config
  27. uploadOption:(QNUploadOption *)uploadOption
  28. hosts:(NSArray <NSString *> *)hosts
  29. regionId:(NSString * _Nullable)regionId
  30. key:(NSString * _Nullable)key
  31. token:(QNUpToken *)token;
  32. - (void)queryUploadHosts:(QNRequestTransactionCompleteHandler)complete;
  33. - (void)uploadFormData:(NSData *)data
  34. fileName:(NSString *)fileName
  35. progress:(void(^)(long long totalBytesWritten, long long totalBytesExpectedToWrite))progress
  36. complete:(QNRequestTransactionCompleteHandler)complete;
  37. - (void)makeBlock:(long long)blockOffset
  38. blockSize:(long long)blockSize
  39. firstChunkData:(NSData *)firstChunkData
  40. progress:(void(^)(long long totalBytesWritten, long long totalBytesExpectedToWrite))progress
  41. complete:(QNRequestTransactionCompleteHandler)complete;
  42. - (void)uploadChunk:(NSString *)blockContext
  43. blockOffset:(long long)blockOffset
  44. chunkData:(NSData *)chunkData
  45. chunkOffset:(long long)chunkOffset
  46. progress:(void(^)(long long totalBytesWritten, long long totalBytesExpectedToWrite))progress
  47. complete:(QNRequestTransactionCompleteHandler)complete;
  48. - (void)makeFile:(long long)fileSize
  49. fileName:(NSString *)fileName
  50. blockContexts:(NSArray <NSString *> *)blockContexts
  51. complete:(QNRequestTransactionCompleteHandler)complete;
  52. - (void)initPart:(QNRequestTransactionCompleteHandler)complete;
  53. - (void)uploadPart:(NSString *)uploadId
  54. partIndex:(NSInteger)partIndex
  55. partData:(NSData *)partData
  56. progress:(void(^)(long long totalBytesWritten, long long totalBytesExpectedToWrite))progress
  57. complete:(QNRequestTransactionCompleteHandler)complete;
  58. /**
  59. * partInfoArray
  60. * |_ NSDictionary : { "etag": "<Etag>", "partNumber": <PartNumber> }
  61. */
  62. - (void)completeParts:(NSString *)fileName
  63. uploadId:(NSString *)uploadId
  64. partInfoArray:(NSArray <NSDictionary *> *)partInfoArray
  65. complete:(QNRequestTransactionCompleteHandler)complete;
  66. /**
  67. * 上传日志
  68. */
  69. - (void)reportLog:(NSData *)logData
  70. logClientId:(NSString *)logClientId
  71. complete:(QNRequestTransactionCompleteHandler)complete;
  72. /**
  73. * 获取服务端配置
  74. */
  75. - (void)serverConfig:(QNRequestTransactionCompleteHandler)complete;
  76. /**
  77. * 获取服务端针对某个用户的配置
  78. */
  79. - (void)serverUserConfig:(QNRequestTransactionCompleteHandler)complete;
  80. @end
  81. NS_ASSUME_NONNULL_END