// // ProjectFile.m // Coding_iOS // // Created by Ease on 14/11/13. // Copyright (c) 2014年 Coding. All rights reserved. // #import "ProjectFile.h" #import "Coding_FileManager.h" @interface ProjectFile () @property (strong, nonatomic, readwrite) NSString *diskFileName; @end @implementation ProjectFile -(id)copyWithZone:(NSZone*)zone { ProjectFile *file = [[[self class] allocWithZone:zone] init]; file.project_owner_name = [_project_owner_name copy]; file.project_name = [_project_name copy]; file.diskFileName = [_diskFileName copy]; file.owner = [_owner copy]; file.share = [FileShare instanceWithUrl:_share.url]; file.title = [_title copy]; file.storage_type = [_storage_type copy]; file.storage_key = [_storage_key copy]; file.preview = [_preview copy]; file.owner_preview = [_owner_preview copy]; file.fileType = [_fileType copy]; file.name = [_name copy]; file.number = [_number copy]; file.project_id = [_project_id copy]; file.size = [_size copy]; file.current_user_role_id = [_current_user_role_id copy]; file.type = [_type copy]; file.parent_id = [_parent_id copy]; file.owner_id = [_owner_id copy]; file.file_id = [self.file_id copy]; file.created_at = [_created_at copy]; file.updated_at = [_updated_at copy]; file.id=[_id copy]; file.path=[_path copy]; return file; } +(ProjectFile *)fileWithFileId:(NSNumber *)fileId andProjectId:(NSNumber *)project_id{ ProjectFile *file = [[ProjectFile alloc] init]; file.file_id = fileId; file.project_id = project_id; return file; } + (instancetype)sharedFolderInProject:(NSString *)project_name ofUser:(NSString *)project_owner_name{ ProjectFile *file = [[self alloc] initWithFileId:@(-1) inProject:project_name ofUser:project_owner_name]; file.type = @0;//文件夹类型 return file; } - (instancetype)initWithFileId:(NSNumber *)fileId inProject:(NSString *)project_name ofUser:(NSString *)project_owner_name{ self = [super init]; if (self) { self.file_id = fileId; _project_id = nil; _project_name = project_name; _project_owner_name = project_owner_name; } return self; } - (void)setOwner_preview:(NSString *)owner_preview{ _owner_preview = owner_preview; if (!_project_id && owner_preview.length > 0) { NSString *project_id; project_id = [[[[owner_preview componentsSeparatedByString:@"project/"] lastObject] componentsSeparatedByString:@"/"] firstObject]; _project_id = @(project_id.integerValue); } } - (NSNumber *)file_id{ return _file_id ?: _id; } - (void)setCount:(NSNumber *)count{ _count = @(MAX(0, count.integerValue)); } - (BOOL)isDefaultFolder{ return _file_id && _file_id.integerValue == 0; } - (BOOL)isSharedFolder{ return _file_id && _file_id.integerValue == -1; } - (BOOL)isEmpty{ return !(self.storage_key && self.storage_key.length > 0); } - (DownloadState)downloadState{ DownloadState state = DownloadStateDefault; if ([self diskFileUrl]) { state = DownloadStateDownloaded; }else{ Coding_DownloadTask *cDownloadTask = [self cDownloadTask]; if (cDownloadTask) { if (cDownloadTask.task.state == NSURLSessionTaskStateRunning) { state = DownloadStateDownloading; }else if (cDownloadTask.task.state == NSURLSessionTaskStateSuspended) { state = DownloadStatePausing; }else{ [Coding_FileManager cancelCDownloadTaskForKey:self.storage_key]; } } } return state; } - (NSString *)owner_name{ return _owner_name ?: _owner.name; } - (NSString *)downloadPath{ NSString *path = [NSString stringWithFormat:@"%@api/project/%@/files/%@/download", [NSObject baseURLStr], _project_id.stringValue, self.file_id.stringValue]; return path; } - (NSString *)diskFileName{ if (!_diskFileName) { _diskFileName = [NSString stringWithFormat:@"%@|||%@|||%@|%@", _name, _project_id.stringValue, _storage_type, self.storage_key_for_disk]; } return _diskFileName; } - (NSString *)storage_key_for_disk{ NSArray *fileNameCom = [_name componentsSeparatedByString:@"."]; NSMutableArray *storage_keyCom = [_storage_key componentsSeparatedByString:@"."].mutableCopy; if (fileNameCom.count > 1 && storage_keyCom.count > 0 && ![fileNameCom.lastObject isEqualToString:storage_keyCom.lastObject]) {//_storage_key 后缀名与 fileNameCom 后缀名不同的情况 [storage_keyCom addObject:fileNameCom.lastObject]; return [storage_keyCom componentsJoinedByString:@"."]; }else if (_storage_key.length > 0){ return [_storage_key componentsSeparatedByString:@"/"].lastObject;//'group0/M00/00/01/fwAAAVsHsvqAOY8rABzvMF5h1Ck652.JPG'..诡异的前半截数据 }else{// 说是以后,可能迁移到腾讯云,_storage_key 字段可能不保 return [NSString stringWithFormat:@"%@_%@.%@", _project_id, _file_id, fileNameCom.lastObject]; } } - (Coding_DownloadTask *)cDownloadTask{ return [Coding_FileManager cDownloadTaskForKey:_storage_key]; } - (NSURL *)diskFileUrl{ return [Coding_FileManager diskDownloadUrlForKey:self.storage_key] ?: [Coding_FileManager diskDownloadUrlForKey:self.storage_key_for_disk]; } - (NSString *)toDeletePath{ return [NSString stringWithFormat:@"api/project/%@/file/delete", _project_id.stringValue]; } - (NSDictionary *)toDeleteParams{ return @{@"fileIds" : @[self.file_id.stringValue]}; } - (NSDictionary *)toMoveToParams{ return @{@"fileId" : @[self.file_id.stringValue]}; } - (NSString *)toDetailPath{ NSString *path; if (!_project_id) { path = [NSString stringWithFormat:@"api/user/%@/project/%@/files/%@/view", _project_owner_name, _project_name, _file_id.stringValue]; }else{ path = [NSString stringWithFormat:@"api/project/%@/files/%@/view", _project_id.stringValue, _file_id.stringValue]; } return path; } - (NSString *)toActivityListPath{ return [NSString stringWithFormat:@"api/project/%@/file/%@/activities", _project_id.stringValue, self.file_id.stringValue]; } - (NSString *)toHistoryListPath{ return [NSString stringWithFormat:@"api/project/%@/files/%@/histories", _project_id.stringValue, self.file_id.stringValue]; } - (NSDictionary *)toShareParams{ return @{ @"projectId": _project_id, @"resourceId": self.file_id, @"resourceType": @0, @"accessType": @0 }; } - (NSString *)toFolderFilesPath{ if (self.isSharedFolder) { return [NSString stringWithFormat:@"api/user/%@/project/%@/folder/shared_files", _project_owner_name, _project_name]; }else{ return [NSString stringWithFormat:@"api/user/%@/project/%@/folder/%@/all", _project_owner_name, _project_name, self.file_id]; } } - (NSDictionary *)toFolderFilesParams{ return @{@"height": @"90", @"width": @"90", @"page" : @"1", @"pageSize": @"500"}; } @end