StorageAPITests.swift 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. // Copyright 2022 Google LLC
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. // MARK: This file is used to evaluate the experience of using Firebase APIs in Swift.
  15. import Foundation
  16. import FirebaseCore
  17. import FirebaseStorage
  18. final class StorageAPITests {
  19. func StorageAPIs() {
  20. let app = FirebaseApp.app()
  21. _ = Storage.storage()
  22. _ = Storage.storage(app: app!)
  23. _ = Storage.storage(url: "my-url")
  24. let storage = Storage.storage(app: app!, url: "my-url")
  25. _ = storage.app
  26. storage.maxUploadRetryTime = storage.maxUploadRetryTime
  27. storage.maxDownloadRetryTime = storage.maxDownloadRetryTime + 1
  28. storage.maxOperationRetryTime = storage.maxOperationRetryTime + 1
  29. let queue: DispatchQueue = storage.callbackQueue
  30. storage.callbackQueue = queue
  31. _ = storage.reference()
  32. _ = storage.reference(forURL: "my-url")
  33. _ = storage.reference(withPath: "path")
  34. storage.useEmulator(withHost: "host", port: 123)
  35. }
  36. func StorageReferenceApis() {
  37. var ref = Storage.storage().reference()
  38. _ = ref.storage
  39. _ = ref.bucket
  40. _ = ref.fullPath
  41. _ = ref.name
  42. ref = ref.root()
  43. ref = ref.parent()!
  44. ref = ref.child("path")
  45. let metadata = StorageMetadata()
  46. _ = ref.putData(Data())
  47. _ = ref.putData(Data(), metadata: metadata)
  48. _ = ref.putData(Data(), metadata: metadata) { result in
  49. }
  50. _ = ref.putData(Data(), metadata: metadata) { metadata, error in
  51. }
  52. let file = URL(string: "my-url")!
  53. _ = ref.putFile(from: file)
  54. _ = ref.putFile(from: file, metadata: metadata)
  55. _ = ref.putFile(from: file, metadata: metadata) { result in
  56. }
  57. _ = ref.putFile(from: file, metadata: metadata) { metadata, error in
  58. }
  59. _ = ref.getData(maxSize: 122) { data, error in
  60. }
  61. _ = ref.getData(maxSize: 122) { result in
  62. }
  63. ref.downloadURL { url, error in
  64. }
  65. ref.downloadURL { result in
  66. }
  67. ref.write(toFile: file)
  68. ref.write(toFile: file) { url, error in
  69. }
  70. ref.write(toFile: file) { result in
  71. }
  72. ref.listAll { listResult, error in
  73. }
  74. ref.listAll { result in
  75. }
  76. ref.list(maxResults: 123) { listResult, error in
  77. }
  78. ref.list(maxResults: 222) { result in
  79. }
  80. ref.list(maxResults: 123, pageToken: "pageToken") { listResult, error in
  81. }
  82. ref.list(maxResults: 222, pageToken: "pageToken") { result in
  83. }
  84. ref.getMetadata { result in
  85. }
  86. ref.getMetadata { metadata, error in
  87. }
  88. ref.delete { error in
  89. }
  90. }
  91. #if Firebase9Breaking
  92. func StorageConstantsTypedefs() {
  93. var _: StorageHandle
  94. var _: StorageVoidDataError
  95. var _: StorageVoidError
  96. var _: StorageVoidMetadata
  97. var _: StorageVoidMetadataError
  98. var _: StorageVoidSnapshot
  99. var _: StorageVoidURLError
  100. }
  101. func StorageConstantsGlobal() -> String {
  102. return StorageErrorDomain
  103. }
  104. #endif
  105. func StorageListResultApis(result: StorageListResult) {
  106. _ = result.prefixes
  107. _ = result.items
  108. _ = result.pageToken
  109. }
  110. func taskStatuses(status: StorageTaskStatus) -> StorageTaskStatus {
  111. switch status {
  112. case .unknown: return status
  113. case .resume: return status
  114. case .progress: return status
  115. case .pause: return status
  116. case .success: return status
  117. case .failure: return status
  118. @unknown default:
  119. fatalError()
  120. }
  121. }
  122. func errorCodes(code: StorageErrorCode) -> StorageErrorCode {
  123. switch code {
  124. case .unknown: return code
  125. case .objectNotFound: return code
  126. case .bucketNotFound: return code
  127. case .projectNotFound: return code
  128. case .quotaExceeded: return code
  129. case .unauthenticated: return code
  130. case .unauthorized: return code
  131. case .retryLimitExceeded: return code
  132. case .nonMatchingChecksum: return code
  133. case .downloadSizeExceeded: return code
  134. case .cancelled: return code
  135. case .invalidArgument: return code
  136. @unknown default:
  137. fatalError()
  138. }
  139. }
  140. func storageMetadataApis() {
  141. let metadata = StorageMetadata()
  142. _ = metadata.bucket
  143. metadata.cacheControl = metadata.cacheControl
  144. metadata.contentDisposition = metadata.contentDisposition
  145. metadata.contentEncoding = metadata.contentEncoding
  146. metadata.contentLanguage = metadata.contentLanguage
  147. metadata.contentType = metadata.contentType
  148. _ = metadata.md5Hash
  149. _ = metadata.generation
  150. metadata.customMetadata = metadata.customMetadata
  151. _ = metadata.metageneration
  152. _ = metadata.name
  153. _ = metadata.path
  154. _ = metadata.size
  155. _ = metadata.timeCreated
  156. _ = metadata.updated
  157. _ = metadata.storageReference
  158. _ = metadata.dictionaryRepresentation()
  159. _ = metadata.isFile
  160. _ = metadata.isFolder
  161. }
  162. func StorageObservableTaskApis(ref: StorageReference) throws {
  163. let task = ref.write(toFile: URL(string: "url")!)
  164. _ = task.observe(.pause) { snaphot in
  165. }
  166. task.removeObserver(withHandle: "handle")
  167. task.removeAllObservers()
  168. task.removeAllObservers(for: .progress)
  169. }
  170. func StorageTaskApis(task: StorageTask) {
  171. _ = task.snapshot
  172. }
  173. func StorageTaskManagementApis(task: StorageTaskManagement) {
  174. task.enqueue()
  175. task.pause?()
  176. task.cancel?()
  177. task.resume?()
  178. }
  179. func StorageTaskSnapshotApis(snapshot: StorageTaskSnapshot) {
  180. _ = snapshot.task
  181. _ = snapshot.metadata
  182. _ = snapshot.reference
  183. _ = snapshot.progress
  184. _ = snapshot.error
  185. _ = snapshot.status
  186. }
  187. }