APIClient is an easy to use HTTP Client for Swift based on swift-server/async-http-client..
let githubClient = TestGitHubClient()
let repos = try githubClient.user.repositories(owner: "cpageler93").wait()import Foundation
import NIO
import NIOHTTP1
import APIClient
// Define your clients routes
class TestGitHubClient: APIClient {
    public var user: UserRoutes!
    init() {
        super.init(baseURL: URL(string: "https://api.github.com")!)
        user = UserRoutes(apiHandler: self.handler)
    }
}
// Define single routes
struct UserRoutes {
    let apiHandler: APIRouteHandler
    func repositories(owner: String) -> EventLoopFuture<[Repository]> {
        return apiHandler.get("/users/\(owner)/repos", headers: apiHandler.githubHeader())
    }
}
// Codable DTOs
struct Repository: Codable {
    var id: Int
    var name: String?
    var fullName: String?
}
// Header Helper
private extension APIRouteHandler {
    func githubHeader() -> HTTPHeaders {
        return headers(["User-Agent": "Swift GitHub Client"])
    }
}Please submit an issue on GitHub or contact me via Mail or Twitter.
This project is licensed under the terms of the MIT license. See the LICENSE file.