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