Skip to content

Commit 6dd81d8

Browse files
committed
Add HTTPClientProtocol protocol
This provides a lightweight form of dependency injection for HTTP clients
1 parent 4ab1f7c commit 6dd81d8

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

Sources/Basics/HTPClient+URLSession.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@ import struct TSCUtility.Versioning
88
import FoundationNetworking
99
#endif
1010

11-
public struct URLSessionHTTPClient {
11+
public struct URLSessionHTTPClient: HTTPClientProtocol {
1212
private let configuration: URLSessionConfiguration
1313

1414
public init(configuration: URLSessionConfiguration = .default) {
1515
self.configuration = configuration
1616
}
1717

18-
public func execute(request: HTTPClient.Request, callback: @escaping (Result<HTTPClient.Response, Error>) -> Void) {
18+
public func execute(_ request: HTTPClient.Request, callback: @escaping (Result<HTTPClient.Response, Error>) -> Void) {
1919
let session = URLSession(configuration: self.configuration)
2020
let task = session.dataTask(with: request.urlRequest()) { data, response, error in
2121
if let error = error {

Sources/Basics/HTTPClient.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,13 @@ import Glibc
2424
import CRT
2525
#endif
2626

27+
public protocol HTTPClientProtocol {
28+
func execute(_ request: HTTPClientRequest, callback: @escaping (Result<HTTPClientResponse, Error>) -> Void)
29+
}
30+
2731
// MARK: - HTTPClient
2832

29-
public struct HTTPClient {
33+
public struct HTTPClient: HTTPClientProtocol {
3034
public typealias Configuration = HTTPClientConfiguration
3135
public typealias Request = HTTPClientRequest
3236
public typealias Response = HTTPClientResponse

0 commit comments

Comments
 (0)