123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- //
- // QNUploadInfo.m
- // QiniuSDK
- //
- // Created by yangsen on 2021/5/10.
- // Copyright © 2021 Qiniu. All rights reserved.
- //
- #import "QNErrorCode.h"
- #import "QNUploadInfo.h"
- @interface QNUploadInfo()
- @property(nonatomic, copy)NSString *sourceId;
- @property(nonatomic, assign)long long sourceSize;
- @property(nonatomic, copy)NSString *fileName;
- @property(nonatomic, strong)id <QNUploadSource> source;
- @end
- @implementation QNUploadInfo
- + (instancetype)info:(id <QNUploadSource>)source {
- QNUploadInfo *info = [[self alloc] init];
- info.source = source;
- info.sourceSize = [source getSize];
- info.fileName = [source getFileName];
- return info;
- }
- - (void)setInfoFromDictionary:(NSDictionary *)dictionary {
- self.sourceSize = [dictionary[@"sourceSize"] longValue];
- self.sourceId = dictionary[@"sourceId"];
- }
- - (NSDictionary *)toDictionary {
- return @{@"sourceSize" : @([self getSourceSize]),
- @"sourceId" : self.sourceId ?: @""};
- }
- - (BOOL)hasValidResource {
- return self.source != nil;
- }
- - (BOOL)isValid {
- return [self hasValidResource];
- }
- - (BOOL)couldReloadSource {
- return [self.source couldReloadSource];
- }
- - (BOOL)reloadSource {
- return [self.source reloadSource];
- }
- - (NSString *)getSourceId {
- return [self.source getId];
- }
- - (long long)getSourceSize {
- return [self.source getSize];
- }
- - (BOOL)isSameUploadInfo:(QNUploadInfo *)info {
- if (info == nil || ((self.sourceId.length > 0 || info.sourceId.length > 0) && ![self.sourceId isEqualToString:info.sourceId])) {
- return false;
- }
-
- // 检测文件大小,如果能获取到文件大小的话,就进行检测
- if (info.sourceSize > kQNUnknownSourceSize &&
- self.sourceSize > kQNUnknownSourceSize &&
- info.sourceSize != self.sourceSize) {
- return false;
- }
- return true;
- }
- - (long long)uploadSize {
- return 0;
- }
- - (BOOL)isAllUploaded {
- return true;
- }
- - (void)clearUploadState {
- }
- - (void)checkInfoStateAndUpdate {
- }
- - (NSData *)readData:(NSInteger)dataSize dataOffset:(long long)dataOffset error:(NSError **)error {
- if (!self.source) {
- *error = [NSError errorWithDomain:NSStreamSOCKSErrorDomain code:kQNLocalIOError userInfo:@{NSLocalizedDescriptionKey : @"file is not exist"}];
- return nil;
- }
-
- NSData *data = nil;
- @synchronized (self.source) {
- data = [self.source readData:dataSize dataOffset:dataOffset error:error];
- }
- if (*error == nil && data != nil && (data.length == 0 || data.length != dataSize)) {
- self.sourceSize = data.length + dataOffset;
- }
- return data;
- }
- - (void)close {
- [self.source close];
- }
- @end
|