feat: add initial-response support #1125
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Add support for parsing initial-response and making it available to users prior to parsing the Event Stream.
See related: https://smithy.io/2.0/spec/streaming.html#initial-messages
Issue #
#976
Description of changes
AWSMessageDecoder
will detect if the header is of:event-type
=initial-response
and if so set private variableself.initialResponse = message.payload
to be parsed based on service-specific expected initial-response fields (codegen).awaitInitialResponse
convertsretrieveInitialResponse
function into an async function. By using this callback method we're able to wait for self.initialMessage to be populated and then return it asynchronously. This method only waits until the first message is processed as if an initial-response is present it must be the very first message.retrieveInitialResponse
immediately calls the completion handler with the message if initialMessage is already processed, otherwise it saves the completion handler to be called later when the message is readyawaitInitialResponse
Ex.
initial-response
UsageNote: Will revert
.package(url: smithySwiftURL, .branch("day/initial-messages"))
prior to merge. I only added this to ensure CI passes.New/existing dependencies impact assessment, if applicable
Conventional Commits
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.