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 #1630

Closed

Conversation

milesziemer
Copy link
Contributor

@milesziemer milesziemer commented Jul 13, 2024

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.

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
Copy link
Contributor Author

Closing for #1631 so CI will run

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.

1 participant