Skip to content

Commit 07536f6

Browse files
authored
Resolve ambiguity issue for the stream function, remove @deprecated marking from the original implementation, and make argument labels consistent. (#749)
1 parent 4316eca commit 07536f6

File tree

3 files changed

+28
-28
lines changed

3 files changed

+28
-28
lines changed

Sources/AsyncHTTPClient/HTTPHandler.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,8 @@ extension HTTPClient {
111111
/// - length: Body size. If nil, `Transfer-Encoding` will automatically be set to `chunked`. Otherwise a `Content-Length`
112112
/// header is set with the given `length`.
113113
/// - stream: Body chunk provider.
114+
@_disfavoredOverload
114115
@preconcurrency
115-
@available(*, deprecated, renamed: "stream(contentLength:bodyStream:)")
116116
public static func stream(length: Int? = nil, _ stream: @Sendable @escaping (StreamWriter) -> EventLoopFuture<Void>) -> Body {
117117
return Body(contentLength: length.flatMap { Int64($0) }, stream: stream)
118118
}
@@ -123,8 +123,8 @@ extension HTTPClient {
123123
/// - contentLength: Body size. If nil, `Transfer-Encoding` will automatically be set to `chunked`. Otherwise a `Content-Length`
124124
/// header is set with the given `contentLength`.
125125
/// - bodyStream: Body chunk provider.
126-
public static func stream(contentLength: Int64? = nil, bodyStream: @Sendable @escaping (StreamWriter) -> EventLoopFuture<Void>) -> Body {
127-
return Body(contentLength: contentLength, stream: bodyStream)
126+
public static func stream(contentLength: Int64? = nil, _ stream: @Sendable @escaping (StreamWriter) -> EventLoopFuture<Void>) -> Body {
127+
return Body(contentLength: contentLength, stream: stream)
128128
}
129129

130130
/// Create and stream body using a collection of bytes.

Tests/AsyncHTTPClientTests/HTTPClientTests.swift

+23-23
Original file line numberDiff line numberDiff line change
@@ -621,7 +621,7 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
621621
let request = try HTTPClient.Request(url: self.defaultHTTPBinURLPrefix + "post",
622622
method: .POST,
623623
headers: ["transfer-encoding": "chunked"],
624-
body: .stream(bodyStream: { streamWriter in
624+
body: .stream { streamWriter in
625625
_ = streamWriter.write(.byteBuffer(.init()))
626626

627627
let promise = self.clientGroup.next().makePromise(of: Void.self)
@@ -630,7 +630,7 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
630630
}
631631

632632
return promise.futureResult
633-
}))
633+
})
634634

635635
XCTAssertThrowsError(try localClient.execute(request: request).wait()) {
636636
XCTAssertEqual($0 as? HTTPClientError, .writeTimeout)
@@ -1953,9 +1953,9 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
19531953
}
19541954

19551955
func testValidationErrorsAreSurfaced() throws {
1956-
let request = try HTTPClient.Request(url: self.defaultHTTPBinURLPrefix + "get", method: .TRACE, body: .stream(bodyStream: { _ in
1956+
let request = try HTTPClient.Request(url: self.defaultHTTPBinURLPrefix + "get", method: .TRACE, body: .stream { _ in
19571957
self.defaultClient.eventLoopGroup.next().makeSucceededFuture(())
1958-
}))
1958+
})
19591959
let runningRequest = self.defaultClient.execute(request: request)
19601960
XCTAssertThrowsError(try runningRequest.wait()) { error in
19611961
XCTAssertEqual(HTTPClientError.traceRequestWithBody, error as? HTTPClientError)
@@ -2048,10 +2048,10 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
20482048
return try? HTTPClient.Request(url: "http://\(localAddress.ipAddress!):\(localAddress.port!)",
20492049
method: .POST,
20502050
headers: ["transfer-encoding": "chunked"],
2051-
body: .stream(bodyStream: { streamWriter in
2051+
body: .stream { streamWriter in
20522052
streamWriterPromise.succeed(streamWriter)
20532053
return sentOffAllBodyPartsPromise.futureResult
2054-
}))
2054+
})
20552055
}
20562056

20572057
guard let server = makeServer(), let request = makeRequest(server: server) else {
@@ -2602,9 +2602,9 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
26022602
}
26032603

26042604
var request = try HTTPClient.Request(url: "http://localhost:\(server.serverPort)/")
2605-
request.body = .stream(bodyStream: { writer in
2605+
request.body = .stream { writer in
26062606
writer.write(.byteBuffer(ByteBuffer(string: "1234")))
2607-
})
2607+
}
26082608

26092609
let future = client.execute(request: request)
26102610

@@ -2777,7 +2777,7 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
27772777
}
27782778

27792779
var request: HTTPClient.Request?
2780-
XCTAssertNoThrow(request = try Request(url: url, body: .stream(contentLength: 1, bodyStream: uploader)))
2780+
XCTAssertNoThrow(request = try Request(url: url, body: .stream(contentLength: 1, uploader)))
27812781
XCTAssertThrowsError(try self.defaultClient.execute(request: XCTUnwrap(request)).wait()) {
27822782
XCTAssertEqual($0 as? HTTPClientError, .writeAfterRequestSent)
27832783
}
@@ -2793,7 +2793,7 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
27932793
_ = self.defaultClient.get(url: "http://localhost:\(self.defaultHTTPBin.port)/events/10/1")
27942794

27952795
var request = try HTTPClient.Request(url: "http://localhost:\(self.defaultHTTPBin.port)/wait", method: .POST)
2796-
request.body = .stream(bodyStream: { writer in
2796+
request.body = .stream { writer in
27972797
// Start writing chunks so tha we will try to write after read timeout is thrown
27982798
for _ in 1...10 {
27992799
_ = writer.write(.byteBuffer(ByteBuffer(string: "1234")))
@@ -2805,7 +2805,7 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
28052805
}
28062806

28072807
return promise.futureResult
2808-
})
2808+
}
28092809

28102810
// We specify a deadline of 2 ms co that request will be timed out before all chunks are writtent,
28112811
// we need to verify that second error on write after timeout does not lead to double-release.
@@ -2968,7 +2968,7 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
29682968

29692969
let delegate = ResponseStreamDelegate(eventLoop: delegateEL)
29702970

2971-
let body: HTTPClient.Body = .stream(bodyStream: { writer in
2971+
let body: HTTPClient.Body = .stream { writer in
29722972
let finalPromise = writeEL.makePromise(of: Void.self)
29732973

29742974
@Sendable func writeLoop(_ writer: HTTPClient.Body.StreamWriter, index: Int) {
@@ -3004,7 +3004,7 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
30043004
}
30053005

30063006
return finalPromise.futureResult
3007-
})
3007+
}
30083008

30093009
let request = try! HTTPClient.Request(url: "http://localhost:\(httpBin.port)", body: body)
30103010
let future = httpClient.execute(request: request, delegate: delegate, eventLoop: .delegate(on: delegateEL))
@@ -3068,9 +3068,9 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
30683068
let body = ByteBuffer(bytes: 0..<11)
30693069

30703070
var request = try Request(url: httpBin.baseURL)
3071-
request.body = .stream(bodyStream: { writer in
3071+
request.body = .stream { writer in
30723072
writer.write(.byteBuffer(body))
3073-
})
3073+
}
30743074
XCTAssertThrowsError(try self.defaultClient.execute(
30753075
request: request,
30763076
delegate: ResponseAccumulator(request: request, maxBodySize: 10)
@@ -3086,9 +3086,9 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
30863086
let body = ByteBuffer(bytes: 0..<10)
30873087

30883088
var request = try Request(url: httpBin.baseURL)
3089-
request.body = .stream(bodyStream: { writer in
3089+
request.body = .stream { writer in
30903090
writer.write(.byteBuffer(body))
3091-
})
3091+
}
30923092
let response = try self.defaultClient.execute(
30933093
request: request,
30943094
delegate: ResponseAccumulator(request: request, maxBodySize: 10)
@@ -3113,7 +3113,7 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
31133113

31143114
let delegate = ResponseStreamDelegate(eventLoop: delegateEL)
31153115

3116-
let body: HTTPClient.Body = .stream(bodyStream: { writer in
3116+
let body: HTTPClient.Body = .stream { writer in
31173117
let finalPromise = writeEL.makePromise(of: Void.self)
31183118

31193119
@Sendable func writeLoop(_ writer: HTTPClient.Body.StreamWriter, index: Int) {
@@ -3143,7 +3143,7 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
31433143
}
31443144

31453145
return finalPromise.futureResult
3146-
})
3146+
}
31473147

31483148
let request = try! HTTPClient.Request(url: "http://localhost:\(httpBin.port)", body: body)
31493149
let future = httpClient.execute(request: request, delegate: delegate, eventLoop: .delegate(on: delegateEL))
@@ -3164,7 +3164,7 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
31643164
let httpClient = HTTPClient(eventLoopGroupProvider: .shared(eventLoopGroup))
31653165
defer { XCTAssertNoThrow(try httpClient.syncShutdown()) }
31663166

3167-
let body: HTTPClient.Body = .stream(bodyStream: { writer in
3167+
let body: HTTPClient.Body = .stream { writer in
31683168
let finalPromise = writeEL.makePromise(of: Void.self)
31693169

31703170
@Sendable func writeLoop(_ writer: HTTPClient.Body.StreamWriter, index: Int) {
@@ -3194,7 +3194,7 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
31943194
}
31953195

31963196
return finalPromise.futureResult
3197-
})
3197+
}
31983198

31993199
let request = try! HTTPClient.Request(url: "http://localhost:\(httpBin.port)", body: body)
32003200
let future = httpClient.execute(request: request)
@@ -3220,7 +3220,7 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
32203220
let httpClient = HTTPClient(eventLoopGroupProvider: .shared(eventLoopGroup))
32213221
defer { XCTAssertNoThrow(try httpClient.syncShutdown()) }
32223222

3223-
let body: HTTPClient.Body = .stream(bodyStream: { writer in
3223+
let body: HTTPClient.Body = .stream { writer in
32243224
let finalPromise = writeEL.makePromise(of: Void.self)
32253225

32263226
@Sendable func writeLoop(_ writer: HTTPClient.Body.StreamWriter, index: Int) {
@@ -3250,7 +3250,7 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
32503250
}
32513251

32523252
return finalPromise.futureResult
3253-
})
3253+
}
32543254

32553255
let headers = HTTPHeaders([("Connection", "close")])
32563256
let request = try! HTTPClient.Request(url: "http://localhost:\(httpBin.port)", headers: headers, body: body)

Tests/AsyncHTTPClientTests/RequestBagTests.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -872,11 +872,11 @@ final class RequestBagTests: XCTestCase {
872872

873873
let writerPromise = group.any().makePromise(of: HTTPClient.Body.StreamWriter.self)
874874
let donePromise = group.any().makePromise(of: Void.self)
875-
request.body = .stream(bodyStream: { [leakDetector] writer in
875+
request.body = .stream { [leakDetector] writer in
876876
_ = leakDetector
877877
writerPromise.succeed(writer)
878878
return donePromise.futureResult
879-
})
879+
}
880880

881881
let resultFuture = httpClient.execute(request: request)
882882
request.body = nil

0 commit comments

Comments
 (0)