|
|
@@ -17,6 +17,7 @@ import Foundation
|
|
|
/// `StorageReference` represents a reference to a Google Cloud Storage object. Developers can
|
|
|
/// upload and download objects, as well as get/set object metadata, and delete an object at the
|
|
|
/// path. See the [Cloud docs](https://cloud.google.com/storage/) for more details.
|
|
|
+@available(iOS 13, tvOS 13, macOS 10.15, macCatalyst 13, watchOS 7, *)
|
|
|
@objc(FIRStorageReference) open class StorageReference: NSObject {
|
|
|
// MARK: - Public APIs
|
|
|
|
|
|
@@ -240,11 +241,10 @@ import Foundation
|
|
|
@objc(downloadURLWithCompletion:)
|
|
|
open func downloadURL(completion: @escaping ((_: URL?, _: Error?) -> Void)) {
|
|
|
let fetcherService = storage.fetcherServiceForApp
|
|
|
- let task = StorageGetDownloadURLTask(reference: self,
|
|
|
- fetcherService: fetcherService,
|
|
|
- queue: storage.dispatchQueue,
|
|
|
- completion: completion)
|
|
|
- task.enqueue()
|
|
|
+ StorageGetDownloadURLTask.getDownloadURLTask(reference: self,
|
|
|
+ fetcherService: fetcherService,
|
|
|
+ queue: storage.dispatchQueue,
|
|
|
+ completion: completion)
|
|
|
}
|
|
|
|
|
|
/// Asynchronously retrieves a long lived download URL with a revokable token.
|
|
|
@@ -342,13 +342,12 @@ import Foundation
|
|
|
items.append(contentsOf: listResult.items)
|
|
|
|
|
|
if let pageToken = listResult.pageToken {
|
|
|
- let nextPage = StorageListTask(reference: strongSelf,
|
|
|
- fetcherService: fetcherService,
|
|
|
- queue: strongSelf.storage.dispatchQueue,
|
|
|
- pageSize: nil,
|
|
|
- previousPageToken: pageToken,
|
|
|
- completion: paginatedCompletion)
|
|
|
- nextPage.enqueue()
|
|
|
+ StorageListTask.listTask(reference: strongSelf,
|
|
|
+ fetcherService: fetcherService,
|
|
|
+ queue: strongSelf.storage.dispatchQueue,
|
|
|
+ pageSize: nil,
|
|
|
+ previousPageToken: pageToken,
|
|
|
+ completion: paginatedCompletion)
|
|
|
} else {
|
|
|
let result = StorageListResult(withPrefixes: prefixes, items: items, pageToken: nil)
|
|
|
|
|
|
@@ -358,13 +357,12 @@ import Foundation
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- let task = StorageListTask(reference: self,
|
|
|
- fetcherService: fetcherService,
|
|
|
- queue: storage.dispatchQueue,
|
|
|
- pageSize: nil,
|
|
|
- previousPageToken: nil,
|
|
|
- completion: paginatedCompletion)
|
|
|
- task.enqueue()
|
|
|
+ StorageListTask.listTask(reference: self,
|
|
|
+ fetcherService: fetcherService,
|
|
|
+ queue: storage.dispatchQueue,
|
|
|
+ pageSize: nil,
|
|
|
+ previousPageToken: nil,
|
|
|
+ completion: paginatedCompletion)
|
|
|
}
|
|
|
|
|
|
/// Lists all items (files) and prefixes (folders) under this StorageReference.
|
|
|
@@ -404,13 +402,12 @@ import Foundation
|
|
|
))
|
|
|
} else {
|
|
|
let fetcherService = storage.fetcherServiceForApp
|
|
|
- let task = StorageListTask(reference: self,
|
|
|
- fetcherService: fetcherService,
|
|
|
- queue: storage.dispatchQueue,
|
|
|
- pageSize: maxResults,
|
|
|
- previousPageToken: nil,
|
|
|
- completion: completion)
|
|
|
- task.enqueue()
|
|
|
+ StorageListTask.listTask(reference: self,
|
|
|
+ fetcherService: fetcherService,
|
|
|
+ queue: storage.dispatchQueue,
|
|
|
+ pageSize: maxResults,
|
|
|
+ previousPageToken: nil,
|
|
|
+ completion: completion)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -440,13 +437,12 @@ import Foundation
|
|
|
))
|
|
|
} else {
|
|
|
let fetcherService = storage.fetcherServiceForApp
|
|
|
- let task = StorageListTask(reference: self,
|
|
|
- fetcherService: fetcherService,
|
|
|
- queue: storage.dispatchQueue,
|
|
|
- pageSize: maxResults,
|
|
|
- previousPageToken: pageToken,
|
|
|
- completion: completion)
|
|
|
- task.enqueue()
|
|
|
+ StorageListTask.listTask(reference: self,
|
|
|
+ fetcherService: fetcherService,
|
|
|
+ queue: storage.dispatchQueue,
|
|
|
+ pageSize: maxResults,
|
|
|
+ previousPageToken: pageToken,
|
|
|
+ completion: completion)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -458,11 +454,10 @@ import Foundation
|
|
|
@objc(metadataWithCompletion:)
|
|
|
open func getMetadata(completion: @escaping ((_: StorageMetadata?, _: Error?) -> Void)) {
|
|
|
let fetcherService = storage.fetcherServiceForApp
|
|
|
- let task = StorageGetMetadataTask(reference: self,
|
|
|
- fetcherService: fetcherService,
|
|
|
- queue: storage.dispatchQueue,
|
|
|
- completion: completion)
|
|
|
- task.enqueue()
|
|
|
+ StorageGetMetadataTask.getMetadataTask(reference: self,
|
|
|
+ fetcherService: fetcherService,
|
|
|
+ queue: storage.dispatchQueue,
|
|
|
+ completion: completion)
|
|
|
}
|
|
|
|
|
|
/// Retrieves metadata associated with an object at the current path.
|
|
|
@@ -486,12 +481,11 @@ import Foundation
|
|
|
open func updateMetadata(_ metadata: StorageMetadata,
|
|
|
completion: ((_: StorageMetadata?, _: Error?) -> Void)?) {
|
|
|
let fetcherService = storage.fetcherServiceForApp
|
|
|
- let task = StorageUpdateMetadataTask(reference: self,
|
|
|
- fetcherService: fetcherService,
|
|
|
- queue: storage.dispatchQueue,
|
|
|
- metadata: metadata,
|
|
|
- completion: completion)
|
|
|
- task.enqueue()
|
|
|
+ StorageUpdateMetadataTask.updateMetadataTask(reference: self,
|
|
|
+ fetcherService: fetcherService,
|
|
|
+ queue: storage.dispatchQueue,
|
|
|
+ metadata: metadata,
|
|
|
+ completion: completion)
|
|
|
}
|
|
|
|
|
|
/// Updates the metadata associated with an object at the current path.
|
|
|
@@ -514,11 +508,15 @@ import Foundation
|
|
|
@objc(deleteWithCompletion:)
|
|
|
open func delete(completion: ((_: Error?) -> Void)?) {
|
|
|
let fetcherService = storage.fetcherServiceForApp
|
|
|
- let task = StorageDeleteTask(reference: self,
|
|
|
+ let completionWrap = { (_: Data?, error: Error?) in
|
|
|
+ if let completion {
|
|
|
+ completion(error)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ StorageDeleteTask.deleteTask(reference: self,
|
|
|
fetcherService: fetcherService,
|
|
|
queue: storage.dispatchQueue,
|
|
|
- completion: completion)
|
|
|
- task.enqueue()
|
|
|
+ completion: completionWrap)
|
|
|
}
|
|
|
|
|
|
/// Deletes the object at the current path.
|