QNPartsUploadPerformer.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. //
  2. // QNPartsUploadPerformer.h
  3. // QiniuSDK
  4. //
  5. // Created by yangsen on 2020/12/1.
  6. // Copyright © 2020 Qiniu. All rights reserved.
  7. //
  8. /// 抽象类,不可以直接使用,需要使用子类
  9. #import "QNFileDelegate.h"
  10. #import "QNUploadSource.h"
  11. #import "QNResponseInfo.h"
  12. #import "QNUploadOption.h"
  13. #import "QNConfiguration.h"
  14. #import "QNUpToken.h"
  15. NS_ASSUME_NONNULL_BEGIN
  16. @protocol QNUploadRegion;
  17. @class QNUploadInfo, QNRequestTransaction, QNUploadRegionRequestMetrics;
  18. @interface QNPartsUploadPerformer : NSObject
  19. @property (nonatomic, copy, readonly) NSString *key;
  20. @property (nonatomic, copy, readonly) NSString *fileName;
  21. @property (nonatomic, strong, readonly) id <QNUploadSource> uploadSource;
  22. @property (nonatomic, strong, readonly) QNUpToken *token;
  23. @property (nonatomic, strong, readonly) QNUploadOption *option;
  24. @property (nonatomic, strong, readonly) QNConfiguration *config;
  25. @property (nonatomic, strong, readonly) id <QNRecorderDelegate> recorder;
  26. @property (nonatomic, copy, readonly) NSString *recorderKey;
  27. /// 断点续传时,起始上传偏移
  28. @property(nonatomic, strong, readonly)NSNumber *recoveredFrom;
  29. @property(nonatomic, strong, readonly)id <QNUploadRegion> currentRegion;
  30. @property(nonatomic, strong, readonly)QNUploadInfo *uploadInfo;
  31. - (instancetype)initWithSource:(id<QNUploadSource>)uploadSource
  32. fileName:(NSString *)fileName
  33. key:(NSString *)key
  34. token:(QNUpToken *)token
  35. option:(QNUploadOption *)option
  36. configuration:(QNConfiguration *)config
  37. recorderKey:(NSString *)recorderKey;
  38. // 是否可以重新加载资源
  39. - (BOOL)couldReloadInfo;
  40. // 重新加载资源
  41. - (BOOL)reloadInfo;
  42. - (void)switchRegion:(id <QNUploadRegion>)region;
  43. /// 通知回调当前进度
  44. - (void)notifyProgress:(BOOL)isCompleted;
  45. /// 分片信息保存本地
  46. - (void)recordUploadInfo;
  47. /// 分片信息从本地移除
  48. - (void)removeUploadInfoRecord;
  49. /// 根据字典构造分片信息 【子类实现】
  50. - (QNUploadInfo *)getFileInfoWithDictionary:(NSDictionary * _Nonnull)fileInfoDictionary;
  51. /// 根据配置构造分片信息 【子类实现】
  52. - (QNUploadInfo *)getDefaultUploadInfo;
  53. - (QNRequestTransaction *)createUploadRequestTransaction;
  54. - (void)destroyUploadRequestTransaction:(QNRequestTransaction *)transaction;
  55. /// 上传前,服务端配置工作 【子类实现】
  56. - (void)serverInit:(void(^)(QNResponseInfo * _Nullable responseInfo,
  57. QNUploadRegionRequestMetrics * _Nullable metrics,
  58. NSDictionary * _Nullable response))completeHandler;
  59. /// 上传文件分片 【子类实现】
  60. - (void)uploadNextData:(void(^)(BOOL stop,
  61. QNResponseInfo * _Nullable responseInfo,
  62. QNUploadRegionRequestMetrics * _Nullable metrics,
  63. NSDictionary * _Nullable response))completeHandler;
  64. /// 完成上传,服务端组织文件信息 【子类实现】
  65. - (void)completeUpload:(void(^)(QNResponseInfo * _Nullable responseInfo,
  66. QNUploadRegionRequestMetrics * _Nullable metrics,
  67. NSDictionary * _Nullable response))completeHandler;
  68. @end
  69. NS_ASSUME_NONNULL_END