diff --git a/Sources/OpenAPIAsyncHTTPClient/AsyncHTTPClientTransport.swift b/Sources/OpenAPIAsyncHTTPClient/AsyncHTTPClientTransport.swift index 748c093..08d11b2 100644 --- a/Sources/OpenAPIAsyncHTTPClient/AsyncHTTPClientTransport.swift +++ b/Sources/OpenAPIAsyncHTTPClient/AsyncHTTPClientTransport.swift @@ -68,15 +68,24 @@ public struct AsyncHTTPClientTransport: ClientTransport { /// The HTTP client used for performing HTTP calls. public var client: HTTPClient + /// The default shared HTTP client. + /// + /// This is a workaround for the lack of a shared client + /// in AsyncHTTPClient. Do not use this value directly, outside of + /// the `Configuration.init(client:timeout:)` initializer, as it will + /// likely be removed in the future. + private static let sharedClient: HTTPClient = .init() + /// The default request timeout. public var timeout: TimeAmount /// Creates a new configuration with the specified client and timeout. /// - Parameters: /// - client: The underlying client used to perform HTTP operations. + /// Provide nil to use the shared internal client. /// - timeout: The request timeout, defaults to 1 minute. - public init(client: HTTPClient = .init(), timeout: TimeAmount = .minutes(1)) { - self.client = client + public init(client: HTTPClient? = nil, timeout: TimeAmount = .minutes(1)) { + self.client = client ?? Self.sharedClient self.timeout = timeout } } diff --git a/Tests/OpenAPIAsyncHTTPClientTests/Test_AsyncHTTPClientTransport.swift b/Tests/OpenAPIAsyncHTTPClientTests/Test_AsyncHTTPClientTransport.swift index 03b732b..594a828 100644 --- a/Tests/OpenAPIAsyncHTTPClientTests/Test_AsyncHTTPClientTransport.swift +++ b/Tests/OpenAPIAsyncHTTPClientTests/Test_AsyncHTTPClientTransport.swift @@ -82,16 +82,8 @@ class Test_AsyncHTTPClientTransport: XCTestCase { } func testSend() async throws { - let eventLoopGroup = MultiThreadedEventLoopGroup(numberOfThreads: 1) - let httpClient = HTTPClient( - eventLoopGroupProvider: .shared(eventLoopGroup), - configuration: .init() - ) - defer { - try! httpClient.syncShutdown() - } let transport = AsyncHTTPClientTransport( - configuration: .init(client: httpClient), + configuration: .init(), requestSender: TestSender.test ) let request: OpenAPIRuntime.Request = .init(