Skip to content

Commit

Permalink
async uploadFileFromPath
Browse files Browse the repository at this point in the history
  • Loading branch information
makoni committed Oct 3, 2023
1 parent cb053f5 commit ca2e924
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 36 deletions.
58 changes: 23 additions & 35 deletions Sources/UploadcareWidget/ViewModels/FilesListViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ extension FilesListViewModel {
)
}

func uploadFileFromPath(_ path: String) {
func uploadFileFromPath(_ path: String) async throws {
// Request to /done
var urlComponents = URLComponents()
urlComponents.scheme = "https"
Expand All @@ -77,40 +77,28 @@ extension FilesListViewModel {
builder.addMultiformValue("false", forName: "need_image")
urlRequest = builder.finalize()

self.performRequest(urlRequest) { (result) in
switch result {
case .failure(let error):
DLog(error.localizedDescription)
case .success(let data):
guard let file = try? JSONDecoder().decode(SelectedFile.self, from: data),
let fileUrlString = file.url else { return }

// Calling upload from URL
var urlComponents = URLComponents()
urlComponents.scheme = "https"
urlComponents.host = "upload.uploadcare.com"
urlComponents.path = "/from_url/"

urlComponents.queryItems = [
URLQueryItem(name: "pub_key", value: self.publicKey),
URLQueryItem(name: "source_url", value: fileUrlString),
URLQueryItem(name: "source", value: self.source.source.rawValue),
URLQueryItem(name: "store", value: "1")
]

guard let url = urlComponents.url else { return }

let urlRequest = URLRequest(url: url)
self.performRequest(urlRequest) { (result) in
switch result {
case .success(let data):
DLog(data.toString() ?? "")
case .failure(let error):
DLog(error)
}
}
}
}

let data = try await self.performRequest(urlRequest)
let file = try JSONDecoder().decode(SelectedFile.self, from: data)
guard let fileUrlString = file.url else { return }

// Calling upload from URL
var urlComponents2 = URLComponents()
urlComponents2.scheme = "https"
urlComponents2.host = "upload.uploadcare.com"
urlComponents2.path = "/from_url/"

urlComponents2.queryItems = [
URLQueryItem(name: "pub_key", value: self.publicKey),
URLQueryItem(name: "source_url", value: fileUrlString),
URLQueryItem(name: "source", value: self.source.source.rawValue),
URLQueryItem(name: "store", value: "1")
]

guard let url2 = urlComponents2.url else { return }
let urlRequest2 = URLRequest(url: url2)
let data2 = try await self.performRequest(urlRequest2)
DLog(data2.toString() ?? "")
}

func getSourceChunk() async throws {
Expand Down
6 changes: 5 additions & 1 deletion Sources/UploadcareWidget/Views/FilesListView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,11 @@ struct FilesListView: View {
HStack {
if self.pathsToUpload.count > 0 {
Button("Upload") {
self.pathsToUpload.forEach({ self.viewModel.uploadFileFromPath($0) })
self.pathsToUpload.forEach { path in
Task {
try await self.viewModel.uploadFileFromPath(path)
}
}
self.pathsToUpload.removeAll()

withAnimation {
Expand Down

0 comments on commit ca2e924

Please sign in to comment.