feat: finish interceptors migration #1630
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.
Description of changes
smithy-swift pr: smithy-lang/smithy-swift#781
This commit includes the codegen changes that move all services to use orchestrator + interceptors, instead of the operation stack using middleware. It also removes all references to the old types related to Middleware, in Swift libraries and in the code generator.
Since this is already a huge PR, I tried to limit any refactoring, which may have made it harder to review. For example, I didn't change the names of middleware or their file names.
This commit also adds two new interceptors, AmzSdkRequestMiddleware and AmzSdkInvocationIdMiddleware, which add corresponding headers to requests. They are added in codegen through a SwiftIntegration. Previously, these interceptors were implemented as a part of RetryMiddleware in smithy-swift. But unlike all other middleware, RetryMiddleware does not have an interceptor implementation - its logic is inlined within Orchestrator - so the logic for adding these amz-sdk headers had to be extracted. Plus, they seem to be aws headers, so I moved them here into the SDK. I also copied the RetryIntegrationTests test, which was testing the headers' functionality.
Other than that, there were some codegen changes I made which impacted the ordering that interceptors are rendered into operation bodies, which meant I needed to fix some codegen tests. The order interceptors are added to orchestrator shouldn't matter.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.