123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- //
- // QNBaseUpload.h
- // QiniuSDK
- //
- // Created by WorkSpace_Sun on 2020/4/19.
- // Copyright © 2020 Qiniu. All rights reserved.
- //
- #import <Foundation/Foundation.h>
- #import "QNConfiguration.h"
- #import "QNCrc32.h"
- #import "QNRecorderDelegate.h"
- #import "QNUpToken.h"
- #import "QNUrlSafeBase64.h"
- #import "QNAsyncRun.h"
- #import "QNUploadManager.h"
- #import "QNUploadOption.h"
- #import "QNZone.h"
- #import "QNUploadSource.h"
- #import "QNUploadRequestMetrics.h"
- extern NSString *const QNUploadUpTypeForm;
- extern NSString *const QNUploadUpTypeResumableV1;
- extern NSString *const QNUploadUpTypeResumableV2;
- typedef void (^QNUpTaskCompletionHandler)(QNResponseInfo *info, NSString *key, QNUploadTaskMetrics *metrics, NSDictionary *resp);
- @interface QNBaseUpload : NSObject
- @property (nonatomic, copy, readonly) NSString *upType;
- @property (nonatomic, copy, readonly) NSString *key;
- @property (nonatomic, copy, readonly) NSString *fileName;
- @property (nonatomic, strong, readonly) NSData *data;
- @property (nonatomic, strong, readonly) id <QNUploadSource> uploadSource;
- @property (nonatomic, strong, readonly) QNUpToken *token;
- @property (nonatomic, strong, readonly) QNUploadOption *option;
- @property (nonatomic, strong, readonly) QNConfiguration *config;
- @property (nonatomic, strong, readonly) id <QNRecorderDelegate> recorder;
- @property (nonatomic, copy, readonly) NSString *recorderKey;
- @property (nonatomic, strong, readonly) QNUpTaskCompletionHandler completionHandler;
- @property (nonatomic, strong, readonly) QNUploadRegionRequestMetrics *currentRegionRequestMetrics;
- @property (nonatomic, strong, readonly) QNUploadTaskMetrics *metrics;
- //MARK:-- 构造函数
- /// file构造函数
- /// @param uploadSource 文件源
- /// @param key 上传key
- /// @param token 上传token
- /// @param option 上传option
- /// @param config 上传config
- /// @param recorder 断点续传记录信息
- /// @param recorderKey 断电上传信息保存的key值,需确保唯一性
- /// @param completionHandler 上传完成回调
- - (instancetype)initWithSource:(id<QNUploadSource>)uploadSource
- key:(NSString *)key
- token:(QNUpToken *)token
- option:(QNUploadOption *)option
- configuration:(QNConfiguration *)config
- recorder:(id<QNRecorderDelegate>)recorder
- recorderKey:(NSString *)recorderKey
- completionHandler:(QNUpTaskCompletionHandler)completionHandler;
- /// data 构造函数
- /// @param data 上传data流
- /// @param key 上传key
- /// @param fileName 上传fileName
- /// @param token 上传token
- /// @param option 上传option
- /// @param config 上传config
- /// @param completionHandler 上传完成回调
- - (instancetype)initWithData:(NSData *)data
- key:(NSString *)key
- fileName:(NSString *)fileName
- token:(QNUpToken *)token
- option:(QNUploadOption *)option
- configuration:(QNConfiguration *)config
- completionHandler:(QNUpTaskCompletionHandler)completionHandler;
- /// 初始化数据
- - (void)initData;
- //MARK: -- 上传
- /// 开始上传流程
- - (void)run;
- /// 准备上传
- - (int)prepareToUpload;
- /// 重新加载上传数据
- - (BOOL)reloadUploadInfo;
- /// 开始上传
- - (void)startToUpload;
- /// 切换区域
- - (BOOL)switchRegionAndUpload;
- // 根据错误信息进行切换region并上传,return:是否切换region并上传
- - (BOOL)switchRegionAndUploadIfNeededWithErrorResponse:(QNResponseInfo *)errorResponseInfo;
- /// 上传结束调用回调方法,在上传结束时调用,该方法内部会调用回调,已通知上层上传结束
- /// @param info 上传返回信息
- /// @param response 上传字典信息
- - (void)complete:(QNResponseInfo *)info
- response:(NSDictionary *)response;
- //MARK: -- 机房管理
- /// 在区域列表头部插入一个区域
- - (void)insertRegionAtFirst:(id <QNUploadRegion>)region;
- /// 切换区域
- - (BOOL)switchRegion;
- /// 获取目标区域
- - (id <QNUploadRegion>)getTargetRegion;
- /// 获取当前区域
- - (id <QNUploadRegion>)getCurrentRegion;
- //MARK: -- upLog
- // 一个上传流程可能会发起多个上传操作(如:上传多个分片),每个上传操作均是以一个Region的host做重试操作
- - (void)addRegionRequestMetricsOfOneFlow:(QNUploadRegionRequestMetrics *)metrics;
- @end
|