URLRequest+Encoding.swift 901 B

12345678910111213141516171819202122232425262728
  1. import Foundation
  2. internal extension URLRequest {
  3. mutating func encoded(encodable: Encodable, encoder: JSONEncoder = JSONEncoder()) throws -> URLRequest {
  4. do {
  5. let encodable = AnyEncodable(encodable)
  6. httpBody = try encoder.encode(encodable)
  7. let contentTypeHeaderName = "Content-Type"
  8. if value(forHTTPHeaderField: contentTypeHeaderName) == nil {
  9. setValue("application/json", forHTTPHeaderField: contentTypeHeaderName)
  10. }
  11. return self
  12. } catch {
  13. throw MoyaError.encodableMapping(error)
  14. }
  15. }
  16. func encoded(parameters: [String: Any], parameterEncoding: ParameterEncoding) throws -> URLRequest {
  17. do {
  18. return try parameterEncoding.encode(self, with: parameters)
  19. } catch {
  20. throw MoyaError.parameterEncoding(error)
  21. }
  22. }
  23. }