Skip to content

Commit 5b797bb

Browse files
Ganesh Jangirepau
andauthored
chore: bump aws-crt-swift to 0.5.6 (#518)
Co-authored-by: Ed Paulosky <[email protected]>
1 parent b040af1 commit 5b797bb

File tree

6 files changed

+47
-40
lines changed

6 files changed

+47
-40
lines changed

Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ let package = Package(
1313
.library(name: "SmithyTestUtil", targets: ["SmithyTestUtil"])
1414
],
1515
dependencies: [
16-
.package(url: "https://github.com/awslabs/aws-crt-swift.git", .exact("0.5.4")),
16+
.package(url: "https://github.com/awslabs/aws-crt-swift.git", .exact("0.5.6")),
1717
.package(url: "https://github.com/apple/swift-log.git", from: "1.0.0"),
1818
.package(url: "https://github.com/MaxDesiatov/XMLCoder.git", from: "0.13.0")
1919
],

Sources/ClientRuntime/Networking/ClientError.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import AwsCommonRuntimeKit
77

88
public enum ClientError: Error, Equatable {
99
case networkError(Error)
10-
case crtError(CRTError)
10+
case crtError(CommonRunTimeError)
1111
case pathCreationFailed(String)
1212
case queryItemCreationFailed(String)
1313
case serializationFailed(String)

Sources/ClientRuntime/Networking/Http/CRT/CRTClientEngine.swift

Lines changed: 26 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -103,39 +103,35 @@ public class CRTClientEngine: HttpClientEngine {
103103
let crtRequest = try request.toHttpRequest()
104104
let streamReader: StreamReader = DataStreamReader()
105105

106-
let makeStatusCode: (HTTPStream) -> HttpStatusCode = { stream in
107-
guard
108-
let statusCodeInt = try? stream.statusCode(),
109-
let statusCode = HttpStatusCode(rawValue: statusCodeInt)
110-
else { return .notFound }
111-
return statusCode
112-
}
113-
114-
let requestOptions = HTTPRequestOptions(request: crtRequest) { [self] (stream, _, httpHeaders) in
115-
logger.debug("headers were received")
116-
response.statusCode = makeStatusCode(stream)
117-
response.headers.addAll(httpHeaders: httpHeaders)
118-
} onIncomingHeadersBlockDone: { [self] (stream, _) in
119-
logger.debug("header block is done")
120-
response.statusCode = makeStatusCode(stream)
121-
} onIncomingBody: { [self] (stream, data) in
122-
logger.debug("incoming data")
123-
response.statusCode = makeStatusCode(stream)
124-
let byteBuffer = ByteBuffer(data: data)
106+
let makeStatusCode: (UInt32) -> HttpStatusCode = { statusCode in
107+
HttpStatusCode(rawValue: Int(statusCode)) ?? .notFound
108+
}
109+
110+
let requestOptions = HTTPRequestOptions(request: crtRequest) { statusCode, headers in
111+
response.statusCode = makeStatusCode(statusCode)
112+
response.headers.addAll(headers: Headers(httpHeaders: headers))
113+
} onResponse: { statusCode, headers in
114+
response.statusCode = makeStatusCode(statusCode)
115+
response.headers.addAll(headers: Headers(httpHeaders: headers))
116+
} onIncomingBody: { bodyChunk in
117+
let byteBuffer = ByteBuffer(data: bodyChunk)
125118
streamReader.write(buffer: byteBuffer)
126-
} onStreamComplete: { [self] (stream, error) in
127-
logger.debug("stream completed")
128-
if let error = error, error.code != 0 {
129-
logger.error("Response encountered an error: \(error)")
130-
continuation.resume(throwing: CommonRunTimeError.crtError(error))
131-
return
119+
} onTrailer: { headers in
120+
response.headers.addAll(headers: Headers(httpHeaders: headers))
121+
} onStreamComplete: { result in
122+
streamReader.hasFinishedWriting = true
123+
switch result {
124+
case .success(let statusCode):
125+
response.statusCode = makeStatusCode(statusCode)
126+
continuation.resume(returning: response)
127+
case .failure(let error):
128+
self.logger.error("Response encountered an error: \(error)")
129+
streamReader.onError(error: .crtError(error))
130+
continuation.resume(throwing: error)
132131
}
133-
134-
response.body = .stream(.reader(streamReader))
135-
response.statusCode = makeStatusCode(stream)
136-
137-
continuation.resume(returning: response)
138132
}
133+
134+
response.body = .stream(.reader(streamReader))
139135
return requestOptions
140136
}
141137
}

Sources/ClientRuntime/Networking/Http/SdkHttpRequest.swift

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,18 +70,29 @@ extension SdkHttpRequest: CustomDebugStringConvertible, CustomStringConvertible
7070
}
7171

7272
extension SdkHttpRequestBuilder {
73-
public func update(from crtRequest: HTTPRequest, originalRequest: SdkHttpRequest) -> SdkHttpRequestBuilder {
73+
74+
/// Update the builder with the values from the CRT request
75+
/// - Parameters:
76+
/// - crtRequest: the CRT request, this can be either a `HTTPRequest` or a `HTTP2Request`
77+
/// - originalRequest: the SDK request that is used to hold the original values
78+
/// - Returns: the builder
79+
public func update(from crtRequest: HTTPRequestBase, originalRequest: SdkHttpRequest) -> SdkHttpRequestBuilder {
7480
headers = convertSignedHeadersToHeaders(crtRequest: crtRequest)
7581
methodType = originalRequest.method
7682
host = originalRequest.endpoint.host
77-
let pathAndQueryItems = URLComponents(string: crtRequest.path)
78-
path = pathAndQueryItems?.path ?? "/"
79-
queryItems = pathAndQueryItems?.percentEncodedQueryItems ?? [URLQueryItem]()
80-
83+
if let crtRequest = crtRequest as? HTTPRequest {
84+
let pathAndQueryItems = URLComponents(string: crtRequest.path)
85+
path = pathAndQueryItems?.path ?? "/"
86+
queryItems = pathAndQueryItems?.percentEncodedQueryItems ?? [URLQueryItem]()
87+
} else if crtRequest as? HTTP2Request != nil {
88+
assertionFailure("HTTP2Request not supported")
89+
} else {
90+
assertionFailure("Unknown request type")
91+
}
8192
return self
8293
}
8394

84-
func convertSignedHeadersToHeaders(crtRequest: HTTPRequest) -> Headers {
95+
func convertSignedHeadersToHeaders(crtRequest: HTTPRequestBase) -> Headers {
8596
return Headers(httpHeaders: crtRequest.getHeaders())
8697
}
8798
}

Sources/SmithyTestUtil/ResponseTestUtil/HttpResponseTestBase.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ open class HttpResponseTestBase: XCTestCase {
2727

2828
return HttpResponse(headers: internalHeaders,
2929
body: content,
30-
statusCode: HttpStatusCode(rawValue: code) ?? HttpStatusCode.badRequest)
30+
statusCode: HttpStatusCode(rawValue: Int(code)) ?? HttpStatusCode.badRequest)
3131

3232
}
3333
}

Tests/ClientRuntimeTests/ClientRuntimeTests/NetworkingTests/ClientErrorTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ class ClientErrorTests: XCTestCase {
101101
}
102102

103103
func test_waiterErrorType_returnsNilForCRTError() async throws {
104-
let crtError = CRTError(code: 2)
104+
let crtError = CommonRunTimeError.crtError(.init(code: 2))
105105
let subject = ClientError.crtError(crtError)
106106
XCTAssertNil(subject.waiterErrorType)
107107
}

0 commit comments

Comments
 (0)