Skip to main content

aws_sdk_ssooidc/config/
endpoint.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver;
3                pub use ::aws_smithy_runtime_api::client::endpoint::EndpointFuture;
4                pub use ::aws_smithy_types::endpoint::Endpoint;
5
6/// Interceptor that tracks endpoint override business metric.
7                #[derive(Debug, Default)]
8                pub(crate) struct EndpointOverrideFeatureTrackerInterceptor;
9
10                #[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
11                impl ::aws_smithy_runtime_api::client::interceptors::Intercept for EndpointOverrideFeatureTrackerInterceptor {
12                    fn name(&self) -> &'static str {
13                        "EndpointOverrideFeatureTrackerInterceptor"
14                    }
15
16                    fn read_before_execution(
17                        &self,
18                        _context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<'_>,
19                        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
20                    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
21                        if cfg.load::<::aws_types::endpoint_config::EndpointUrl>().is_some() {
22                            cfg.interceptor_state()
23                                .store_append(::aws_runtime::sdk_feature::AwsSdkFeature::EndpointOverride);
24                        }
25                        ::std::result::Result::Ok(())
26                    }
27                }
28
29#[cfg(test)]
30mod test {
31
32    /// For region ap-east-1 with FIPS disabled and DualStack disabled
33                    #[test]
34                    fn test_1() {
35                        let params = crate::config::endpoint::Params::builder()
36    .region("ap-east-1".to_string())
37    .use_fips(false)
38    .use_dual_stack(false)
39    .build().expect("invalid params");
40                        let resolver = crate::config::endpoint::DefaultResolver::new();
41                        let endpoint = resolver.resolve_endpoint(&params);
42                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.ap-east-1.amazonaws.com");
43                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.ap-east-1.amazonaws.com")
44    .build());
45                    }
46
47    /// For region ap-northeast-1 with FIPS disabled and DualStack disabled
48                    #[test]
49                    fn test_2() {
50                        let params = crate::config::endpoint::Params::builder()
51    .region("ap-northeast-1".to_string())
52    .use_fips(false)
53    .use_dual_stack(false)
54    .build().expect("invalid params");
55                        let resolver = crate::config::endpoint::DefaultResolver::new();
56                        let endpoint = resolver.resolve_endpoint(&params);
57                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.ap-northeast-1.amazonaws.com");
58                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.ap-northeast-1.amazonaws.com")
59    .build());
60                    }
61
62    /// For region ap-northeast-2 with FIPS disabled and DualStack disabled
63                    #[test]
64                    fn test_3() {
65                        let params = crate::config::endpoint::Params::builder()
66    .region("ap-northeast-2".to_string())
67    .use_fips(false)
68    .use_dual_stack(false)
69    .build().expect("invalid params");
70                        let resolver = crate::config::endpoint::DefaultResolver::new();
71                        let endpoint = resolver.resolve_endpoint(&params);
72                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.ap-northeast-2.amazonaws.com");
73                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.ap-northeast-2.amazonaws.com")
74    .build());
75                    }
76
77    /// For region ap-northeast-3 with FIPS disabled and DualStack disabled
78                    #[test]
79                    fn test_4() {
80                        let params = crate::config::endpoint::Params::builder()
81    .region("ap-northeast-3".to_string())
82    .use_fips(false)
83    .use_dual_stack(false)
84    .build().expect("invalid params");
85                        let resolver = crate::config::endpoint::DefaultResolver::new();
86                        let endpoint = resolver.resolve_endpoint(&params);
87                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.ap-northeast-3.amazonaws.com");
88                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.ap-northeast-3.amazonaws.com")
89    .build());
90                    }
91
92    /// For region ap-south-1 with FIPS disabled and DualStack disabled
93                    #[test]
94                    fn test_5() {
95                        let params = crate::config::endpoint::Params::builder()
96    .region("ap-south-1".to_string())
97    .use_fips(false)
98    .use_dual_stack(false)
99    .build().expect("invalid params");
100                        let resolver = crate::config::endpoint::DefaultResolver::new();
101                        let endpoint = resolver.resolve_endpoint(&params);
102                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.ap-south-1.amazonaws.com");
103                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.ap-south-1.amazonaws.com")
104    .build());
105                    }
106
107    /// For region ap-southeast-1 with FIPS disabled and DualStack disabled
108                    #[test]
109                    fn test_6() {
110                        let params = crate::config::endpoint::Params::builder()
111    .region("ap-southeast-1".to_string())
112    .use_fips(false)
113    .use_dual_stack(false)
114    .build().expect("invalid params");
115                        let resolver = crate::config::endpoint::DefaultResolver::new();
116                        let endpoint = resolver.resolve_endpoint(&params);
117                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.ap-southeast-1.amazonaws.com");
118                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.ap-southeast-1.amazonaws.com")
119    .build());
120                    }
121
122    /// For region ap-southeast-2 with FIPS disabled and DualStack disabled
123                    #[test]
124                    fn test_7() {
125                        let params = crate::config::endpoint::Params::builder()
126    .region("ap-southeast-2".to_string())
127    .use_fips(false)
128    .use_dual_stack(false)
129    .build().expect("invalid params");
130                        let resolver = crate::config::endpoint::DefaultResolver::new();
131                        let endpoint = resolver.resolve_endpoint(&params);
132                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.ap-southeast-2.amazonaws.com");
133                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.ap-southeast-2.amazonaws.com")
134    .build());
135                    }
136
137    /// For region ca-central-1 with FIPS disabled and DualStack disabled
138                    #[test]
139                    fn test_8() {
140                        let params = crate::config::endpoint::Params::builder()
141    .region("ca-central-1".to_string())
142    .use_fips(false)
143    .use_dual_stack(false)
144    .build().expect("invalid params");
145                        let resolver = crate::config::endpoint::DefaultResolver::new();
146                        let endpoint = resolver.resolve_endpoint(&params);
147                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.ca-central-1.amazonaws.com");
148                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.ca-central-1.amazonaws.com")
149    .build());
150                    }
151
152    /// For region eu-central-1 with FIPS disabled and DualStack disabled
153                    #[test]
154                    fn test_9() {
155                        let params = crate::config::endpoint::Params::builder()
156    .region("eu-central-1".to_string())
157    .use_fips(false)
158    .use_dual_stack(false)
159    .build().expect("invalid params");
160                        let resolver = crate::config::endpoint::DefaultResolver::new();
161                        let endpoint = resolver.resolve_endpoint(&params);
162                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.eu-central-1.amazonaws.com");
163                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.eu-central-1.amazonaws.com")
164    .build());
165                    }
166
167    /// For region eu-north-1 with FIPS disabled and DualStack disabled
168                    #[test]
169                    fn test_10() {
170                        let params = crate::config::endpoint::Params::builder()
171    .region("eu-north-1".to_string())
172    .use_fips(false)
173    .use_dual_stack(false)
174    .build().expect("invalid params");
175                        let resolver = crate::config::endpoint::DefaultResolver::new();
176                        let endpoint = resolver.resolve_endpoint(&params);
177                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.eu-north-1.amazonaws.com");
178                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.eu-north-1.amazonaws.com")
179    .build());
180                    }
181
182    /// For region eu-south-1 with FIPS disabled and DualStack disabled
183                    #[test]
184                    fn test_11() {
185                        let params = crate::config::endpoint::Params::builder()
186    .region("eu-south-1".to_string())
187    .use_fips(false)
188    .use_dual_stack(false)
189    .build().expect("invalid params");
190                        let resolver = crate::config::endpoint::DefaultResolver::new();
191                        let endpoint = resolver.resolve_endpoint(&params);
192                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.eu-south-1.amazonaws.com");
193                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.eu-south-1.amazonaws.com")
194    .build());
195                    }
196
197    /// For region eu-west-1 with FIPS disabled and DualStack disabled
198                    #[test]
199                    fn test_12() {
200                        let params = crate::config::endpoint::Params::builder()
201    .region("eu-west-1".to_string())
202    .use_fips(false)
203    .use_dual_stack(false)
204    .build().expect("invalid params");
205                        let resolver = crate::config::endpoint::DefaultResolver::new();
206                        let endpoint = resolver.resolve_endpoint(&params);
207                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.eu-west-1.amazonaws.com");
208                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.eu-west-1.amazonaws.com")
209    .build());
210                    }
211
212    /// For region eu-west-2 with FIPS disabled and DualStack disabled
213                    #[test]
214                    fn test_13() {
215                        let params = crate::config::endpoint::Params::builder()
216    .region("eu-west-2".to_string())
217    .use_fips(false)
218    .use_dual_stack(false)
219    .build().expect("invalid params");
220                        let resolver = crate::config::endpoint::DefaultResolver::new();
221                        let endpoint = resolver.resolve_endpoint(&params);
222                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.eu-west-2.amazonaws.com");
223                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.eu-west-2.amazonaws.com")
224    .build());
225                    }
226
227    /// For region eu-west-3 with FIPS disabled and DualStack disabled
228                    #[test]
229                    fn test_14() {
230                        let params = crate::config::endpoint::Params::builder()
231    .region("eu-west-3".to_string())
232    .use_fips(false)
233    .use_dual_stack(false)
234    .build().expect("invalid params");
235                        let resolver = crate::config::endpoint::DefaultResolver::new();
236                        let endpoint = resolver.resolve_endpoint(&params);
237                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.eu-west-3.amazonaws.com");
238                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.eu-west-3.amazonaws.com")
239    .build());
240                    }
241
242    /// For region me-south-1 with FIPS disabled and DualStack disabled
243                    #[test]
244                    fn test_15() {
245                        let params = crate::config::endpoint::Params::builder()
246    .region("me-south-1".to_string())
247    .use_fips(false)
248    .use_dual_stack(false)
249    .build().expect("invalid params");
250                        let resolver = crate::config::endpoint::DefaultResolver::new();
251                        let endpoint = resolver.resolve_endpoint(&params);
252                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.me-south-1.amazonaws.com");
253                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.me-south-1.amazonaws.com")
254    .build());
255                    }
256
257    /// For region sa-east-1 with FIPS disabled and DualStack disabled
258                    #[test]
259                    fn test_16() {
260                        let params = crate::config::endpoint::Params::builder()
261    .region("sa-east-1".to_string())
262    .use_fips(false)
263    .use_dual_stack(false)
264    .build().expect("invalid params");
265                        let resolver = crate::config::endpoint::DefaultResolver::new();
266                        let endpoint = resolver.resolve_endpoint(&params);
267                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.sa-east-1.amazonaws.com");
268                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.sa-east-1.amazonaws.com")
269    .build());
270                    }
271
272    /// For region us-east-1 with FIPS disabled and DualStack disabled
273                    #[test]
274                    fn test_17() {
275                        let params = crate::config::endpoint::Params::builder()
276    .region("us-east-1".to_string())
277    .use_fips(false)
278    .use_dual_stack(false)
279    .build().expect("invalid params");
280                        let resolver = crate::config::endpoint::DefaultResolver::new();
281                        let endpoint = resolver.resolve_endpoint(&params);
282                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.us-east-1.amazonaws.com");
283                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.us-east-1.amazonaws.com")
284    .build());
285                    }
286
287    /// For region us-east-2 with FIPS disabled and DualStack disabled
288                    #[test]
289                    fn test_18() {
290                        let params = crate::config::endpoint::Params::builder()
291    .region("us-east-2".to_string())
292    .use_fips(false)
293    .use_dual_stack(false)
294    .build().expect("invalid params");
295                        let resolver = crate::config::endpoint::DefaultResolver::new();
296                        let endpoint = resolver.resolve_endpoint(&params);
297                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.us-east-2.amazonaws.com");
298                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.us-east-2.amazonaws.com")
299    .build());
300                    }
301
302    /// For region us-west-2 with FIPS disabled and DualStack disabled
303                    #[test]
304                    fn test_19() {
305                        let params = crate::config::endpoint::Params::builder()
306    .region("us-west-2".to_string())
307    .use_fips(false)
308    .use_dual_stack(false)
309    .build().expect("invalid params");
310                        let resolver = crate::config::endpoint::DefaultResolver::new();
311                        let endpoint = resolver.resolve_endpoint(&params);
312                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.us-west-2.amazonaws.com");
313                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.us-west-2.amazonaws.com")
314    .build());
315                    }
316
317    /// For region us-east-1 with FIPS enabled and DualStack enabled
318                    #[test]
319                    fn test_20() {
320                        let params = crate::config::endpoint::Params::builder()
321    .region("us-east-1".to_string())
322    .use_fips(true)
323    .use_dual_stack(true)
324    .build().expect("invalid params");
325                        let resolver = crate::config::endpoint::DefaultResolver::new();
326                        let endpoint = resolver.resolve_endpoint(&params);
327                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc-fips.us-east-1.api.aws");
328                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc-fips.us-east-1.api.aws")
329    .build());
330                    }
331
332    /// For region us-east-1 with FIPS enabled and DualStack disabled
333                    #[test]
334                    fn test_21() {
335                        let params = crate::config::endpoint::Params::builder()
336    .region("us-east-1".to_string())
337    .use_fips(true)
338    .use_dual_stack(false)
339    .build().expect("invalid params");
340                        let resolver = crate::config::endpoint::DefaultResolver::new();
341                        let endpoint = resolver.resolve_endpoint(&params);
342                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc-fips.us-east-1.amazonaws.com");
343                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc-fips.us-east-1.amazonaws.com")
344    .build());
345                    }
346
347    /// For region us-east-1 with FIPS disabled and DualStack enabled
348                    #[test]
349                    fn test_22() {
350                        let params = crate::config::endpoint::Params::builder()
351    .region("us-east-1".to_string())
352    .use_fips(false)
353    .use_dual_stack(true)
354    .build().expect("invalid params");
355                        let resolver = crate::config::endpoint::DefaultResolver::new();
356                        let endpoint = resolver.resolve_endpoint(&params);
357                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.us-east-1.api.aws");
358                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.us-east-1.api.aws")
359    .build());
360                    }
361
362    /// For region cn-north-1 with FIPS enabled and DualStack enabled
363                    #[test]
364                    fn test_23() {
365                        let params = crate::config::endpoint::Params::builder()
366    .region("cn-north-1".to_string())
367    .use_fips(true)
368    .use_dual_stack(true)
369    .build().expect("invalid params");
370                        let resolver = crate::config::endpoint::DefaultResolver::new();
371                        let endpoint = resolver.resolve_endpoint(&params);
372                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc-fips.cn-north-1.api.amazonwebservices.com.cn");
373                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc-fips.cn-north-1.api.amazonwebservices.com.cn")
374    .build());
375                    }
376
377    /// For region cn-north-1 with FIPS enabled and DualStack disabled
378                    #[test]
379                    fn test_24() {
380                        let params = crate::config::endpoint::Params::builder()
381    .region("cn-north-1".to_string())
382    .use_fips(true)
383    .use_dual_stack(false)
384    .build().expect("invalid params");
385                        let resolver = crate::config::endpoint::DefaultResolver::new();
386                        let endpoint = resolver.resolve_endpoint(&params);
387                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc-fips.cn-north-1.amazonaws.com.cn");
388                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc-fips.cn-north-1.amazonaws.com.cn")
389    .build());
390                    }
391
392    /// For region cn-north-1 with FIPS disabled and DualStack enabled
393                    #[test]
394                    fn test_25() {
395                        let params = crate::config::endpoint::Params::builder()
396    .region("cn-north-1".to_string())
397    .use_fips(false)
398    .use_dual_stack(true)
399    .build().expect("invalid params");
400                        let resolver = crate::config::endpoint::DefaultResolver::new();
401                        let endpoint = resolver.resolve_endpoint(&params);
402                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.cn-north-1.api.amazonwebservices.com.cn");
403                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.cn-north-1.api.amazonwebservices.com.cn")
404    .build());
405                    }
406
407    /// For region cn-north-1 with FIPS disabled and DualStack disabled
408                    #[test]
409                    fn test_26() {
410                        let params = crate::config::endpoint::Params::builder()
411    .region("cn-north-1".to_string())
412    .use_fips(false)
413    .use_dual_stack(false)
414    .build().expect("invalid params");
415                        let resolver = crate::config::endpoint::DefaultResolver::new();
416                        let endpoint = resolver.resolve_endpoint(&params);
417                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.cn-north-1.amazonaws.com.cn");
418                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.cn-north-1.amazonaws.com.cn")
419    .build());
420                    }
421
422    /// For region us-gov-east-1 with FIPS disabled and DualStack disabled
423                    #[test]
424                    fn test_27() {
425                        let params = crate::config::endpoint::Params::builder()
426    .region("us-gov-east-1".to_string())
427    .use_fips(false)
428    .use_dual_stack(false)
429    .build().expect("invalid params");
430                        let resolver = crate::config::endpoint::DefaultResolver::new();
431                        let endpoint = resolver.resolve_endpoint(&params);
432                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.us-gov-east-1.amazonaws.com");
433                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.us-gov-east-1.amazonaws.com")
434    .build());
435                    }
436
437    /// For region us-gov-west-1 with FIPS disabled and DualStack disabled
438                    #[test]
439                    fn test_28() {
440                        let params = crate::config::endpoint::Params::builder()
441    .region("us-gov-west-1".to_string())
442    .use_fips(false)
443    .use_dual_stack(false)
444    .build().expect("invalid params");
445                        let resolver = crate::config::endpoint::DefaultResolver::new();
446                        let endpoint = resolver.resolve_endpoint(&params);
447                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.us-gov-west-1.amazonaws.com");
448                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.us-gov-west-1.amazonaws.com")
449    .build());
450                    }
451
452    /// For region us-gov-east-1 with FIPS enabled and DualStack enabled
453                    #[test]
454                    fn test_29() {
455                        let params = crate::config::endpoint::Params::builder()
456    .region("us-gov-east-1".to_string())
457    .use_fips(true)
458    .use_dual_stack(true)
459    .build().expect("invalid params");
460                        let resolver = crate::config::endpoint::DefaultResolver::new();
461                        let endpoint = resolver.resolve_endpoint(&params);
462                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc-fips.us-gov-east-1.api.aws");
463                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc-fips.us-gov-east-1.api.aws")
464    .build());
465                    }
466
467    /// For region us-gov-east-1 with FIPS enabled and DualStack disabled
468                    #[test]
469                    fn test_30() {
470                        let params = crate::config::endpoint::Params::builder()
471    .region("us-gov-east-1".to_string())
472    .use_fips(true)
473    .use_dual_stack(false)
474    .build().expect("invalid params");
475                        let resolver = crate::config::endpoint::DefaultResolver::new();
476                        let endpoint = resolver.resolve_endpoint(&params);
477                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.us-gov-east-1.amazonaws.com");
478                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.us-gov-east-1.amazonaws.com")
479    .build());
480                    }
481
482    /// For region us-gov-east-1 with FIPS disabled and DualStack enabled
483                    #[test]
484                    fn test_31() {
485                        let params = crate::config::endpoint::Params::builder()
486    .region("us-gov-east-1".to_string())
487    .use_fips(false)
488    .use_dual_stack(true)
489    .build().expect("invalid params");
490                        let resolver = crate::config::endpoint::DefaultResolver::new();
491                        let endpoint = resolver.resolve_endpoint(&params);
492                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.us-gov-east-1.api.aws");
493                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.us-gov-east-1.api.aws")
494    .build());
495                    }
496
497    /// For region us-iso-east-1 with FIPS enabled and DualStack disabled
498                    #[test]
499                    fn test_32() {
500                        let params = crate::config::endpoint::Params::builder()
501    .region("us-iso-east-1".to_string())
502    .use_fips(true)
503    .use_dual_stack(false)
504    .build().expect("invalid params");
505                        let resolver = crate::config::endpoint::DefaultResolver::new();
506                        let endpoint = resolver.resolve_endpoint(&params);
507                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc-fips.us-iso-east-1.c2s.ic.gov");
508                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc-fips.us-iso-east-1.c2s.ic.gov")
509    .build());
510                    }
511
512    /// For region us-iso-east-1 with FIPS disabled and DualStack disabled
513                    #[test]
514                    fn test_33() {
515                        let params = crate::config::endpoint::Params::builder()
516    .region("us-iso-east-1".to_string())
517    .use_fips(false)
518    .use_dual_stack(false)
519    .build().expect("invalid params");
520                        let resolver = crate::config::endpoint::DefaultResolver::new();
521                        let endpoint = resolver.resolve_endpoint(&params);
522                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.us-iso-east-1.c2s.ic.gov");
523                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.us-iso-east-1.c2s.ic.gov")
524    .build());
525                    }
526
527    /// For region us-isob-east-1 with FIPS enabled and DualStack disabled
528                    #[test]
529                    fn test_34() {
530                        let params = crate::config::endpoint::Params::builder()
531    .region("us-isob-east-1".to_string())
532    .use_fips(true)
533    .use_dual_stack(false)
534    .build().expect("invalid params");
535                        let resolver = crate::config::endpoint::DefaultResolver::new();
536                        let endpoint = resolver.resolve_endpoint(&params);
537                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc-fips.us-isob-east-1.sc2s.sgov.gov");
538                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc-fips.us-isob-east-1.sc2s.sgov.gov")
539    .build());
540                    }
541
542    /// For region us-isob-east-1 with FIPS disabled and DualStack disabled
543                    #[test]
544                    fn test_35() {
545                        let params = crate::config::endpoint::Params::builder()
546    .region("us-isob-east-1".to_string())
547    .use_fips(false)
548    .use_dual_stack(false)
549    .build().expect("invalid params");
550                        let resolver = crate::config::endpoint::DefaultResolver::new();
551                        let endpoint = resolver.resolve_endpoint(&params);
552                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.us-isob-east-1.sc2s.sgov.gov");
553                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.us-isob-east-1.sc2s.sgov.gov")
554    .build());
555                    }
556
557    /// For custom endpoint with region set and fips disabled and dualstack disabled
558                    #[test]
559                    fn test_36() {
560                        let params = crate::config::endpoint::Params::builder()
561    .region("us-east-1".to_string())
562    .use_fips(false)
563    .use_dual_stack(false)
564    .endpoint("https://example.com".to_string())
565    .build().expect("invalid params");
566                        let resolver = crate::config::endpoint::DefaultResolver::new();
567                        let endpoint = resolver.resolve_endpoint(&params);
568                        let endpoint = endpoint.expect("Expected valid endpoint: https://example.com");
569                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://example.com")
570    .build());
571                    }
572
573    /// For custom endpoint with region not set and fips disabled and dualstack disabled
574                    #[test]
575                    fn test_37() {
576                        let params = crate::config::endpoint::Params::builder()
577    .use_fips(false)
578    .use_dual_stack(false)
579    .endpoint("https://example.com".to_string())
580    .build().expect("invalid params");
581                        let resolver = crate::config::endpoint::DefaultResolver::new();
582                        let endpoint = resolver.resolve_endpoint(&params);
583                        let endpoint = endpoint.expect("Expected valid endpoint: https://example.com");
584                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://example.com")
585    .build());
586                    }
587
588    /// For custom endpoint with fips enabled and dualstack disabled
589                    #[test]
590                    fn test_38() {
591                        let params = crate::config::endpoint::Params::builder()
592    .region("us-east-1".to_string())
593    .use_fips(true)
594    .use_dual_stack(false)
595    .endpoint("https://example.com".to_string())
596    .build().expect("invalid params");
597                        let resolver = crate::config::endpoint::DefaultResolver::new();
598                        let endpoint = resolver.resolve_endpoint(&params);
599                        let error = endpoint.expect_err("expected error: Invalid Configuration: FIPS and custom endpoint are not supported [For custom endpoint with fips enabled and dualstack disabled]");
600                                    assert_eq!(format!("{}", error), "Invalid Configuration: FIPS and custom endpoint are not supported")
601                    }
602
603    /// For custom endpoint with fips disabled and dualstack enabled
604                    #[test]
605                    fn test_39() {
606                        let params = crate::config::endpoint::Params::builder()
607    .region("us-east-1".to_string())
608    .use_fips(false)
609    .use_dual_stack(true)
610    .endpoint("https://example.com".to_string())
611    .build().expect("invalid params");
612                        let resolver = crate::config::endpoint::DefaultResolver::new();
613                        let endpoint = resolver.resolve_endpoint(&params);
614                        let error = endpoint.expect_err("expected error: Invalid Configuration: Dualstack and custom endpoint are not supported [For custom endpoint with fips disabled and dualstack enabled]");
615                                    assert_eq!(format!("{}", error), "Invalid Configuration: Dualstack and custom endpoint are not supported")
616                    }
617
618    /// Missing region
619                    #[test]
620                    fn test_40() {
621                        let params = crate::config::endpoint::Params::builder()
622    .build().expect("invalid params");
623                        let resolver = crate::config::endpoint::DefaultResolver::new();
624                        let endpoint = resolver.resolve_endpoint(&params);
625                        let error = endpoint.expect_err("expected error: Invalid Configuration: Missing Region [Missing region]");
626                                    assert_eq!(format!("{}", error), "Invalid Configuration: Missing Region")
627                    }
628
629
630}
631
632/// Endpoint resolver trait specific to AWS SSO OIDC
633            pub trait ResolveEndpoint: ::std::marker::Send + ::std::marker::Sync + ::std::fmt::Debug {
634                /// Resolve an endpoint with the given parameters
635                fn resolve_endpoint<'a>(&'a self, params: &'a crate::config::endpoint::Params) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a>;
636
637                /// Convert this service-specific resolver into a `SharedEndpointResolver`
638                ///
639                /// The resulting resolver will downcast `EndpointResolverParams` into `crate::config::endpoint::Params`.
640                fn into_shared_resolver(self) -> ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver
641                where
642                    Self: Sized + 'static,
643                {
644                    ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver::new(DowncastParams(self))
645                }
646            }
647
648            #[derive(Debug)]
649            struct DowncastParams<T>(T);
650            impl<T> ::aws_smithy_runtime_api::client::endpoint::ResolveEndpoint for DowncastParams<T>
651            where
652                T: ResolveEndpoint,
653            {
654                fn resolve_endpoint<'a>(&'a self, params: &'a ::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a> {
655                    let ep = match params.get::<crate::config::endpoint::Params>() {
656                        Some(params) => self.0.resolve_endpoint(params),
657                        None => ::aws_smithy_runtime_api::client::endpoint::EndpointFuture::ready(Err("params of expected type was not present".into())),
658                    };
659                    ep
660                }
661
662            }
663
664#[derive(Debug)]
665                /// The default endpoint resolver.
666                pub struct DefaultResolver {
667                    partition_resolver: &'static crate::endpoint_lib::partition::PartitionResolver,
668                    endpoint_cache: ::arc_swap::ArcSwap<::std::option::Option<(Params, ::aws_smithy_types::endpoint::Endpoint)>>,
669                }
670
671                 impl Default for DefaultResolver {
672                    fn default() -> Self {
673                        Self::new()
674                    }
675                 }
676
677                impl DefaultResolver {
678                    /// Create a new DefaultResolver
679                    pub fn new() -> Self {
680                        Self {
681                            partition_resolver: &crate::endpoint_lib::DEFAULT_PARTITION_RESOLVER,
682                            endpoint_cache: ::arc_swap::ArcSwap::from_pointee(None),
683                        }
684                    }
685
686                    #[allow(unused_variables, unused_parens, clippy::double_parens, clippy::useless_conversion, clippy::bool_comparison, clippy::comparison_to_empty, clippy::needless_borrow, clippy::useless_asref, clippy::redundant_closure_call, clippy::clone_on_copy, clippy::single_char_add_str)]
687                    fn resolve_endpoint<'a>(&'a self, params: &'a crate::config::endpoint::Params) -> ::std::result::Result<::aws_smithy_types::endpoint::Endpoint, ::aws_smithy_runtime_api::box_error::BoxError> {
688                        let mut _diagnostic_collector = crate::endpoint_lib::diagnostic::DiagnosticCollector::new();
689                        #[allow(unused_mut)]
690                        let mut context = ConditionContext::default();
691
692                        // Param bindings
693                        let region = &params.region;
694let use_dual_stack = &params.use_dual_stack;
695let use_fips = &params.use_fips;
696let endpoint = &params.endpoint;
697
698                        let mut current_ref: i32 = 2;
699                        loop {
700                            match current_ref {
701                                ref_val if ref_val >= 100_000_000 => {
702                                    return match (ref_val - 100_000_000) as usize {
703                                        0 => ::std::result::Result::Err(Box::new(::aws_smithy_http::endpoint::ResolveEndpointError::message("No endpoint rule matched")) as ::aws_smithy_runtime_api::box_error::BoxError),
7041 => {
705
706                            ::std::result::Result::Err(Box::new(::aws_smithy_http::endpoint::ResolveEndpointError::message("Invalid Configuration: FIPS and custom endpoint are not supported"
707.to_string())) as ::aws_smithy_runtime_api::box_error::BoxError)
708                        },
7092 => {
710
711                            ::std::result::Result::Err(Box::new(::aws_smithy_http::endpoint::ResolveEndpointError::message("Invalid Configuration: Dualstack and custom endpoint are not supported"
712.to_string())) as ::aws_smithy_runtime_api::box_error::BoxError)
713                        },
7143 => {
715                            let endpoint = params.endpoint.as_deref().unwrap_or_default();
716                            ::std::result::Result::Ok(::aws_smithy_types::endpoint::Endpoint::builder().url(endpoint.to_owned())
717.build())
718                        },
7194 => {
720                            let region = params.region.as_deref().unwrap_or_default();
721let partition_result = context.partition_result.as_ref().expect("Guaranteed to have a value by earlier checks.");
722                            ::std::result::Result::Ok(::aws_smithy_types::endpoint::Endpoint::builder().url({ let mut out = String::new();
723out.push_str("https://oidc-fips.");
724#[allow(clippy::needless_borrow)]
725out.push_str(&region.as_ref());
726out.push_str(".");
727#[allow(clippy::needless_borrow)]
728out.push_str(&partition_result.dual_stack_dns_suffix());
729out })
730.build())
731                        },
7325 => {
733
734                            ::std::result::Result::Err(Box::new(::aws_smithy_http::endpoint::ResolveEndpointError::message("FIPS and DualStack are enabled, but this partition does not support one or both"
735.to_string())) as ::aws_smithy_runtime_api::box_error::BoxError)
736                        },
7376 => {
738                            let region = params.region.as_deref().unwrap_or_default();
739                            ::std::result::Result::Ok(::aws_smithy_types::endpoint::Endpoint::builder().url({ let mut out = String::new();
740out.push_str("https://oidc.");
741#[allow(clippy::needless_borrow)]
742out.push_str(&region.as_ref());
743out.push_str(".amazonaws.com");
744out })
745.build())
746                        },
7477 => {
748                            let region = params.region.as_deref().unwrap_or_default();
749let partition_result = context.partition_result.as_ref().expect("Guaranteed to have a value by earlier checks.");
750                            ::std::result::Result::Ok(::aws_smithy_types::endpoint::Endpoint::builder().url({ let mut out = String::new();
751out.push_str("https://oidc-fips.");
752#[allow(clippy::needless_borrow)]
753out.push_str(&region.as_ref());
754out.push_str(".");
755#[allow(clippy::needless_borrow)]
756out.push_str(&partition_result.dns_suffix());
757out })
758.build())
759                        },
7608 => {
761
762                            ::std::result::Result::Err(Box::new(::aws_smithy_http::endpoint::ResolveEndpointError::message("FIPS is enabled but this partition does not support FIPS"
763.to_string())) as ::aws_smithy_runtime_api::box_error::BoxError)
764                        },
7659 => {
766                            let region = params.region.as_deref().unwrap_or_default();
767let partition_result = context.partition_result.as_ref().expect("Guaranteed to have a value by earlier checks.");
768                            ::std::result::Result::Ok(::aws_smithy_types::endpoint::Endpoint::builder().url({ let mut out = String::new();
769out.push_str("https://oidc.");
770#[allow(clippy::needless_borrow)]
771out.push_str(&region.as_ref());
772out.push_str(".");
773#[allow(clippy::needless_borrow)]
774out.push_str(&partition_result.dual_stack_dns_suffix());
775out })
776.build())
777                        },
77810 => {
779
780                            ::std::result::Result::Err(Box::new(::aws_smithy_http::endpoint::ResolveEndpointError::message("DualStack is enabled but this partition does not support DualStack"
781.to_string())) as ::aws_smithy_runtime_api::box_error::BoxError)
782                        },
78311 => {
784                            let region = params.region.as_deref().unwrap_or_default();
785let partition_result = context.partition_result.as_ref().expect("Guaranteed to have a value by earlier checks.");
786                            ::std::result::Result::Ok(::aws_smithy_types::endpoint::Endpoint::builder().url({ let mut out = String::new();
787out.push_str("https://oidc.");
788#[allow(clippy::needless_borrow)]
789out.push_str(&region.as_ref());
790out.push_str(".");
791#[allow(clippy::needless_borrow)]
792out.push_str(&partition_result.dns_suffix());
793out })
794.build())
795                        },
79612 => {
797
798                            ::std::result::Result::Err(Box::new(::aws_smithy_http::endpoint::ResolveEndpointError::message("Invalid Configuration: Missing Region"
799.to_string())) as ::aws_smithy_runtime_api::box_error::BoxError)
800                        },
801                                        _ => ::std::result::Result::Err(Box::new(::aws_smithy_http::endpoint::ResolveEndpointError::message("No endpoint rule matched")) as ::aws_smithy_runtime_api::box_error::BoxError),
802                                    };
803                                }
804                                1 | -1 => return ::std::result::Result::Err(Box::new(::aws_smithy_http::endpoint::ResolveEndpointError::message("No endpoint rule matched")) as ::aws_smithy_runtime_api::box_error::BoxError),
805                                ref_val => {
806                                    let is_complement = ref_val < 0;
807                                    let node = &NODES[(ref_val.unsigned_abs() as usize) - 1];
808                                    let condition_result = match node.condition_index {
809                                        0 => endpoint.is_some(),
8101 => region.is_some(),
8112 => (|_diagnostic_collector: &mut crate::endpoint_lib::diagnostic::DiagnosticCollector| -> bool {
812                            let partition_result = &mut context.partition_result;
813                            let partition_resolver = &self.partition_resolver;
814                            {
815    *partition_result = partition_resolver.resolve_partition(if let Some(param) = region{
816                        param
817                    } else {
818                        return false
819                    }, _diagnostic_collector).map(|inner| inner.into());
820    partition_result.is_some()
821}
822                        })(&mut _diagnostic_collector),
8233 => (use_fips) == (&true),
8244 => (use_dual_stack) == (&true),
8255 => (|_diagnostic_collector: &mut crate::endpoint_lib::diagnostic::DiagnosticCollector| -> bool {
826                            let partition_result = & context.partition_result;
827                            let partition_resolver = &self.partition_resolver;
828                            (if let Some(inner) = partition_result {
829    inner.supports_dual_stack()
830}else{
831    return false
832})
833==
834(true)
835                        })(&mut _diagnostic_collector),
8366 => (|_diagnostic_collector: &mut crate::endpoint_lib::diagnostic::DiagnosticCollector| -> bool {
837                            let partition_result = & context.partition_result;
838                            let partition_resolver = &self.partition_resolver;
839                            (if let Some(inner) = partition_result {
840    inner.supports_fips()
841}else{
842    return false
843})
844==
845(true)
846                        })(&mut _diagnostic_collector),
8477 => (|_diagnostic_collector: &mut crate::endpoint_lib::diagnostic::DiagnosticCollector| -> bool {
848                            let partition_result = & context.partition_result;
849                            let partition_resolver = &self.partition_resolver;
850                            (if let Some(inner) = partition_result {
851    inner.name()
852}else{
853    return false
854})
855==
856("aws-us-gov")
857                        })(&mut _diagnostic_collector),
858                                        _ => unreachable!("Invalid condition index"),
859                                    };
860                                    current_ref = if is_complement ^ condition_result { node.high_ref } else { node.low_ref };
861                                }
862                            }
863                        }
864                    }
865                }
866
867                impl crate::config::endpoint::ResolveEndpoint for DefaultResolver {
868                    fn resolve_endpoint<'a>(&'a self, params: &'a crate::config::endpoint::Params) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a> {
869                        // Check single-entry cache (lock-free read via ArcSwap)
870                        let cached = self.endpoint_cache.load();
871                        if let Some((cached_params, cached_endpoint)) = cached.as_ref() {
872                            if cached_params == params {
873                                return ::aws_smithy_runtime_api::client::endpoint::EndpointFuture::ready(::std::result::Result::Ok(cached_endpoint.clone()));
874                            }
875                        }
876                        drop(cached);
877                        let result = self.resolve_endpoint(params);
878                        if let ::std::result::Result::Ok(ref endpoint) = result {
879                            self.endpoint_cache.store(::std::sync::Arc::new(Some((params.clone(), endpoint.clone()))));
880                        }
881                        ::aws_smithy_runtime_api::client::endpoint::EndpointFuture::ready(result)
882                    }
883                }
884            const NODES: [crate::endpoint_lib::bdd_interpreter::BddNode; 14] = [
885crate::endpoint_lib::bdd_interpreter::BddNode { condition_index: -1, high_ref: 1, low_ref: -1 },
886crate::endpoint_lib::bdd_interpreter::BddNode { condition_index: 0, high_ref: 13, low_ref: 3 },
887crate::endpoint_lib::bdd_interpreter::BddNode { condition_index: 1, high_ref: 4, low_ref: 100000012 },
888crate::endpoint_lib::bdd_interpreter::BddNode { condition_index: 2, high_ref: 5, low_ref: 100000012 },
889crate::endpoint_lib::bdd_interpreter::BddNode { condition_index: 3, high_ref: 8, low_ref: 6 },
890crate::endpoint_lib::bdd_interpreter::BddNode { condition_index: 4, high_ref: 7, low_ref: 100000011 },
891crate::endpoint_lib::bdd_interpreter::BddNode { condition_index: 5, high_ref: 100000009, low_ref: 100000010 },
892crate::endpoint_lib::bdd_interpreter::BddNode { condition_index: 4, high_ref: 11, low_ref: 9 },
893crate::endpoint_lib::bdd_interpreter::BddNode { condition_index: 6, high_ref: 10, low_ref: 100000008 },
894crate::endpoint_lib::bdd_interpreter::BddNode { condition_index: 7, high_ref: 100000006, low_ref: 100000007 },
895crate::endpoint_lib::bdd_interpreter::BddNode { condition_index: 5, high_ref: 12, low_ref: 100000005 },
896crate::endpoint_lib::bdd_interpreter::BddNode { condition_index: 6, high_ref: 100000004, low_ref: 100000005 },
897crate::endpoint_lib::bdd_interpreter::BddNode { condition_index: 3, high_ref: 100000001, low_ref: 14 },
898crate::endpoint_lib::bdd_interpreter::BddNode { condition_index: 4, high_ref: 100000002, low_ref: 100000003 }
899];
900            // These are all optional since they are set by conditions and will
901// all be unset when we start evaluation
902#[derive(Default)]
903#[allow(unused_lifetimes)]
904pub(crate) struct ConditionContext<'a> {
905    pub(crate) partition_result: Option<crate::endpoint_lib::partition::Partition<'a>>,
906    // Sometimes none of the members reference the lifetime, this makes it still valid
907    phantom: std::marker::PhantomData<&'a ()>
908}
909
910#[non_exhaustive]
911#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
912/// Configuration parameters for resolving the correct endpoint
913pub struct Params {
914    /// The AWS region used to dispatch the request.
915    pub(crate) region: ::std::option::Option<::std::string::String>,
916    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
917    pub(crate) use_dual_stack: bool,
918    /// When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.
919    pub(crate) use_fips: bool,
920    /// Override the endpoint used to send this request
921    pub(crate) endpoint: ::std::option::Option<::std::string::String>,
922}
923impl Params {
924    /// Create a builder for [`Params`]
925                    pub fn builder() -> crate::config::endpoint::ParamsBuilder {
926                        crate::config::endpoint::ParamsBuilder::default()
927                    }
928    /// The AWS region used to dispatch the request.
929    pub fn region(&self) -> ::std::option::Option<&str> {
930                            self.region.as_deref()
931                        }
932    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
933    pub fn use_dual_stack(&self) -> ::std::option::Option<bool> {
934                            Some(self.use_dual_stack)
935                        }
936    /// When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.
937    pub fn use_fips(&self) -> ::std::option::Option<bool> {
938                            Some(self.use_fips)
939                        }
940    /// Override the endpoint used to send this request
941    pub fn endpoint(&self) -> ::std::option::Option<&str> {
942                            self.endpoint.as_deref()
943                        }
944}
945
946/// Builder for [`Params`]
947#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
948pub struct ParamsBuilder {
949    region: ::std::option::Option<::std::string::String>,
950    use_dual_stack: ::std::option::Option<bool>,
951    use_fips: ::std::option::Option<bool>,
952    endpoint: ::std::option::Option<::std::string::String>,
953}
954impl ParamsBuilder {
955    /// Consume this builder, creating [`Params`].
956    pub fn build(self) -> ::std::result::Result<crate::config::endpoint::Params, crate::config::endpoint::InvalidParams> {
957        if let Some(region) = &self.region {
958                                                if !crate::endpoint_lib::host::is_valid_host_label(region.as_ref() as &str, true, &mut crate::endpoint_lib::diagnostic::DiagnosticCollector::new()) {
959                                                    return Err(crate::config::endpoint::InvalidParams::invalid_value("region", "must be a valid host label"))
960                                                }
961                                            };
962        Ok(#[allow(clippy::unnecessary_lazy_evaluations)]
963        crate::config::endpoint::Params {
964            region: self.region
965            ,
966            use_dual_stack: self.use_dual_stack
967            .or_else(||Some(false))
968            .ok_or_else(||crate::config::endpoint::InvalidParams::missing("use_dual_stack"))?
969            ,
970            use_fips: self.use_fips
971            .or_else(||Some(false))
972            .ok_or_else(||crate::config::endpoint::InvalidParams::missing("use_fips"))?
973            ,
974            endpoint: self.endpoint
975            ,
976        })
977    }
978    /// Sets the value for region
979    ///
980    /// The AWS region used to dispatch the request.
981                        pub fn region(mut self, value: impl Into<::std::string::String>) -> Self {
982                            self.region = Some(value.into());
983                            self
984                        }
985
986                        /// Sets the value for region
987    ///
988    /// The AWS region used to dispatch the request.
989                        pub fn set_region(mut self, param: Option<::std::string::String>) -> Self {
990                            self.region = param;
991                            self
992                        }
993    /// Sets the value for use_dual_stack
994    ///
995    /// When unset, this parameter has a default value of `false`.
996    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
997                        pub fn use_dual_stack(mut self, value: impl Into<bool>) -> Self {
998                            self.use_dual_stack = Some(value.into());
999                            self
1000                        }
1001
1002                        /// Sets the value for use_dual_stack
1003    ///
1004    /// When unset, this parameter has a default value of `false`.
1005    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
1006                        pub fn set_use_dual_stack(mut self, param: Option<bool>) -> Self {
1007                            self.use_dual_stack = param;
1008                            self
1009                        }
1010    /// Sets the value for use_fips
1011    ///
1012    /// When unset, this parameter has a default value of `false`.
1013    /// When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.
1014                        pub fn use_fips(mut self, value: impl Into<bool>) -> Self {
1015                            self.use_fips = Some(value.into());
1016                            self
1017                        }
1018
1019                        /// Sets the value for use_fips
1020    ///
1021    /// When unset, this parameter has a default value of `false`.
1022    /// When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.
1023                        pub fn set_use_fips(mut self, param: Option<bool>) -> Self {
1024                            self.use_fips = param;
1025                            self
1026                        }
1027    /// Sets the value for endpoint
1028    ///
1029    /// Override the endpoint used to send this request
1030                        pub fn endpoint(mut self, value: impl Into<::std::string::String>) -> Self {
1031                            self.endpoint = Some(value.into());
1032                            self
1033                        }
1034
1035                        /// Sets the value for endpoint
1036    ///
1037    /// Override the endpoint used to send this request
1038                        pub fn set_endpoint(mut self, param: Option<::std::string::String>) -> Self {
1039                            self.endpoint = param;
1040                            self
1041                        }
1042}
1043
1044/// An error that occurred during endpoint resolution
1045                    #[derive(Debug)]
1046                    pub struct InvalidParams {
1047                        field: std::borrow::Cow<'static, str>,
1048                        kind: InvalidParamsErrorKind,
1049                    }
1050
1051                    /// The kind of invalid parameter error
1052                    #[derive(Debug)]
1053                    enum InvalidParamsErrorKind {
1054                        MissingField,
1055                        InvalidValue {
1056                            message: &'static str,
1057                        }
1058                    }
1059
1060                    impl InvalidParams {
1061                        #[allow(dead_code)]
1062                        fn missing(field: &'static str) -> Self {
1063                            Self { field: field.into(), kind: InvalidParamsErrorKind::MissingField }
1064                        }
1065
1066                        #[allow(dead_code)]
1067                        fn invalid_value(field: &'static str, message: &'static str) -> Self {
1068                            Self { field: field.into(), kind: InvalidParamsErrorKind::InvalidValue { message }}
1069                        }
1070                    }
1071
1072                    impl std::fmt::Display for InvalidParams {
1073                        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1074                            match self.kind {
1075                                InvalidParamsErrorKind::MissingField => write!(f, "a required field was missing: `{}`", self.field),
1076                                InvalidParamsErrorKind::InvalidValue { message} => write!(f, "invalid value for field: `{}` - {}", self.field, message),
1077                            }
1078                        }
1079                    }
1080
1081                    impl std::error::Error for InvalidParams { }
1082