1 - | // Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
|
2 - | #[allow(
|
3 - | clippy::collapsible_if,
|
4 - | clippy::bool_comparison,
|
5 - | clippy::nonminimal_bool,
|
6 - | clippy::comparison_to_empty,
|
7 - | clippy::redundant_pattern_matching,
|
8 - | clippy::useless_asref
|
9 - | )]
|
10 - | pub(super) fn resolve_endpoint(
|
11 - | _params: &crate::config::endpoint::Params,
|
12 - | _diagnostic_collector: &mut crate::endpoint_lib::diagnostic::DiagnosticCollector,
|
13 - | partition_resolver: &crate::endpoint_lib::partition::PartitionResolver,
|
14 - | ) -> ::aws_smithy_http::endpoint::Result {
|
15 - | #[allow(unused_variables)]
|
16 - | let region = &_params.region;
|
17 - | #[allow(unused_variables)]
|
18 - | let use_dual_stack = &_params.use_dual_stack;
|
19 - | #[allow(unused_variables)]
|
20 - | let use_fips = &_params.use_fips;
|
21 - | #[allow(unused_variables)]
|
22 - | let endpoint = &_params.endpoint;
|
23 - | #[allow(unused_variables)]
|
24 - | let account_id = &_params.account_id;
|
25 - | #[allow(unused_variables)]
|
26 - | let account_id_endpoint_mode = &_params.account_id_endpoint_mode;
|
27 - | #[allow(unused_variables)]
|
28 - | let resource_arn = &_params.resource_arn;
|
29 - | #[allow(unused_variables)]
|
30 - | let resource_arn_list = &_params.resource_arn_list;
|
31 - | #[allow(unused_variables)]
|
32 - | if let Some(endpoint) = endpoint {
|
33 - | if (*use_fips) == (true) {
|
34 - | return Err(::aws_smithy_http::endpoint::ResolveEndpointError::message(
|
35 - | "Invalid Configuration: FIPS and custom endpoint are not supported".to_string(),
|
36 - | ));
|
37 - | }
|
38 - | if (*use_dual_stack) == (true) {
|
39 - | return Err(::aws_smithy_http::endpoint::ResolveEndpointError::message(
|
40 - | "Invalid Configuration: Dualstack and custom endpoint are not supported".to_string(),
|
41 - | ));
|
42 - | }
|
43 - | return Ok(::aws_smithy_types::endpoint::Endpoint::builder().url(endpoint.to_owned()).build());
|
44 - | }
|
45 - | #[allow(unused_variables)]
|
46 - | if let Some(region) = region {
|
47 - | #[allow(unused_variables)]
|
48 - | if let Some(partition_result) = partition_resolver.resolve_partition(region.as_ref() as &str, _diagnostic_collector) {
|
49 - | if (region.as_ref() as &str) == ("local") {
|
50 - | if (*use_fips) == (true) {
|
51 - | return Err(::aws_smithy_http::endpoint::ResolveEndpointError::message(
|
52 - | "Invalid Configuration: FIPS and local endpoint are not supported".to_string(),
|
53 - | ));
|
54 - | }
|
55 - | if (*use_dual_stack) == (true) {
|
56 - | return Err(::aws_smithy_http::endpoint::ResolveEndpointError::message(
|
57 - | "Invalid Configuration: Dualstack and local endpoint are not supported".to_string(),
|
58 - | ));
|
59 - | }
|
60 - | return Ok(::aws_smithy_types::endpoint::Endpoint::builder()
|
61 - | .url("http://localhost:8000".to_string())
|
62 - | .property(
|
63 - | "authSchemes",
|
64 - | vec![::aws_smithy_types::Document::from({
|
65 - | let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::with_capacity(3);
|
66 - | out.insert("name".to_string(), "sigv4".to_string().into());
|
67 - | out.insert("signingName".to_string(), "dynamodb".to_string().into());
|
68 - | out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
|
69 - | out
|
70 - | })],
|
71 - | )
|
72 - | .build());
|
73 - | }
|
74 - | if (*use_fips) == (true) {
|
75 - | if (*use_dual_stack) == (true) {
|
76 - | if (partition_result.supports_fips()) == (true) {
|
77 - | if (partition_result.supports_dual_stack()) == (true) {
|
78 - | #[allow(unused_variables)]
|
79 - | if let Some(account_id_endpoint_mode) = account_id_endpoint_mode {
|
80 - | if (account_id_endpoint_mode.as_ref() as &str) == ("required") {
|
81 - | return Err(::aws_smithy_http::endpoint::ResolveEndpointError::message("Invalid Configuration: AccountIdEndpointMode is required and FIPS is enabled, but FIPS account endpoints are not supported"
|
82 - | .to_string()));
|
83 - | }
|
84 - | }
|
85 - | return Ok(::aws_smithy_types::endpoint::Endpoint::builder()
|
86 - | .url({
|
87 - | let mut out = String::new();
|
88 - | out.push_str("https://dynamodb-fips.");
|
89 - | #[allow(clippy::needless_borrow)]
|
90 - | out.push_str(®ion.as_ref() as &str);
|
91 - | out.push('.');
|
92 - | #[allow(clippy::needless_borrow)]
|
93 - | out.push_str(&partition_result.dual_stack_dns_suffix());
|
94 - | out
|
95 - | })
|
96 - | .build());
|
97 - | }
|
98 - | }
|
99 - | return Err(::aws_smithy_http::endpoint::ResolveEndpointError::message(
|
100 - | "FIPS and DualStack are enabled, but this partition does not support one or both".to_string(),
|
101 - | ));
|
102 - | }
|
103 - | }
|
104 - | if (*use_fips) == (true) {
|
105 - | if (partition_result.supports_fips()) == (true) {
|
106 - | if (partition_result.name()) == ("aws-us-gov") {
|
107 - | #[allow(unused_variables)]
|
108 - | if let Some(account_id_endpoint_mode) = account_id_endpoint_mode {
|
109 - | if (account_id_endpoint_mode.as_ref() as &str) == ("required") {
|
110 - | return Err(::aws_smithy_http::endpoint::ResolveEndpointError::message("Invalid Configuration: AccountIdEndpointMode is required and FIPS is enabled, but FIPS account endpoints are not supported"
|
111 - | .to_string()));
|
112 - | }
|
113 - | }
|
114 - | return Ok(::aws_smithy_types::endpoint::Endpoint::builder()
|
115 - | .url({
|
116 - | let mut out = String::new();
|
117 - | out.push_str("https://dynamodb.");
|
118 - | #[allow(clippy::needless_borrow)]
|
119 - | out.push_str(®ion.as_ref() as &str);
|
120 - | out.push('.');
|
121 - | #[allow(clippy::needless_borrow)]
|
122 - | out.push_str(&partition_result.dns_suffix());
|
123 - | out
|
124 - | })
|
125 - | .build());
|
126 - | }
|
127 - | #[allow(unused_variables)]
|
128 - | if let Some(account_id_endpoint_mode) = account_id_endpoint_mode {
|
129 - | if (account_id_endpoint_mode.as_ref() as &str) == ("required") {
|
130 - | return Err(::aws_smithy_http::endpoint::ResolveEndpointError::message("Invalid Configuration: AccountIdEndpointMode is required and FIPS is enabled, but FIPS account endpoints are not supported"
|
131 - | .to_string()));
|
132 - | }
|
133 - | }
|
134 - | return Ok(::aws_smithy_types::endpoint::Endpoint::builder()
|
135 - | .url({
|
136 - | let mut out = String::new();
|
137 - | out.push_str("https://dynamodb-fips.");
|
138 - | #[allow(clippy::needless_borrow)]
|
139 - | out.push_str(®ion.as_ref() as &str);
|
140 - | out.push('.');
|
141 - | #[allow(clippy::needless_borrow)]
|
142 - | out.push_str(&partition_result.dns_suffix());
|
143 - | out
|
144 - | })
|
145 - | .build());
|
146 - | }
|
147 - | return Err(::aws_smithy_http::endpoint::ResolveEndpointError::message(
|
148 - | "FIPS is enabled but this partition does not support FIPS".to_string(),
|
149 - | ));
|
150 - | }
|
151 - | if (*use_dual_stack) == (true) {
|
152 - | if (partition_result.supports_dual_stack()) == (true) {
|
153 - | #[allow(unused_variables)]
|
154 - | if let Some(account_id_endpoint_mode) = account_id_endpoint_mode {
|
155 - | if (account_id_endpoint_mode.as_ref() as &str) == ("required") {
|
156 - | if !((*use_fips) == (true)) {
|
157 - | return Err(::aws_smithy_http::endpoint::ResolveEndpointError::message("Invalid Configuration: AccountIdEndpointMode is required and DualStack is enabled, but DualStack account endpoints are not supported"
|
158 - | .to_string()));
|
159 - | }
|
160 - | return Err(::aws_smithy_http::endpoint::ResolveEndpointError::message("Invalid Configuration: AccountIdEndpointMode is required and FIPS is enabled, but FIPS account endpoints are not supported"
|
161 - | .to_string()));
|
162 - | }
|
163 - | }
|
164 - | return Ok(::aws_smithy_types::endpoint::Endpoint::builder()
|
165 - | .url({
|
166 - | let mut out = String::new();
|
167 - | out.push_str("https://dynamodb.");
|
168 - | #[allow(clippy::needless_borrow)]
|
169 - | out.push_str(®ion.as_ref() as &str);
|
170 - | out.push('.');
|
171 - | #[allow(clippy::needless_borrow)]
|
172 - | out.push_str(&partition_result.dual_stack_dns_suffix());
|
173 - | out
|
174 - | })
|
175 - | .build());
|
176 - | }
|
177 - | return Err(::aws_smithy_http::endpoint::ResolveEndpointError::message(
|
178 - | "DualStack is enabled but this partition does not support DualStack".to_string(),
|
179 - | ));
|
180 - | }
|
181 - | #[allow(unused_variables)]
|
182 - | if let Some(account_id_endpoint_mode) = account_id_endpoint_mode {
|
183 - | if !((account_id_endpoint_mode.as_ref() as &str) == ("disabled")) {
|
184 - | if (partition_result.name()) == ("aws") {
|
185 - | if !((*use_fips) == (true)) {
|
186 - | if !((*use_dual_stack) == (true)) {
|
187 - | #[allow(unused_variables)]
|
188 - | if let Some(resource_arn) = resource_arn {
|
189 - | #[allow(unused_variables)]
|
190 - | if let Some(parsed_arn) =
|
191 - | crate::endpoint_lib::arn::parse_arn(resource_arn.as_ref() as &str, _diagnostic_collector)
|
192 - | {
|
193 - | if (parsed_arn.service()) == ("dynamodb") {
|
194 - | if crate::endpoint_lib::host::is_valid_host_label(parsed_arn.region(), false, _diagnostic_collector) {
|
195 - | if (parsed_arn.region()) == (region.as_ref() as &str) {
|
196 - | if crate::endpoint_lib::host::is_valid_host_label(
|
197 - | parsed_arn.account_id(),
|
198 - | false,
|
199 - | _diagnostic_collector,
|
200 - | ) {
|
201 - | return Ok(::aws_smithy_types::endpoint::Endpoint::builder()
|
202 - | .url({
|
203 - | let mut out = String::new();
|
204 - | out.push_str("https://");
|
205 - | #[allow(clippy::needless_borrow)]
|
206 - | out.push_str(&parsed_arn.account_id());
|
207 - | out.push_str(".ddb.");
|
208 - | #[allow(clippy::needless_borrow)]
|
209 - | out.push_str(®ion.as_ref() as &str);
|
210 - | out.push('.');
|
211 - | #[allow(clippy::needless_borrow)]
|
212 - | out.push_str(&partition_result.dns_suffix());
|
213 - | out
|
214 - | })
|
215 - | .build());
|
216 - | }
|
217 - | }
|
218 - | }
|
219 - | }
|
220 - | }
|
221 - | }
|
222 - | }
|
223 - | }
|
224 - | }
|
225 - | }
|
226 - | }
|
227 - | #[allow(unused_variables)]
|
228 - | if let Some(account_id_endpoint_mode) = account_id_endpoint_mode {
|
229 - | if !((account_id_endpoint_mode.as_ref() as &str) == ("disabled")) {
|
230 - | if (partition_result.name()) == ("aws") {
|
231 - | if !((*use_fips) == (true)) {
|
232 - | if !((*use_dual_stack) == (true)) {
|
233 - | #[allow(unused_variables)]
|
234 - | if let Some(resource_arn_list) = resource_arn_list {
|
235 - | #[allow(unused_variables)]
|
236 - | if let Some(first_arn) = resource_arn_list.first().cloned() {
|
237 - | #[allow(unused_variables)]
|
238 - | if let Some(parsed_arn) =
|
239 - | crate::endpoint_lib::arn::parse_arn(first_arn.as_ref() as &str, _diagnostic_collector)
|
240 - | {
|
241 - | if (parsed_arn.service()) == ("dynamodb") {
|
242 - | if crate::endpoint_lib::host::is_valid_host_label(parsed_arn.region(), false, _diagnostic_collector) {
|
243 - | if (parsed_arn.region()) == (region.as_ref() as &str) {
|
244 - | if crate::endpoint_lib::host::is_valid_host_label(
|
245 - | parsed_arn.account_id(),
|
246 - | false,
|
247 - | _diagnostic_collector,
|
248 - | ) {
|
249 - | return Ok(::aws_smithy_types::endpoint::Endpoint::builder()
|
250 - | .url({
|
251 - | let mut out = String::new();
|
252 - | out.push_str("https://");
|
253 - | #[allow(clippy::needless_borrow)]
|
254 - | out.push_str(&parsed_arn.account_id());
|
255 - | out.push_str(".ddb.");
|
256 - | #[allow(clippy::needless_borrow)]
|
257 - | out.push_str(®ion.as_ref() as &str);
|
258 - | out.push('.');
|
259 - | #[allow(clippy::needless_borrow)]
|
260 - | out.push_str(&partition_result.dns_suffix());
|
261 - | out
|
262 - | })
|
263 - | .build());
|
264 - | }
|
265 - | }
|
266 - | }
|
267 - | }
|
268 - | }
|
269 - | }
|
270 - | }
|
271 - | }
|
272 - | }
|
273 - | }
|
274 - | }
|
275 - | }
|
276 - | #[allow(unused_variables)]
|
277 - | if let Some(account_id_endpoint_mode) = account_id_endpoint_mode {
|
278 - | if !((account_id_endpoint_mode.as_ref() as &str) == ("disabled")) {
|
279 - | if (partition_result.name()) == ("aws") {
|
280 - | if !((*use_fips) == (true)) {
|
281 - | if !((*use_dual_stack) == (true)) {
|
282 - | #[allow(unused_variables)]
|
283 - | if let Some(account_id) = account_id {
|
284 - | if crate::endpoint_lib::host::is_valid_host_label(account_id.as_ref() as &str, false, _diagnostic_collector) {
|
285 - | return Ok(::aws_smithy_types::endpoint::Endpoint::builder()
|
286 - | .url({
|
287 - | let mut out = String::new();
|
288 - | out.push_str("https://");
|
289 - | #[allow(clippy::needless_borrow)]
|
290 - | out.push_str(&account_id.as_ref() as &str);
|
291 - | out.push_str(".ddb.");
|
292 - | #[allow(clippy::needless_borrow)]
|
293 - | out.push_str(®ion.as_ref() as &str);
|
294 - | out.push('.');
|
295 - | #[allow(clippy::needless_borrow)]
|
296 - | out.push_str(&partition_result.dns_suffix());
|
297 - | out
|
298 - | })
|
299 - | .build());
|
300 - | }
|
301 - | return Err(::aws_smithy_http::endpoint::ResolveEndpointError::message(
|
302 - | "Credentials-sourced account ID parameter is invalid".to_string(),
|
303 - | ));
|
304 - | }
|
305 - | }
|
306 - | }
|
307 - | }
|
308 - | }
|
309 - | }
|
310 - | #[allow(unused_variables)]
|
311 - | if let Some(account_id_endpoint_mode) = account_id_endpoint_mode {
|
312 - | if (account_id_endpoint_mode.as_ref() as &str) == ("required") {
|
313 - | if !((*use_fips) == (true)) {
|
314 - | if !((*use_dual_stack) == (true)) {
|
315 - | if (partition_result.name()) == ("aws") {
|
316 - | return Err(::aws_smithy_http::endpoint::ResolveEndpointError::message(
|
317 - | "AccountIdEndpointMode is required but no AccountID was provided or able to be loaded".to_string(),
|
318 - | ));
|
319 - | }
|
320 - | return Err(::aws_smithy_http::endpoint::ResolveEndpointError::message(
|
321 - | "Invalid Configuration: AccountIdEndpointMode is required but account endpoints are not supported in this partition"
|
322 - | .to_string(),
|
323 - | ));
|
324 - | }
|
325 - | return Err(::aws_smithy_http::endpoint::ResolveEndpointError::message("Invalid Configuration: AccountIdEndpointMode is required and DualStack is enabled, but DualStack account endpoints are not supported"
|
326 - | .to_string()));
|
327 - | }
|
328 - | return Err(::aws_smithy_http::endpoint::ResolveEndpointError::message(
|
329 - | "Invalid Configuration: AccountIdEndpointMode is required and FIPS is enabled, but FIPS account endpoints are not supported"
|
330 - | .to_string(),
|
331 - | ));
|
332 - | }
|
333 - | }
|
334 - | return Ok(::aws_smithy_types::endpoint::Endpoint::builder()
|
335 - | .url({
|
336 - | let mut out = String::new();
|
337 - | out.push_str("https://dynamodb.");
|
338 - | #[allow(clippy::needless_borrow)]
|
339 - | out.push_str(®ion.as_ref() as &str);
|
340 - | out.push('.');
|
341 - | #[allow(clippy::needless_borrow)]
|
342 - | out.push_str(&partition_result.dns_suffix());
|
343 - | out
|
344 - | })
|
345 - | .build());
|
346 - | }
|
347 - | #[allow(unreachable_code)]
|
348 - | return Err(::aws_smithy_http::endpoint::ResolveEndpointError::message(format!(
|
349 - | "No rules matched these parameters. This is a bug. {_params:?}"
|
350 - | )));
|
351 - | }
|
352 - | return Err(::aws_smithy_http::endpoint::ResolveEndpointError::message(
|
353 - | "Invalid Configuration: Missing Region".to_string(),
|
354 - | ));
|
355 - | }
|