Skip to content

Commit 9decb3f

Browse files
makonirsedykhivantse
authored
0.8.0 (#94)
* Remove utm that aren't working * Update README.md * integration test for file info upload API method * refactoring * tabs * refactoring * tabs * tabs * refactoring * test fixed * defaultError with status for UploadError * pass RequestManager to UploadAPI * separate validation methods for REST API and Upload API requests * refactoring * refactoring * refactoring * uploadStatus method updated * formatting * refactoring * refactoring and fixes for integration tests * integration test for multipart upload * startMulipartUpload refactoring * uploadIndividualFilePart refactoring * completeMultipartUpload refactoring * integratin tests for file groups added * refactoring * refactoring * refactoring * Alamofire is finally removed from dependencies * cleanup * Update test.yml * tests refactoring * tabs * fixes * tests accepts keys as arguments * … * Update test.yml * Update test.yml * pod version bump, removed Alamofire from dependencies * removed Alamofire from Carthage dependencies * Carthage project updated * try to remove Cartfile * Revert "try to remove Cartfile" This reverts commit 7125783. * build library for distribution * … * tabs * test updated * wip * more methods implemented with Result type * wip * wip * wip * wip * refactoring * refactoring * refactoring * wip * wip * refactoring * wip * wip * wip * wip * wip * version * wip * wip * wip * wip * wip * refactoring * Update test.yml * tests updated * tests updated * tests updated * Carthage build fixed * documentation updated * demo app updated with new lib methods * Readme updated * cleanup * update files list on main thread in demo app * allow setting signature from external source * lib version bump * Update README.md * Update Upload API.md * formatting * Update Upload API.md * custom uploadSignature can be provided for methods: - Upload file from url - Multipart file uploading - Create files group from a set of files - Create files group from a set of files UUIDs. - Files group info * custom uploadSignature can be provided for main uploadFile method that decides which upload method to use internally * custom uploadSignature can be provided for upload method of UploadedFile object * increase timeout for video conversion integration test * documentation updated * Update Sources/Uploadcare/Uploadcare.swift Co-authored-by: Roman Sedykh <rsedykh@gmail.com> * Update README.md Co-authored-by: Roman Sedykh <rsedykh@gmail.com> * Update Documentation/Upload API.md Co-authored-by: Roman Sedykh <rsedykh@gmail.com> Co-authored-by: Roman Sedykh <rsedykh@gmail.com> Co-authored-by: Ivan Tse <github@nerdtower.com>
1 parent 1e6341e commit 9decb3f

31 files changed

+2215
-1348
lines changed

.github/workflows/test.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ name: Build and test
22

33
on:
44
push:
5-
branches: [ master ]
5+
branches: [ master, develop ]
66
pull_request:
7-
branches: [ master ]
7+
branches: [ master, develop ]
88

99
jobs:
1010
SwiftBuild:

Demo/Demo.xcodeproj/project.pbxproj

-2
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@
5959
247301832565285B0052BE65 /* ProjectInfoViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProjectInfoViewModel.swift; sourceTree = "<group>"; };
6060
24730186256536F30052BE65 /* CollaboratorViewData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CollaboratorViewData.swift; sourceTree = "<group>"; };
6161
2492150424A66991008D335D /* GroupFileList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupFileList.swift; sourceTree = "<group>"; };
62-
24931A5B24755311003EE044 /* Tester.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tester.swift; sourceTree = "<group>"; };
6362
24931A5D247554A6003EE044 /* uploadcare-swift */ = {isa = PBXFileReference; lastKnownFileType = folder; name = "uploadcare-swift"; path = ..; sourceTree = "<group>"; };
6463
2496853A2498FAF3006A2AF8 /* DocumentPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DocumentPicker.swift; sourceTree = "<group>"; };
6564
24AA61DC247C5B1C000BABA9 /* ImagePicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImagePicker.swift; sourceTree = "<group>"; };
@@ -136,7 +135,6 @@
136135
243A7145242CFC6F00CA229B /* Demo.entitlements */,
137136
243A7129242CEAA200CA229B /* AppDelegate.swift */,
138137
243A712B242CEAA200CA229B /* SceneDelegate.swift */,
139-
24931A5B24755311003EE044 /* Tester.swift */,
140138
243A712F242CEAA400CA229B /* Assets.xcassets */,
141139
243A7134242CEAA400CA229B /* LaunchScreen.storyboard */,
142140
243A7137242CEAA400CA229B /* Info.plist */,

Demo/Demo/Modules/FilesListStore.swift

+7-11
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,15 @@ class FilesListStore: ObservableObject {
3939
}
4040

4141
// MARK: - Public methods
42-
func load(_ completionHandler: @escaping (FilesList?, RESTAPIError?) -> Void) {
42+
func load(_ completionHandler: @escaping (Result<FilesList, RESTAPIError>) -> Void) {
4343
let query = PaginationQuery()
4444
.limit(5)
4545
.ordering(.dateTimeUploadedDESC)
4646

4747
self.list?.get(withQuery: query, completionHandler)
4848
}
4949

50-
func loadNext(_ completionHandler: @escaping (FilesList?, RESTAPIError?) -> Void) {
50+
func loadNext(_ completionHandler: @escaping (Result<FilesList, RESTAPIError>) -> Void) {
5151
self.list?.nextPage(completionHandler)
5252
}
5353

@@ -105,17 +105,13 @@ class FilesListStore: ObservableObject {
105105
}
106106
}
107107

108-
self.currentTask = self.uploadcare?.uploadFile(data, withName: filename, store: .doNotStore, onProgress, { file, error in
109-
if let error = error {
108+
self.currentTask = self.uploadcare?.uploadFile(data, withName: filename, store: .doNotStore, onProgress, { result in
109+
switch result {
110+
case .failure(let error):
110111
DLog(error)
111-
return
112+
case .success(let file):
113+
completionHandler(file.uuid)
112114
}
113-
114-
guard let file = file else {
115-
DLog("error: no file")
116-
return
117-
}
118-
completionHandler(file.uuid)
119115
}) as? UploadTaskResumable
120116
}
121117
}

Demo/Demo/ViewModels/GroupsListViewModel.swift

+13-9
Original file line numberDiff line numberDiff line change
@@ -34,21 +34,25 @@ extension GroupsListViewModel {
3434
.limit(5)
3535
.ordering(.datetimeCreatedDESC)
3636

37-
self.list?.get(withQuery: query) { [weak self] (list, error) in
38-
if let error = error {
39-
return DLog(error)
37+
self.list?.get(withQuery: query) { [weak self] result in
38+
switch result {
39+
case .failure(let error):
40+
DLog(error)
41+
case .success(let list):
42+
self?.groups.removeAll()
43+
list.results.forEach { self?.groups.append(GroupViewData(group: $0)) }
4044
}
41-
self?.groups.removeAll()
42-
list?.results.forEach { self?.groups.append(GroupViewData(group: $0)) }
4345
}
4446
}
4547

4648
func loadMoreIfNeed() {
47-
self.list?.nextPage { [weak self] (list, error) in
48-
if let error = error {
49-
return DLog(error)
49+
self.list?.nextPage { [weak self] result in
50+
switch result {
51+
case .failure(let error):
52+
DLog(error)
53+
case .success(let list):
54+
list.results.forEach({ self?.groups.append(GroupViewData(group: $0)) })
5055
}
51-
self?.list?.results.forEach({ self?.groups.append(GroupViewData(group: $0)) })
5256
}
5357
}
5458
}

Demo/Demo/ViewModels/ProjectInfoViewModel.swift

+9-7
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,15 @@ extension ProjectInfoViewModel {
4747
onComplete()
4848
return
4949
}
50-
51-
api.getProjectInfo({ (project, error) in
52-
if let error = error {
53-
return DLog(error)
50+
51+
api.getProjectInfo { result in
52+
switch result {
53+
case .failure(let error):
54+
DLog(error)
55+
case .success(let project):
56+
self.projectData = project
57+
onComplete()
5458
}
55-
self.projectData = project
56-
onComplete()
57-
})
59+
}
5860
}
5961
}

Demo/Demo/Views/FilesList/FilesListView.swift

+35-23
Original file line numberDiff line numberDiff line change
@@ -147,14 +147,19 @@ struct FilesListView: View {
147147

148148
func loadMoreIfNeed() {
149149
self.isLoading = true
150-
filesListStore.loadNext { (list, error) in
150+
filesListStore.loadNext { result in
151151
defer { self.isLoading = false }
152-
if let error = error {
152+
153+
switch result {
154+
case .failure(let error):
153155
self.alertMessage = error.detail
154156
self.isShowingAlert.toggle()
155-
return DLog(error)
157+
DLog(error)
158+
case .success(let list):
159+
DispatchQueue.main.async {
160+
list.results.forEach({ self.filesListStore.files.append(FileViewData( file: $0)) })
161+
}
156162
}
157-
list?.results.forEach({ self.filesListStore.files.append(FileViewData( file: $0)) })
158163
}
159164
}
160165

@@ -163,45 +168,52 @@ struct FilesListView: View {
163168
let fileView = filesListStore.files[index]
164169
let uuid = fileView.file.uuid
165170

166-
self.api.uploadcare?.deleteFile(withUUID: uuid, { (_, error) in
167-
if let error = error {
171+
self.api.uploadcare?.deleteFile(withUUID: uuid) { result in
172+
switch result {
173+
case .failure(let error):
168174
DLog(error)
169-
}
170-
})
175+
case .success(_):
176+
break
177+
}
178+
}
171179
}
172180

173181
filesListStore.files.remove(atOffsets: offsets)
174182
}
175183

176184
func loadData() {
177185
filesListStore.uploadcare = self.api.uploadcare
178-
filesListStore.load { (list, error) in
186+
filesListStore.load { result in
179187
defer { self.isLoading = false }
180-
if let error = error {
188+
189+
switch result {
190+
case .failure(let error):
181191
self.alertMessage = error.detail
182192
self.isShowingAlert.toggle()
183-
return DLog(error)
193+
DLog(error)
194+
case .success(let list):
195+
self.didLoadData = true
196+
DispatchQueue.main.async {
197+
self.filesListStore.files.removeAll()
198+
list.results.forEach { self.filesListStore.files.append(FileViewData( file: $0)) }
199+
}
184200
}
185-
self.didLoadData = true
186-
self.filesListStore.files.removeAll()
187-
list?.results.forEach { self.filesListStore.files.append(FileViewData( file: $0)) }
188-
189-
// list?.results.forEach { print($0) }
190201
}
191202
}
192203

193204
func insertFileByFileId(_ fileId: String) {
194205
// getting file by uuid
195-
self.api.uploadcare?.fileInfo(withUUID: fileId, { (file, error) in
196-
if let error = error {
206+
self.api.uploadcare?.fileInfo(withUUID: fileId) { result in
207+
switch result {
208+
case .failure(let error):
197209
self.alertMessage = error.detail
198210
self.isShowingAlert.toggle()
199-
return DLog(error)
211+
DLog(error)
212+
case .success(let file):
213+
let viewData = FileViewData(file: file)
214+
self.filesListStore.files.insert(viewData, at: 0)
200215
}
201-
guard let file = file else { return }
202-
let viewData = FileViewData(file: file)
203-
self.filesListStore.files.insert(viewData, at: 0)
204-
})
216+
}
205217
}
206218
}
207219

Demo/Demo/Views/GroupsList/GroupFileList.swift

+9-7
Original file line numberDiff line numberDiff line change
@@ -50,17 +50,19 @@ struct GroupFileList: View {
5050
}
5151

5252
func loadData() {
53-
self.api.uploadcare?.groupInfo(withUUID: self.viewData.group.id, { (group, error) in
53+
self.api.uploadcare?.groupInfo(withUUID: self.viewData.group.id) { result in
5454
defer { self.isLoading = false }
55-
if let error = error {
55+
56+
switch result {
57+
case .failure(let error):
5658
self.alertMessage = error.detail
5759
self.isShowingAlert.toggle()
58-
return DLog(error)
60+
DLog(error)
61+
case .success(let group):
62+
self.filesListStore.files.removeAll()
63+
group.files?.forEach { self.filesListStore.files.append(FileViewData( file: $0)) }
5964
}
60-
61-
self.filesListStore.files.removeAll()
62-
group?.files?.forEach { self.filesListStore.files.append(FileViewData( file: $0)) }
63-
})
65+
}
6466
// filesListStore.uploadcare = self.api.uploadcare
6567
// filesListStore.load { (list, error) in
6668
// defer { self.isLoading = false }

0 commit comments

Comments
 (0)