NetworkManager.swift 881 B

12345678910111213141516171819202122232425262728
  1. import Combine
  2. import Foundation
  3. import Moya
  4. protocol NetworkManager {
  5. func upload(classifier: String, id: String, image: Data) -> AnyPublisher<HTTPResponseStatus?, MoyaError>
  6. }
  7. final class BaseNetworkManager: NetworkManager {
  8. private let remote = MoyaProvider<RemoteService>()
  9. func upload(classifier: String, id: String, image: Data) -> AnyPublisher<HTTPResponseStatus?, MoyaError> {
  10. Deferred {
  11. Future<Response, MoyaError> { promise in
  12. self.remote.request(
  13. .upload(
  14. classifier: classifier,
  15. id: id,
  16. image: image
  17. ),
  18. completion: promise
  19. )
  20. }
  21. .map { $0.response.flatMap { HTTPResponseStatus(statusCode: $0.statusCode) } }
  22. }.eraseToAnyPublisher()
  23. }
  24. }