BBADownloaderItem.h 2.65 KB
//
//  BBADownloaderItem.h
//  ApsManager
//
//  Created by ZhangYonglu on 2018/10/22.
//  Copyright © 2018年 Baidu. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "BBADownloaderCommon.h"
#import "BBADownloaderItemProtocol.h"
#import "BBADownloaderRequestItem.h"
#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface BBADownloaderItem : NSObject<NSCopying,BBADownloaderItemProtocol>

@property (nonatomic, strong) BBADownloaderRequestItem *reuqestItem;
@property (nonatomic, copy) NSString *uniqueId;
@property (nonatomic, assign) NSTimeInterval completeTime; // 下载完成时间
@property (nonatomic, assign) EBBADownloaderStatus status;
@property (nonatomic, assign) EBBADownloaderResultCode resultCode; // 运行状态码
@property (nonatomic, assign) EBBADownloaderDetailResultCode detailResultCode; // 下载失败详细的错误码
@property (nonatomic, assign) NSInteger httpStatusCode; // http状态码和网络请求状态码
@property (nonatomic, copy) NSString *resultMessage; // 运行的详细状态信息(和resultCode对应)
@property (nonatomic, copy) NSDictionary *responseHeaders; // 请求返回的header头信息
@property (nonatomic, assign) long long periodReceivedBytes; // 在单位时间内接收到的字节数
@property (nonatomic, strong) NSDate *lastCalculateDate; // 最近一次计算的时间节点
@property (nonatomic, assign) long long speed; // 下载速度
@property (nonatomic, assign) CGFloat remainingTime; // 剩余时间
@property (nonatomic, assign) EBBADownloaderPriority priority; // 下载优先级
@property (nonatomic, assign) CGFloat progress;
@property (nonatomic, assign) long long bytes; // 已接收字节(已下载文件大小
@property (nonatomic, assign) long long totalReceivedBytes; // 已接收字节(已下载文件大小
@property (nonatomic, assign) long long totalBytes;    // 总字节(文件总大小)

-(instancetype)initWithRequestItem:(BBADownloaderRequestItem *)requestItem;

/**
 * @brief 根据item更新信息
 *
 * @param item 目标item
 */
-(void)updateWithItem:(BBADownloaderItem *)item;

-(void)appendResultMessage:(NSString *)resultMessage;

-(void)reset;

/*
 * 网络库返回错误码处理
 *
 * @param httpStatusCode 状态码
 */
- (void)updateDetailResultCode:(NSInteger)httpStatusCode;

// BBADownloaderItemProtocol
- (NSString *)sourceURL;  // 资源源地址
- (NSString *)destinationPath; // 目标存储路径;默认由资源管理器进行管理
- (BOOL)allowDownloadResume; // 是否允许断点续传;默认允许
- (NSTimeInterval)downloadTimeout; // 超时时间,默认是30秒。
- (NSInteger)retryCount; // 重试次数;默认为0,失败不重试

@end

NS_ASSUME_NONNULL_END