113 lines
2.7 KiB
Objective-C
113 lines
2.7 KiB
Objective-C
//
|
|
// QNUploadData.m
|
|
// QiniuSDK
|
|
//
|
|
// Created by yangsen on 2021/5/10.
|
|
// Copyright © 2021 Qiniu. All rights reserved.
|
|
//
|
|
|
|
#import "QNUploadData.h"
|
|
|
|
@interface QNUploadData()
|
|
|
|
@property(nonatomic, assign)long long offset;
|
|
@property(nonatomic, assign)long long size;
|
|
@property(nonatomic, assign)NSInteger index;
|
|
|
|
@end
|
|
@implementation QNUploadData
|
|
|
|
+ (instancetype)dataFromDictionary:(NSDictionary *)dictionary{
|
|
if (![dictionary isKindOfClass:[NSDictionary class]]) {
|
|
return nil;
|
|
}
|
|
QNUploadData *data = [[QNUploadData alloc] init];
|
|
data.offset = [dictionary[@"offset"] longLongValue];
|
|
data.size = [dictionary[@"size"] longLongValue];
|
|
data.index = [dictionary[@"index"] integerValue];
|
|
data.etag = dictionary[@"etag"];
|
|
data.md5 = dictionary[@"md5"];
|
|
data.state = [dictionary[@"state"] intValue];
|
|
return data;
|
|
}
|
|
|
|
- (instancetype)initWithOffset:(long long)offset
|
|
dataSize:(long long)dataSize
|
|
index:(NSInteger)index {
|
|
if (self = [super init]) {
|
|
_offset = offset;
|
|
_size = dataSize;
|
|
_index = index;
|
|
_etag = @"";
|
|
_md5 = @"";
|
|
_state = QNUploadStateNeedToCheck;
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (BOOL)needToUpload {
|
|
BOOL needToUpload = false;
|
|
switch (self.state) {
|
|
case QNUploadStateNeedToCheck:
|
|
case QNUploadStateWaitToUpload:
|
|
needToUpload = true;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return needToUpload;
|
|
}
|
|
|
|
- (BOOL)isUploaded {
|
|
return self.state == QNUploadStateComplete;
|
|
}
|
|
|
|
- (void)setState:(QNUploadState)state {
|
|
switch (state) {
|
|
case QNUploadStateNeedToCheck:
|
|
case QNUploadStateWaitToUpload:
|
|
case QNUploadStateUploading:
|
|
self.uploadSize = 0;
|
|
self.etag = @"";
|
|
break;
|
|
default:
|
|
self.data = nil;
|
|
break;
|
|
}
|
|
_state = state;
|
|
}
|
|
|
|
- (long long)uploadSize {
|
|
if (self.state == QNUploadStateComplete) {
|
|
return _size;
|
|
} else {
|
|
return _uploadSize;
|
|
}
|
|
}
|
|
|
|
- (void)clearUploadState{
|
|
self.state = QNUploadStateNeedToCheck;
|
|
self.etag = nil;
|
|
self.md5 = nil;
|
|
}
|
|
|
|
- (void)checkStateAndUpdate {
|
|
if ((self.state == QNUploadStateWaitToUpload || self.state == QNUploadStateUploading) && self.data == nil) {
|
|
self.state = QNUploadStateNeedToCheck;
|
|
}
|
|
}
|
|
|
|
- (NSDictionary *)toDictionary{
|
|
NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
|
|
dictionary[@"offset"] = @(self.offset);
|
|
dictionary[@"size"] = @(self.size);
|
|
dictionary[@"index"] = @(self.index);
|
|
dictionary[@"etag"] = self.etag ?: @"";
|
|
dictionary[@"md5"] = self.md5 ?: @"";
|
|
dictionary[@"state"] = @(self.state);
|
|
return [dictionary copy];
|
|
}
|
|
|
|
@end
|
|
|