metatext/HTTP/Sources/HTTP/Target.swift

40 lines
1.1 KiB
Swift
Raw Normal View History

// Copyright © 2020 Metabolist. All rights reserved.
import Alamofire
2020-09-05 02:31:43 +00:00
import Foundation
2020-08-30 23:33:11 +00:00
public typealias HTTPMethod = Alamofire.HTTPMethod
public typealias HTTPHeaders = Alamofire.HTTPHeaders
public typealias ParameterEncoding = Alamofire.ParameterEncoding
public typealias URLEncoding = Alamofire.URLEncoding
public typealias JSONEncoding = Alamofire.JSONEncoding
2020-08-03 00:55:23 +00:00
2020-08-31 01:40:58 +00:00
public protocol Target: URLRequestConvertible {
var baseURL: URL { get }
var pathComponents: [String] { get }
var method: HTTPMethod { get }
var encoding: ParameterEncoding { get }
var parameters: [String: Any]? { get }
var headers: HTTPHeaders? { get }
}
2020-08-31 01:40:58 +00:00
public extension Target {
func asURLRequest() throws -> URLRequest {
var url = baseURL
for pathComponent in pathComponents {
url.appendPathComponent(pathComponent)
}
return try encoding.encode(try URLRequest(url: url, method: method, headers: headers), with: parameters)
}
}
2020-08-31 01:40:58 +00:00
public protocol DecodableTarget: Target {
associatedtype ResultType: Decodable
}
2020-08-31 01:40:58 +00:00
public protocol TargetProcessing {
static func process(target: Target)
}