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.