A DL networking library for Swift
RequestDL
This library came about through improvements in functionality and techniques of the library developed by Carson Katri called Request.
Some features have been removed and others improved in an effort to make the code more declarative. In addition, we have gained in the handling of the return through the TaskModifier and Middlewares added in this version.
Next steps
Here’s the list of what’s left to finish the first version of RequestDL.
- Implement unit tests;
- Implement support for Combine;
- Document code;
- Make the Targets available;
Feel free to open PRs and implement these features. After the first version becomes available, we will open to implement new features.
Installation
This repository is distributed through SPM, being possible to use it in two ways:
- Xcode
In Xcode 14, go to File > Packages > Add Package Dependency...
, then paste in
https://github.com/request-dl/request-dl.git
- Package.swift
// swift-tools-version:5.7
import PackageDescription
let package = Package(
name: "MyPackage",
products: [
.library(
name: "MyPackage",
targets: ["MyPackage"]
)
],
dependencies: [
.package(url: "https://github.com/request-dl/request-dl.git", from: "1.0.0")
],
targets: [
.target(
name: "MyPackage",
dependencies: ["RequestDL"]
)
]
)
Usage
This is a preliminary example that shows how to use RequestDL in applications.
func requestGoogle() async throws -> GoogleResponse {
try await DataTask {
Url("https://google.com/")
HeaderGroup {
Headers.Accept(.json)
Headers.ContentType(.json)
}
Query("apple", forKey: "q")
}
.logInConsole(true)
.decode(GoogleResponse.self)
.ignoreResponse()
.response()
}