MoyaProvider+Defaults.swift 1.3 KB

12345678910111213141516171819202122232425262728293031323334
  1. import Foundation
  2. /// These functions are default mappings to `MoyaProvider`'s properties: endpoints, requests, session etc.
  3. public extension MoyaProvider {
  4. final class func defaultEndpointMapping(for target: Target) -> Endpoint {
  5. return Endpoint(
  6. url: URL(target: target).absoluteString,
  7. sampleResponseClosure: { .networkResponse(200, target.sampleData) },
  8. method: target.method,
  9. task: target.task,
  10. httpHeaderFields: target.headers
  11. )
  12. }
  13. final class func defaultRequestMapping(for endpoint: Endpoint, closure: RequestResultClosure) {
  14. do {
  15. let urlRequest = try endpoint.urlRequest()
  16. closure(.success(urlRequest))
  17. } catch MoyaError.requestMapping(let url) {
  18. closure(.failure(MoyaError.requestMapping(url)))
  19. } catch MoyaError.parameterEncoding(let error) {
  20. closure(.failure(MoyaError.parameterEncoding(error)))
  21. } catch {
  22. closure(.failure(MoyaError.underlying(error, nil)))
  23. }
  24. }
  25. final class func defaultAlamofireSession() -> Session {
  26. let configuration = URLSessionConfiguration.default
  27. configuration.headers = .default
  28. return Session(configuration: configuration, startRequestsImmediately: false)
  29. }
  30. }