AWS SDK

AWS SDK

rev. 96f5a1b4ad139d2f1ad1e8e40f300e1cd1ff574c (ignoring whitespace)

Files changed:

tmp-codegen-diff/aws-sdk/sdk/s3/src/operation/list_multipart_uploads.rs

@@ -1,1 +40,44 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2      2   
/// Orchestration and serialization glue logic for `ListMultipartUploads`.
    3      3   
#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
    4      4   
#[non_exhaustive]
    5      5   
pub struct ListMultipartUploads;
    6      6   
impl ListMultipartUploads {
    7      7   
    /// Creates a new `ListMultipartUploads`
    8      8   
    pub fn new() -> Self {
    9      9   
        Self
   10     10   
    }
          11  +
    /// The schema for this operation's input shape.
          12  +
    pub const INPUT_SCHEMA: &'static ::aws_smithy_schema::Schema = crate::operation::list_multipart_uploads::ListMultipartUploadsInput::SCHEMA;
          13  +
    /// The schema for this operation's output shape.
          14  +
    pub const OUTPUT_SCHEMA: &'static ::aws_smithy_schema::Schema = crate::operation::list_multipart_uploads::ListMultipartUploadsOutput::SCHEMA;
   11     15   
    pub(crate) async fn orchestrate(
   12     16   
        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
   13     17   
        input: crate::operation::list_multipart_uploads::ListMultipartUploadsInput,
   14     18   
    ) -> ::std::result::Result<
   15     19   
        crate::operation::list_multipart_uploads::ListMultipartUploadsOutput,
   16     20   
        ::aws_smithy_runtime_api::client::result::SdkError<
   17     21   
            crate::operation::list_multipart_uploads::ListMultipartUploadsError,
   18     22   
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
   19     23   
        >,
   20     24   
    > {
@@ -116,120 +178,183 @@
  136    140   
                                            ::std::borrow::Cow::Owned(transient_errors)
  137    141   
                                            }).build());
  138    142   
  139    143   
        ::std::borrow::Cow::Owned(rcb)
  140    144   
    }
  141    145   
}
  142    146   
  143    147   
#[derive(Debug)]
  144    148   
struct ListMultipartUploadsResponseDeserializer;
  145    149   
impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for ListMultipartUploadsResponseDeserializer {
  146         -
    fn deserialize_nonstreaming(
         150  +
    fn deserialize_nonstreaming_with_config(
  147    151   
        &self,
  148    152   
        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
         153  +
        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
  149    154   
    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
  150    155   
        let (success, status) = (response.status().is_success(), response.status().as_u16());
  151    156   
        let headers = response.headers();
  152    157   
        let body = response.body().bytes().expect("body loaded");
  153    158   
        #[allow(unused_mut)]
  154    159   
        let mut force_error = false;
  155    160   
        ::tracing::debug!(extended_request_id = ?crate::s3_request_id::RequestIdExt::extended_request_id(response));
  156    161   
        if matches!(crate::rest_xml_unwrapped_errors::body_is_error(body), Ok(true)) {
  157    162   
            force_error = true;
  158    163   
        }

tmp-codegen-diff/aws-sdk/sdk/s3/src/operation/list_multipart_uploads/_list_multipart_uploads_input.rs

@@ -99,99 +352,413 @@
  119    119   
    "com.amazonaws.s3.synthetic",
  120    120   
    "ListMultipartUploadsInput",
  121    121   
);
  122    122   
static LISTMULTIPARTUPLOADSINPUT_MEMBER_BUCKET: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  123    123   
    ::aws_smithy_schema::ShapeId::from_static(
  124    124   
        "com.amazonaws.s3.synthetic#ListMultipartUploadsInput$Bucket",
  125    125   
        "com.amazonaws.s3.synthetic",
  126    126   
        "ListMultipartUploadsInput",
  127    127   
    ),
  128    128   
    ::aws_smithy_schema::ShapeType::String,
  129         -
    "bucket",
         129  +
    "Bucket",
  130    130   
    0,
  131    131   
)
  132    132   
.with_http_label();
  133    133   
static LISTMULTIPARTUPLOADSINPUT_MEMBER_DELIMITER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  134    134   
    ::aws_smithy_schema::ShapeId::from_static(
  135    135   
        "com.amazonaws.s3.synthetic#ListMultipartUploadsInput$Delimiter",
  136    136   
        "com.amazonaws.s3.synthetic",
  137    137   
        "ListMultipartUploadsInput",
  138    138   
    ),
  139    139   
    ::aws_smithy_schema::ShapeType::String,
  140         -
    "delimiter",
         140  +
    "Delimiter",
  141    141   
    1,
  142    142   
)
  143    143   
.with_http_query("delimiter");
  144    144   
static LISTMULTIPARTUPLOADSINPUT_MEMBER_ENCODING_TYPE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  145    145   
    ::aws_smithy_schema::ShapeId::from_static(
  146    146   
        "com.amazonaws.s3.synthetic#ListMultipartUploadsInput$EncodingType",
  147    147   
        "com.amazonaws.s3.synthetic",
  148    148   
        "ListMultipartUploadsInput",
  149    149   
    ),
  150    150   
    ::aws_smithy_schema::ShapeType::String,
  151         -
    "encoding_type",
         151  +
    "EncodingType",
  152    152   
    2,
  153    153   
)
  154    154   
.with_http_query("encoding-type");
  155    155   
static LISTMULTIPARTUPLOADSINPUT_MEMBER_KEY_MARKER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  156    156   
    ::aws_smithy_schema::ShapeId::from_static(
  157    157   
        "com.amazonaws.s3.synthetic#ListMultipartUploadsInput$KeyMarker",
  158    158   
        "com.amazonaws.s3.synthetic",
  159    159   
        "ListMultipartUploadsInput",
  160    160   
    ),
  161    161   
    ::aws_smithy_schema::ShapeType::String,
  162         -
    "key_marker",
         162  +
    "KeyMarker",
  163    163   
    3,
  164    164   
)
  165    165   
.with_http_query("key-marker");
  166    166   
static LISTMULTIPARTUPLOADSINPUT_MEMBER_MAX_UPLOADS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  167    167   
    ::aws_smithy_schema::ShapeId::from_static(
  168    168   
        "com.amazonaws.s3.synthetic#ListMultipartUploadsInput$MaxUploads",
  169    169   
        "com.amazonaws.s3.synthetic",
  170    170   
        "ListMultipartUploadsInput",
  171    171   
    ),
  172    172   
    ::aws_smithy_schema::ShapeType::Integer,
  173         -
    "max_uploads",
         173  +
    "MaxUploads",
  174    174   
    4,
  175    175   
)
  176    176   
.with_http_query("max-uploads");
  177    177   
static LISTMULTIPARTUPLOADSINPUT_MEMBER_PREFIX: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  178    178   
    ::aws_smithy_schema::ShapeId::from_static(
  179    179   
        "com.amazonaws.s3.synthetic#ListMultipartUploadsInput$Prefix",
  180    180   
        "com.amazonaws.s3.synthetic",
  181    181   
        "ListMultipartUploadsInput",
  182    182   
    ),
  183    183   
    ::aws_smithy_schema::ShapeType::String,
  184         -
    "prefix",
         184  +
    "Prefix",
  185    185   
    5,
  186    186   
)
  187    187   
.with_http_query("prefix");
  188    188   
static LISTMULTIPARTUPLOADSINPUT_MEMBER_UPLOAD_ID_MARKER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  189    189   
    ::aws_smithy_schema::ShapeId::from_static(
  190    190   
        "com.amazonaws.s3.synthetic#ListMultipartUploadsInput$UploadIdMarker",
  191    191   
        "com.amazonaws.s3.synthetic",
  192    192   
        "ListMultipartUploadsInput",
  193    193   
    ),
  194    194   
    ::aws_smithy_schema::ShapeType::String,
  195         -
    "upload_id_marker",
         195  +
    "UploadIdMarker",
  196    196   
    6,
  197    197   
)
  198    198   
.with_http_query("upload-id-marker");
  199    199   
static LISTMULTIPARTUPLOADSINPUT_MEMBER_EXPECTED_BUCKET_OWNER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  200    200   
    ::aws_smithy_schema::ShapeId::from_static(
  201    201   
        "com.amazonaws.s3.synthetic#ListMultipartUploadsInput$ExpectedBucketOwner",
  202    202   
        "com.amazonaws.s3.synthetic",
  203    203   
        "ListMultipartUploadsInput",
  204    204   
    ),
  205    205   
    ::aws_smithy_schema::ShapeType::String,
  206         -
    "expected_bucket_owner",
         206  +
    "ExpectedBucketOwner",
  207    207   
    7,
  208    208   
)
  209    209   
.with_http_header("x-amz-expected-bucket-owner");
  210    210   
static LISTMULTIPARTUPLOADSINPUT_MEMBER_REQUEST_PAYER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  211    211   
    ::aws_smithy_schema::ShapeId::from_static(
  212    212   
        "com.amazonaws.s3.synthetic#ListMultipartUploadsInput$RequestPayer",
  213    213   
        "com.amazonaws.s3.synthetic",
  214    214   
        "ListMultipartUploadsInput",
  215    215   
    ),
  216    216   
    ::aws_smithy_schema::ShapeType::String,
  217         -
    "request_payer",
         217  +
    "RequestPayer",
  218    218   
    8,
  219    219   
)
  220    220   
.with_http_header("x-amz-request-payer");
  221    221   
static LISTMULTIPARTUPLOADSINPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  222    222   
    LISTMULTIPARTUPLOADSINPUT_SCHEMA_ID,
  223    223   
    ::aws_smithy_schema::ShapeType::Structure,
  224    224   
    &[
  225    225   
        &LISTMULTIPARTUPLOADSINPUT_MEMBER_BUCKET,
  226    226   
        &LISTMULTIPARTUPLOADSINPUT_MEMBER_DELIMITER,
  227    227   
        &LISTMULTIPARTUPLOADSINPUT_MEMBER_ENCODING_TYPE,
  228    228   
        &LISTMULTIPARTUPLOADSINPUT_MEMBER_KEY_MARKER,
  229    229   
        &LISTMULTIPARTUPLOADSINPUT_MEMBER_MAX_UPLOADS,
  230    230   
        &LISTMULTIPARTUPLOADSINPUT_MEMBER_PREFIX,
  231    231   
        &LISTMULTIPARTUPLOADSINPUT_MEMBER_UPLOAD_ID_MARKER,
  232    232   
        &LISTMULTIPARTUPLOADSINPUT_MEMBER_EXPECTED_BUCKET_OWNER,
  233    233   
        &LISTMULTIPARTUPLOADSINPUT_MEMBER_REQUEST_PAYER,
  234    234   
    ],
  235         -
);
         235  +
)
         236  +
.with_http(aws_smithy_schema::traits::HttpTrait::new("GET", "/?uploads", None));
  236    237   
impl ListMultipartUploadsInput {
  237    238   
    /// The schema for this shape.
  238    239   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &LISTMULTIPARTUPLOADSINPUT_SCHEMA;
  239    240   
}
  240    241   
impl ::aws_smithy_schema::serde::SerializableStruct for ListMultipartUploadsInput {
  241    242   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
  242    243   
    fn serialize_members(
  243    244   
        &self,
  244    245   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
  245    246   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
  246    247   
        if let Some(ref val) = self.bucket {
  247    248   
            ser.write_string(&LISTMULTIPARTUPLOADSINPUT_MEMBER_BUCKET, val)?;
  248    249   
        }
  249    250   
        if let Some(ref val) = self.delimiter {
  250    251   
            ser.write_string(&LISTMULTIPARTUPLOADSINPUT_MEMBER_DELIMITER, val)?;
  251    252   
        }
  252    253   
        if let Some(ref val) = self.encoding_type {
  253    254   
            ser.write_string(&LISTMULTIPARTUPLOADSINPUT_MEMBER_ENCODING_TYPE, val.as_str())?;
  254    255   
        }
  255    256   
        if let Some(ref val) = self.key_marker {
  256    257   
            ser.write_string(&LISTMULTIPARTUPLOADSINPUT_MEMBER_KEY_MARKER, val)?;
  257    258   
        }
  258    259   
        if let Some(ref val) = self.max_uploads {
  259    260   
            ser.write_integer(&LISTMULTIPARTUPLOADSINPUT_MEMBER_MAX_UPLOADS, *val)?;
  260    261   
        }
  261    262   
        if let Some(ref val) = self.prefix {
  262    263   
            ser.write_string(&LISTMULTIPARTUPLOADSINPUT_MEMBER_PREFIX, val)?;
  263    264   
        }
  264    265   
        if let Some(ref val) = self.upload_id_marker {
  265    266   
            ser.write_string(&LISTMULTIPARTUPLOADSINPUT_MEMBER_UPLOAD_ID_MARKER, val)?;
  266    267   
        }
  267    268   
        if let Some(ref val) = self.expected_bucket_owner {
  268    269   
            ser.write_string(&LISTMULTIPARTUPLOADSINPUT_MEMBER_EXPECTED_BUCKET_OWNER, val)?;
  269    270   
        }
  270    271   
        if let Some(ref val) = self.request_payer {
  271    272   
            ser.write_string(&LISTMULTIPARTUPLOADSINPUT_MEMBER_REQUEST_PAYER, val.as_str())?;
  272    273   
        }
  273    274   
        Ok(())
  274    275   
    }
  275    276   
}
  276    277   
impl ListMultipartUploadsInput {
  277    278   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  278         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  279         -
        deserializer: &mut D,
         279  +
    pub fn deserialize(
         280  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  280    281   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  281    282   
        #[allow(unused_variables, unused_mut)]
  282    283   
        let mut builder = Self::builder();
  283    284   
        #[allow(
  284    285   
            unused_variables,
  285    286   
            unreachable_code,
  286    287   
            clippy::single_match,
  287    288   
            clippy::match_single_binding,
  288    289   
            clippy::diverging_sub_expression
  289    290   
        )]
  290         -
        deserializer.read_struct(&LISTMULTIPARTUPLOADSINPUT_SCHEMA, (), |_, member, deser| {
         291  +
        deserializer.read_struct(&LISTMULTIPARTUPLOADSINPUT_SCHEMA, &mut |member, deser| {
  291    292   
            match member.member_index() {
  292    293   
                Some(0) => {
  293    294   
                    builder.bucket = Some(deser.read_string(member)?);
  294    295   
                }
  295    296   
                Some(1) => {
  296    297   
                    builder.delimiter = Some(deser.read_string(member)?);
  297    298   
                }
  298    299   
                Some(2) => {
  299    300   
                    builder.encoding_type = Some(crate::types::EncodingType::from(deser.read_string(member)?.as_str()));
  300    301   
                }
  301    302   
                Some(3) => {
  302    303   
                    builder.key_marker = Some(deser.read_string(member)?);
  303    304   
                }
  304    305   
                Some(4) => {
  305    306   
                    builder.max_uploads = Some(deser.read_integer(member)?);
  306    307   
                }
  307    308   
                Some(5) => {
  308    309   
                    builder.prefix = Some(deser.read_string(member)?);
  309    310   
                }
  310    311   
                Some(6) => {
  311    312   
                    builder.upload_id_marker = Some(deser.read_string(member)?);
  312    313   
                }
  313    314   
                Some(7) => {
  314    315   
                    builder.expected_bucket_owner = Some(deser.read_string(member)?);
  315    316   
                }
  316    317   
                Some(8) => {
  317    318   
                    builder.request_payer = Some(crate::types::RequestPayer::from(deser.read_string(member)?.as_str()));
  318    319   
                }
  319    320   
                _ => {}
  320    321   
            }
  321    322   
            Ok(())
  322    323   
        })?;
         324  +
        builder.bucket = builder.bucket.or(Some(String::new()));
         325  +
        builder
         326  +
            .build()
         327  +
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
         328  +
    }
         329  +
}
         330  +
impl ListMultipartUploadsInput {
         331  +
    /// Deserializes this structure from a body deserializer and HTTP response headers.
         332  +
    /// Header-bound members are read directly from headers, avoiding runtime
         333  +
    /// member iteration overhead. Body members are read via the deserializer.
         334  +
    pub fn deserialize_with_response(
         335  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         336  +
        headers: &::aws_smithy_runtime_api::http::Headers,
         337  +
        _status: u16,
         338  +
        _body: &[u8],
         339  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         340  +
        #[allow(unused_variables, unused_mut)]
         341  +
        let mut builder = Self::builder();
         342  +
        if let Some(val) = headers.get("x-amz-expected-bucket-owner") {
         343  +
            builder.expected_bucket_owner = Some(val.to_string());
         344  +
        }
         345  +
        if let Some(val) = headers.get("x-amz-request-payer") {
         346  +
            builder.request_payer = Some(crate::types::RequestPayer::from(val));
         347  +
        }
         348  +
        #[allow(
         349  +
            unused_variables,
         350  +
            unreachable_code,
         351  +
            clippy::single_match,
         352  +
            clippy::match_single_binding,
         353  +
            clippy::diverging_sub_expression
         354  +
        )]
         355  +
        deserializer.read_struct(&LISTMULTIPARTUPLOADSINPUT_SCHEMA, &mut |member, deser| {
         356  +
            match member.member_index() {
         357  +
                Some(0) => {
         358  +
                    builder.bucket = Some(deser.read_string(member)?);
         359  +
                }
         360  +
                Some(1) => {
         361  +
                    builder.delimiter = Some(deser.read_string(member)?);
         362  +
                }
         363  +
                Some(2) => {
         364  +
                    builder.encoding_type = Some(crate::types::EncodingType::from(deser.read_string(member)?.as_str()));
         365  +
                }
         366  +
                Some(3) => {
         367  +
                    builder.key_marker = Some(deser.read_string(member)?);
         368  +
                }
         369  +
                Some(4) => {
         370  +
                    builder.max_uploads = Some(deser.read_integer(member)?);
         371  +
                }
         372  +
                Some(5) => {
         373  +
                    builder.prefix = Some(deser.read_string(member)?);
         374  +
                }
         375  +
                Some(6) => {
         376  +
                    builder.upload_id_marker = Some(deser.read_string(member)?);
         377  +
                }
         378  +
                Some(7) => { /* read from headers above */ }
         379  +
                Some(8) => { /* read from headers above */ }
         380  +
                _ => {}
         381  +
            }
         382  +
            Ok(())
         383  +
        })?;
  323    384   
        builder
  324    385   
            .build()
  325    386   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
  326    387   
    }
  327    388   
}
  328    389   
impl ListMultipartUploadsInput {
  329    390   
    /// Creates a new builder-style object to manufacture [`ListMultipartUploadsInput`](crate::operation::list_multipart_uploads::ListMultipartUploadsInput).
  330    391   
    pub fn builder() -> crate::operation::list_multipart_uploads::builders::ListMultipartUploadsInputBuilder {
  331    392   
        crate::operation::list_multipart_uploads::builders::ListMultipartUploadsInputBuilder::default()
  332    393   
    }

tmp-codegen-diff/aws-sdk/sdk/s3/src/operation/list_multipart_uploads/_list_multipart_uploads_output.rs

@@ -103,103 +306,314 @@
  123    123   
    "com.amazonaws.s3.synthetic",
  124    124   
    "ListMultipartUploadsOutput",
  125    125   
);
  126    126   
static LISTMULTIPARTUPLOADSOUTPUT_MEMBER_BUCKET: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  127    127   
    ::aws_smithy_schema::ShapeId::from_static(
  128    128   
        "com.amazonaws.s3.synthetic#ListMultipartUploadsOutput$Bucket",
  129    129   
        "com.amazonaws.s3.synthetic",
  130    130   
        "ListMultipartUploadsOutput",
  131    131   
    ),
  132    132   
    ::aws_smithy_schema::ShapeType::String,
  133         -
    "bucket",
         133  +
    "Bucket",
  134    134   
    0,
  135    135   
);
  136    136   
static LISTMULTIPARTUPLOADSOUTPUT_MEMBER_KEY_MARKER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  137    137   
    ::aws_smithy_schema::ShapeId::from_static(
  138    138   
        "com.amazonaws.s3.synthetic#ListMultipartUploadsOutput$KeyMarker",
  139    139   
        "com.amazonaws.s3.synthetic",
  140    140   
        "ListMultipartUploadsOutput",
  141    141   
    ),
  142    142   
    ::aws_smithy_schema::ShapeType::String,
  143         -
    "key_marker",
         143  +
    "KeyMarker",
  144    144   
    1,
  145    145   
);
  146    146   
static LISTMULTIPARTUPLOADSOUTPUT_MEMBER_UPLOAD_ID_MARKER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  147    147   
    ::aws_smithy_schema::ShapeId::from_static(
  148    148   
        "com.amazonaws.s3.synthetic#ListMultipartUploadsOutput$UploadIdMarker",
  149    149   
        "com.amazonaws.s3.synthetic",
  150    150   
        "ListMultipartUploadsOutput",
  151    151   
    ),
  152    152   
    ::aws_smithy_schema::ShapeType::String,
  153         -
    "upload_id_marker",
         153  +
    "UploadIdMarker",
  154    154   
    2,
  155    155   
);
  156    156   
static LISTMULTIPARTUPLOADSOUTPUT_MEMBER_NEXT_KEY_MARKER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  157    157   
    ::aws_smithy_schema::ShapeId::from_static(
  158    158   
        "com.amazonaws.s3.synthetic#ListMultipartUploadsOutput$NextKeyMarker",
  159    159   
        "com.amazonaws.s3.synthetic",
  160    160   
        "ListMultipartUploadsOutput",
  161    161   
    ),
  162    162   
    ::aws_smithy_schema::ShapeType::String,
  163         -
    "next_key_marker",
         163  +
    "NextKeyMarker",
  164    164   
    3,
  165    165   
);
  166    166   
static LISTMULTIPARTUPLOADSOUTPUT_MEMBER_PREFIX: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  167    167   
    ::aws_smithy_schema::ShapeId::from_static(
  168    168   
        "com.amazonaws.s3.synthetic#ListMultipartUploadsOutput$Prefix",
  169    169   
        "com.amazonaws.s3.synthetic",
  170    170   
        "ListMultipartUploadsOutput",
  171    171   
    ),
  172    172   
    ::aws_smithy_schema::ShapeType::String,
  173         -
    "prefix",
         173  +
    "Prefix",
  174    174   
    4,
  175    175   
);
  176    176   
static LISTMULTIPARTUPLOADSOUTPUT_MEMBER_DELIMITER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  177    177   
    ::aws_smithy_schema::ShapeId::from_static(
  178    178   
        "com.amazonaws.s3.synthetic#ListMultipartUploadsOutput$Delimiter",
  179    179   
        "com.amazonaws.s3.synthetic",
  180    180   
        "ListMultipartUploadsOutput",
  181    181   
    ),
  182    182   
    ::aws_smithy_schema::ShapeType::String,
  183         -
    "delimiter",
         183  +
    "Delimiter",
  184    184   
    5,
  185    185   
);
  186    186   
static LISTMULTIPARTUPLOADSOUTPUT_MEMBER_NEXT_UPLOAD_ID_MARKER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  187    187   
    ::aws_smithy_schema::ShapeId::from_static(
  188    188   
        "com.amazonaws.s3.synthetic#ListMultipartUploadsOutput$NextUploadIdMarker",
  189    189   
        "com.amazonaws.s3.synthetic",
  190    190   
        "ListMultipartUploadsOutput",
  191    191   
    ),
  192    192   
    ::aws_smithy_schema::ShapeType::String,
  193         -
    "next_upload_id_marker",
         193  +
    "NextUploadIdMarker",
  194    194   
    6,
  195    195   
);
  196    196   
static LISTMULTIPARTUPLOADSOUTPUT_MEMBER_MAX_UPLOADS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  197    197   
    ::aws_smithy_schema::ShapeId::from_static(
  198    198   
        "com.amazonaws.s3.synthetic#ListMultipartUploadsOutput$MaxUploads",
  199    199   
        "com.amazonaws.s3.synthetic",
  200    200   
        "ListMultipartUploadsOutput",
  201    201   
    ),
  202    202   
    ::aws_smithy_schema::ShapeType::Integer,
  203         -
    "max_uploads",
         203  +
    "MaxUploads",
  204    204   
    7,
  205    205   
);
  206    206   
static LISTMULTIPARTUPLOADSOUTPUT_MEMBER_IS_TRUNCATED: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  207    207   
    ::aws_smithy_schema::ShapeId::from_static(
  208    208   
        "com.amazonaws.s3.synthetic#ListMultipartUploadsOutput$IsTruncated",
  209    209   
        "com.amazonaws.s3.synthetic",
  210    210   
        "ListMultipartUploadsOutput",
  211    211   
    ),
  212    212   
    ::aws_smithy_schema::ShapeType::Boolean,
  213         -
    "is_truncated",
         213  +
    "IsTruncated",
  214    214   
    8,
  215    215   
);
  216    216   
static LISTMULTIPARTUPLOADSOUTPUT_MEMBER_UPLOADS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  217    217   
    ::aws_smithy_schema::ShapeId::from_static(
  218    218   
        "com.amazonaws.s3.synthetic#ListMultipartUploadsOutput$Uploads",
  219    219   
        "com.amazonaws.s3.synthetic",
  220    220   
        "ListMultipartUploadsOutput",
  221    221   
    ),
  222    222   
    ::aws_smithy_schema::ShapeType::List,
  223         -
    "uploads",
         223  +
    "Uploads",
  224    224   
    9,
  225    225   
)
  226    226   
.with_xml_name("Upload")
  227    227   
.with_xml_flattened();
  228    228   
static LISTMULTIPARTUPLOADSOUTPUT_MEMBER_COMMON_PREFIXES: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  229    229   
    ::aws_smithy_schema::ShapeId::from_static(
  230    230   
        "com.amazonaws.s3.synthetic#ListMultipartUploadsOutput$CommonPrefixes",
  231    231   
        "com.amazonaws.s3.synthetic",
  232    232   
        "ListMultipartUploadsOutput",
  233    233   
    ),
  234    234   
    ::aws_smithy_schema::ShapeType::List,
  235         -
    "common_prefixes",
         235  +
    "CommonPrefixes",
  236    236   
    10,
  237    237   
)
  238    238   
.with_xml_flattened();
  239    239   
static LISTMULTIPARTUPLOADSOUTPUT_MEMBER_ENCODING_TYPE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  240    240   
    ::aws_smithy_schema::ShapeId::from_static(
  241    241   
        "com.amazonaws.s3.synthetic#ListMultipartUploadsOutput$EncodingType",
  242    242   
        "com.amazonaws.s3.synthetic",
  243    243   
        "ListMultipartUploadsOutput",
  244    244   
    ),
  245    245   
    ::aws_smithy_schema::ShapeType::String,
  246         -
    "encoding_type",
         246  +
    "EncodingType",
  247    247   
    11,
  248    248   
);
  249    249   
static LISTMULTIPARTUPLOADSOUTPUT_MEMBER_REQUEST_CHARGED: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  250    250   
    ::aws_smithy_schema::ShapeId::from_static(
  251    251   
        "com.amazonaws.s3.synthetic#ListMultipartUploadsOutput$RequestCharged",
  252    252   
        "com.amazonaws.s3.synthetic",
  253    253   
        "ListMultipartUploadsOutput",
  254    254   
    ),
  255    255   
    ::aws_smithy_schema::ShapeType::String,
  256         -
    "request_charged",
         256  +
    "RequestCharged",
  257    257   
    12,
  258    258   
)
  259    259   
.with_http_header("x-amz-request-charged");
         260  +
static LISTMULTIPARTUPLOADSOUTPUT_MEMBER__REQUEST_ID: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
         261  +
    ::aws_smithy_schema::ShapeId::from_static("synthetic#request_id", "synthetic", "request_id"),
         262  +
    ::aws_smithy_schema::ShapeType::String,
         263  +
    "request_id",
         264  +
    13,
         265  +
)
         266  +
.with_http_header("x-amzn-requestid");
  260    267   
static LISTMULTIPARTUPLOADSOUTPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  261    268   
    LISTMULTIPARTUPLOADSOUTPUT_SCHEMA_ID,
  262    269   
    ::aws_smithy_schema::ShapeType::Structure,
  263    270   
    &[
  264    271   
        &LISTMULTIPARTUPLOADSOUTPUT_MEMBER_BUCKET,
  265    272   
        &LISTMULTIPARTUPLOADSOUTPUT_MEMBER_KEY_MARKER,
  266    273   
        &LISTMULTIPARTUPLOADSOUTPUT_MEMBER_UPLOAD_ID_MARKER,
  267    274   
        &LISTMULTIPARTUPLOADSOUTPUT_MEMBER_NEXT_KEY_MARKER,
  268    275   
        &LISTMULTIPARTUPLOADSOUTPUT_MEMBER_PREFIX,
  269    276   
        &LISTMULTIPARTUPLOADSOUTPUT_MEMBER_DELIMITER,
  270    277   
        &LISTMULTIPARTUPLOADSOUTPUT_MEMBER_NEXT_UPLOAD_ID_MARKER,
  271    278   
        &LISTMULTIPARTUPLOADSOUTPUT_MEMBER_MAX_UPLOADS,
  272    279   
        &LISTMULTIPARTUPLOADSOUTPUT_MEMBER_IS_TRUNCATED,
  273    280   
        &LISTMULTIPARTUPLOADSOUTPUT_MEMBER_UPLOADS,
  274    281   
        &LISTMULTIPARTUPLOADSOUTPUT_MEMBER_COMMON_PREFIXES,
  275    282   
        &LISTMULTIPARTUPLOADSOUTPUT_MEMBER_ENCODING_TYPE,
  276    283   
        &LISTMULTIPARTUPLOADSOUTPUT_MEMBER_REQUEST_CHARGED,
         284  +
        &LISTMULTIPARTUPLOADSOUTPUT_MEMBER__REQUEST_ID,
  277    285   
    ],
  278    286   
)
  279    287   
.with_xml_name("ListMultipartUploadsResult");
  280    288   
impl ListMultipartUploadsOutput {
  281    289   
    /// The schema for this shape.
  282    290   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &LISTMULTIPARTUPLOADSOUTPUT_SCHEMA;
  283    291   
}
  284    292   
impl ::aws_smithy_schema::serde::SerializableStruct for ListMultipartUploadsOutput {
  285    293   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
  286    294   
    fn serialize_members(
@@ -320,328 +452,542 @@
  340    348   
            ser.write_string(&LISTMULTIPARTUPLOADSOUTPUT_MEMBER_ENCODING_TYPE, val.as_str())?;
  341    349   
        }
  342    350   
        if let Some(ref val) = self.request_charged {
  343    351   
            ser.write_string(&LISTMULTIPARTUPLOADSOUTPUT_MEMBER_REQUEST_CHARGED, val.as_str())?;
  344    352   
        }
  345    353   
        Ok(())
  346    354   
    }
  347    355   
}
  348    356   
impl ListMultipartUploadsOutput {
  349    357   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  350         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  351         -
        deserializer: &mut D,
         358  +
    pub fn deserialize(
         359  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  352    360   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  353    361   
        #[allow(unused_variables, unused_mut)]
  354    362   
        let mut builder = Self::builder();
  355    363   
        #[allow(
  356    364   
            unused_variables,
  357    365   
            unreachable_code,
  358    366   
            clippy::single_match,
  359    367   
            clippy::match_single_binding,
  360    368   
            clippy::diverging_sub_expression
  361    369   
        )]
  362         -
        deserializer.read_struct(&LISTMULTIPARTUPLOADSOUTPUT_SCHEMA, (), |_, member, deser| {
         370  +
        deserializer.read_struct(&LISTMULTIPARTUPLOADSOUTPUT_SCHEMA, &mut |member, deser| {
  363    371   
            match member.member_index() {
  364    372   
                Some(0) => {
  365    373   
                    builder.bucket = Some(deser.read_string(member)?);
  366    374   
                }
  367    375   
                Some(1) => {
  368    376   
                    builder.key_marker = Some(deser.read_string(member)?);
  369    377   
                }
  370    378   
                Some(2) => {
  371    379   
                    builder.upload_id_marker = Some(deser.read_string(member)?);
  372    380   
                }
  373    381   
                Some(3) => {
  374    382   
                    builder.next_key_marker = Some(deser.read_string(member)?);
  375    383   
                }
  376    384   
                Some(4) => {
  377    385   
                    builder.prefix = Some(deser.read_string(member)?);
  378    386   
                }
  379    387   
                Some(5) => {
  380    388   
                    builder.delimiter = Some(deser.read_string(member)?);
  381    389   
                }
  382    390   
                Some(6) => {
  383    391   
                    builder.next_upload_id_marker = Some(deser.read_string(member)?);
  384    392   
                }
  385    393   
                Some(7) => {
  386    394   
                    builder.max_uploads = Some(deser.read_integer(member)?);
  387    395   
                }
  388    396   
                Some(8) => {
  389    397   
                    builder.is_truncated = Some(deser.read_boolean(member)?);
  390    398   
                }
  391    399   
                Some(9) => {
  392    400   
                    builder.uploads = Some({
  393         -
                        let container = if let Some(cap) = deser.container_size() {
  394         -
                            Vec::with_capacity(cap)
  395         -
                        } else {
  396         -
                            Vec::new()
  397         -
                        };
  398         -
                        deser.read_list(member, container, |mut list, deser| {
  399         -
                            list.push(crate::types::MultipartUpload::deserialize(deser)?);
  400         -
                            Ok(list)
  401         -
                        })?
         401  +
                        let mut container = Vec::new();
         402  +
                        deser.read_list(member, &mut |deser| {
         403  +
                            container.push(crate::types::MultipartUpload::deserialize(deser)?);
         404  +
                            Ok(())
         405  +
                        })?;
         406  +
                        container
  402    407   
                    });
  403    408   
                }
  404    409   
                Some(10) => {
  405    410   
                    builder.common_prefixes = Some({
  406         -
                        let container = if let Some(cap) = deser.container_size() {
  407         -
                            Vec::with_capacity(cap)
  408         -
                        } else {
  409         -
                            Vec::new()
  410         -
                        };
  411         -
                        deser.read_list(member, container, |mut list, deser| {
  412         -
                            list.push(crate::types::CommonPrefix::deserialize(deser)?);
  413         -
                            Ok(list)
  414         -
                        })?
         411  +
                        let mut container = Vec::new();
         412  +
                        deser.read_list(member, &mut |deser| {
         413  +
                            container.push(crate::types::CommonPrefix::deserialize(deser)?);
         414  +
                            Ok(())
         415  +
                        })?;
         416  +
                        container
  415    417   
                    });
  416    418   
                }
  417    419   
                Some(11) => {
  418    420   
                    builder.encoding_type = Some(crate::types::EncodingType::from(deser.read_string(member)?.as_str()));
  419    421   
                }
  420    422   
                Some(12) => {
  421    423   
                    builder.request_charged = Some(crate::types::RequestCharged::from(deser.read_string(member)?.as_str()));
  422    424   
                }
         425  +
                Some(13) => {
         426  +
                    builder._request_id = Some(deser.read_string(member)?);
         427  +
                }
         428  +
                _ => {}
         429  +
            }
         430  +
            Ok(())
         431  +
        })?;
         432  +
        Ok(builder.build())
         433  +
    }
         434  +
}
         435  +
impl ListMultipartUploadsOutput {
         436  +
    /// Deserializes this structure from a body deserializer and HTTP response headers.
         437  +
    /// Header-bound members are read directly from headers, avoiding runtime
         438  +
    /// member iteration overhead. Body members are read via the deserializer.
         439  +
    pub fn deserialize_with_response(
         440  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         441  +
        headers: &::aws_smithy_runtime_api::http::Headers,
         442  +
        _status: u16,
         443  +
        _body: &[u8],
         444  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         445  +
        #[allow(unused_variables, unused_mut)]
         446  +
        let mut builder = Self::builder();
         447  +
        if let Some(val) = headers.get("x-amz-request-charged") {
         448  +
            builder.request_charged = Some(crate::types::RequestCharged::from(val));
         449  +
        }
         450  +
        if let Some(val) = headers.get("x-amzn-requestid") {
         451  +
            builder._request_id = Some(val.to_string());
         452  +
        }
         453  +
        #[allow(
         454  +
            unused_variables,
         455  +
            unreachable_code,
         456  +
            clippy::single_match,
         457  +
            clippy::match_single_binding,
         458  +
            clippy::diverging_sub_expression
         459  +
        )]
         460  +
        deserializer.read_struct(&LISTMULTIPARTUPLOADSOUTPUT_SCHEMA, &mut |member, deser| {
         461  +
            match member.member_index() {
         462  +
                Some(0) => {
         463  +
                    builder.bucket = Some(deser.read_string(member)?);
         464  +
                }
         465  +
                Some(1) => {
         466  +
                    builder.key_marker = Some(deser.read_string(member)?);
         467  +
                }
         468  +
                Some(2) => {
         469  +
                    builder.upload_id_marker = Some(deser.read_string(member)?);
         470  +
                }
         471  +
                Some(3) => {
         472  +
                    builder.next_key_marker = Some(deser.read_string(member)?);
         473  +
                }
         474  +
                Some(4) => {
         475  +
                    builder.prefix = Some(deser.read_string(member)?);
         476  +
                }
         477  +
                Some(5) => {
         478  +
                    builder.delimiter = Some(deser.read_string(member)?);
         479  +
                }
         480  +
                Some(6) => {
         481  +
                    builder.next_upload_id_marker = Some(deser.read_string(member)?);
         482  +
                }
         483  +
                Some(7) => {
         484  +
                    builder.max_uploads = Some(deser.read_integer(member)?);
         485  +
                }
         486  +
                Some(8) => {
         487  +
                    builder.is_truncated = Some(deser.read_boolean(member)?);
         488  +
                }
         489  +
                Some(9) => {
         490  +
                    builder.uploads = Some({
         491  +
                        let mut container = Vec::new();
         492  +
                        deser.read_list(member, &mut |deser| {
         493  +
                            container.push(crate::types::MultipartUpload::deserialize(deser)?);
         494  +
                            Ok(())
         495  +
                        })?;
         496  +
                        container
         497  +
                    });
         498  +
                }
         499  +
                Some(10) => {
         500  +
                    builder.common_prefixes = Some({
         501  +
                        let mut container = Vec::new();
         502  +
                        deser.read_list(member, &mut |deser| {
         503  +
                            container.push(crate::types::CommonPrefix::deserialize(deser)?);
         504  +
                            Ok(())
         505  +
                        })?;
         506  +
                        container
         507  +
                    });
         508  +
                }
         509  +
                Some(11) => {
         510  +
                    builder.encoding_type = Some(crate::types::EncodingType::from(deser.read_string(member)?.as_str()));
         511  +
                }
         512  +
                Some(12) => { /* read from headers above */ }
  423    513   
                _ => {}
  424    514   
            }
  425    515   
            Ok(())
  426    516   
        })?;
  427    517   
        Ok(builder.build())
  428    518   
    }
  429    519   
}
  430    520   
impl crate::s3_request_id::RequestIdExt for ListMultipartUploadsOutput {
  431    521   
    fn extended_request_id(&self) -> Option<&str> {
  432    522   
        self._extended_request_id.as_deref()

tmp-codegen-diff/aws-sdk/sdk/s3/src/operation/list_object_versions.rs

@@ -1,1 +40,44 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2      2   
/// Orchestration and serialization glue logic for `ListObjectVersions`.
    3      3   
#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
    4      4   
#[non_exhaustive]
    5      5   
pub struct ListObjectVersions;
    6      6   
impl ListObjectVersions {
    7      7   
    /// Creates a new `ListObjectVersions`
    8      8   
    pub fn new() -> Self {
    9      9   
        Self
   10     10   
    }
          11  +
    /// The schema for this operation's input shape.
          12  +
    pub const INPUT_SCHEMA: &'static ::aws_smithy_schema::Schema = crate::operation::list_object_versions::ListObjectVersionsInput::SCHEMA;
          13  +
    /// The schema for this operation's output shape.
          14  +
    pub const OUTPUT_SCHEMA: &'static ::aws_smithy_schema::Schema = crate::operation::list_object_versions::ListObjectVersionsOutput::SCHEMA;
   11     15   
    pub(crate) async fn orchestrate(
   12     16   
        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
   13     17   
        input: crate::operation::list_object_versions::ListObjectVersionsInput,
   14     18   
    ) -> ::std::result::Result<
   15     19   
        crate::operation::list_object_versions::ListObjectVersionsOutput,
   16     20   
        ::aws_smithy_runtime_api::client::result::SdkError<
   17     21   
            crate::operation::list_object_versions::ListObjectVersionsError,
   18     22   
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
   19     23   
        >,
   20     24   
    > {
@@ -113,117 +175,180 @@
  133    137   
                                            ::std::borrow::Cow::Owned(transient_errors)
  134    138   
                                            }).build());
  135    139   
  136    140   
        ::std::borrow::Cow::Owned(rcb)
  137    141   
    }
  138    142   
}
  139    143   
  140    144   
#[derive(Debug)]
  141    145   
struct ListObjectVersionsResponseDeserializer;
  142    146   
impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for ListObjectVersionsResponseDeserializer {
  143         -
    fn deserialize_nonstreaming(
         147  +
    fn deserialize_nonstreaming_with_config(
  144    148   
        &self,
  145    149   
        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
         150  +
        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
  146    151   
    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
  147    152   
        let (success, status) = (response.status().is_success(), response.status().as_u16());
  148    153   
        let headers = response.headers();
  149    154   
        let body = response.body().bytes().expect("body loaded");
  150    155   
        #[allow(unused_mut)]
  151    156   
        let mut force_error = false;
  152    157   
        ::tracing::debug!(extended_request_id = ?crate::s3_request_id::RequestIdExt::extended_request_id(response));
  153    158   
        if matches!(crate::rest_xml_unwrapped_errors::body_is_error(body), Ok(true)) {
  154    159   
            force_error = true;
  155    160   
        }
@@ -393,398 +453,462 @@
  413    418   
            .expect("the config must have a deserializer");
  414    419   
  415    420   
        let parsed = de.deserialize_streaming(&mut http_response);
  416    421   
        let parsed = parsed.unwrap_or_else(|| {
  417    422   
            let http_response = http_response.map(|body| {
  418    423   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
  419    424   
                    body.bytes().unwrap(),
  420    425   
                    ::aws_smithy_protocol_test::MediaType::from("application/xml"),
  421    426   
                )))
  422    427   
            });
  423         -
            de.deserialize_nonstreaming(&http_response)
         428  +
            // Build a config bag with the protocol for schema-based deserialization
         429  +
            #[allow(unused_mut)]
         430  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
         431  +
         432  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
  424    433   
        });
  425    434   
        let parsed = parsed
  426    435   
            .expect("should be successful response")
  427    436   
            .downcast::<crate::operation::list_object_versions::ListObjectVersionsOutput>()
  428    437   
            .unwrap();
  429    438   
        ::pretty_assertions::assert_eq!(parsed.is_truncated, expected_output.is_truncated, "Unexpected value for `is_truncated`");
  430    439   
        ::pretty_assertions::assert_eq!(parsed.key_marker, expected_output.key_marker, "Unexpected value for `key_marker`");
  431    440   
        ::pretty_assertions::assert_eq!(
  432    441   
            parsed.version_id_marker,
  433    442   
            expected_output.version_id_marker,

tmp-codegen-diff/aws-sdk/sdk/s3/src/operation/list_object_versions/_list_object_versions_input.rs

@@ -67,67 +356,418 @@
   87     87   
    "com.amazonaws.s3.synthetic",
   88     88   
    "ListObjectVersionsInput",
   89     89   
);
   90     90   
static LISTOBJECTVERSIONSINPUT_MEMBER_BUCKET: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   91     91   
    ::aws_smithy_schema::ShapeId::from_static(
   92     92   
        "com.amazonaws.s3.synthetic#ListObjectVersionsInput$Bucket",
   93     93   
        "com.amazonaws.s3.synthetic",
   94     94   
        "ListObjectVersionsInput",
   95     95   
    ),
   96     96   
    ::aws_smithy_schema::ShapeType::String,
   97         -
    "bucket",
          97  +
    "Bucket",
   98     98   
    0,
   99     99   
)
  100    100   
.with_http_label();
  101    101   
static LISTOBJECTVERSIONSINPUT_MEMBER_DELIMITER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  102    102   
    ::aws_smithy_schema::ShapeId::from_static(
  103    103   
        "com.amazonaws.s3.synthetic#ListObjectVersionsInput$Delimiter",
  104    104   
        "com.amazonaws.s3.synthetic",
  105    105   
        "ListObjectVersionsInput",
  106    106   
    ),
  107    107   
    ::aws_smithy_schema::ShapeType::String,
  108         -
    "delimiter",
         108  +
    "Delimiter",
  109    109   
    1,
  110    110   
)
  111    111   
.with_http_query("delimiter");
  112    112   
static LISTOBJECTVERSIONSINPUT_MEMBER_ENCODING_TYPE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  113    113   
    ::aws_smithy_schema::ShapeId::from_static(
  114    114   
        "com.amazonaws.s3.synthetic#ListObjectVersionsInput$EncodingType",
  115    115   
        "com.amazonaws.s3.synthetic",
  116    116   
        "ListObjectVersionsInput",
  117    117   
    ),
  118    118   
    ::aws_smithy_schema::ShapeType::String,
  119         -
    "encoding_type",
         119  +
    "EncodingType",
  120    120   
    2,
  121    121   
)
  122    122   
.with_http_query("encoding-type");
  123    123   
static LISTOBJECTVERSIONSINPUT_MEMBER_KEY_MARKER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  124    124   
    ::aws_smithy_schema::ShapeId::from_static(
  125    125   
        "com.amazonaws.s3.synthetic#ListObjectVersionsInput$KeyMarker",
  126    126   
        "com.amazonaws.s3.synthetic",
  127    127   
        "ListObjectVersionsInput",
  128    128   
    ),
  129    129   
    ::aws_smithy_schema::ShapeType::String,
  130         -
    "key_marker",
         130  +
    "KeyMarker",
  131    131   
    3,
  132    132   
)
  133    133   
.with_http_query("key-marker");
  134    134   
static LISTOBJECTVERSIONSINPUT_MEMBER_MAX_KEYS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  135    135   
    ::aws_smithy_schema::ShapeId::from_static(
  136    136   
        "com.amazonaws.s3.synthetic#ListObjectVersionsInput$MaxKeys",
  137    137   
        "com.amazonaws.s3.synthetic",
  138    138   
        "ListObjectVersionsInput",
  139    139   
    ),
  140    140   
    ::aws_smithy_schema::ShapeType::Integer,
  141         -
    "max_keys",
         141  +
    "MaxKeys",
  142    142   
    4,
  143    143   
)
  144    144   
.with_http_query("max-keys");
  145    145   
static LISTOBJECTVERSIONSINPUT_MEMBER_PREFIX: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  146    146   
    ::aws_smithy_schema::ShapeId::from_static(
  147    147   
        "com.amazonaws.s3.synthetic#ListObjectVersionsInput$Prefix",
  148    148   
        "com.amazonaws.s3.synthetic",
  149    149   
        "ListObjectVersionsInput",
  150    150   
    ),
  151    151   
    ::aws_smithy_schema::ShapeType::String,
  152         -
    "prefix",
         152  +
    "Prefix",
  153    153   
    5,
  154    154   
)
  155    155   
.with_http_query("prefix");
  156    156   
static LISTOBJECTVERSIONSINPUT_MEMBER_VERSION_ID_MARKER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  157    157   
    ::aws_smithy_schema::ShapeId::from_static(
  158    158   
        "com.amazonaws.s3.synthetic#ListObjectVersionsInput$VersionIdMarker",
  159    159   
        "com.amazonaws.s3.synthetic",
  160    160   
        "ListObjectVersionsInput",
  161    161   
    ),
  162    162   
    ::aws_smithy_schema::ShapeType::String,
  163         -
    "version_id_marker",
         163  +
    "VersionIdMarker",
  164    164   
    6,
  165    165   
)
  166    166   
.with_http_query("version-id-marker");
  167    167   
static LISTOBJECTVERSIONSINPUT_MEMBER_EXPECTED_BUCKET_OWNER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  168    168   
    ::aws_smithy_schema::ShapeId::from_static(
  169    169   
        "com.amazonaws.s3.synthetic#ListObjectVersionsInput$ExpectedBucketOwner",
  170    170   
        "com.amazonaws.s3.synthetic",
  171    171   
        "ListObjectVersionsInput",
  172    172   
    ),
  173    173   
    ::aws_smithy_schema::ShapeType::String,
  174         -
    "expected_bucket_owner",
         174  +
    "ExpectedBucketOwner",
  175    175   
    7,
  176    176   
)
  177    177   
.with_http_header("x-amz-expected-bucket-owner");
  178    178   
static LISTOBJECTVERSIONSINPUT_MEMBER_REQUEST_PAYER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  179    179   
    ::aws_smithy_schema::ShapeId::from_static(
  180    180   
        "com.amazonaws.s3.synthetic#ListObjectVersionsInput$RequestPayer",
  181    181   
        "com.amazonaws.s3.synthetic",
  182    182   
        "ListObjectVersionsInput",
  183    183   
    ),
  184    184   
    ::aws_smithy_schema::ShapeType::String,
  185         -
    "request_payer",
         185  +
    "RequestPayer",
  186    186   
    8,
  187    187   
)
  188    188   
.with_http_header("x-amz-request-payer");
  189    189   
static LISTOBJECTVERSIONSINPUT_MEMBER_OPTIONAL_OBJECT_ATTRIBUTES: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  190    190   
    ::aws_smithy_schema::ShapeId::from_static(
  191    191   
        "com.amazonaws.s3.synthetic#ListObjectVersionsInput$OptionalObjectAttributes",
  192    192   
        "com.amazonaws.s3.synthetic",
  193    193   
        "ListObjectVersionsInput",
  194    194   
    ),
  195    195   
    ::aws_smithy_schema::ShapeType::List,
  196         -
    "optional_object_attributes",
         196  +
    "OptionalObjectAttributes",
  197    197   
    9,
  198    198   
)
  199    199   
.with_http_header("x-amz-optional-object-attributes");
  200    200   
static LISTOBJECTVERSIONSINPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  201    201   
    LISTOBJECTVERSIONSINPUT_SCHEMA_ID,
  202    202   
    ::aws_smithy_schema::ShapeType::Structure,
  203    203   
    &[
  204    204   
        &LISTOBJECTVERSIONSINPUT_MEMBER_BUCKET,
  205    205   
        &LISTOBJECTVERSIONSINPUT_MEMBER_DELIMITER,
  206    206   
        &LISTOBJECTVERSIONSINPUT_MEMBER_ENCODING_TYPE,
  207    207   
        &LISTOBJECTVERSIONSINPUT_MEMBER_KEY_MARKER,
  208    208   
        &LISTOBJECTVERSIONSINPUT_MEMBER_MAX_KEYS,
  209    209   
        &LISTOBJECTVERSIONSINPUT_MEMBER_PREFIX,
  210    210   
        &LISTOBJECTVERSIONSINPUT_MEMBER_VERSION_ID_MARKER,
  211    211   
        &LISTOBJECTVERSIONSINPUT_MEMBER_EXPECTED_BUCKET_OWNER,
  212    212   
        &LISTOBJECTVERSIONSINPUT_MEMBER_REQUEST_PAYER,
  213    213   
        &LISTOBJECTVERSIONSINPUT_MEMBER_OPTIONAL_OBJECT_ATTRIBUTES,
  214    214   
    ],
  215         -
);
         215  +
)
         216  +
.with_http(aws_smithy_schema::traits::HttpTrait::new("GET", "/?versions", None));
  216    217   
impl ListObjectVersionsInput {
  217    218   
    /// The schema for this shape.
  218    219   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &LISTOBJECTVERSIONSINPUT_SCHEMA;
  219    220   
}
  220    221   
impl ::aws_smithy_schema::serde::SerializableStruct for ListObjectVersionsInput {
  221    222   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
  222    223   
    fn serialize_members(
  223    224   
        &self,
  224    225   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
  225    226   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
  226    227   
        if let Some(ref val) = self.bucket {
  227    228   
            ser.write_string(&LISTOBJECTVERSIONSINPUT_MEMBER_BUCKET, val)?;
  228    229   
        }
  229    230   
        if let Some(ref val) = self.delimiter {
  230    231   
            ser.write_string(&LISTOBJECTVERSIONSINPUT_MEMBER_DELIMITER, val)?;
  231    232   
        }
  232    233   
        if let Some(ref val) = self.encoding_type {
  233    234   
            ser.write_string(&LISTOBJECTVERSIONSINPUT_MEMBER_ENCODING_TYPE, val.as_str())?;
  234    235   
        }
  235    236   
        if let Some(ref val) = self.key_marker {
  236    237   
            ser.write_string(&LISTOBJECTVERSIONSINPUT_MEMBER_KEY_MARKER, val)?;
  237    238   
        }
  238    239   
        if let Some(ref val) = self.max_keys {
  239    240   
            ser.write_integer(&LISTOBJECTVERSIONSINPUT_MEMBER_MAX_KEYS, *val)?;
  240    241   
        }
  241    242   
        if let Some(ref val) = self.prefix {
  242    243   
            ser.write_string(&LISTOBJECTVERSIONSINPUT_MEMBER_PREFIX, val)?;
  243    244   
        }
  244    245   
        if let Some(ref val) = self.version_id_marker {
  245    246   
            ser.write_string(&LISTOBJECTVERSIONSINPUT_MEMBER_VERSION_ID_MARKER, val)?;
  246    247   
        }
  247    248   
        if let Some(ref val) = self.expected_bucket_owner {
  248    249   
            ser.write_string(&LISTOBJECTVERSIONSINPUT_MEMBER_EXPECTED_BUCKET_OWNER, val)?;
  249    250   
        }
  250    251   
        if let Some(ref val) = self.request_payer {
  251    252   
            ser.write_string(&LISTOBJECTVERSIONSINPUT_MEMBER_REQUEST_PAYER, val.as_str())?;
  252    253   
        }
  253    254   
        if let Some(ref val) = self.optional_object_attributes {
  254    255   
            ser.write_list(
  255    256   
                &LISTOBJECTVERSIONSINPUT_MEMBER_OPTIONAL_OBJECT_ATTRIBUTES,
  256    257   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  257    258   
                    for item in val {
  258    259   
                        ser.write_string(&aws_smithy_schema::prelude::STRING, item.as_str())?;
  259    260   
                    }
  260    261   
                    Ok(())
  261    262   
                },
  262    263   
            )?;
  263    264   
        }
  264    265   
        Ok(())
  265    266   
    }
  266    267   
}
  267    268   
impl ListObjectVersionsInput {
  268    269   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  269         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  270         -
        deserializer: &mut D,
         270  +
    pub fn deserialize(
         271  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  271    272   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  272    273   
        #[allow(unused_variables, unused_mut)]
  273    274   
        let mut builder = Self::builder();
  274    275   
        #[allow(
  275    276   
            unused_variables,
  276    277   
            unreachable_code,
  277    278   
            clippy::single_match,
  278    279   
            clippy::match_single_binding,
  279    280   
            clippy::diverging_sub_expression
  280    281   
        )]
  281         -
        deserializer.read_struct(&LISTOBJECTVERSIONSINPUT_SCHEMA, (), |_, member, deser| {
         282  +
        deserializer.read_struct(&LISTOBJECTVERSIONSINPUT_SCHEMA, &mut |member, deser| {
  282    283   
            match member.member_index() {
  283    284   
                Some(0) => {
  284    285   
                    builder.bucket = Some(deser.read_string(member)?);
  285    286   
                }
  286    287   
                Some(1) => {
  287    288   
                    builder.delimiter = Some(deser.read_string(member)?);
  288    289   
                }
  289    290   
                Some(2) => {
  290    291   
                    builder.encoding_type = Some(crate::types::EncodingType::from(deser.read_string(member)?.as_str()));
  291    292   
                }
  292    293   
                Some(3) => {
  293    294   
                    builder.key_marker = Some(deser.read_string(member)?);
  294    295   
                }
  295    296   
                Some(4) => {
  296    297   
                    builder.max_keys = Some(deser.read_integer(member)?);
  297    298   
                }
  298    299   
                Some(5) => {
  299    300   
                    builder.prefix = Some(deser.read_string(member)?);
  300    301   
                }
  301    302   
                Some(6) => {
  302    303   
                    builder.version_id_marker = Some(deser.read_string(member)?);
  303    304   
                }
  304    305   
                Some(7) => {
  305    306   
                    builder.expected_bucket_owner = Some(deser.read_string(member)?);
  306    307   
                }
  307    308   
                Some(8) => {
  308    309   
                    builder.request_payer = Some(crate::types::RequestPayer::from(deser.read_string(member)?.as_str()));
  309    310   
                }
  310    311   
                Some(9) => {
  311    312   
                    builder.optional_object_attributes = Some({
  312         -
                        let container = if let Some(cap) = deser.container_size() {
  313         -
                            Vec::with_capacity(cap)
  314         -
                        } else {
  315         -
                            Vec::new()
  316         -
                        };
  317         -
                        deser.read_list(member, container, |mut list, deser| {
  318         -
                            list.push(crate::types::OptionalObjectAttributes::from(deser.read_string(member)?.as_str()));
  319         -
                            Ok(list)
  320         -
                        })?
         313  +
                        let mut container = Vec::new();
         314  +
                        deser.read_list(member, &mut |deser| {
         315  +
                            container.push(crate::types::OptionalObjectAttributes::from(deser.read_string(member)?.as_str()));
         316  +
                            Ok(())
         317  +
                        })?;
         318  +
                        container
  321    319   
                    });
  322    320   
                }
  323    321   
                _ => {}
  324    322   
            }
  325    323   
            Ok(())
  326    324   
        })?;
         325  +
        builder.bucket = builder.bucket.or(Some(String::new()));
         326  +
        builder
         327  +
            .build()
         328  +
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
         329  +
    }
         330  +
}
         331  +
impl ListObjectVersionsInput {
         332  +
    /// Deserializes this structure from a body deserializer and HTTP response headers.
         333  +
    /// Header-bound members are read directly from headers, avoiding runtime
         334  +
    /// member iteration overhead. Body members are read via the deserializer.
         335  +
    pub fn deserialize_with_response(
         336  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         337  +
        headers: &::aws_smithy_runtime_api::http::Headers,
         338  +
        _status: u16,
         339  +
        _body: &[u8],
         340  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         341  +
        #[allow(unused_variables, unused_mut)]
         342  +
        let mut builder = Self::builder();
         343  +
        if let Some(val) = headers.get("x-amz-expected-bucket-owner") {
         344  +
            builder.expected_bucket_owner = Some(val.to_string());
         345  +
        }
         346  +
        if let Some(val) = headers.get("x-amz-request-payer") {
         347  +
            builder.request_payer = Some(crate::types::RequestPayer::from(val));
         348  +
        }
         349  +
        if let Some(val) = headers.get("x-amz-optional-object-attributes") {
         350  +
            builder.optional_object_attributes = Some(val.split(',').map(|s| crate::types::OptionalObjectAttributes::from(s.trim())).collect());
         351  +
        }
         352  +
        #[allow(
         353  +
            unused_variables,
         354  +
            unreachable_code,
         355  +
            clippy::single_match,
         356  +
            clippy::match_single_binding,
         357  +
            clippy::diverging_sub_expression
         358  +
        )]
         359  +
        deserializer.read_struct(&LISTOBJECTVERSIONSINPUT_SCHEMA, &mut |member, deser| {
         360  +
            match member.member_index() {
         361  +
                Some(0) => {
         362  +
                    builder.bucket = Some(deser.read_string(member)?);
         363  +
                }
         364  +
                Some(1) => {
         365  +
                    builder.delimiter = Some(deser.read_string(member)?);
         366  +
                }
         367  +
                Some(2) => {
         368  +
                    builder.encoding_type = Some(crate::types::EncodingType::from(deser.read_string(member)?.as_str()));
         369  +
                }
         370  +
                Some(3) => {
         371  +
                    builder.key_marker = Some(deser.read_string(member)?);
         372  +
                }
         373  +
                Some(4) => {
         374  +
                    builder.max_keys = Some(deser.read_integer(member)?);
         375  +
                }
         376  +
                Some(5) => {
         377  +
                    builder.prefix = Some(deser.read_string(member)?);
         378  +
                }
         379  +
                Some(6) => {
         380  +
                    builder.version_id_marker = Some(deser.read_string(member)?);
         381  +
                }
         382  +
                Some(7) => { /* read from headers above */ }
         383  +
                Some(8) => { /* read from headers above */ }
         384  +
                Some(9) => { /* read from headers above */ }
         385  +
                _ => {}
         386  +
            }
         387  +
            Ok(())
         388  +
        })?;
  327    389   
        builder
  328    390   
            .build()
  329    391   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
  330    392   
    }
  331    393   
}
  332    394   
impl ListObjectVersionsInput {
  333    395   
    /// Creates a new builder-style object to manufacture [`ListObjectVersionsInput`](crate::operation::list_object_versions::ListObjectVersionsInput).
  334    396   
    pub fn builder() -> crate::operation::list_object_versions::builders::ListObjectVersionsInputBuilder {
  335    397   
        crate::operation::list_object_versions::builders::ListObjectVersionsInputBuilder::default()
  336    398   
    }

tmp-codegen-diff/aws-sdk/sdk/s3/src/operation/list_object_versions/_list_object_versions_output.rs

@@ -91,91 +307,315 @@
  111    111   
    "com.amazonaws.s3.synthetic",
  112    112   
    "ListObjectVersionsOutput",
  113    113   
);
  114    114   
static LISTOBJECTVERSIONSOUTPUT_MEMBER_IS_TRUNCATED: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  115    115   
    ::aws_smithy_schema::ShapeId::from_static(
  116    116   
        "com.amazonaws.s3.synthetic#ListObjectVersionsOutput$IsTruncated",
  117    117   
        "com.amazonaws.s3.synthetic",
  118    118   
        "ListObjectVersionsOutput",
  119    119   
    ),
  120    120   
    ::aws_smithy_schema::ShapeType::Boolean,
  121         -
    "is_truncated",
         121  +
    "IsTruncated",
  122    122   
    0,
  123    123   
);
  124    124   
static LISTOBJECTVERSIONSOUTPUT_MEMBER_KEY_MARKER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  125    125   
    ::aws_smithy_schema::ShapeId::from_static(
  126    126   
        "com.amazonaws.s3.synthetic#ListObjectVersionsOutput$KeyMarker",
  127    127   
        "com.amazonaws.s3.synthetic",
  128    128   
        "ListObjectVersionsOutput",
  129    129   
    ),
  130    130   
    ::aws_smithy_schema::ShapeType::String,
  131         -
    "key_marker",
         131  +
    "KeyMarker",
  132    132   
    1,
  133    133   
);
  134    134   
static LISTOBJECTVERSIONSOUTPUT_MEMBER_VERSION_ID_MARKER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  135    135   
    ::aws_smithy_schema::ShapeId::from_static(
  136    136   
        "com.amazonaws.s3.synthetic#ListObjectVersionsOutput$VersionIdMarker",
  137    137   
        "com.amazonaws.s3.synthetic",
  138    138   
        "ListObjectVersionsOutput",
  139    139   
    ),
  140    140   
    ::aws_smithy_schema::ShapeType::String,
  141         -
    "version_id_marker",
         141  +
    "VersionIdMarker",
  142    142   
    2,
  143    143   
);
  144    144   
static LISTOBJECTVERSIONSOUTPUT_MEMBER_NEXT_KEY_MARKER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  145    145   
    ::aws_smithy_schema::ShapeId::from_static(
  146    146   
        "com.amazonaws.s3.synthetic#ListObjectVersionsOutput$NextKeyMarker",
  147    147   
        "com.amazonaws.s3.synthetic",
  148    148   
        "ListObjectVersionsOutput",
  149    149   
    ),
  150    150   
    ::aws_smithy_schema::ShapeType::String,
  151         -
    "next_key_marker",
         151  +
    "NextKeyMarker",
  152    152   
    3,
  153    153   
);
  154    154   
static LISTOBJECTVERSIONSOUTPUT_MEMBER_NEXT_VERSION_ID_MARKER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  155    155   
    ::aws_smithy_schema::ShapeId::from_static(
  156    156   
        "com.amazonaws.s3.synthetic#ListObjectVersionsOutput$NextVersionIdMarker",
  157    157   
        "com.amazonaws.s3.synthetic",
  158    158   
        "ListObjectVersionsOutput",
  159    159   
    ),
  160    160   
    ::aws_smithy_schema::ShapeType::String,
  161         -
    "next_version_id_marker",
         161  +
    "NextVersionIdMarker",
  162    162   
    4,
  163    163   
);
  164    164   
static LISTOBJECTVERSIONSOUTPUT_MEMBER_VERSIONS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  165    165   
    ::aws_smithy_schema::ShapeId::from_static(
  166    166   
        "com.amazonaws.s3.synthetic#ListObjectVersionsOutput$Versions",
  167    167   
        "com.amazonaws.s3.synthetic",
  168    168   
        "ListObjectVersionsOutput",
  169    169   
    ),
  170    170   
    ::aws_smithy_schema::ShapeType::List,
  171         -
    "versions",
         171  +
    "Versions",
  172    172   
    5,
  173    173   
)
  174    174   
.with_xml_name("Version")
  175    175   
.with_xml_flattened();
  176    176   
static LISTOBJECTVERSIONSOUTPUT_MEMBER_DELETE_MARKERS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  177    177   
    ::aws_smithy_schema::ShapeId::from_static(
  178    178   
        "com.amazonaws.s3.synthetic#ListObjectVersionsOutput$DeleteMarkers",
  179    179   
        "com.amazonaws.s3.synthetic",
  180    180   
        "ListObjectVersionsOutput",
  181    181   
    ),
  182    182   
    ::aws_smithy_schema::ShapeType::List,
  183         -
    "delete_markers",
         183  +
    "DeleteMarkers",
  184    184   
    6,
  185    185   
)
  186    186   
.with_xml_name("DeleteMarker")
  187    187   
.with_xml_flattened();
  188    188   
static LISTOBJECTVERSIONSOUTPUT_MEMBER_NAME: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  189    189   
    ::aws_smithy_schema::ShapeId::from_static(
  190    190   
        "com.amazonaws.s3.synthetic#ListObjectVersionsOutput$Name",
  191    191   
        "com.amazonaws.s3.synthetic",
  192    192   
        "ListObjectVersionsOutput",
  193    193   
    ),
  194    194   
    ::aws_smithy_schema::ShapeType::String,
  195         -
    "name",
         195  +
    "Name",
  196    196   
    7,
  197    197   
);
  198    198   
static LISTOBJECTVERSIONSOUTPUT_MEMBER_PREFIX: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  199    199   
    ::aws_smithy_schema::ShapeId::from_static(
  200    200   
        "com.amazonaws.s3.synthetic#ListObjectVersionsOutput$Prefix",
  201    201   
        "com.amazonaws.s3.synthetic",
  202    202   
        "ListObjectVersionsOutput",
  203    203   
    ),
  204    204   
    ::aws_smithy_schema::ShapeType::String,
  205         -
    "prefix",
         205  +
    "Prefix",
  206    206   
    8,
  207    207   
);
  208    208   
static LISTOBJECTVERSIONSOUTPUT_MEMBER_DELIMITER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  209    209   
    ::aws_smithy_schema::ShapeId::from_static(
  210    210   
        "com.amazonaws.s3.synthetic#ListObjectVersionsOutput$Delimiter",
  211    211   
        "com.amazonaws.s3.synthetic",
  212    212   
        "ListObjectVersionsOutput",
  213    213   
    ),
  214    214   
    ::aws_smithy_schema::ShapeType::String,
  215         -
    "delimiter",
         215  +
    "Delimiter",
  216    216   
    9,
  217    217   
);
  218    218   
static LISTOBJECTVERSIONSOUTPUT_MEMBER_MAX_KEYS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  219    219   
    ::aws_smithy_schema::ShapeId::from_static(
  220    220   
        "com.amazonaws.s3.synthetic#ListObjectVersionsOutput$MaxKeys",
  221    221   
        "com.amazonaws.s3.synthetic",
  222    222   
        "ListObjectVersionsOutput",
  223    223   
    ),
  224    224   
    ::aws_smithy_schema::ShapeType::Integer,
  225         -
    "max_keys",
         225  +
    "MaxKeys",
  226    226   
    10,
  227    227   
);
  228    228   
static LISTOBJECTVERSIONSOUTPUT_MEMBER_COMMON_PREFIXES: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  229    229   
    ::aws_smithy_schema::ShapeId::from_static(
  230    230   
        "com.amazonaws.s3.synthetic#ListObjectVersionsOutput$CommonPrefixes",
  231    231   
        "com.amazonaws.s3.synthetic",
  232    232   
        "ListObjectVersionsOutput",
  233    233   
    ),
  234    234   
    ::aws_smithy_schema::ShapeType::List,
  235         -
    "common_prefixes",
         235  +
    "CommonPrefixes",
  236    236   
    11,
  237    237   
)
  238    238   
.with_xml_flattened();
  239    239   
static LISTOBJECTVERSIONSOUTPUT_MEMBER_ENCODING_TYPE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  240    240   
    ::aws_smithy_schema::ShapeId::from_static(
  241    241   
        "com.amazonaws.s3.synthetic#ListObjectVersionsOutput$EncodingType",
  242    242   
        "com.amazonaws.s3.synthetic",
  243    243   
        "ListObjectVersionsOutput",
  244    244   
    ),
  245    245   
    ::aws_smithy_schema::ShapeType::String,
  246         -
    "encoding_type",
         246  +
    "EncodingType",
  247    247   
    12,
  248    248   
);
  249    249   
static LISTOBJECTVERSIONSOUTPUT_MEMBER_REQUEST_CHARGED: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  250    250   
    ::aws_smithy_schema::ShapeId::from_static(
  251    251   
        "com.amazonaws.s3.synthetic#ListObjectVersionsOutput$RequestCharged",
  252    252   
        "com.amazonaws.s3.synthetic",
  253    253   
        "ListObjectVersionsOutput",
  254    254   
    ),
  255    255   
    ::aws_smithy_schema::ShapeType::String,
  256         -
    "request_charged",
         256  +
    "RequestCharged",
  257    257   
    13,
  258    258   
)
  259    259   
.with_http_header("x-amz-request-charged");
         260  +
static LISTOBJECTVERSIONSOUTPUT_MEMBER__REQUEST_ID: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
         261  +
    ::aws_smithy_schema::ShapeId::from_static("synthetic#request_id", "synthetic", "request_id"),
         262  +
    ::aws_smithy_schema::ShapeType::String,
         263  +
    "request_id",
         264  +
    14,
         265  +
)
         266  +
.with_http_header("x-amzn-requestid");
  260    267   
static LISTOBJECTVERSIONSOUTPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  261    268   
    LISTOBJECTVERSIONSOUTPUT_SCHEMA_ID,
  262    269   
    ::aws_smithy_schema::ShapeType::Structure,
  263    270   
    &[
  264    271   
        &LISTOBJECTVERSIONSOUTPUT_MEMBER_IS_TRUNCATED,
  265    272   
        &LISTOBJECTVERSIONSOUTPUT_MEMBER_KEY_MARKER,
  266    273   
        &LISTOBJECTVERSIONSOUTPUT_MEMBER_VERSION_ID_MARKER,
  267    274   
        &LISTOBJECTVERSIONSOUTPUT_MEMBER_NEXT_KEY_MARKER,
  268    275   
        &LISTOBJECTVERSIONSOUTPUT_MEMBER_NEXT_VERSION_ID_MARKER,
  269    276   
        &LISTOBJECTVERSIONSOUTPUT_MEMBER_VERSIONS,
  270    277   
        &LISTOBJECTVERSIONSOUTPUT_MEMBER_DELETE_MARKERS,
  271    278   
        &LISTOBJECTVERSIONSOUTPUT_MEMBER_NAME,
  272    279   
        &LISTOBJECTVERSIONSOUTPUT_MEMBER_PREFIX,
  273    280   
        &LISTOBJECTVERSIONSOUTPUT_MEMBER_DELIMITER,
  274    281   
        &LISTOBJECTVERSIONSOUTPUT_MEMBER_MAX_KEYS,
  275    282   
        &LISTOBJECTVERSIONSOUTPUT_MEMBER_COMMON_PREFIXES,
  276    283   
        &LISTOBJECTVERSIONSOUTPUT_MEMBER_ENCODING_TYPE,
  277    284   
        &LISTOBJECTVERSIONSOUTPUT_MEMBER_REQUEST_CHARGED,
         285  +
        &LISTOBJECTVERSIONSOUTPUT_MEMBER__REQUEST_ID,
  278    286   
    ],
  279    287   
)
  280    288   
.with_xml_name("ListVersionsResult");
  281    289   
impl ListObjectVersionsOutput {
  282    290   
    /// The schema for this shape.
  283    291   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &LISTOBJECTVERSIONSOUTPUT_SCHEMA;
  284    292   
}
  285    293   
impl ::aws_smithy_schema::serde::SerializableStruct for ListObjectVersionsOutput {
  286    294   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
  287    295   
    fn serialize_members(
@@ -332,340 +477,574 @@
  352    360   
            ser.write_string(&LISTOBJECTVERSIONSOUTPUT_MEMBER_ENCODING_TYPE, val.as_str())?;
  353    361   
        }
  354    362   
        if let Some(ref val) = self.request_charged {
  355    363   
            ser.write_string(&LISTOBJECTVERSIONSOUTPUT_MEMBER_REQUEST_CHARGED, val.as_str())?;
  356    364   
        }
  357    365   
        Ok(())
  358    366   
    }
  359    367   
}
  360    368   
impl ListObjectVersionsOutput {
  361    369   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  362         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  363         -
        deserializer: &mut D,
         370  +
    pub fn deserialize(
         371  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  364    372   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  365    373   
        #[allow(unused_variables, unused_mut)]
  366    374   
        let mut builder = Self::builder();
  367    375   
        #[allow(
  368    376   
            unused_variables,
  369    377   
            unreachable_code,
  370    378   
            clippy::single_match,
  371    379   
            clippy::match_single_binding,
  372    380   
            clippy::diverging_sub_expression
  373    381   
        )]
  374         -
        deserializer.read_struct(&LISTOBJECTVERSIONSOUTPUT_SCHEMA, (), |_, member, deser| {
         382  +
        deserializer.read_struct(&LISTOBJECTVERSIONSOUTPUT_SCHEMA, &mut |member, deser| {
  375    383   
            match member.member_index() {
  376    384   
                Some(0) => {
  377    385   
                    builder.is_truncated = Some(deser.read_boolean(member)?);
  378    386   
                }
  379    387   
                Some(1) => {
  380    388   
                    builder.key_marker = Some(deser.read_string(member)?);
  381    389   
                }
  382    390   
                Some(2) => {
  383    391   
                    builder.version_id_marker = Some(deser.read_string(member)?);
  384    392   
                }
  385    393   
                Some(3) => {
  386    394   
                    builder.next_key_marker = Some(deser.read_string(member)?);
  387    395   
                }
  388    396   
                Some(4) => {
  389    397   
                    builder.next_version_id_marker = Some(deser.read_string(member)?);
  390    398   
                }
  391    399   
                Some(5) => {
  392    400   
                    builder.versions = Some({
  393         -
                        let container = if let Some(cap) = deser.container_size() {
  394         -
                            Vec::with_capacity(cap)
  395         -
                        } else {
  396         -
                            Vec::new()
  397         -
                        };
  398         -
                        deser.read_list(member, container, |mut list, deser| {
  399         -
                            list.push(crate::types::ObjectVersion::deserialize(deser)?);
  400         -
                            Ok(list)
  401         -
                        })?
         401  +
                        let mut container = Vec::new();
         402  +
                        deser.read_list(member, &mut |deser| {
         403  +
                            container.push(crate::types::ObjectVersion::deserialize(deser)?);
         404  +
                            Ok(())
         405  +
                        })?;
         406  +
                        container
  402    407   
                    });
  403    408   
                }
  404    409   
                Some(6) => {
  405    410   
                    builder.delete_markers = Some({
  406         -
                        let container = if let Some(cap) = deser.container_size() {
  407         -
                            Vec::with_capacity(cap)
  408         -
                        } else {
  409         -
                            Vec::new()
  410         -
                        };
  411         -
                        deser.read_list(member, container, |mut list, deser| {
  412         -
                            list.push(crate::types::DeleteMarkerEntry::deserialize(deser)?);
  413         -
                            Ok(list)
  414         -
                        })?
         411  +
                        let mut container = Vec::new();
         412  +
                        deser.read_list(member, &mut |deser| {
         413  +
                            container.push(crate::types::DeleteMarkerEntry::deserialize(deser)?);
         414  +
                            Ok(())
         415  +
                        })?;
         416  +
                        container
  415    417   
                    });
  416    418   
                }
  417    419   
                Some(7) => {
  418    420   
                    builder.name = Some(deser.read_string(member)?);
  419    421   
                }
  420    422   
                Some(8) => {
  421    423   
                    builder.prefix = Some(deser.read_string(member)?);
  422    424   
                }
  423    425   
                Some(9) => {
  424    426   
                    builder.delimiter = Some(deser.read_string(member)?);
  425    427   
                }
  426    428   
                Some(10) => {
  427    429   
                    builder.max_keys = Some(deser.read_integer(member)?);
  428    430   
                }
  429    431   
                Some(11) => {
  430    432   
                    builder.common_prefixes = Some({
  431         -
                        let container = if let Some(cap) = deser.container_size() {
  432         -
                            Vec::with_capacity(cap)
  433         -
                        } else {
  434         -
                            Vec::new()
  435         -
                        };
  436         -
                        deser.read_list(member, container, |mut list, deser| {
  437         -
                            list.push(crate::types::CommonPrefix::deserialize(deser)?);
  438         -
                            Ok(list)
  439         -
                        })?
         433  +
                        let mut container = Vec::new();
         434  +
                        deser.read_list(member, &mut |deser| {
         435  +
                            container.push(crate::types::CommonPrefix::deserialize(deser)?);
         436  +
                            Ok(())
         437  +
                        })?;
         438  +
                        container
  440    439   
                    });
  441    440   
                }
  442    441   
                Some(12) => {
  443    442   
                    builder.encoding_type = Some(crate::types::EncodingType::from(deser.read_string(member)?.as_str()));
  444    443   
                }
  445    444   
                Some(13) => {
  446    445   
                    builder.request_charged = Some(crate::types::RequestCharged::from(deser.read_string(member)?.as_str()));
  447    446   
                }
         447  +
                Some(14) => {
         448  +
                    builder._request_id = Some(deser.read_string(member)?);
         449  +
                }
         450  +
                _ => {}
         451  +
            }
         452  +
            Ok(())
         453  +
        })?;
         454  +
        Ok(builder.build())
         455  +
    }
         456  +
}
         457  +
impl ListObjectVersionsOutput {
         458  +
    /// Deserializes this structure from a body deserializer and HTTP response headers.
         459  +
    /// Header-bound members are read directly from headers, avoiding runtime
         460  +
    /// member iteration overhead. Body members are read via the deserializer.
         461  +
    pub fn deserialize_with_response(
         462  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         463  +
        headers: &::aws_smithy_runtime_api::http::Headers,
         464  +
        _status: u16,
         465  +
        _body: &[u8],
         466  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         467  +
        #[allow(unused_variables, unused_mut)]
         468  +
        let mut builder = Self::builder();
         469  +
        if let Some(val) = headers.get("x-amz-request-charged") {
         470  +
            builder.request_charged = Some(crate::types::RequestCharged::from(val));
         471  +
        }
         472  +
        if let Some(val) = headers.get("x-amzn-requestid") {
         473  +
            builder._request_id = Some(val.to_string());
         474  +
        }
         475  +
        #[allow(
         476  +
            unused_variables,
         477  +
            unreachable_code,
         478  +
            clippy::single_match,
         479  +
            clippy::match_single_binding,
         480  +
            clippy::diverging_sub_expression
         481  +
        )]
         482  +
        deserializer.read_struct(&LISTOBJECTVERSIONSOUTPUT_SCHEMA, &mut |member, deser| {
         483  +
            match member.member_index() {
         484  +
                Some(0) => {
         485  +
                    builder.is_truncated = Some(deser.read_boolean(member)?);
         486  +
                }
         487  +
                Some(1) => {
         488  +
                    builder.key_marker = Some(deser.read_string(member)?);
         489  +
                }
         490  +
                Some(2) => {
         491  +
                    builder.version_id_marker = Some(deser.read_string(member)?);
         492  +
                }
         493  +
                Some(3) => {
         494  +
                    builder.next_key_marker = Some(deser.read_string(member)?);
         495  +
                }
         496  +
                Some(4) => {
         497  +
                    builder.next_version_id_marker = Some(deser.read_string(member)?);
         498  +
                }
         499  +
                Some(5) => {
         500  +
                    builder.versions = Some({
         501  +
                        let mut container = Vec::new();
         502  +
                        deser.read_list(member, &mut |deser| {
         503  +
                            container.push(crate::types::ObjectVersion::deserialize(deser)?);
         504  +
                            Ok(())
         505  +
                        })?;
         506  +
                        container
         507  +
                    });
         508  +
                }
         509  +
                Some(6) => {
         510  +
                    builder.delete_markers = Some({
         511  +
                        let mut container = Vec::new();
         512  +
                        deser.read_list(member, &mut |deser| {
         513  +
                            container.push(crate::types::DeleteMarkerEntry::deserialize(deser)?);
         514  +
                            Ok(())
         515  +
                        })?;
         516  +
                        container
         517  +
                    });
         518  +
                }
         519  +
                Some(7) => {
         520  +
                    builder.name = Some(deser.read_string(member)?);
         521  +
                }
         522  +
                Some(8) => {
         523  +
                    builder.prefix = Some(deser.read_string(member)?);
         524  +
                }
         525  +
                Some(9) => {
         526  +
                    builder.delimiter = Some(deser.read_string(member)?);
         527  +
                }
         528  +
                Some(10) => {
         529  +
                    builder.max_keys = Some(deser.read_integer(member)?);
         530  +
                }
         531  +
                Some(11) => {
         532  +
                    builder.common_prefixes = Some({
         533  +
                        let mut container = Vec::new();
         534  +
                        deser.read_list(member, &mut |deser| {
         535  +
                            container.push(crate::types::CommonPrefix::deserialize(deser)?);
         536  +
                            Ok(())
         537  +
                        })?;
         538  +
                        container
         539  +
                    });
         540  +
                }
         541  +
                Some(12) => {
         542  +
                    builder.encoding_type = Some(crate::types::EncodingType::from(deser.read_string(member)?.as_str()));
         543  +
                }
         544  +
                Some(13) => { /* read from headers above */ }
  448    545   
                _ => {}
  449    546   
            }
  450    547   
            Ok(())
  451    548   
        })?;
  452    549   
        Ok(builder.build())
  453    550   
    }
  454    551   
}
  455    552   
impl crate::s3_request_id::RequestIdExt for ListObjectVersionsOutput {
  456    553   
    fn extended_request_id(&self) -> Option<&str> {
  457    554   
        self._extended_request_id.as_deref()

tmp-codegen-diff/aws-sdk/sdk/s3/src/operation/list_objects.rs

@@ -1,1 +40,44 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2      2   
/// Orchestration and serialization glue logic for `ListObjects`.
    3      3   
#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
    4      4   
#[non_exhaustive]
    5      5   
pub struct ListObjects;
    6      6   
impl ListObjects {
    7      7   
    /// Creates a new `ListObjects`
    8      8   
    pub fn new() -> Self {
    9      9   
        Self
   10     10   
    }
          11  +
    /// The schema for this operation's input shape.
          12  +
    pub const INPUT_SCHEMA: &'static ::aws_smithy_schema::Schema = crate::operation::list_objects::ListObjectsInput::SCHEMA;
          13  +
    /// The schema for this operation's output shape.
          14  +
    pub const OUTPUT_SCHEMA: &'static ::aws_smithy_schema::Schema = crate::operation::list_objects::ListObjectsOutput::SCHEMA;
   11     15   
    pub(crate) async fn orchestrate(
   12     16   
        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
   13     17   
        input: crate::operation::list_objects::ListObjectsInput,
   14     18   
    ) -> ::std::result::Result<
   15     19   
        crate::operation::list_objects::ListObjectsOutput,
   16     20   
        ::aws_smithy_runtime_api::client::result::SdkError<
   17     21   
            crate::operation::list_objects::ListObjectsError,
   18     22   
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
   19     23   
        >,
   20     24   
    > {
@@ -121,125 +183,188 @@
  141    145   
                    .build(),
  142    146   
            );
  143    147   
  144    148   
        ::std::borrow::Cow::Owned(rcb)
  145    149   
    }
  146    150   
}
  147    151   
  148    152   
#[derive(Debug)]
  149    153   
struct ListObjectsResponseDeserializer;
  150    154   
impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for ListObjectsResponseDeserializer {
  151         -
    fn deserialize_nonstreaming(
         155  +
    fn deserialize_nonstreaming_with_config(
  152    156   
        &self,
  153    157   
        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
         158  +
        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
  154    159   
    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
  155    160   
        let (success, status) = (response.status().is_success(), response.status().as_u16());
  156    161   
        let headers = response.headers();
  157    162   
        let body = response.body().bytes().expect("body loaded");
  158    163   
        #[allow(unused_mut)]
  159    164   
        let mut force_error = false;
  160    165   
        ::tracing::debug!(extended_request_id = ?crate::s3_request_id::RequestIdExt::extended_request_id(response));
  161    166   
        if matches!(crate::rest_xml_unwrapped_errors::body_is_error(body), Ok(true)) {
  162    167   
            force_error = true;
  163    168   
        }
@@ -350,355 +410,419 @@
  370    375   
            .expect("the config must have a deserializer");
  371    376   
  372    377   
        let parsed = de.deserialize_streaming(&mut http_response);
  373    378   
        let parsed = parsed.unwrap_or_else(|| {
  374    379   
            let http_response = http_response.map(|body| {
  375    380   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
  376    381   
                    body.bytes().unwrap(),
  377    382   
                    ::aws_smithy_protocol_test::MediaType::from("application/xml"),
  378    383   
                )))
  379    384   
            });
  380         -
            de.deserialize_nonstreaming(&http_response)
         385  +
            // Build a config bag with the protocol for schema-based deserialization
         386  +
            #[allow(unused_mut)]
         387  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
         388  +
         389  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
  381    390   
        });
  382    391   
        let parsed = parsed
  383    392   
            .expect("should be successful response")
  384    393   
            .downcast::<crate::operation::list_objects::ListObjectsOutput>()
  385    394   
            .unwrap();
  386    395   
        ::pretty_assertions::assert_eq!(parsed.is_truncated, expected_output.is_truncated, "Unexpected value for `is_truncated`");
  387    396   
        ::pretty_assertions::assert_eq!(parsed.marker, expected_output.marker, "Unexpected value for `marker`");
  388    397   
        ::pretty_assertions::assert_eq!(parsed.next_marker, expected_output.next_marker, "Unexpected value for `next_marker`");
  389    398   
        ::pretty_assertions::assert_eq!(parsed.contents, expected_output.contents, "Unexpected value for `contents`");
  390    399   
        ::pretty_assertions::assert_eq!(parsed.name, expected_output.name, "Unexpected value for `name`");

tmp-codegen-diff/aws-sdk/sdk/s3/src/operation/list_objects/_list_objects_input.rs

@@ -63,63 +334,393 @@
   83     83   
    "com.amazonaws.s3.synthetic",
   84     84   
    "ListObjectsInput",
   85     85   
);
   86     86   
static LISTOBJECTSINPUT_MEMBER_BUCKET: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   87     87   
    ::aws_smithy_schema::ShapeId::from_static(
   88     88   
        "com.amazonaws.s3.synthetic#ListObjectsInput$Bucket",
   89     89   
        "com.amazonaws.s3.synthetic",
   90     90   
        "ListObjectsInput",
   91     91   
    ),
   92     92   
    ::aws_smithy_schema::ShapeType::String,
   93         -
    "bucket",
          93  +
    "Bucket",
   94     94   
    0,
   95     95   
)
   96     96   
.with_http_label();
   97     97   
static LISTOBJECTSINPUT_MEMBER_DELIMITER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   98     98   
    ::aws_smithy_schema::ShapeId::from_static(
   99     99   
        "com.amazonaws.s3.synthetic#ListObjectsInput$Delimiter",
  100    100   
        "com.amazonaws.s3.synthetic",
  101    101   
        "ListObjectsInput",
  102    102   
    ),
  103    103   
    ::aws_smithy_schema::ShapeType::String,
  104         -
    "delimiter",
         104  +
    "Delimiter",
  105    105   
    1,
  106    106   
)
  107    107   
.with_http_query("delimiter");
  108    108   
static LISTOBJECTSINPUT_MEMBER_ENCODING_TYPE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  109    109   
    ::aws_smithy_schema::ShapeId::from_static(
  110    110   
        "com.amazonaws.s3.synthetic#ListObjectsInput$EncodingType",
  111    111   
        "com.amazonaws.s3.synthetic",
  112    112   
        "ListObjectsInput",
  113    113   
    ),
  114    114   
    ::aws_smithy_schema::ShapeType::String,
  115         -
    "encoding_type",
         115  +
    "EncodingType",
  116    116   
    2,
  117    117   
)
  118    118   
.with_http_query("encoding-type");
  119    119   
static LISTOBJECTSINPUT_MEMBER_MARKER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  120    120   
    ::aws_smithy_schema::ShapeId::from_static(
  121    121   
        "com.amazonaws.s3.synthetic#ListObjectsInput$Marker",
  122    122   
        "com.amazonaws.s3.synthetic",
  123    123   
        "ListObjectsInput",
  124    124   
    ),
  125    125   
    ::aws_smithy_schema::ShapeType::String,
  126         -
    "marker",
         126  +
    "Marker",
  127    127   
    3,
  128    128   
)
  129    129   
.with_http_query("marker");
  130    130   
static LISTOBJECTSINPUT_MEMBER_MAX_KEYS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  131    131   
    ::aws_smithy_schema::ShapeId::from_static(
  132    132   
        "com.amazonaws.s3.synthetic#ListObjectsInput$MaxKeys",
  133    133   
        "com.amazonaws.s3.synthetic",
  134    134   
        "ListObjectsInput",
  135    135   
    ),
  136    136   
    ::aws_smithy_schema::ShapeType::Integer,
  137         -
    "max_keys",
         137  +
    "MaxKeys",
  138    138   
    4,
  139    139   
)
  140    140   
.with_http_query("max-keys");
  141    141   
static LISTOBJECTSINPUT_MEMBER_PREFIX: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  142    142   
    ::aws_smithy_schema::ShapeId::from_static(
  143    143   
        "com.amazonaws.s3.synthetic#ListObjectsInput$Prefix",
  144    144   
        "com.amazonaws.s3.synthetic",
  145    145   
        "ListObjectsInput",
  146    146   
    ),
  147    147   
    ::aws_smithy_schema::ShapeType::String,
  148         -
    "prefix",
         148  +
    "Prefix",
  149    149   
    5,
  150    150   
)
  151    151   
.with_http_query("prefix");
  152    152   
static LISTOBJECTSINPUT_MEMBER_REQUEST_PAYER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  153    153   
    ::aws_smithy_schema::ShapeId::from_static(
  154    154   
        "com.amazonaws.s3.synthetic#ListObjectsInput$RequestPayer",
  155    155   
        "com.amazonaws.s3.synthetic",
  156    156   
        "ListObjectsInput",
  157    157   
    ),
  158    158   
    ::aws_smithy_schema::ShapeType::String,
  159         -
    "request_payer",
         159  +
    "RequestPayer",
  160    160   
    6,
  161    161   
)
  162    162   
.with_http_header("x-amz-request-payer");
  163    163   
static LISTOBJECTSINPUT_MEMBER_EXPECTED_BUCKET_OWNER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  164    164   
    ::aws_smithy_schema::ShapeId::from_static(
  165    165   
        "com.amazonaws.s3.synthetic#ListObjectsInput$ExpectedBucketOwner",
  166    166   
        "com.amazonaws.s3.synthetic",
  167    167   
        "ListObjectsInput",
  168    168   
    ),
  169    169   
    ::aws_smithy_schema::ShapeType::String,
  170         -
    "expected_bucket_owner",
         170  +
    "ExpectedBucketOwner",
  171    171   
    7,
  172    172   
)
  173    173   
.with_http_header("x-amz-expected-bucket-owner");
  174    174   
static LISTOBJECTSINPUT_MEMBER_OPTIONAL_OBJECT_ATTRIBUTES: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  175    175   
    ::aws_smithy_schema::ShapeId::from_static(
  176    176   
        "com.amazonaws.s3.synthetic#ListObjectsInput$OptionalObjectAttributes",
  177    177   
        "com.amazonaws.s3.synthetic",
  178    178   
        "ListObjectsInput",
  179    179   
    ),
  180    180   
    ::aws_smithy_schema::ShapeType::List,
  181         -
    "optional_object_attributes",
         181  +
    "OptionalObjectAttributes",
  182    182   
    8,
  183    183   
)
  184    184   
.with_http_header("x-amz-optional-object-attributes");
  185    185   
static LISTOBJECTSINPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  186    186   
    LISTOBJECTSINPUT_SCHEMA_ID,
  187    187   
    ::aws_smithy_schema::ShapeType::Structure,
  188    188   
    &[
  189    189   
        &LISTOBJECTSINPUT_MEMBER_BUCKET,
  190    190   
        &LISTOBJECTSINPUT_MEMBER_DELIMITER,
  191    191   
        &LISTOBJECTSINPUT_MEMBER_ENCODING_TYPE,
  192    192   
        &LISTOBJECTSINPUT_MEMBER_MARKER,
  193    193   
        &LISTOBJECTSINPUT_MEMBER_MAX_KEYS,
  194    194   
        &LISTOBJECTSINPUT_MEMBER_PREFIX,
  195    195   
        &LISTOBJECTSINPUT_MEMBER_REQUEST_PAYER,
  196    196   
        &LISTOBJECTSINPUT_MEMBER_EXPECTED_BUCKET_OWNER,
  197    197   
        &LISTOBJECTSINPUT_MEMBER_OPTIONAL_OBJECT_ATTRIBUTES,
  198    198   
    ],
  199         -
);
         199  +
)
         200  +
.with_http(aws_smithy_schema::traits::HttpTrait::new("GET", "/", None));
  200    201   
impl ListObjectsInput {
  201    202   
    /// The schema for this shape.
  202    203   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &LISTOBJECTSINPUT_SCHEMA;
  203    204   
}
  204    205   
impl ::aws_smithy_schema::serde::SerializableStruct for ListObjectsInput {
  205    206   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
  206    207   
    fn serialize_members(
  207    208   
        &self,
  208    209   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
  209    210   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
  210    211   
        if let Some(ref val) = self.bucket {
  211    212   
            ser.write_string(&LISTOBJECTSINPUT_MEMBER_BUCKET, val)?;
  212    213   
        }
  213    214   
        if let Some(ref val) = self.delimiter {
  214    215   
            ser.write_string(&LISTOBJECTSINPUT_MEMBER_DELIMITER, val)?;
  215    216   
        }
  216    217   
        if let Some(ref val) = self.encoding_type {
  217    218   
            ser.write_string(&LISTOBJECTSINPUT_MEMBER_ENCODING_TYPE, val.as_str())?;
  218    219   
        }
  219    220   
        if let Some(ref val) = self.marker {
  220    221   
            ser.write_string(&LISTOBJECTSINPUT_MEMBER_MARKER, val)?;
  221    222   
        }
  222    223   
        if let Some(ref val) = self.max_keys {
  223    224   
            ser.write_integer(&LISTOBJECTSINPUT_MEMBER_MAX_KEYS, *val)?;
  224    225   
        }
  225    226   
        if let Some(ref val) = self.prefix {
  226    227   
            ser.write_string(&LISTOBJECTSINPUT_MEMBER_PREFIX, val)?;
  227    228   
        }
  228    229   
        if let Some(ref val) = self.request_payer {
  229    230   
            ser.write_string(&LISTOBJECTSINPUT_MEMBER_REQUEST_PAYER, val.as_str())?;
  230    231   
        }
  231    232   
        if let Some(ref val) = self.expected_bucket_owner {
  232    233   
            ser.write_string(&LISTOBJECTSINPUT_MEMBER_EXPECTED_BUCKET_OWNER, val)?;
  233    234   
        }
  234    235   
        if let Some(ref val) = self.optional_object_attributes {
  235    236   
            ser.write_list(
  236    237   
                &LISTOBJECTSINPUT_MEMBER_OPTIONAL_OBJECT_ATTRIBUTES,
  237    238   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  238    239   
                    for item in val {
  239    240   
                        ser.write_string(&aws_smithy_schema::prelude::STRING, item.as_str())?;
  240    241   
                    }
  241    242   
                    Ok(())
  242    243   
                },
  243    244   
            )?;
  244    245   
        }
  245    246   
        Ok(())
  246    247   
    }
  247    248   
}
  248    249   
impl ListObjectsInput {
  249    250   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  250         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  251         -
        deserializer: &mut D,
         251  +
    pub fn deserialize(
         252  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  252    253   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  253    254   
        #[allow(unused_variables, unused_mut)]
  254    255   
        let mut builder = Self::builder();
  255    256   
        #[allow(
  256    257   
            unused_variables,
  257    258   
            unreachable_code,
  258    259   
            clippy::single_match,
  259    260   
            clippy::match_single_binding,
  260    261   
            clippy::diverging_sub_expression
  261    262   
        )]
  262         -
        deserializer.read_struct(&LISTOBJECTSINPUT_SCHEMA, (), |_, member, deser| {
         263  +
        deserializer.read_struct(&LISTOBJECTSINPUT_SCHEMA, &mut |member, deser| {
  263    264   
            match member.member_index() {
  264    265   
                Some(0) => {
  265    266   
                    builder.bucket = Some(deser.read_string(member)?);
  266    267   
                }
  267    268   
                Some(1) => {
  268    269   
                    builder.delimiter = Some(deser.read_string(member)?);
  269    270   
                }
  270    271   
                Some(2) => {
  271    272   
                    builder.encoding_type = Some(crate::types::EncodingType::from(deser.read_string(member)?.as_str()));
  272    273   
                }
  273    274   
                Some(3) => {
  274    275   
                    builder.marker = Some(deser.read_string(member)?);
  275    276   
                }
  276    277   
                Some(4) => {
  277    278   
                    builder.max_keys = Some(deser.read_integer(member)?);
  278    279   
                }
  279    280   
                Some(5) => {
  280    281   
                    builder.prefix = Some(deser.read_string(member)?);
  281    282   
                }
  282    283   
                Some(6) => {
  283    284   
                    builder.request_payer = Some(crate::types::RequestPayer::from(deser.read_string(member)?.as_str()));
  284    285   
                }
  285    286   
                Some(7) => {
  286    287   
                    builder.expected_bucket_owner = Some(deser.read_string(member)?);
  287    288   
                }
  288    289   
                Some(8) => {
  289    290   
                    builder.optional_object_attributes = Some({
  290         -
                        let container = if let Some(cap) = deser.container_size() {
  291         -
                            Vec::with_capacity(cap)
  292         -
                        } else {
  293         -
                            Vec::new()
  294         -
                        };
  295         -
                        deser.read_list(member, container, |mut list, deser| {
  296         -
                            list.push(crate::types::OptionalObjectAttributes::from(deser.read_string(member)?.as_str()));
  297         -
                            Ok(list)
  298         -
                        })?
         291  +
                        let mut container = Vec::new();
         292  +
                        deser.read_list(member, &mut |deser| {
         293  +
                            container.push(crate::types::OptionalObjectAttributes::from(deser.read_string(member)?.as_str()));
         294  +
                            Ok(())
         295  +
                        })?;
         296  +
                        container
  299    297   
                    });
  300    298   
                }
  301    299   
                _ => {}
  302    300   
            }
  303    301   
            Ok(())
  304    302   
        })?;
         303  +
        builder.bucket = builder.bucket.or(Some(String::new()));
         304  +
        builder
         305  +
            .build()
         306  +
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
         307  +
    }
         308  +
}
         309  +
impl ListObjectsInput {
         310  +
    /// Deserializes this structure from a body deserializer and HTTP response headers.
         311  +
    /// Header-bound members are read directly from headers, avoiding runtime
         312  +
    /// member iteration overhead. Body members are read via the deserializer.
         313  +
    pub fn deserialize_with_response(
         314  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         315  +
        headers: &::aws_smithy_runtime_api::http::Headers,
         316  +
        _status: u16,
         317  +
        _body: &[u8],
         318  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         319  +
        #[allow(unused_variables, unused_mut)]
         320  +
        let mut builder = Self::builder();
         321  +
        if let Some(val) = headers.get("x-amz-request-payer") {
         322  +
            builder.request_payer = Some(crate::types::RequestPayer::from(val));
         323  +
        }
         324  +
        if let Some(val) = headers.get("x-amz-expected-bucket-owner") {
         325  +
            builder.expected_bucket_owner = Some(val.to_string());
         326  +
        }
         327  +
        if let Some(val) = headers.get("x-amz-optional-object-attributes") {
         328  +
            builder.optional_object_attributes = Some(val.split(',').map(|s| crate::types::OptionalObjectAttributes::from(s.trim())).collect());
         329  +
        }
         330  +
        #[allow(
         331  +
            unused_variables,
         332  +
            unreachable_code,
         333  +
            clippy::single_match,
         334  +
            clippy::match_single_binding,
         335  +
            clippy::diverging_sub_expression
         336  +
        )]
         337  +
        deserializer.read_struct(&LISTOBJECTSINPUT_SCHEMA, &mut |member, deser| {
         338  +
            match member.member_index() {
         339  +
                Some(0) => {
         340  +
                    builder.bucket = Some(deser.read_string(member)?);
         341  +
                }
         342  +
                Some(1) => {
         343  +
                    builder.delimiter = Some(deser.read_string(member)?);
         344  +
                }
         345  +
                Some(2) => {
         346  +
                    builder.encoding_type = Some(crate::types::EncodingType::from(deser.read_string(member)?.as_str()));
         347  +
                }
         348  +
                Some(3) => {
         349  +
                    builder.marker = Some(deser.read_string(member)?);
         350  +
                }
         351  +
                Some(4) => {
         352  +
                    builder.max_keys = Some(deser.read_integer(member)?);
         353  +
                }
         354  +
                Some(5) => {
         355  +
                    builder.prefix = Some(deser.read_string(member)?);
         356  +
                }
         357  +
                Some(6) => { /* read from headers above */ }
         358  +
                Some(7) => { /* read from headers above */ }
         359  +
                Some(8) => { /* read from headers above */ }
         360  +
                _ => {}
         361  +
            }
         362  +
            Ok(())
         363  +
        })?;
  305    364   
        builder
  306    365   
            .build()
  307    366   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
  308    367   
    }
  309    368   
}
  310    369   
impl ListObjectsInput {
  311    370   
    /// Creates a new builder-style object to manufacture [`ListObjectsInput`](crate::operation::list_objects::ListObjectsInput).
  312    371   
    pub fn builder() -> crate::operation::list_objects::builders::ListObjectsInputBuilder {
  313    372   
        crate::operation::list_objects::builders::ListObjectsInputBuilder::default()
  314    373   
    }

tmp-codegen-diff/aws-sdk/sdk/s3/src/operation/list_objects/_list_objects_output.rs

@@ -83,83 +263,271 @@
  103    103   
    "com.amazonaws.s3.synthetic",
  104    104   
    "ListObjectsOutput",
  105    105   
);
  106    106   
static LISTOBJECTSOUTPUT_MEMBER_IS_TRUNCATED: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  107    107   
    ::aws_smithy_schema::ShapeId::from_static(
  108    108   
        "com.amazonaws.s3.synthetic#ListObjectsOutput$IsTruncated",
  109    109   
        "com.amazonaws.s3.synthetic",
  110    110   
        "ListObjectsOutput",
  111    111   
    ),
  112    112   
    ::aws_smithy_schema::ShapeType::Boolean,
  113         -
    "is_truncated",
         113  +
    "IsTruncated",
  114    114   
    0,
  115    115   
);
  116    116   
static LISTOBJECTSOUTPUT_MEMBER_MARKER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  117    117   
    ::aws_smithy_schema::ShapeId::from_static(
  118    118   
        "com.amazonaws.s3.synthetic#ListObjectsOutput$Marker",
  119    119   
        "com.amazonaws.s3.synthetic",
  120    120   
        "ListObjectsOutput",
  121    121   
    ),
  122    122   
    ::aws_smithy_schema::ShapeType::String,
  123         -
    "marker",
         123  +
    "Marker",
  124    124   
    1,
  125    125   
);
  126    126   
static LISTOBJECTSOUTPUT_MEMBER_NEXT_MARKER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  127    127   
    ::aws_smithy_schema::ShapeId::from_static(
  128    128   
        "com.amazonaws.s3.synthetic#ListObjectsOutput$NextMarker",
  129    129   
        "com.amazonaws.s3.synthetic",
  130    130   
        "ListObjectsOutput",
  131    131   
    ),
  132    132   
    ::aws_smithy_schema::ShapeType::String,
  133         -
    "next_marker",
         133  +
    "NextMarker",
  134    134   
    2,
  135    135   
);
  136    136   
static LISTOBJECTSOUTPUT_MEMBER_CONTENTS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  137    137   
    ::aws_smithy_schema::ShapeId::from_static(
  138    138   
        "com.amazonaws.s3.synthetic#ListObjectsOutput$Contents",
  139    139   
        "com.amazonaws.s3.synthetic",
  140    140   
        "ListObjectsOutput",
  141    141   
    ),
  142    142   
    ::aws_smithy_schema::ShapeType::List,
  143         -
    "contents",
         143  +
    "Contents",
  144    144   
    3,
  145    145   
)
  146    146   
.with_xml_flattened();
  147    147   
static LISTOBJECTSOUTPUT_MEMBER_NAME: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  148    148   
    ::aws_smithy_schema::ShapeId::from_static(
  149    149   
        "com.amazonaws.s3.synthetic#ListObjectsOutput$Name",
  150    150   
        "com.amazonaws.s3.synthetic",
  151    151   
        "ListObjectsOutput",
  152    152   
    ),
  153    153   
    ::aws_smithy_schema::ShapeType::String,
  154         -
    "name",
         154  +
    "Name",
  155    155   
    4,
  156    156   
);
  157    157   
static LISTOBJECTSOUTPUT_MEMBER_PREFIX: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  158    158   
    ::aws_smithy_schema::ShapeId::from_static(
  159    159   
        "com.amazonaws.s3.synthetic#ListObjectsOutput$Prefix",
  160    160   
        "com.amazonaws.s3.synthetic",
  161    161   
        "ListObjectsOutput",
  162    162   
    ),
  163    163   
    ::aws_smithy_schema::ShapeType::String,
  164         -
    "prefix",
         164  +
    "Prefix",
  165    165   
    5,
  166    166   
);
  167    167   
static LISTOBJECTSOUTPUT_MEMBER_DELIMITER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  168    168   
    ::aws_smithy_schema::ShapeId::from_static(
  169    169   
        "com.amazonaws.s3.synthetic#ListObjectsOutput$Delimiter",
  170    170   
        "com.amazonaws.s3.synthetic",
  171    171   
        "ListObjectsOutput",
  172    172   
    ),
  173    173   
    ::aws_smithy_schema::ShapeType::String,
  174         -
    "delimiter",
         174  +
    "Delimiter",
  175    175   
    6,
  176    176   
);
  177    177   
static LISTOBJECTSOUTPUT_MEMBER_MAX_KEYS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  178    178   
    ::aws_smithy_schema::ShapeId::from_static(
  179    179   
        "com.amazonaws.s3.synthetic#ListObjectsOutput$MaxKeys",
  180    180   
        "com.amazonaws.s3.synthetic",
  181    181   
        "ListObjectsOutput",
  182    182   
    ),
  183    183   
    ::aws_smithy_schema::ShapeType::Integer,
  184         -
    "max_keys",
         184  +
    "MaxKeys",
  185    185   
    7,
  186    186   
);
  187    187   
static LISTOBJECTSOUTPUT_MEMBER_COMMON_PREFIXES: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  188    188   
    ::aws_smithy_schema::ShapeId::from_static(
  189    189   
        "com.amazonaws.s3.synthetic#ListObjectsOutput$CommonPrefixes",
  190    190   
        "com.amazonaws.s3.synthetic",
  191    191   
        "ListObjectsOutput",
  192    192   
    ),
  193    193   
    ::aws_smithy_schema::ShapeType::List,
  194         -
    "common_prefixes",
         194  +
    "CommonPrefixes",
  195    195   
    8,
  196    196   
)
  197    197   
.with_xml_flattened();
  198    198   
static LISTOBJECTSOUTPUT_MEMBER_ENCODING_TYPE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  199    199   
    ::aws_smithy_schema::ShapeId::from_static(
  200    200   
        "com.amazonaws.s3.synthetic#ListObjectsOutput$EncodingType",
  201    201   
        "com.amazonaws.s3.synthetic",
  202    202   
        "ListObjectsOutput",
  203    203   
    ),
  204    204   
    ::aws_smithy_schema::ShapeType::String,
  205         -
    "encoding_type",
         205  +
    "EncodingType",
  206    206   
    9,
  207    207   
);
  208    208   
static LISTOBJECTSOUTPUT_MEMBER_REQUEST_CHARGED: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  209    209   
    ::aws_smithy_schema::ShapeId::from_static(
  210    210   
        "com.amazonaws.s3.synthetic#ListObjectsOutput$RequestCharged",
  211    211   
        "com.amazonaws.s3.synthetic",
  212    212   
        "ListObjectsOutput",
  213    213   
    ),
  214    214   
    ::aws_smithy_schema::ShapeType::String,
  215         -
    "request_charged",
         215  +
    "RequestCharged",
  216    216   
    10,
  217    217   
)
  218    218   
.with_http_header("x-amz-request-charged");
         219  +
static LISTOBJECTSOUTPUT_MEMBER__REQUEST_ID: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
         220  +
    ::aws_smithy_schema::ShapeId::from_static("synthetic#request_id", "synthetic", "request_id"),
         221  +
    ::aws_smithy_schema::ShapeType::String,
         222  +
    "request_id",
         223  +
    11,
         224  +
)
         225  +
.with_http_header("x-amzn-requestid");
  219    226   
static LISTOBJECTSOUTPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  220    227   
    LISTOBJECTSOUTPUT_SCHEMA_ID,
  221    228   
    ::aws_smithy_schema::ShapeType::Structure,
  222    229   
    &[
  223    230   
        &LISTOBJECTSOUTPUT_MEMBER_IS_TRUNCATED,
  224    231   
        &LISTOBJECTSOUTPUT_MEMBER_MARKER,
  225    232   
        &LISTOBJECTSOUTPUT_MEMBER_NEXT_MARKER,
  226    233   
        &LISTOBJECTSOUTPUT_MEMBER_CONTENTS,
  227    234   
        &LISTOBJECTSOUTPUT_MEMBER_NAME,
  228    235   
        &LISTOBJECTSOUTPUT_MEMBER_PREFIX,
  229    236   
        &LISTOBJECTSOUTPUT_MEMBER_DELIMITER,
  230    237   
        &LISTOBJECTSOUTPUT_MEMBER_MAX_KEYS,
  231    238   
        &LISTOBJECTSOUTPUT_MEMBER_COMMON_PREFIXES,
  232    239   
        &LISTOBJECTSOUTPUT_MEMBER_ENCODING_TYPE,
  233    240   
        &LISTOBJECTSOUTPUT_MEMBER_REQUEST_CHARGED,
         241  +
        &LISTOBJECTSOUTPUT_MEMBER__REQUEST_ID,
  234    242   
    ],
  235    243   
)
  236    244   
.with_xml_name("ListBucketResult");
  237    245   
impl ListObjectsOutput {
  238    246   
    /// The schema for this shape.
  239    247   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &LISTOBJECTSOUTPUT_SCHEMA;
  240    248   
}
  241    249   
impl ::aws_smithy_schema::serde::SerializableStruct for ListObjectsOutput {
  242    250   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
  243    251   
    fn serialize_members(
@@ -271,279 +397,481 @@
  291    299   
            ser.write_string(&LISTOBJECTSOUTPUT_MEMBER_ENCODING_TYPE, val.as_str())?;
  292    300   
        }
  293    301   
        if let Some(ref val) = self.request_charged {
  294    302   
            ser.write_string(&LISTOBJECTSOUTPUT_MEMBER_REQUEST_CHARGED, val.as_str())?;
  295    303   
        }
  296    304   
        Ok(())
  297    305   
    }
  298    306   
}
  299    307   
impl ListObjectsOutput {
  300    308   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  301         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  302         -
        deserializer: &mut D,
         309  +
    pub fn deserialize(
         310  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  303    311   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  304    312   
        #[allow(unused_variables, unused_mut)]
  305    313   
        let mut builder = Self::builder();
  306    314   
        #[allow(
  307    315   
            unused_variables,
  308    316   
            unreachable_code,
  309    317   
            clippy::single_match,
  310    318   
            clippy::match_single_binding,
  311    319   
            clippy::diverging_sub_expression
  312    320   
        )]
  313         -
        deserializer.read_struct(&LISTOBJECTSOUTPUT_SCHEMA, (), |_, member, deser| {
         321  +
        deserializer.read_struct(&LISTOBJECTSOUTPUT_SCHEMA, &mut |member, deser| {
  314    322   
            match member.member_index() {
  315    323   
                Some(0) => {
  316    324   
                    builder.is_truncated = Some(deser.read_boolean(member)?);
  317    325   
                }
  318    326   
                Some(1) => {
  319    327   
                    builder.marker = Some(deser.read_string(member)?);
  320    328   
                }
  321    329   
                Some(2) => {
  322    330   
                    builder.next_marker = Some(deser.read_string(member)?);
  323    331   
                }
  324    332   
                Some(3) => {
  325    333   
                    builder.contents = Some({
  326         -
                        let container = if let Some(cap) = deser.container_size() {
  327         -
                            Vec::with_capacity(cap)
  328         -
                        } else {
  329         -
                            Vec::new()
  330         -
                        };
  331         -
                        deser.read_list(member, container, |mut list, deser| {
  332         -
                            list.push(crate::types::Object::deserialize(deser)?);
  333         -
                            Ok(list)
  334         -
                        })?
         334  +
                        let mut container = Vec::new();
         335  +
                        deser.read_list(member, &mut |deser| {
         336  +
                            container.push(crate::types::Object::deserialize(deser)?);
         337  +
                            Ok(())
         338  +
                        })?;
         339  +
                        container
  335    340   
                    });
  336    341   
                }
  337    342   
                Some(4) => {
  338    343   
                    builder.name = Some(deser.read_string(member)?);
  339    344   
                }
  340    345   
                Some(5) => {
  341    346   
                    builder.prefix = Some(deser.read_string(member)?);
  342    347   
                }
  343    348   
                Some(6) => {
  344    349   
                    builder.delimiter = Some(deser.read_string(member)?);
  345    350   
                }
  346    351   
                Some(7) => {
  347    352   
                    builder.max_keys = Some(deser.read_integer(member)?);
  348    353   
                }
  349    354   
                Some(8) => {
  350    355   
                    builder.common_prefixes = Some({
  351         -
                        let container = if let Some(cap) = deser.container_size() {
  352         -
                            Vec::with_capacity(cap)
  353         -
                        } else {
  354         -
                            Vec::new()
  355         -
                        };
  356         -
                        deser.read_list(member, container, |mut list, deser| {
  357         -
                            list.push(crate::types::CommonPrefix::deserialize(deser)?);
  358         -
                            Ok(list)
  359         -
                        })?
         356  +
                        let mut container = Vec::new();
         357  +
                        deser.read_list(member, &mut |deser| {
         358  +
                            container.push(crate::types::CommonPrefix::deserialize(deser)?);
         359  +
                            Ok(())
         360  +
                        })?;
         361  +
                        container
  360    362   
                    });
  361    363   
                }
  362    364   
                Some(9) => {
  363    365   
                    builder.encoding_type = Some(crate::types::EncodingType::from(deser.read_string(member)?.as_str()));
  364    366   
                }
  365    367   
                Some(10) => {
  366    368   
                    builder.request_charged = Some(crate::types::RequestCharged::from(deser.read_string(member)?.as_str()));
  367    369   
                }
         370  +
                Some(11) => {
         371  +
                    builder._request_id = Some(deser.read_string(member)?);
         372  +
                }
         373  +
                _ => {}
         374  +
            }
         375  +
            Ok(())
         376  +
        })?;
         377  +
        Ok(builder.build())
         378  +
    }
         379  +
}
         380  +
impl ListObjectsOutput {
         381  +
    /// Deserializes this structure from a body deserializer and HTTP response headers.
         382  +
    /// Header-bound members are read directly from headers, avoiding runtime
         383  +
    /// member iteration overhead. Body members are read via the deserializer.
         384  +
    pub fn deserialize_with_response(
         385  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         386  +
        headers: &::aws_smithy_runtime_api::http::Headers,
         387  +
        _status: u16,
         388  +
        _body: &[u8],
         389  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         390  +
        #[allow(unused_variables, unused_mut)]
         391  +
        let mut builder = Self::builder();
         392  +
        if let Some(val) = headers.get("x-amz-request-charged") {
         393  +
            builder.request_charged = Some(crate::types::RequestCharged::from(val));
         394  +
        }
         395  +
        if let Some(val) = headers.get("x-amzn-requestid") {
         396  +
            builder._request_id = Some(val.to_string());
         397  +
        }
         398  +
        #[allow(
         399  +
            unused_variables,
         400  +
            unreachable_code,
         401  +
            clippy::single_match,
         402  +
            clippy::match_single_binding,
         403  +
            clippy::diverging_sub_expression
         404  +
        )]
         405  +
        deserializer.read_struct(&LISTOBJECTSOUTPUT_SCHEMA, &mut |member, deser| {
         406  +
            match member.member_index() {
         407  +
                Some(0) => {
         408  +
                    builder.is_truncated = Some(deser.read_boolean(member)?);
         409  +
                }
         410  +
                Some(1) => {
         411  +
                    builder.marker = Some(deser.read_string(member)?);
         412  +
                }
         413  +
                Some(2) => {
         414  +
                    builder.next_marker = Some(deser.read_string(member)?);
         415  +
                }
         416  +
                Some(3) => {
         417  +
                    builder.contents = Some({
         418  +
                        let mut container = Vec::new();
         419  +
                        deser.read_list(member, &mut |deser| {
         420  +
                            container.push(crate::types::Object::deserialize(deser)?);
         421  +
                            Ok(())
         422  +
                        })?;
         423  +
                        container
         424  +
                    });
         425  +
                }
         426  +
                Some(4) => {
         427  +
                    builder.name = Some(deser.read_string(member)?);
         428  +
                }
         429  +
                Some(5) => {
         430  +
                    builder.prefix = Some(deser.read_string(member)?);
         431  +
                }
         432  +
                Some(6) => {
         433  +
                    builder.delimiter = Some(deser.read_string(member)?);
         434  +
                }
         435  +
                Some(7) => {
         436  +
                    builder.max_keys = Some(deser.read_integer(member)?);
         437  +
                }
         438  +
                Some(8) => {
         439  +
                    builder.common_prefixes = Some({
         440  +
                        let mut container = Vec::new();
         441  +
                        deser.read_list(member, &mut |deser| {
         442  +
                            container.push(crate::types::CommonPrefix::deserialize(deser)?);
         443  +
                            Ok(())
         444  +
                        })?;
         445  +
                        container
         446  +
                    });
         447  +
                }
         448  +
                Some(9) => {
         449  +
                    builder.encoding_type = Some(crate::types::EncodingType::from(deser.read_string(member)?.as_str()));
         450  +
                }
         451  +
                Some(10) => { /* read from headers above */ }
  368    452   
                _ => {}
  369    453   
            }
  370    454   
            Ok(())
  371    455   
        })?;
  372    456   
        Ok(builder.build())
  373    457   
    }
  374    458   
}
  375    459   
impl crate::s3_request_id::RequestIdExt for ListObjectsOutput {
  376    460   
    fn extended_request_id(&self) -> Option<&str> {
  377    461   
        self._extended_request_id.as_deref()

tmp-codegen-diff/aws-sdk/sdk/s3/src/operation/list_objects_v2.rs

@@ -1,1 +40,44 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2      2   
/// Orchestration and serialization glue logic for `ListObjectsV2`.
    3      3   
#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
    4      4   
#[non_exhaustive]
    5      5   
pub struct ListObjectsV2;
    6      6   
impl ListObjectsV2 {
    7      7   
    /// Creates a new `ListObjectsV2`
    8      8   
    pub fn new() -> Self {
    9      9   
        Self
   10     10   
    }
          11  +
    /// The schema for this operation's input shape.
          12  +
    pub const INPUT_SCHEMA: &'static ::aws_smithy_schema::Schema = crate::operation::list_objects_v2::ListObjectsV2Input::SCHEMA;
          13  +
    /// The schema for this operation's output shape.
          14  +
    pub const OUTPUT_SCHEMA: &'static ::aws_smithy_schema::Schema = crate::operation::list_objects_v2::ListObjectsV2Output::SCHEMA;
   11     15   
    pub(crate) async fn orchestrate(
   12     16   
        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
   13     17   
        input: crate::operation::list_objects_v2::ListObjectsV2Input,
   14     18   
    ) -> ::std::result::Result<
   15     19   
        crate::operation::list_objects_v2::ListObjectsV2Output,
   16     20   
        ::aws_smithy_runtime_api::client::result::SdkError<
   17     21   
            crate::operation::list_objects_v2::ListObjectsV2Error,
   18     22   
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
   19     23   
        >,
   20     24   
    > {
@@ -121,125 +183,188 @@
  141    145   
                    .build(),
  142    146   
            );
  143    147   
  144    148   
        ::std::borrow::Cow::Owned(rcb)
  145    149   
    }
  146    150   
}
  147    151   
  148    152   
#[derive(Debug)]
  149    153   
struct ListObjectsV2ResponseDeserializer;
  150    154   
impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for ListObjectsV2ResponseDeserializer {
  151         -
    fn deserialize_nonstreaming(
         155  +
    fn deserialize_nonstreaming_with_config(
  152    156   
        &self,
  153    157   
        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
         158  +
        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
  154    159   
    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
  155    160   
        let (success, status) = (response.status().is_success(), response.status().as_u16());
  156    161   
        let headers = response.headers();
  157    162   
        let body = response.body().bytes().expect("body loaded");
  158    163   
        #[allow(unused_mut)]
  159    164   
        let mut force_error = false;
  160    165   
        ::tracing::debug!(extended_request_id = ?crate::s3_request_id::RequestIdExt::extended_request_id(response));
  161    166   
        if matches!(crate::rest_xml_unwrapped_errors::body_is_error(body), Ok(true)) {
  162    167   
            force_error = true;
  163    168   
        }

tmp-codegen-diff/aws-sdk/sdk/s3/src/operation/list_objects_v2/_list_objects_v2_input.rs

@@ -107,107 +414,479 @@
  127    127   
    "com.amazonaws.s3.synthetic",
  128    128   
    "ListObjectsV2Input",
  129    129   
);
  130    130   
static LISTOBJECTSV2INPUT_MEMBER_BUCKET: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  131    131   
    ::aws_smithy_schema::ShapeId::from_static(
  132    132   
        "com.amazonaws.s3.synthetic#ListObjectsV2Input$Bucket",
  133    133   
        "com.amazonaws.s3.synthetic",
  134    134   
        "ListObjectsV2Input",
  135    135   
    ),
  136    136   
    ::aws_smithy_schema::ShapeType::String,
  137         -
    "bucket",
         137  +
    "Bucket",
  138    138   
    0,
  139    139   
)
  140    140   
.with_http_label();
  141    141   
static LISTOBJECTSV2INPUT_MEMBER_DELIMITER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  142    142   
    ::aws_smithy_schema::ShapeId::from_static(
  143    143   
        "com.amazonaws.s3.synthetic#ListObjectsV2Input$Delimiter",
  144    144   
        "com.amazonaws.s3.synthetic",
  145    145   
        "ListObjectsV2Input",
  146    146   
    ),
  147    147   
    ::aws_smithy_schema::ShapeType::String,
  148         -
    "delimiter",
         148  +
    "Delimiter",
  149    149   
    1,
  150    150   
)
  151    151   
.with_http_query("delimiter");
  152    152   
static LISTOBJECTSV2INPUT_MEMBER_ENCODING_TYPE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  153    153   
    ::aws_smithy_schema::ShapeId::from_static(
  154    154   
        "com.amazonaws.s3.synthetic#ListObjectsV2Input$EncodingType",
  155    155   
        "com.amazonaws.s3.synthetic",
  156    156   
        "ListObjectsV2Input",
  157    157   
    ),
  158    158   
    ::aws_smithy_schema::ShapeType::String,
  159         -
    "encoding_type",
         159  +
    "EncodingType",
  160    160   
    2,
  161    161   
)
  162    162   
.with_http_query("encoding-type");
  163    163   
static LISTOBJECTSV2INPUT_MEMBER_MAX_KEYS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  164    164   
    ::aws_smithy_schema::ShapeId::from_static(
  165    165   
        "com.amazonaws.s3.synthetic#ListObjectsV2Input$MaxKeys",
  166    166   
        "com.amazonaws.s3.synthetic",
  167    167   
        "ListObjectsV2Input",
  168    168   
    ),
  169    169   
    ::aws_smithy_schema::ShapeType::Integer,
  170         -
    "max_keys",
         170  +
    "MaxKeys",
  171    171   
    3,
  172    172   
)
  173    173   
.with_http_query("max-keys");
  174    174   
static LISTOBJECTSV2INPUT_MEMBER_PREFIX: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  175    175   
    ::aws_smithy_schema::ShapeId::from_static(
  176    176   
        "com.amazonaws.s3.synthetic#ListObjectsV2Input$Prefix",
  177    177   
        "com.amazonaws.s3.synthetic",
  178    178   
        "ListObjectsV2Input",
  179    179   
    ),
  180    180   
    ::aws_smithy_schema::ShapeType::String,
  181         -
    "prefix",
         181  +
    "Prefix",
  182    182   
    4,
  183    183   
)
  184    184   
.with_http_query("prefix");
  185    185   
static LISTOBJECTSV2INPUT_MEMBER_CONTINUATION_TOKEN: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  186    186   
    ::aws_smithy_schema::ShapeId::from_static(
  187    187   
        "com.amazonaws.s3.synthetic#ListObjectsV2Input$ContinuationToken",
  188    188   
        "com.amazonaws.s3.synthetic",
  189    189   
        "ListObjectsV2Input",
  190    190   
    ),
  191    191   
    ::aws_smithy_schema::ShapeType::String,
  192         -
    "continuation_token",
         192  +
    "ContinuationToken",
  193    193   
    5,
  194    194   
)
  195    195   
.with_http_query("continuation-token");
  196    196   
static LISTOBJECTSV2INPUT_MEMBER_FETCH_OWNER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  197    197   
    ::aws_smithy_schema::ShapeId::from_static(
  198    198   
        "com.amazonaws.s3.synthetic#ListObjectsV2Input$FetchOwner",
  199    199   
        "com.amazonaws.s3.synthetic",
  200    200   
        "ListObjectsV2Input",
  201    201   
    ),
  202    202   
    ::aws_smithy_schema::ShapeType::Boolean,
  203         -
    "fetch_owner",
         203  +
    "FetchOwner",
  204    204   
    6,
  205    205   
)
  206    206   
.with_http_query("fetch-owner");
  207    207   
static LISTOBJECTSV2INPUT_MEMBER_START_AFTER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  208    208   
    ::aws_smithy_schema::ShapeId::from_static(
  209    209   
        "com.amazonaws.s3.synthetic#ListObjectsV2Input$StartAfter",
  210    210   
        "com.amazonaws.s3.synthetic",
  211    211   
        "ListObjectsV2Input",
  212    212   
    ),
  213    213   
    ::aws_smithy_schema::ShapeType::String,
  214         -
    "start_after",
         214  +
    "StartAfter",
  215    215   
    7,
  216    216   
)
  217    217   
.with_http_query("start-after");
  218    218   
static LISTOBJECTSV2INPUT_MEMBER_REQUEST_PAYER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  219    219   
    ::aws_smithy_schema::ShapeId::from_static(
  220    220   
        "com.amazonaws.s3.synthetic#ListObjectsV2Input$RequestPayer",
  221    221   
        "com.amazonaws.s3.synthetic",
  222    222   
        "ListObjectsV2Input",
  223    223   
    ),
  224    224   
    ::aws_smithy_schema::ShapeType::String,
  225         -
    "request_payer",
         225  +
    "RequestPayer",
  226    226   
    8,
  227    227   
)
  228    228   
.with_http_header("x-amz-request-payer");
  229    229   
static LISTOBJECTSV2INPUT_MEMBER_EXPECTED_BUCKET_OWNER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  230    230   
    ::aws_smithy_schema::ShapeId::from_static(
  231    231   
        "com.amazonaws.s3.synthetic#ListObjectsV2Input$ExpectedBucketOwner",
  232    232   
        "com.amazonaws.s3.synthetic",
  233    233   
        "ListObjectsV2Input",
  234    234   
    ),
  235    235   
    ::aws_smithy_schema::ShapeType::String,
  236         -
    "expected_bucket_owner",
         236  +
    "ExpectedBucketOwner",
  237    237   
    9,
  238    238   
)
  239    239   
.with_http_header("x-amz-expected-bucket-owner");
  240    240   
static LISTOBJECTSV2INPUT_MEMBER_OPTIONAL_OBJECT_ATTRIBUTES: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  241    241   
    ::aws_smithy_schema::ShapeId::from_static(
  242    242   
        "com.amazonaws.s3.synthetic#ListObjectsV2Input$OptionalObjectAttributes",
  243    243   
        "com.amazonaws.s3.synthetic",
  244    244   
        "ListObjectsV2Input",
  245    245   
    ),
  246    246   
    ::aws_smithy_schema::ShapeType::List,
  247         -
    "optional_object_attributes",
         247  +
    "OptionalObjectAttributes",
  248    248   
    10,
  249    249   
)
  250    250   
.with_http_header("x-amz-optional-object-attributes");
  251    251   
static LISTOBJECTSV2INPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  252    252   
    LISTOBJECTSV2INPUT_SCHEMA_ID,
  253    253   
    ::aws_smithy_schema::ShapeType::Structure,
  254    254   
    &[
  255    255   
        &LISTOBJECTSV2INPUT_MEMBER_BUCKET,
  256    256   
        &LISTOBJECTSV2INPUT_MEMBER_DELIMITER,
  257    257   
        &LISTOBJECTSV2INPUT_MEMBER_ENCODING_TYPE,
  258    258   
        &LISTOBJECTSV2INPUT_MEMBER_MAX_KEYS,
  259    259   
        &LISTOBJECTSV2INPUT_MEMBER_PREFIX,
  260    260   
        &LISTOBJECTSV2INPUT_MEMBER_CONTINUATION_TOKEN,
  261    261   
        &LISTOBJECTSV2INPUT_MEMBER_FETCH_OWNER,
  262    262   
        &LISTOBJECTSV2INPUT_MEMBER_START_AFTER,
  263    263   
        &LISTOBJECTSV2INPUT_MEMBER_REQUEST_PAYER,
  264    264   
        &LISTOBJECTSV2INPUT_MEMBER_EXPECTED_BUCKET_OWNER,
  265    265   
        &LISTOBJECTSV2INPUT_MEMBER_OPTIONAL_OBJECT_ATTRIBUTES,
  266    266   
    ],
  267         -
);
         267  +
)
         268  +
.with_http(aws_smithy_schema::traits::HttpTrait::new("GET", "/?list-type=2", None));
  268    269   
impl ListObjectsV2Input {
  269    270   
    /// The schema for this shape.
  270    271   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &LISTOBJECTSV2INPUT_SCHEMA;
  271    272   
}
  272    273   
impl ::aws_smithy_schema::serde::SerializableStruct for ListObjectsV2Input {
  273    274   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
  274    275   
    fn serialize_members(
  275    276   
        &self,
  276    277   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
  277    278   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
  278    279   
        if let Some(ref val) = self.bucket {
  279    280   
            ser.write_string(&LISTOBJECTSV2INPUT_MEMBER_BUCKET, val)?;
  280    281   
        }
  281    282   
        if let Some(ref val) = self.delimiter {
  282    283   
            ser.write_string(&LISTOBJECTSV2INPUT_MEMBER_DELIMITER, val)?;
  283    284   
        }
  284    285   
        if let Some(ref val) = self.encoding_type {
  285    286   
            ser.write_string(&LISTOBJECTSV2INPUT_MEMBER_ENCODING_TYPE, val.as_str())?;
  286    287   
        }
  287    288   
        if let Some(ref val) = self.max_keys {
  288    289   
            ser.write_integer(&LISTOBJECTSV2INPUT_MEMBER_MAX_KEYS, *val)?;
  289    290   
        }
  290    291   
        if let Some(ref val) = self.prefix {
  291    292   
            ser.write_string(&LISTOBJECTSV2INPUT_MEMBER_PREFIX, val)?;
  292    293   
        }
  293    294   
        if let Some(ref val) = self.continuation_token {
  294    295   
            ser.write_string(&LISTOBJECTSV2INPUT_MEMBER_CONTINUATION_TOKEN, val)?;
  295    296   
        }
  296    297   
        if let Some(ref val) = self.fetch_owner {
  297    298   
            ser.write_boolean(&LISTOBJECTSV2INPUT_MEMBER_FETCH_OWNER, *val)?;
  298    299   
        }
  299    300   
        if let Some(ref val) = self.start_after {
  300    301   
            ser.write_string(&LISTOBJECTSV2INPUT_MEMBER_START_AFTER, val)?;
  301    302   
        }
  302    303   
        if let Some(ref val) = self.request_payer {
  303    304   
            ser.write_string(&LISTOBJECTSV2INPUT_MEMBER_REQUEST_PAYER, val.as_str())?;
  304    305   
        }
  305    306   
        if let Some(ref val) = self.expected_bucket_owner {
  306    307   
            ser.write_string(&LISTOBJECTSV2INPUT_MEMBER_EXPECTED_BUCKET_OWNER, val)?;
  307    308   
        }
  308    309   
        if let Some(ref val) = self.optional_object_attributes {
  309    310   
            ser.write_list(
  310    311   
                &LISTOBJECTSV2INPUT_MEMBER_OPTIONAL_OBJECT_ATTRIBUTES,
  311    312   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  312    313   
                    for item in val {
  313    314   
                        ser.write_string(&aws_smithy_schema::prelude::STRING, item.as_str())?;
  314    315   
                    }
  315    316   
                    Ok(())
  316    317   
                },
  317    318   
            )?;
  318    319   
        }
  319    320   
        Ok(())
  320    321   
    }
  321    322   
}
  322    323   
impl ListObjectsV2Input {
  323    324   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  324         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  325         -
        deserializer: &mut D,
         325  +
    pub fn deserialize(
         326  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  326    327   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  327    328   
        #[allow(unused_variables, unused_mut)]
  328    329   
        let mut builder = Self::builder();
  329    330   
        #[allow(
  330    331   
            unused_variables,
  331    332   
            unreachable_code,
  332    333   
            clippy::single_match,
  333    334   
            clippy::match_single_binding,
  334    335   
            clippy::diverging_sub_expression
  335    336   
        )]
  336         -
        deserializer.read_struct(&LISTOBJECTSV2INPUT_SCHEMA, (), |_, member, deser| {
         337  +
        deserializer.read_struct(&LISTOBJECTSV2INPUT_SCHEMA, &mut |member, deser| {
  337    338   
            match member.member_index() {
  338    339   
                Some(0) => {
  339    340   
                    builder.bucket = Some(deser.read_string(member)?);
  340    341   
                }
  341    342   
                Some(1) => {
  342    343   
                    builder.delimiter = Some(deser.read_string(member)?);
  343    344   
                }
  344    345   
                Some(2) => {
  345    346   
                    builder.encoding_type = Some(crate::types::EncodingType::from(deser.read_string(member)?.as_str()));
  346    347   
                }
  347    348   
                Some(3) => {
  348    349   
                    builder.max_keys = Some(deser.read_integer(member)?);
  349    350   
                }
  350    351   
                Some(4) => {
  351    352   
                    builder.prefix = Some(deser.read_string(member)?);
  352    353   
                }
  353    354   
                Some(5) => {
  354    355   
                    builder.continuation_token = Some(deser.read_string(member)?);
  355    356   
                }
  356    357   
                Some(6) => {
  357    358   
                    builder.fetch_owner = Some(deser.read_boolean(member)?);
  358    359   
                }
  359    360   
                Some(7) => {
  360    361   
                    builder.start_after = Some(deser.read_string(member)?);
  361    362   
                }
  362    363   
                Some(8) => {
  363    364   
                    builder.request_payer = Some(crate::types::RequestPayer::from(deser.read_string(member)?.as_str()));
  364    365   
                }
  365    366   
                Some(9) => {
  366    367   
                    builder.expected_bucket_owner = Some(deser.read_string(member)?);
  367    368   
                }
  368    369   
                Some(10) => {
  369    370   
                    builder.optional_object_attributes = Some({
  370         -
                        let container = if let Some(cap) = deser.container_size() {
  371         -
                            Vec::with_capacity(cap)
  372         -
                        } else {
  373         -
                            Vec::new()
  374         -
                        };
  375         -
                        deser.read_list(member, container, |mut list, deser| {
  376         -
                            list.push(crate::types::OptionalObjectAttributes::from(deser.read_string(member)?.as_str()));
  377         -
                            Ok(list)
  378         -
                        })?
         371  +
                        let mut container = Vec::new();
         372  +
                        deser.read_list(member, &mut |deser| {
         373  +
                            container.push(crate::types::OptionalObjectAttributes::from(deser.read_string(member)?.as_str()));
         374  +
                            Ok(())
         375  +
                        })?;
         376  +
                        container
  379    377   
                    });
  380    378   
                }
  381    379   
                _ => {}
  382    380   
            }
  383    381   
            Ok(())
  384    382   
        })?;
         383  +
        builder.bucket = builder.bucket.or(Some(String::new()));
         384  +
        builder
         385  +
            .build()
         386  +
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
         387  +
    }
         388  +
}
         389  +
impl ListObjectsV2Input {
         390  +
    /// Deserializes this structure from a body deserializer and HTTP response headers.
         391  +
    /// Header-bound members are read directly from headers, avoiding runtime
         392  +
    /// member iteration overhead. Body members are read via the deserializer.
         393  +
    pub fn deserialize_with_response(
         394  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         395  +
        headers: &::aws_smithy_runtime_api::http::Headers,
         396  +
        _status: u16,
         397  +
        _body: &[u8],
         398  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         399  +
        #[allow(unused_variables, unused_mut)]
         400  +
        let mut builder = Self::builder();
         401  +
        if let Some(val) = headers.get("x-amz-request-payer") {
         402  +
            builder.request_payer = Some(crate::types::RequestPayer::from(val));
         403  +
        }
         404  +
        if let Some(val) = headers.get("x-amz-expected-bucket-owner") {
         405  +
            builder.expected_bucket_owner = Some(val.to_string());
         406  +
        }
         407  +
        if let Some(val) = headers.get("x-amz-optional-object-attributes") {
         408  +
            builder.optional_object_attributes = Some(val.split(',').map(|s| crate::types::OptionalObjectAttributes::from(s.trim())).collect());
         409  +
        }
         410  +
        #[allow(
         411  +
            unused_variables,
         412  +
            unreachable_code,
         413  +
            clippy::single_match,
         414  +
            clippy::match_single_binding,
         415  +
            clippy::diverging_sub_expression
         416  +
        )]
         417  +
        deserializer.read_struct(&LISTOBJECTSV2INPUT_SCHEMA, &mut |member, deser| {
         418  +
            match member.member_index() {
         419  +
                Some(0) => {
         420  +
                    builder.bucket = Some(deser.read_string(member)?);
         421  +
                }
         422  +
                Some(1) => {
         423  +
                    builder.delimiter = Some(deser.read_string(member)?);
         424  +
                }
         425  +
                Some(2) => {
         426  +
                    builder.encoding_type = Some(crate::types::EncodingType::from(deser.read_string(member)?.as_str()));
         427  +
                }
         428  +
                Some(3) => {
         429  +
                    builder.max_keys = Some(deser.read_integer(member)?);
         430  +
                }
         431  +
                Some(4) => {
         432  +
                    builder.prefix = Some(deser.read_string(member)?);
         433  +
                }
         434  +
                Some(5) => {
         435  +
                    builder.continuation_token = Some(deser.read_string(member)?);
         436  +
                }
         437  +
                Some(6) => {
         438  +
                    builder.fetch_owner = Some(deser.read_boolean(member)?);
         439  +
                }
         440  +
                Some(7) => {
         441  +
                    builder.start_after = Some(deser.read_string(member)?);
         442  +
                }
         443  +
                Some(8) => { /* read from headers above */ }
         444  +
                Some(9) => { /* read from headers above */ }
         445  +
                Some(10) => { /* read from headers above */ }
         446  +
                _ => {}
         447  +
            }
         448  +
            Ok(())
         449  +
        })?;
  385    450   
        builder
  386    451   
            .build()
  387    452   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
  388    453   
    }
  389    454   
}
  390    455   
impl ListObjectsV2Input {
  391    456   
    /// Creates a new builder-style object to manufacture [`ListObjectsV2Input`](crate::operation::list_objects_v2::ListObjectsV2Input).
  392    457   
    pub fn builder() -> crate::operation::list_objects_v2::builders::ListObjectsV2InputBuilder {
  393    458   
        crate::operation::list_objects_v2::builders::ListObjectsV2InputBuilder::default()
  394    459   
    }

tmp-codegen-diff/aws-sdk/sdk/s3/src/operation/list_objects_v2/_list_objects_v2_output.rs

@@ -117,117 +319,327 @@
  137    137   
    "com.amazonaws.s3.synthetic",
  138    138   
    "ListObjectsV2Output",
  139    139   
);
  140    140   
static LISTOBJECTSV2OUTPUT_MEMBER_IS_TRUNCATED: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  141    141   
    ::aws_smithy_schema::ShapeId::from_static(
  142    142   
        "com.amazonaws.s3.synthetic#ListObjectsV2Output$IsTruncated",
  143    143   
        "com.amazonaws.s3.synthetic",
  144    144   
        "ListObjectsV2Output",
  145    145   
    ),
  146    146   
    ::aws_smithy_schema::ShapeType::Boolean,
  147         -
    "is_truncated",
         147  +
    "IsTruncated",
  148    148   
    0,
  149    149   
);
  150    150   
static LISTOBJECTSV2OUTPUT_MEMBER_CONTENTS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  151    151   
    ::aws_smithy_schema::ShapeId::from_static(
  152    152   
        "com.amazonaws.s3.synthetic#ListObjectsV2Output$Contents",
  153    153   
        "com.amazonaws.s3.synthetic",
  154    154   
        "ListObjectsV2Output",
  155    155   
    ),
  156    156   
    ::aws_smithy_schema::ShapeType::List,
  157         -
    "contents",
         157  +
    "Contents",
  158    158   
    1,
  159    159   
)
  160    160   
.with_xml_flattened();
  161    161   
static LISTOBJECTSV2OUTPUT_MEMBER_NAME: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  162    162   
    ::aws_smithy_schema::ShapeId::from_static(
  163    163   
        "com.amazonaws.s3.synthetic#ListObjectsV2Output$Name",
  164    164   
        "com.amazonaws.s3.synthetic",
  165    165   
        "ListObjectsV2Output",
  166    166   
    ),
  167    167   
    ::aws_smithy_schema::ShapeType::String,
  168         -
    "name",
         168  +
    "Name",
  169    169   
    2,
  170    170   
);
  171    171   
static LISTOBJECTSV2OUTPUT_MEMBER_PREFIX: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  172    172   
    ::aws_smithy_schema::ShapeId::from_static(
  173    173   
        "com.amazonaws.s3.synthetic#ListObjectsV2Output$Prefix",
  174    174   
        "com.amazonaws.s3.synthetic",
  175    175   
        "ListObjectsV2Output",
  176    176   
    ),
  177    177   
    ::aws_smithy_schema::ShapeType::String,
  178         -
    "prefix",
         178  +
    "Prefix",
  179    179   
    3,
  180    180   
);
  181    181   
static LISTOBJECTSV2OUTPUT_MEMBER_DELIMITER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  182    182   
    ::aws_smithy_schema::ShapeId::from_static(
  183    183   
        "com.amazonaws.s3.synthetic#ListObjectsV2Output$Delimiter",
  184    184   
        "com.amazonaws.s3.synthetic",
  185    185   
        "ListObjectsV2Output",
  186    186   
    ),
  187    187   
    ::aws_smithy_schema::ShapeType::String,
  188         -
    "delimiter",
         188  +
    "Delimiter",
  189    189   
    4,
  190    190   
);
  191    191   
static LISTOBJECTSV2OUTPUT_MEMBER_MAX_KEYS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  192    192   
    ::aws_smithy_schema::ShapeId::from_static(
  193    193   
        "com.amazonaws.s3.synthetic#ListObjectsV2Output$MaxKeys",
  194    194   
        "com.amazonaws.s3.synthetic",
  195    195   
        "ListObjectsV2Output",
  196    196   
    ),
  197    197   
    ::aws_smithy_schema::ShapeType::Integer,
  198         -
    "max_keys",
         198  +
    "MaxKeys",
  199    199   
    5,
  200    200   
);
  201    201   
static LISTOBJECTSV2OUTPUT_MEMBER_COMMON_PREFIXES: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  202    202   
    ::aws_smithy_schema::ShapeId::from_static(
  203    203   
        "com.amazonaws.s3.synthetic#ListObjectsV2Output$CommonPrefixes",
  204    204   
        "com.amazonaws.s3.synthetic",
  205    205   
        "ListObjectsV2Output",
  206    206   
    ),
  207    207   
    ::aws_smithy_schema::ShapeType::List,
  208         -
    "common_prefixes",
         208  +
    "CommonPrefixes",
  209    209   
    6,
  210    210   
)
  211    211   
.with_xml_flattened();
  212    212   
static LISTOBJECTSV2OUTPUT_MEMBER_ENCODING_TYPE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  213    213   
    ::aws_smithy_schema::ShapeId::from_static(
  214    214   
        "com.amazonaws.s3.synthetic#ListObjectsV2Output$EncodingType",
  215    215   
        "com.amazonaws.s3.synthetic",
  216    216   
        "ListObjectsV2Output",
  217    217   
    ),
  218    218   
    ::aws_smithy_schema::ShapeType::String,
  219         -
    "encoding_type",
         219  +
    "EncodingType",
  220    220   
    7,
  221    221   
);
  222    222   
static LISTOBJECTSV2OUTPUT_MEMBER_KEY_COUNT: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  223    223   
    ::aws_smithy_schema::ShapeId::from_static(
  224    224   
        "com.amazonaws.s3.synthetic#ListObjectsV2Output$KeyCount",
  225    225   
        "com.amazonaws.s3.synthetic",
  226    226   
        "ListObjectsV2Output",
  227    227   
    ),
  228    228   
    ::aws_smithy_schema::ShapeType::Integer,
  229         -
    "key_count",
         229  +
    "KeyCount",
  230    230   
    8,
  231    231   
);
  232    232   
static LISTOBJECTSV2OUTPUT_MEMBER_CONTINUATION_TOKEN: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  233    233   
    ::aws_smithy_schema::ShapeId::from_static(
  234    234   
        "com.amazonaws.s3.synthetic#ListObjectsV2Output$ContinuationToken",
  235    235   
        "com.amazonaws.s3.synthetic",
  236    236   
        "ListObjectsV2Output",
  237    237   
    ),
  238    238   
    ::aws_smithy_schema::ShapeType::String,
  239         -
    "continuation_token",
         239  +
    "ContinuationToken",
  240    240   
    9,
  241    241   
);
  242    242   
static LISTOBJECTSV2OUTPUT_MEMBER_NEXT_CONTINUATION_TOKEN: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  243    243   
    ::aws_smithy_schema::ShapeId::from_static(
  244    244   
        "com.amazonaws.s3.synthetic#ListObjectsV2Output$NextContinuationToken",
  245    245   
        "com.amazonaws.s3.synthetic",
  246    246   
        "ListObjectsV2Output",
  247    247   
    ),
  248    248   
    ::aws_smithy_schema::ShapeType::String,
  249         -
    "next_continuation_token",
         249  +
    "NextContinuationToken",
  250    250   
    10,
  251    251   
);
  252    252   
static LISTOBJECTSV2OUTPUT_MEMBER_START_AFTER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  253    253   
    ::aws_smithy_schema::ShapeId::from_static(
  254    254   
        "com.amazonaws.s3.synthetic#ListObjectsV2Output$StartAfter",
  255    255   
        "com.amazonaws.s3.synthetic",
  256    256   
        "ListObjectsV2Output",
  257    257   
    ),
  258    258   
    ::aws_smithy_schema::ShapeType::String,
  259         -
    "start_after",
         259  +
    "StartAfter",
  260    260   
    11,
  261    261   
);
  262    262   
static LISTOBJECTSV2OUTPUT_MEMBER_REQUEST_CHARGED: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  263    263   
    ::aws_smithy_schema::ShapeId::from_static(
  264    264   
        "com.amazonaws.s3.synthetic#ListObjectsV2Output$RequestCharged",
  265    265   
        "com.amazonaws.s3.synthetic",
  266    266   
        "ListObjectsV2Output",
  267    267   
    ),
  268    268   
    ::aws_smithy_schema::ShapeType::String,
  269         -
    "request_charged",
         269  +
    "RequestCharged",
  270    270   
    12,
  271    271   
)
  272    272   
.with_http_header("x-amz-request-charged");
         273  +
static LISTOBJECTSV2OUTPUT_MEMBER__REQUEST_ID: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
         274  +
    ::aws_smithy_schema::ShapeId::from_static("synthetic#request_id", "synthetic", "request_id"),
         275  +
    ::aws_smithy_schema::ShapeType::String,
         276  +
    "request_id",
         277  +
    13,
         278  +
)
         279  +
.with_http_header("x-amzn-requestid");
  273    280   
static LISTOBJECTSV2OUTPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  274    281   
    LISTOBJECTSV2OUTPUT_SCHEMA_ID,
  275    282   
    ::aws_smithy_schema::ShapeType::Structure,
  276    283   
    &[
  277    284   
        &LISTOBJECTSV2OUTPUT_MEMBER_IS_TRUNCATED,
  278    285   
        &LISTOBJECTSV2OUTPUT_MEMBER_CONTENTS,
  279    286   
        &LISTOBJECTSV2OUTPUT_MEMBER_NAME,
  280    287   
        &LISTOBJECTSV2OUTPUT_MEMBER_PREFIX,
  281    288   
        &LISTOBJECTSV2OUTPUT_MEMBER_DELIMITER,
  282    289   
        &LISTOBJECTSV2OUTPUT_MEMBER_MAX_KEYS,
  283    290   
        &LISTOBJECTSV2OUTPUT_MEMBER_COMMON_PREFIXES,
  284    291   
        &LISTOBJECTSV2OUTPUT_MEMBER_ENCODING_TYPE,
  285    292   
        &LISTOBJECTSV2OUTPUT_MEMBER_KEY_COUNT,
  286    293   
        &LISTOBJECTSV2OUTPUT_MEMBER_CONTINUATION_TOKEN,
  287    294   
        &LISTOBJECTSV2OUTPUT_MEMBER_NEXT_CONTINUATION_TOKEN,
  288    295   
        &LISTOBJECTSV2OUTPUT_MEMBER_START_AFTER,
  289    296   
        &LISTOBJECTSV2OUTPUT_MEMBER_REQUEST_CHARGED,
         297  +
        &LISTOBJECTSV2OUTPUT_MEMBER__REQUEST_ID,
  290    298   
    ],
  291    299   
)
  292    300   
.with_xml_name("ListBucketResult");
  293    301   
impl ListObjectsV2Output {
  294    302   
    /// The schema for this shape.
  295    303   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &LISTOBJECTSV2OUTPUT_SCHEMA;
  296    304   
}
  297    305   
impl ::aws_smithy_schema::serde::SerializableStruct for ListObjectsV2Output {
  298    306   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
  299    307   
    fn serialize_members(
@@ -333,341 +465,555 @@
  353    361   
            ser.write_string(&LISTOBJECTSV2OUTPUT_MEMBER_START_AFTER, val)?;
  354    362   
        }
  355    363   
        if let Some(ref val) = self.request_charged {
  356    364   
            ser.write_string(&LISTOBJECTSV2OUTPUT_MEMBER_REQUEST_CHARGED, val.as_str())?;
  357    365   
        }
  358    366   
        Ok(())
  359    367   
    }
  360    368   
}
  361    369   
impl ListObjectsV2Output {
  362    370   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  363         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  364         -
        deserializer: &mut D,
         371  +
    pub fn deserialize(
         372  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  365    373   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  366    374   
        #[allow(unused_variables, unused_mut)]
  367    375   
        let mut builder = Self::builder();
  368    376   
        #[allow(
  369    377   
            unused_variables,
  370    378   
            unreachable_code,
  371    379   
            clippy::single_match,
  372    380   
            clippy::match_single_binding,
  373    381   
            clippy::diverging_sub_expression
  374    382   
        )]
  375         -
        deserializer.read_struct(&LISTOBJECTSV2OUTPUT_SCHEMA, (), |_, member, deser| {
         383  +
        deserializer.read_struct(&LISTOBJECTSV2OUTPUT_SCHEMA, &mut |member, deser| {
  376    384   
            match member.member_index() {
  377    385   
                Some(0) => {
  378    386   
                    builder.is_truncated = Some(deser.read_boolean(member)?);
  379    387   
                }
  380    388   
                Some(1) => {
  381    389   
                    builder.contents = Some({
  382         -
                        let container = if let Some(cap) = deser.container_size() {
  383         -
                            Vec::with_capacity(cap)
  384         -
                        } else {
  385         -
                            Vec::new()
  386         -
                        };
  387         -
                        deser.read_list(member, container, |mut list, deser| {
  388         -
                            list.push(crate::types::Object::deserialize(deser)?);
  389         -
                            Ok(list)
  390         -
                        })?
         390  +
                        let mut container = Vec::new();
         391  +
                        deser.read_list(member, &mut |deser| {
         392  +
                            container.push(crate::types::Object::deserialize(deser)?);
         393  +
                            Ok(())
         394  +
                        })?;
         395  +
                        container
  391    396   
                    });
  392    397   
                }
  393    398   
                Some(2) => {
  394    399   
                    builder.name = Some(deser.read_string(member)?);
  395    400   
                }
  396    401   
                Some(3) => {
  397    402   
                    builder.prefix = Some(deser.read_string(member)?);
  398    403   
                }
  399    404   
                Some(4) => {
  400    405   
                    builder.delimiter = Some(deser.read_string(member)?);
  401    406   
                }
  402    407   
                Some(5) => {
  403    408   
                    builder.max_keys = Some(deser.read_integer(member)?);
  404    409   
                }
  405    410   
                Some(6) => {
  406    411   
                    builder.common_prefixes = Some({
  407         -
                        let container = if let Some(cap) = deser.container_size() {
  408         -
                            Vec::with_capacity(cap)
  409         -
                        } else {
  410         -
                            Vec::new()
  411         -
                        };
  412         -
                        deser.read_list(member, container, |mut list, deser| {
  413         -
                            list.push(crate::types::CommonPrefix::deserialize(deser)?);
  414         -
                            Ok(list)
  415         -
                        })?
         412  +
                        let mut container = Vec::new();
         413  +
                        deser.read_list(member, &mut |deser| {
         414  +
                            container.push(crate::types::CommonPrefix::deserialize(deser)?);
         415  +
                            Ok(())
         416  +
                        })?;
         417  +
                        container
  416    418   
                    });
  417    419   
                }
  418    420   
                Some(7) => {
  419    421   
                    builder.encoding_type = Some(crate::types::EncodingType::from(deser.read_string(member)?.as_str()));
  420    422   
                }
  421    423   
                Some(8) => {
  422    424   
                    builder.key_count = Some(deser.read_integer(member)?);
  423    425   
                }
  424    426   
                Some(9) => {
  425    427   
                    builder.continuation_token = Some(deser.read_string(member)?);
  426    428   
                }
  427    429   
                Some(10) => {
  428    430   
                    builder.next_continuation_token = Some(deser.read_string(member)?);
  429    431   
                }
  430    432   
                Some(11) => {
  431    433   
                    builder.start_after = Some(deser.read_string(member)?);
  432    434   
                }
  433    435   
                Some(12) => {
  434    436   
                    builder.request_charged = Some(crate::types::RequestCharged::from(deser.read_string(member)?.as_str()));
  435    437   
                }
         438  +
                Some(13) => {
         439  +
                    builder._request_id = Some(deser.read_string(member)?);
         440  +
                }
         441  +
                _ => {}
         442  +
            }
         443  +
            Ok(())
         444  +
        })?;
         445  +
        Ok(builder.build())
         446  +
    }
         447  +
}
         448  +
impl ListObjectsV2Output {
         449  +
    /// Deserializes this structure from a body deserializer and HTTP response headers.
         450  +
    /// Header-bound members are read directly from headers, avoiding runtime
         451  +
    /// member iteration overhead. Body members are read via the deserializer.
         452  +
    pub fn deserialize_with_response(
         453  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         454  +
        headers: &::aws_smithy_runtime_api::http::Headers,
         455  +
        _status: u16,
         456  +
        _body: &[u8],
         457  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         458  +
        #[allow(unused_variables, unused_mut)]
         459  +
        let mut builder = Self::builder();
         460  +
        if let Some(val) = headers.get("x-amz-request-charged") {
         461  +
            builder.request_charged = Some(crate::types::RequestCharged::from(val));
         462  +
        }
         463  +
        if let Some(val) = headers.get("x-amzn-requestid") {
         464  +
            builder._request_id = Some(val.to_string());
         465  +
        }
         466  +
        #[allow(
         467  +
            unused_variables,
         468  +
            unreachable_code,
         469  +
            clippy::single_match,
         470  +
            clippy::match_single_binding,
         471  +
            clippy::diverging_sub_expression
         472  +
        )]
         473  +
        deserializer.read_struct(&LISTOBJECTSV2OUTPUT_SCHEMA, &mut |member, deser| {
         474  +
            match member.member_index() {
         475  +
                Some(0) => {
         476  +
                    builder.is_truncated = Some(deser.read_boolean(member)?);
         477  +
                }
         478  +
                Some(1) => {
         479  +
                    builder.contents = Some({
         480  +
                        let mut container = Vec::new();
         481  +
                        deser.read_list(member, &mut |deser| {
         482  +
                            container.push(crate::types::Object::deserialize(deser)?);
         483  +
                            Ok(())
         484  +
                        })?;
         485  +
                        container
         486  +
                    });
         487  +
                }
         488  +
                Some(2) => {
         489  +
                    builder.name = Some(deser.read_string(member)?);
         490  +
                }
         491  +
                Some(3) => {
         492  +
                    builder.prefix = Some(deser.read_string(member)?);
         493  +
                }
         494  +
                Some(4) => {
         495  +
                    builder.delimiter = Some(deser.read_string(member)?);
         496  +
                }
         497  +
                Some(5) => {
         498  +
                    builder.max_keys = Some(deser.read_integer(member)?);
         499  +
                }
         500  +
                Some(6) => {
         501  +
                    builder.common_prefixes = Some({
         502  +
                        let mut container = Vec::new();
         503  +
                        deser.read_list(member, &mut |deser| {
         504  +
                            container.push(crate::types::CommonPrefix::deserialize(deser)?);
         505  +
                            Ok(())
         506  +
                        })?;
         507  +
                        container
         508  +
                    });
         509  +
                }
         510  +
                Some(7) => {
         511  +
                    builder.encoding_type = Some(crate::types::EncodingType::from(deser.read_string(member)?.as_str()));
         512  +
                }
         513  +
                Some(8) => {
         514  +
                    builder.key_count = Some(deser.read_integer(member)?);
         515  +
                }
         516  +
                Some(9) => {
         517  +
                    builder.continuation_token = Some(deser.read_string(member)?);
         518  +
                }
         519  +
                Some(10) => {
         520  +
                    builder.next_continuation_token = Some(deser.read_string(member)?);
         521  +
                }
         522  +
                Some(11) => {
         523  +
                    builder.start_after = Some(deser.read_string(member)?);
         524  +
                }
         525  +
                Some(12) => { /* read from headers above */ }
  436    526   
                _ => {}
  437    527   
            }
  438    528   
            Ok(())
  439    529   
        })?;
  440    530   
        Ok(builder.build())
  441    531   
    }
  442    532   
}
  443    533   
impl crate::s3_request_id::RequestIdExt for ListObjectsV2Output {
  444    534   
    fn extended_request_id(&self) -> Option<&str> {
  445    535   
        self._extended_request_id.as_deref()