Swiftpack.co - tevelee/AsyncHTTP as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by tevelee.
tevelee/AsyncHTTP 1.1.0
Swift networking with async/await
⭐️ 8
🕓 1 year ago
iOS macOS watchOS tvOS macCatalyst
.package(url: "https://github.com/tevelee/AsyncHTTP.git", from: "1.1.0")

AsyncHTTP

Generic networking library written using Swift async/await

let request = try HTTPRequest().configured { request in
    request.path = "endpoint"
    request.method = .post
    request.body = try .json(["a": "b"])
    request[header: .accept] = .application.json.appending(.characterSet, value: .utf8)
    request[header: .authorization] = .bearer(token: "token")
    request.addQueryParameter(name: "q", value: "search")
    request.serverEnvironment = .production
    request.timeout = 60
    request.retryStrategy = .immediately(maximumNumberOfAttempts: 3)
}

let loader: some HTTPLoader = URLSession.shared.httpLoader()
    .applyServerEnvironment()
    .applyTimeout(default: 30)
    .applyRetryStrategy()
    .deduplicate()
    .throttle(maximumNumberOfRequests: 2)

let response: HTTPResponse = try await loader.load(request)
let body: MyResponseStruct = try response.jsonBody()

print(request.formatted())
print(response.formatted())

GitHub

link
Stars: 8
Last commit: 45 weeks ago
Advertisement: IndiePitcher.com - Cold Email Software for Startups

Release Notes

1.1.0
1 year ago
  • Adopted primary associated types: allows opaque type constraints such as some Loader<URLRequest, HTTPURLResponse>
  • Advanced rethrows mechanism: load() only throws if there is an explicitly throwing operator in the loader chain

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics