diff --git a/Sources/Shared/Toolkit/HTTP/DefaultHTTPClient.swift b/Sources/Shared/Toolkit/HTTP/DefaultHTTPClient.swift index 3bd201759..8c84f860a 100644 --- a/Sources/Shared/Toolkit/HTTP/DefaultHTTPClient.swift +++ b/Sources/Shared/Toolkit/HTTP/DefaultHTTPClient.swift @@ -328,7 +328,7 @@ public final class DefaultHTTPClient: NSObject, HTTPClient, Loggable, URLSession return } - var response = HTTPResponse(response: urlResponse, url: url) + var response = HTTPResponse(request: request, response: urlResponse, url: url) if let kind = HTTPError.Kind(statusCode: response.statusCode) { state = .failure(kind: kind, cause: nil, response: response) diff --git a/Sources/Shared/Toolkit/HTTP/HTTPClient.swift b/Sources/Shared/Toolkit/HTTP/HTTPClient.swift index 57e71955b..6e9d18d51 100644 --- a/Sources/Shared/Toolkit/HTTP/HTTPClient.swift +++ b/Sources/Shared/Toolkit/HTTP/HTTPClient.swift @@ -122,6 +122,9 @@ public extension HTTPClient { /// Represents a successful HTTP response received from a server. public struct HTTPResponse: Equatable { + /// Request associated with the response. + public let request: HTTPRequest + /// URL for the response, after any redirect. public let url: URL @@ -138,7 +141,8 @@ public struct HTTPResponse: Equatable { /// Response body content, when available. public var body: Data? - public init(url: URL, statusCode: Int, headers: [String: String], mediaType: MediaType, body: Data?) { + public init(request: HTTPRequest, url: URL, statusCode: Int, headers: [String: String], mediaType: MediaType, body: Data?) { + self.request = request self.url = url self.statusCode = statusCode self.headers = headers @@ -146,7 +150,7 @@ public struct HTTPResponse: Equatable { self.body = body } - public init(response: HTTPURLResponse, url: URL, body: Data? = nil) { + public init(request: HTTPRequest, response: HTTPURLResponse, url: URL, body: Data? = nil) { var headers: [String: String] = [:] for (k, v) in response.allHeaderFields { if let ks = k as? String, let vs = v as? String { @@ -155,6 +159,7 @@ public struct HTTPResponse: Equatable { } self.init( + request: request, url: url, statusCode: response.statusCode, headers: headers,