From 8ccd2da8fe1825d7c83e2125658aab380c53234c Mon Sep 17 00:00:00 2001 From: ysaito1001 Date: Tue, 20 Aug 2024 16:54:41 -0500 Subject: [PATCH] Re-export `ByteStream`'s `Length` and `FsBuilder` in client crates (#3796) ## Motivation and Context https://github.com/awslabs/aws-sdk-rust/issues/820 ## Description This PR re-exports `ByteStream`'s `Length` and `FsBuilder`. By making these types available in a client crate, customers can use `ByteStream::read_from` without needing to import them separately from the `aws-smithy-types` crate. ## Testing - Updated an existing re-export test to include `Length` and `FsBuilder` as well. - Existing tests in CI ## Checklist - [x] For changes to the smithy-rs codegen or runtime crates, I have created a changelog entry Markdown file in the `.changelog` directory, specifying "client," "server," or both in the `applies_to` key. - [x] For changes to the AWS SDK, generated SDK code, or SDK runtime crates, I have created a changelog entry Markdown file in the `.changelog` directory, specifying "aws-sdk-rust" in the `applies_to` key. ---- _By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice._ --- .changelog/1724096455.md | 13 +++++++++++++ .../smithy/customizations/SmithyTypesPubUseExtra.kt | 6 ++++++ .../customizations/SmithyTypesPubUseExtraTest.kt | 7 ++++++- 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 .changelog/1724096455.md diff --git a/.changelog/1724096455.md b/.changelog/1724096455.md new file mode 100644 index 000000000..5bdead308 --- /dev/null +++ b/.changelog/1724096455.md @@ -0,0 +1,13 @@ +--- +applies_to: +- client +- aws-sdk-rust +authors: +- ysaito1001 +references: +- aws-sdk-rust#820 +breaking: false +new_feature: false +bug_fix: true +--- +Re-export `ByteStream`'s `Length` and `FsBuilder`. By making these types available directly within a client crate, customers can use `ByteStream::read_from` without needing to import them separately from the `aws-smithy-types` crate. diff --git a/codegen-core/src/main/kotlin/software/amazon/smithy/rust/codegen/core/smithy/customizations/SmithyTypesPubUseExtra.kt b/codegen-core/src/main/kotlin/software/amazon/smithy/rust/codegen/core/smithy/customizations/SmithyTypesPubUseExtra.kt index dac62172a..aa1e1d40a 100644 --- a/codegen-core/src/main/kotlin/software/amazon/smithy/rust/codegen/core/smithy/customizations/SmithyTypesPubUseExtra.kt +++ b/codegen-core/src/main/kotlin/software/amazon/smithy/rust/codegen/core/smithy/customizations/SmithyTypesPubUseExtra.kt @@ -82,11 +82,17 @@ fun pubUseSmithyPrimitives( pub use #{ByteStream}; pub use #{AggregatedBytes}; pub use #{Error} as ByteStreamError; + ##[cfg(feature = "rt-tokio")] + pub use #{FsBuilder}; + ##[cfg(feature = "rt-tokio")] + pub use #{Length}; pub use #{SdkBody}; """, "ByteStream" to RuntimeType.smithyTypes(rc).resolve("byte_stream::ByteStream"), "AggregatedBytes" to RuntimeType.smithyTypes(rc).resolve("byte_stream::AggregatedBytes"), "Error" to RuntimeType.smithyTypes(rc).resolve("byte_stream::error::Error"), + "FsBuilder" to RuntimeType.smithyTypes(rc).resolve("byte_stream::FsBuilder"), + "Length" to RuntimeType.smithyTypes(rc).resolve("byte_stream::Length"), "SdkBody" to RuntimeType.smithyTypes(rc).resolve("body::SdkBody"), ) } diff --git a/codegen-core/src/test/kotlin/software/amazon/smithy/rust/codegen/core/smithy/customizations/SmithyTypesPubUseExtraTest.kt b/codegen-core/src/test/kotlin/software/amazon/smithy/rust/codegen/core/smithy/customizations/SmithyTypesPubUseExtraTest.kt index e320b9745..a3ae1ae50 100644 --- a/codegen-core/src/test/kotlin/software/amazon/smithy/rust/codegen/core/smithy/customizations/SmithyTypesPubUseExtraTest.kt +++ b/codegen-core/src/test/kotlin/software/amazon/smithy/rust/codegen/core/smithy/customizations/SmithyTypesPubUseExtraTest.kt @@ -147,7 +147,12 @@ class SmithyTypesPubUseExtraTest { @Test fun `it re-exports ByteStream and AggregatedBytes when a model has streaming`() { val streamingTypes = - listOf("::aws_smithy_types::byte_stream::ByteStream", "::aws_smithy_types::byte_stream::AggregatedBytes") + listOf( + "::aws_smithy_types::byte_stream::ByteStream", + "::aws_smithy_types::byte_stream::AggregatedBytes", + "::aws_smithy_types::byte_stream::FsBuilder", + "::aws_smithy_types::byte_stream::Length", + ) val streamingShape = "@streaming blob Streaming" this.assertDoesntHaveReexports(reexportsWithEmptyModel(), streamingTypes) -- GitLab