65 65 | )
|
66 66 | .with_http_header("X-C");
|
67 67 | static NULLANDEMPTYHEADERSCLIENTINPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
|
68 68 | NULLANDEMPTYHEADERSCLIENTINPUT_SCHEMA_ID,
|
69 69 | ::aws_smithy_schema::ShapeType::Structure,
|
70 70 | &[
|
71 71 | &NULLANDEMPTYHEADERSCLIENTINPUT_MEMBER_A,
|
72 72 | &NULLANDEMPTYHEADERSCLIENTINPUT_MEMBER_B,
|
73 73 | &NULLANDEMPTYHEADERSCLIENTINPUT_MEMBER_C,
|
74 74 | ],
|
75 - | );
|
75 + | )
|
76 + | .with_http(aws_smithy_schema::traits::HttpTrait::new("GET", "/NullAndEmptyHeadersClient", None));
|
76 77 | impl NullAndEmptyHeadersClientInput {
|
77 78 | /// The schema for this shape.
|
78 79 | pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &NULLANDEMPTYHEADERSCLIENTINPUT_SCHEMA;
|
79 80 | }
|
80 81 | impl ::aws_smithy_schema::serde::SerializableStruct for NullAndEmptyHeadersClientInput {
|
81 82 | #[allow(unused_variables, clippy::diverging_sub_expression)]
|
82 83 | fn serialize_members(
|
83 84 | &self,
|
84 85 | ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
|
85 86 | ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
|
86 87 | if let Some(ref val) = self.a {
|
87 88 | ser.write_string(&NULLANDEMPTYHEADERSCLIENTINPUT_MEMBER_A, val)?;
|
88 89 | }
|
89 90 | if let Some(ref val) = self.b {
|
90 91 | ser.write_string(&NULLANDEMPTYHEADERSCLIENTINPUT_MEMBER_B, val)?;
|
91 92 | }
|
92 93 | if let Some(ref val) = self.c {
|
93 94 | ser.write_list(
|
94 95 | &NULLANDEMPTYHEADERSCLIENTINPUT_MEMBER_C,
|
95 96 | &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
|
96 97 | for item in val {
|
97 98 | ser.write_string(&aws_smithy_schema::prelude::STRING, item)?;
|
98 99 | }
|
99 100 | Ok(())
|
100 101 | },
|
101 102 | )?;
|
102 103 | }
|
103 104 | Ok(())
|
104 105 | }
|
105 106 | }
|
106 107 | impl NullAndEmptyHeadersClientInput {
|
107 108 | /// Deserializes this structure from a [`ShapeDeserializer`].
|
108 - | pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
|
109 - | deserializer: &mut D,
|
109 + | pub fn deserialize(
|
110 + | deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
|
110 111 | ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
|
111 112 | #[allow(unused_variables, unused_mut)]
|
112 113 | let mut builder = Self::builder();
|
113 114 | #[allow(
|
114 115 | unused_variables,
|
115 116 | unreachable_code,
|
116 117 | clippy::single_match,
|
117 118 | clippy::match_single_binding,
|
118 119 | clippy::diverging_sub_expression
|
119 120 | )]
|
120 - | deserializer.read_struct(&NULLANDEMPTYHEADERSCLIENTINPUT_SCHEMA, (), |_, member, deser| {
|
121 + | deserializer.read_struct(&NULLANDEMPTYHEADERSCLIENTINPUT_SCHEMA, &mut |member, deser| {
|
121 122 | match member.member_index() {
|
122 123 | Some(0) => {
|
123 124 | builder.a = Some(deser.read_string(member)?);
|
124 125 | }
|
125 126 | Some(1) => {
|
126 127 | builder.b = Some(deser.read_string(member)?);
|
127 128 | }
|
128 129 | Some(2) => {
|
129 - | builder.c = Some({
|
130 - | let container = if let Some(cap) = deser.container_size() {
|
131 - | Vec::with_capacity(cap)
|
132 - | } else {
|
133 - | Vec::new()
|
134 - | };
|
135 - | deser.read_list(member, container, |mut list, deser| {
|
136 - | list.push(deser.read_string(member)?);
|
137 - | Ok(list)
|
138 - | })?
|
139 - | });
|
130 + | builder.c = Some(deser.read_string_list(member)?);
|
140 131 | }
|
141 132 | _ => {}
|
142 133 | }
|
143 134 | Ok(())
|
144 135 | })?;
|
145 136 | builder
|
146 137 | .build()
|
147 138 | .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
|
148 139 | }
|
149 140 | }
|
141 + | impl NullAndEmptyHeadersClientInput {
|
142 + | /// Deserializes this structure from a body deserializer and HTTP response headers.
|
143 + | /// Header-bound members are read directly from headers, avoiding runtime
|
144 + | /// member iteration overhead. Body members are read via the deserializer.
|
145 + | pub fn deserialize_with_response(
|
146 + | _deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
|
147 + | headers: &::aws_smithy_runtime_api::http::Headers,
|
148 + | _status: u16,
|
149 + | _body: &[u8],
|
150 + | ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
|
151 + | #[allow(unused_variables, unused_mut)]
|
152 + | let mut builder = Self::builder();
|
153 + | if let Some(val) = headers.get("X-A") {
|
154 + | builder.a = Some(val.to_string());
|
155 + | }
|
156 + | if let Some(val) = headers.get("X-B") {
|
157 + | builder.b = Some(val.to_string());
|
158 + | }
|
159 + | if let Some(val) = headers.get("X-C") {
|
160 + | builder.c = {
|
161 + | let mut items = Vec::new();
|
162 + | let mut chars = val.chars().peekable();
|
163 + | while chars.peek().is_some() {
|
164 + | // Skip whitespace
|
165 + | while chars.peek() == Some(&' ') {
|
166 + | chars.next();
|
167 + | }
|
168 + | if chars.peek() == Some(&'"') {
|
169 + | chars.next(); // skip opening quote
|
170 + | let mut s = String::new();
|
171 + | while let Some(&c) = chars.peek() {
|
172 + | if c == '\\' {
|
173 + | chars.next();
|
174 + | if let Some(escaped) = chars.next() {
|
175 + | s.push(escaped);
|
176 + | }
|
177 + | } else if c == '"' {
|
178 + | chars.next();
|
179 + | break;
|
180 + | } else {
|
181 + | s.push(c);
|
182 + | chars.next();
|
183 + | }
|
184 + | }
|
185 + | items.push(s);
|
186 + | } else {
|
187 + | let s: String = chars.by_ref().take_while(|&c| c != ',').collect();
|
188 + | let trimmed = s.trim();
|
189 + | if !trimmed.is_empty() {
|
190 + | items.push(trimmed.to_string());
|
191 + | }
|
192 + | }
|
193 + | // Skip comma separator
|
194 + | while chars.peek() == Some(&',') || chars.peek() == Some(&' ') {
|
195 + | chars.next();
|
196 + | }
|
197 + | }
|
198 + | Some(items)
|
199 + | };
|
200 + | }
|
201 + | builder
|
202 + | .build()
|
203 + | .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
|
204 + | }
|
205 + | }
|
150 206 | impl NullAndEmptyHeadersClientInput {
|
151 207 | /// Creates a new builder-style object to manufacture [`NullAndEmptyHeadersClientInput`](crate::operation::null_and_empty_headers_client::NullAndEmptyHeadersClientInput).
|
152 208 | pub fn builder() -> crate::operation::null_and_empty_headers_client::builders::NullAndEmptyHeadersClientInputBuilder {
|
153 209 | crate::operation::null_and_empty_headers_client::builders::NullAndEmptyHeadersClientInputBuilder::default()
|
154 210 | }
|
155 211 | }
|
156 212 |
|
157 213 | /// A builder for [`NullAndEmptyHeadersClientInput`](crate::operation::null_and_empty_headers_client::NullAndEmptyHeadersClientInput).
|
158 214 | #[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
|
159 215 | #[non_exhaustive]
|