Files
youle_app_ios/Pods/Qiniu/QiniuSDK/Storage/QNBaseUpload.h

127 lines
4.3 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
//
// 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