Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: finish interceptors migration #1631

Merged
merged 1 commit into from
Jul 22, 2024
Merged

Conversation

milesziemer
Copy link
Contributor

@milesziemer milesziemer commented Jul 13, 2024

Description of changes

smithy-swift pr: smithy-lang/smithy-swift#782

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.

private let AMZ_SDK_INVOCATION_ID_HEADER = "amz-sdk-invocation-id"

/// Adds the amz-sdk-invocation-id header to requests.
public struct AmzSdkInvocationIdMiddleware<InputType, OperationStackOutput> {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is it weird that we're naming this middleware even though its acting as an interceptor? or is it actually a middleware we just don't need the middleware protocol anymore?

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.
@milesziemer milesziemer merged commit 46e00d6 into main Jul 22, 2024
29 checks passed
@milesziemer milesziemer deleted the finish-interceptor-migration branch July 22, 2024 19:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants