diff --git a/Sources/AsyncHTTPClient/HTTPClient.swift b/Sources/AsyncHTTPClient/HTTPClient.swift index 33114f750..e97f7679f 100644 --- a/Sources/AsyncHTTPClient/HTTPClient.swift +++ b/Sources/AsyncHTTPClient/HTTPClient.swift @@ -184,7 +184,9 @@ public class HTTPClient { /// - request: HTTP request to execute. /// - delegate: Delegate to process response parts. /// - deadline: Point in time by which the request must complete. - public func execute(request: Request, delegate: T, deadline: NIODeadline? = nil) -> Task { + public func execute(request: Request, + delegate: Delegate, + deadline: NIODeadline? = nil) -> Task { let eventLoop = self.eventLoopGroup.next() return self.execute(request: request, delegate: delegate, eventLoop: eventLoop, deadline: deadline) } @@ -196,7 +198,10 @@ public class HTTPClient { /// - delegate: Delegate to process response parts. /// - eventLoop: NIO Event Loop preference. /// - deadline: Point in time by which the request must complete. - public func execute(request: Request, delegate: T, eventLoop: EventLoopPreference, deadline: NIODeadline? = nil) -> Task { + public func execute(request: Request, + delegate: Delegate, + eventLoop: EventLoopPreference, + deadline: NIODeadline? = nil) -> Task { switch eventLoop.preference { case .indifferent: return self.execute(request: request, delegate: delegate, eventLoop: self.eventLoopGroup.next(), deadline: deadline) @@ -206,17 +211,20 @@ public class HTTPClient { } } - private func execute(request: Request, delegate: T, eventLoop: EventLoop, deadline: NIODeadline? = nil) -> Task { - let redirectHandler: RedirectHandler? + private func execute(request: Request, + delegate: Delegate, + eventLoop: EventLoop, + deadline: NIODeadline? = nil) -> Task { + let redirectHandler: RedirectHandler? if self.configuration.followRedirects { - redirectHandler = RedirectHandler(request: request) { newRequest in + redirectHandler = RedirectHandler(request: request) { newRequest in self.execute(request: newRequest, delegate: delegate, eventLoop: eventLoop, deadline: deadline) } } else { redirectHandler = nil } - let task = Task(eventLoop: eventLoop) + let task = Task(eventLoop: eventLoop) var bootstrap = ClientBootstrap(group: eventLoop) .channelOption(ChannelOptions.socket(SocketOptionLevel(IPPROTO_TCP), TCP_NODELAY), value: 1) diff --git a/Sources/AsyncHTTPClient/HTTPHandler.swift b/Sources/AsyncHTTPClient/HTTPHandler.swift index 975e989e2..9d6f0e667 100644 --- a/Sources/AsyncHTTPClient/HTTPHandler.swift +++ b/Sources/AsyncHTTPClient/HTTPHandler.swift @@ -467,7 +467,7 @@ extension HTTPClient { internal struct TaskCancelEvent {} -internal class TaskHandler: ChannelInboundHandler, ChannelOutboundHandler { +internal class TaskHandler: ChannelInboundHandler, ChannelOutboundHandler { typealias OutboundIn = HTTPClient.Request typealias InboundIn = HTTPClientResponsePart typealias OutboundOut = HTTPClientRequestPart @@ -481,16 +481,16 @@ internal class TaskHandler: ChannelInboundHandler case end } - let task: HTTPClient.Task - let delegate: T - let redirectHandler: RedirectHandler? + let task: HTTPClient.Task + let delegate: Delegate + let redirectHandler: RedirectHandler? let ignoreUncleanSSLShutdown: Bool var state: State = .idle var pendingRead = false var mayRead = true - init(task: HTTPClient.Task, delegate: T, redirectHandler: RedirectHandler?, ignoreUncleanSSLShutdown: Bool) { + init(task: HTTPClient.Task, delegate: Delegate, redirectHandler: RedirectHandler?, ignoreUncleanSSLShutdown: Bool) { self.task = task self.delegate = delegate self.redirectHandler = redirectHandler @@ -685,9 +685,9 @@ internal class TaskHandler: ChannelInboundHandler } } -internal struct RedirectHandler { +internal struct RedirectHandler { let request: HTTPClient.Request - let execute: (HTTPClient.Request) -> HTTPClient.Task + let execute: (HTTPClient.Request) -> HTTPClient.Task func redirectTarget(status: HTTPResponseStatus, headers: HTTPHeaders) -> URL? { switch status { @@ -716,7 +716,7 @@ internal struct RedirectHandler { return url.absoluteURL } - func redirect(status: HTTPResponseStatus, to redirectURL: URL, promise: EventLoopPromise) { + func redirect(status: HTTPResponseStatus, to redirectURL: URL, promise: EventLoopPromise) { let originalRequest = self.request var convertToGet = false