APIClient
public class APIClient
A flexible http client decoupled from request building and response handling
-
An object conforming to MockClient which can ihijack request and return the expected response or errors prematurily
Declaration
Swift
public var hijacker: ClientHijacker?
-
Creates a client instance from a base URL and URLSessionConfiguration
Declaration
Swift
public init(baseURL: URL, configuration: URLSessionConfiguration? = nil)
Parameters
baseURL
Base url for all requests (this can be overwritten when calling request)
configuration
configuration object used to create a new URLSession instance.
-
Creates a client from a base url string.
Note: Will return nil if not well formed URL.
Declaration
Swift
public convenience init?(baseURLString: String, configuration: URLSessionConfiguration? = nil)
-
Creates a APIClient from base URL and user provided URLSession
Declaration
Swift
public init(baseURL: URL, urlSession: URLSession)
-
Add additional headers to all requests executed by this instance.
Declaration
Swift
public func additionalHeaders(_ headers: [String : String])
-
Undocumented
Declaration
Swift
@discardableResult public func request<T>( _ requestConvertible: Endpoint<T>, baseUrl: URL? = nil, success: @escaping (T) -> Void, fail: @escaping (Error) -> Void) -> URLSessionDataTask
-
Undocumented
Declaration
Swift
public func request<T>( _ requestConvertible: Endpoint<T>, baseUrl: URL? = nil, handler: @escaping (Result<T, Error>) -> Void ) -> URLSessionDataTask
-
Executes an http request.
Note: status codes > 400 will be transformed into a NetworkError type This makes no assumptions on what thread this should be called on. Usually just remember to call with:
apiClient.recieve(on: RunLoop.main).sink(...)
Declaration
Swift
public func request<T>(_ requestConvertible: Endpoint<T>, additionalHeaders headers: [String: String]? = nil, additionalQuery queryParameters: [String: String]? = nil, baseUrl: URL? = nil) -> AnyPublisher<T, Error>
Parameters
requestConvertible
Object conforming to URLResponseCapable & URLRequestConvertible (usually Endpoint)
baseUrl
Ovewrite the base url for this request.
Return Value
A publisher of type AnyPublisher