aws_sdk_sts/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::EndpointFuture;
3pub use ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver;
4pub use ::aws_smithy_types::endpoint::Endpoint;
5
6/// Interceptor that tracks endpoint override business metric.
7#[derive(Debug, Default)]
8pub(crate) struct EndpointOverrideFeatureTrackerInterceptor;
9
10impl ::aws_smithy_runtime_api::client::interceptors::Intercept for EndpointOverrideFeatureTrackerInterceptor {
11    fn name(&self) -> &'static str {
12        "EndpointOverrideFeatureTrackerInterceptor"
13    }
14
15    fn read_before_execution(
16        &self,
17        _context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<'_>,
18        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
19    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
20        if cfg.load::<::aws_types::endpoint_config::EndpointUrl>().is_some() {
21            cfg.interceptor_state()
22                .store_append(::aws_runtime::sdk_feature::AwsSdkFeature::EndpointOverride);
23        }
24        ::std::result::Result::Ok(())
25    }
26}
27
28#[cfg(test)]
29mod test {
30
31    /// For region af-south-1 with FIPS disabled and DualStack disabled
32    #[test]
33    fn test_1() {
34        let params = crate::config::endpoint::Params::builder()
35            .region("af-south-1".to_string())
36            .use_fips(false)
37            .use_dual_stack(false)
38            .build()
39            .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://sts.af-south-1.amazonaws.com");
43        assert_eq!(
44            endpoint,
45            ::aws_smithy_types::endpoint::Endpoint::builder()
46                .url("https://sts.af-south-1.amazonaws.com")
47                .build()
48        );
49    }
50
51    /// For region ap-east-1 with FIPS disabled and DualStack disabled
52    #[test]
53    fn test_2() {
54        let params = crate::config::endpoint::Params::builder()
55            .region("ap-east-1".to_string())
56            .use_fips(false)
57            .use_dual_stack(false)
58            .build()
59            .expect("invalid params");
60        let resolver = crate::config::endpoint::DefaultResolver::new();
61        let endpoint = resolver.resolve_endpoint(&params);
62        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.ap-east-1.amazonaws.com");
63        assert_eq!(
64            endpoint,
65            ::aws_smithy_types::endpoint::Endpoint::builder()
66                .url("https://sts.ap-east-1.amazonaws.com")
67                .build()
68        );
69    }
70
71    /// For region ap-northeast-1 with FIPS disabled and DualStack disabled
72    #[test]
73    fn test_3() {
74        let params = crate::config::endpoint::Params::builder()
75            .region("ap-northeast-1".to_string())
76            .use_fips(false)
77            .use_dual_stack(false)
78            .build()
79            .expect("invalid params");
80        let resolver = crate::config::endpoint::DefaultResolver::new();
81        let endpoint = resolver.resolve_endpoint(&params);
82        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.ap-northeast-1.amazonaws.com");
83        assert_eq!(
84            endpoint,
85            ::aws_smithy_types::endpoint::Endpoint::builder()
86                .url("https://sts.ap-northeast-1.amazonaws.com")
87                .build()
88        );
89    }
90
91    /// For region ap-northeast-2 with FIPS disabled and DualStack disabled
92    #[test]
93    fn test_4() {
94        let params = crate::config::endpoint::Params::builder()
95            .region("ap-northeast-2".to_string())
96            .use_fips(false)
97            .use_dual_stack(false)
98            .build()
99            .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://sts.ap-northeast-2.amazonaws.com");
103        assert_eq!(
104            endpoint,
105            ::aws_smithy_types::endpoint::Endpoint::builder()
106                .url("https://sts.ap-northeast-2.amazonaws.com")
107                .build()
108        );
109    }
110
111    /// For region ap-northeast-3 with FIPS disabled and DualStack disabled
112    #[test]
113    fn test_5() {
114        let params = crate::config::endpoint::Params::builder()
115            .region("ap-northeast-3".to_string())
116            .use_fips(false)
117            .use_dual_stack(false)
118            .build()
119            .expect("invalid params");
120        let resolver = crate::config::endpoint::DefaultResolver::new();
121        let endpoint = resolver.resolve_endpoint(&params);
122        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.ap-northeast-3.amazonaws.com");
123        assert_eq!(
124            endpoint,
125            ::aws_smithy_types::endpoint::Endpoint::builder()
126                .url("https://sts.ap-northeast-3.amazonaws.com")
127                .build()
128        );
129    }
130
131    /// For region ap-south-1 with FIPS disabled and DualStack disabled
132    #[test]
133    fn test_6() {
134        let params = crate::config::endpoint::Params::builder()
135            .region("ap-south-1".to_string())
136            .use_fips(false)
137            .use_dual_stack(false)
138            .build()
139            .expect("invalid params");
140        let resolver = crate::config::endpoint::DefaultResolver::new();
141        let endpoint = resolver.resolve_endpoint(&params);
142        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.ap-south-1.amazonaws.com");
143        assert_eq!(
144            endpoint,
145            ::aws_smithy_types::endpoint::Endpoint::builder()
146                .url("https://sts.ap-south-1.amazonaws.com")
147                .build()
148        );
149    }
150
151    /// For region ap-southeast-1 with FIPS disabled and DualStack disabled
152    #[test]
153    fn test_7() {
154        let params = crate::config::endpoint::Params::builder()
155            .region("ap-southeast-1".to_string())
156            .use_fips(false)
157            .use_dual_stack(false)
158            .build()
159            .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://sts.ap-southeast-1.amazonaws.com");
163        assert_eq!(
164            endpoint,
165            ::aws_smithy_types::endpoint::Endpoint::builder()
166                .url("https://sts.ap-southeast-1.amazonaws.com")
167                .build()
168        );
169    }
170
171    /// For region ap-southeast-2 with FIPS disabled and DualStack disabled
172    #[test]
173    fn test_8() {
174        let params = crate::config::endpoint::Params::builder()
175            .region("ap-southeast-2".to_string())
176            .use_fips(false)
177            .use_dual_stack(false)
178            .build()
179            .expect("invalid params");
180        let resolver = crate::config::endpoint::DefaultResolver::new();
181        let endpoint = resolver.resolve_endpoint(&params);
182        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.ap-southeast-2.amazonaws.com");
183        assert_eq!(
184            endpoint,
185            ::aws_smithy_types::endpoint::Endpoint::builder()
186                .url("https://sts.ap-southeast-2.amazonaws.com")
187                .build()
188        );
189    }
190
191    /// For region ap-southeast-3 with FIPS disabled and DualStack disabled
192    #[test]
193    fn test_9() {
194        let params = crate::config::endpoint::Params::builder()
195            .region("ap-southeast-3".to_string())
196            .use_fips(false)
197            .use_dual_stack(false)
198            .build()
199            .expect("invalid params");
200        let resolver = crate::config::endpoint::DefaultResolver::new();
201        let endpoint = resolver.resolve_endpoint(&params);
202        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.ap-southeast-3.amazonaws.com");
203        assert_eq!(
204            endpoint,
205            ::aws_smithy_types::endpoint::Endpoint::builder()
206                .url("https://sts.ap-southeast-3.amazonaws.com")
207                .build()
208        );
209    }
210
211    /// For region aws-global with FIPS disabled and DualStack disabled
212    #[test]
213    fn test_10() {
214        let params = crate::config::endpoint::Params::builder()
215            .region("aws-global".to_string())
216            .use_fips(false)
217            .use_dual_stack(false)
218            .build()
219            .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://sts.amazonaws.com");
223        assert_eq!(
224            endpoint,
225            ::aws_smithy_types::endpoint::Endpoint::builder()
226                .url("https://sts.amazonaws.com")
227                .property(
228                    "authSchemes",
229                    vec![{
230                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
231                        out.insert("name".to_string(), "sigv4".to_string().into());
232                        out.insert("signingName".to_string(), "sts".to_string().into());
233                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
234                        out
235                    }
236                    .into()]
237                )
238                .build()
239        );
240    }
241
242    /// For region ca-central-1 with FIPS disabled and DualStack disabled
243    #[test]
244    fn test_11() {
245        let params = crate::config::endpoint::Params::builder()
246            .region("ca-central-1".to_string())
247            .use_fips(false)
248            .use_dual_stack(false)
249            .build()
250            .expect("invalid params");
251        let resolver = crate::config::endpoint::DefaultResolver::new();
252        let endpoint = resolver.resolve_endpoint(&params);
253        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.ca-central-1.amazonaws.com");
254        assert_eq!(
255            endpoint,
256            ::aws_smithy_types::endpoint::Endpoint::builder()
257                .url("https://sts.ca-central-1.amazonaws.com")
258                .build()
259        );
260    }
261
262    /// For region eu-central-1 with FIPS disabled and DualStack disabled
263    #[test]
264    fn test_12() {
265        let params = crate::config::endpoint::Params::builder()
266            .region("eu-central-1".to_string())
267            .use_fips(false)
268            .use_dual_stack(false)
269            .build()
270            .expect("invalid params");
271        let resolver = crate::config::endpoint::DefaultResolver::new();
272        let endpoint = resolver.resolve_endpoint(&params);
273        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.eu-central-1.amazonaws.com");
274        assert_eq!(
275            endpoint,
276            ::aws_smithy_types::endpoint::Endpoint::builder()
277                .url("https://sts.eu-central-1.amazonaws.com")
278                .build()
279        );
280    }
281
282    /// For region eu-north-1 with FIPS disabled and DualStack disabled
283    #[test]
284    fn test_13() {
285        let params = crate::config::endpoint::Params::builder()
286            .region("eu-north-1".to_string())
287            .use_fips(false)
288            .use_dual_stack(false)
289            .build()
290            .expect("invalid params");
291        let resolver = crate::config::endpoint::DefaultResolver::new();
292        let endpoint = resolver.resolve_endpoint(&params);
293        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.eu-north-1.amazonaws.com");
294        assert_eq!(
295            endpoint,
296            ::aws_smithy_types::endpoint::Endpoint::builder()
297                .url("https://sts.eu-north-1.amazonaws.com")
298                .build()
299        );
300    }
301
302    /// For region eu-south-1 with FIPS disabled and DualStack disabled
303    #[test]
304    fn test_14() {
305        let params = crate::config::endpoint::Params::builder()
306            .region("eu-south-1".to_string())
307            .use_fips(false)
308            .use_dual_stack(false)
309            .build()
310            .expect("invalid params");
311        let resolver = crate::config::endpoint::DefaultResolver::new();
312        let endpoint = resolver.resolve_endpoint(&params);
313        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.eu-south-1.amazonaws.com");
314        assert_eq!(
315            endpoint,
316            ::aws_smithy_types::endpoint::Endpoint::builder()
317                .url("https://sts.eu-south-1.amazonaws.com")
318                .build()
319        );
320    }
321
322    /// For region eu-west-1 with FIPS disabled and DualStack disabled
323    #[test]
324    fn test_15() {
325        let params = crate::config::endpoint::Params::builder()
326            .region("eu-west-1".to_string())
327            .use_fips(false)
328            .use_dual_stack(false)
329            .build()
330            .expect("invalid params");
331        let resolver = crate::config::endpoint::DefaultResolver::new();
332        let endpoint = resolver.resolve_endpoint(&params);
333        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.eu-west-1.amazonaws.com");
334        assert_eq!(
335            endpoint,
336            ::aws_smithy_types::endpoint::Endpoint::builder()
337                .url("https://sts.eu-west-1.amazonaws.com")
338                .build()
339        );
340    }
341
342    /// For region eu-west-2 with FIPS disabled and DualStack disabled
343    #[test]
344    fn test_16() {
345        let params = crate::config::endpoint::Params::builder()
346            .region("eu-west-2".to_string())
347            .use_fips(false)
348            .use_dual_stack(false)
349            .build()
350            .expect("invalid params");
351        let resolver = crate::config::endpoint::DefaultResolver::new();
352        let endpoint = resolver.resolve_endpoint(&params);
353        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.eu-west-2.amazonaws.com");
354        assert_eq!(
355            endpoint,
356            ::aws_smithy_types::endpoint::Endpoint::builder()
357                .url("https://sts.eu-west-2.amazonaws.com")
358                .build()
359        );
360    }
361
362    /// For region eu-west-3 with FIPS disabled and DualStack disabled
363    #[test]
364    fn test_17() {
365        let params = crate::config::endpoint::Params::builder()
366            .region("eu-west-3".to_string())
367            .use_fips(false)
368            .use_dual_stack(false)
369            .build()
370            .expect("invalid params");
371        let resolver = crate::config::endpoint::DefaultResolver::new();
372        let endpoint = resolver.resolve_endpoint(&params);
373        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.eu-west-3.amazonaws.com");
374        assert_eq!(
375            endpoint,
376            ::aws_smithy_types::endpoint::Endpoint::builder()
377                .url("https://sts.eu-west-3.amazonaws.com")
378                .build()
379        );
380    }
381
382    /// For region me-south-1 with FIPS disabled and DualStack disabled
383    #[test]
384    fn test_18() {
385        let params = crate::config::endpoint::Params::builder()
386            .region("me-south-1".to_string())
387            .use_fips(false)
388            .use_dual_stack(false)
389            .build()
390            .expect("invalid params");
391        let resolver = crate::config::endpoint::DefaultResolver::new();
392        let endpoint = resolver.resolve_endpoint(&params);
393        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.me-south-1.amazonaws.com");
394        assert_eq!(
395            endpoint,
396            ::aws_smithy_types::endpoint::Endpoint::builder()
397                .url("https://sts.me-south-1.amazonaws.com")
398                .build()
399        );
400    }
401
402    /// For region sa-east-1 with FIPS disabled and DualStack disabled
403    #[test]
404    fn test_19() {
405        let params = crate::config::endpoint::Params::builder()
406            .region("sa-east-1".to_string())
407            .use_fips(false)
408            .use_dual_stack(false)
409            .build()
410            .expect("invalid params");
411        let resolver = crate::config::endpoint::DefaultResolver::new();
412        let endpoint = resolver.resolve_endpoint(&params);
413        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.sa-east-1.amazonaws.com");
414        assert_eq!(
415            endpoint,
416            ::aws_smithy_types::endpoint::Endpoint::builder()
417                .url("https://sts.sa-east-1.amazonaws.com")
418                .build()
419        );
420    }
421
422    /// For region us-east-1 with FIPS disabled and DualStack disabled
423    #[test]
424    fn test_20() {
425        let params = crate::config::endpoint::Params::builder()
426            .region("us-east-1".to_string())
427            .use_fips(false)
428            .use_dual_stack(false)
429            .build()
430            .expect("invalid params");
431        let resolver = crate::config::endpoint::DefaultResolver::new();
432        let endpoint = resolver.resolve_endpoint(&params);
433        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.us-east-1.amazonaws.com");
434        assert_eq!(
435            endpoint,
436            ::aws_smithy_types::endpoint::Endpoint::builder()
437                .url("https://sts.us-east-1.amazonaws.com")
438                .build()
439        );
440    }
441
442    /// For region us-east-1 with FIPS enabled and DualStack disabled
443    #[test]
444    fn test_21() {
445        let params = crate::config::endpoint::Params::builder()
446            .region("us-east-1".to_string())
447            .use_fips(true)
448            .use_dual_stack(false)
449            .build()
450            .expect("invalid params");
451        let resolver = crate::config::endpoint::DefaultResolver::new();
452        let endpoint = resolver.resolve_endpoint(&params);
453        let endpoint = endpoint.expect("Expected valid endpoint: https://sts-fips.us-east-1.amazonaws.com");
454        assert_eq!(
455            endpoint,
456            ::aws_smithy_types::endpoint::Endpoint::builder()
457                .url("https://sts-fips.us-east-1.amazonaws.com")
458                .build()
459        );
460    }
461
462    /// For region us-east-2 with FIPS disabled and DualStack disabled
463    #[test]
464    fn test_22() {
465        let params = crate::config::endpoint::Params::builder()
466            .region("us-east-2".to_string())
467            .use_fips(false)
468            .use_dual_stack(false)
469            .build()
470            .expect("invalid params");
471        let resolver = crate::config::endpoint::DefaultResolver::new();
472        let endpoint = resolver.resolve_endpoint(&params);
473        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.us-east-2.amazonaws.com");
474        assert_eq!(
475            endpoint,
476            ::aws_smithy_types::endpoint::Endpoint::builder()
477                .url("https://sts.us-east-2.amazonaws.com")
478                .build()
479        );
480    }
481
482    /// For region us-east-2 with FIPS enabled and DualStack disabled
483    #[test]
484    fn test_23() {
485        let params = crate::config::endpoint::Params::builder()
486            .region("us-east-2".to_string())
487            .use_fips(true)
488            .use_dual_stack(false)
489            .build()
490            .expect("invalid params");
491        let resolver = crate::config::endpoint::DefaultResolver::new();
492        let endpoint = resolver.resolve_endpoint(&params);
493        let endpoint = endpoint.expect("Expected valid endpoint: https://sts-fips.us-east-2.amazonaws.com");
494        assert_eq!(
495            endpoint,
496            ::aws_smithy_types::endpoint::Endpoint::builder()
497                .url("https://sts-fips.us-east-2.amazonaws.com")
498                .build()
499        );
500    }
501
502    /// For region us-west-1 with FIPS disabled and DualStack disabled
503    #[test]
504    fn test_24() {
505        let params = crate::config::endpoint::Params::builder()
506            .region("us-west-1".to_string())
507            .use_fips(false)
508            .use_dual_stack(false)
509            .build()
510            .expect("invalid params");
511        let resolver = crate::config::endpoint::DefaultResolver::new();
512        let endpoint = resolver.resolve_endpoint(&params);
513        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.us-west-1.amazonaws.com");
514        assert_eq!(
515            endpoint,
516            ::aws_smithy_types::endpoint::Endpoint::builder()
517                .url("https://sts.us-west-1.amazonaws.com")
518                .build()
519        );
520    }
521
522    /// For region us-west-1 with FIPS enabled and DualStack disabled
523    #[test]
524    fn test_25() {
525        let params = crate::config::endpoint::Params::builder()
526            .region("us-west-1".to_string())
527            .use_fips(true)
528            .use_dual_stack(false)
529            .build()
530            .expect("invalid params");
531        let resolver = crate::config::endpoint::DefaultResolver::new();
532        let endpoint = resolver.resolve_endpoint(&params);
533        let endpoint = endpoint.expect("Expected valid endpoint: https://sts-fips.us-west-1.amazonaws.com");
534        assert_eq!(
535            endpoint,
536            ::aws_smithy_types::endpoint::Endpoint::builder()
537                .url("https://sts-fips.us-west-1.amazonaws.com")
538                .build()
539        );
540    }
541
542    /// For region us-west-2 with FIPS disabled and DualStack disabled
543    #[test]
544    fn test_26() {
545        let params = crate::config::endpoint::Params::builder()
546            .region("us-west-2".to_string())
547            .use_fips(false)
548            .use_dual_stack(false)
549            .build()
550            .expect("invalid params");
551        let resolver = crate::config::endpoint::DefaultResolver::new();
552        let endpoint = resolver.resolve_endpoint(&params);
553        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.us-west-2.amazonaws.com");
554        assert_eq!(
555            endpoint,
556            ::aws_smithy_types::endpoint::Endpoint::builder()
557                .url("https://sts.us-west-2.amazonaws.com")
558                .build()
559        );
560    }
561
562    /// For region us-west-2 with FIPS enabled and DualStack disabled
563    #[test]
564    fn test_27() {
565        let params = crate::config::endpoint::Params::builder()
566            .region("us-west-2".to_string())
567            .use_fips(true)
568            .use_dual_stack(false)
569            .build()
570            .expect("invalid params");
571        let resolver = crate::config::endpoint::DefaultResolver::new();
572        let endpoint = resolver.resolve_endpoint(&params);
573        let endpoint = endpoint.expect("Expected valid endpoint: https://sts-fips.us-west-2.amazonaws.com");
574        assert_eq!(
575            endpoint,
576            ::aws_smithy_types::endpoint::Endpoint::builder()
577                .url("https://sts-fips.us-west-2.amazonaws.com")
578                .build()
579        );
580    }
581
582    /// For region us-east-1 with FIPS enabled and DualStack enabled
583    #[test]
584    fn test_28() {
585        let params = crate::config::endpoint::Params::builder()
586            .region("us-east-1".to_string())
587            .use_fips(true)
588            .use_dual_stack(true)
589            .build()
590            .expect("invalid params");
591        let resolver = crate::config::endpoint::DefaultResolver::new();
592        let endpoint = resolver.resolve_endpoint(&params);
593        let endpoint = endpoint.expect("Expected valid endpoint: https://sts-fips.us-east-1.api.aws");
594        assert_eq!(
595            endpoint,
596            ::aws_smithy_types::endpoint::Endpoint::builder()
597                .url("https://sts-fips.us-east-1.api.aws")
598                .build()
599        );
600    }
601
602    /// For region us-east-1 with FIPS disabled and DualStack enabled
603    #[test]
604    fn test_29() {
605        let params = crate::config::endpoint::Params::builder()
606            .region("us-east-1".to_string())
607            .use_fips(false)
608            .use_dual_stack(true)
609            .build()
610            .expect("invalid params");
611        let resolver = crate::config::endpoint::DefaultResolver::new();
612        let endpoint = resolver.resolve_endpoint(&params);
613        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.us-east-1.api.aws");
614        assert_eq!(
615            endpoint,
616            ::aws_smithy_types::endpoint::Endpoint::builder()
617                .url("https://sts.us-east-1.api.aws")
618                .build()
619        );
620    }
621
622    /// For region cn-north-1 with FIPS disabled and DualStack disabled
623    #[test]
624    fn test_30() {
625        let params = crate::config::endpoint::Params::builder()
626            .region("cn-north-1".to_string())
627            .use_fips(false)
628            .use_dual_stack(false)
629            .build()
630            .expect("invalid params");
631        let resolver = crate::config::endpoint::DefaultResolver::new();
632        let endpoint = resolver.resolve_endpoint(&params);
633        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.cn-north-1.amazonaws.com.cn");
634        assert_eq!(
635            endpoint,
636            ::aws_smithy_types::endpoint::Endpoint::builder()
637                .url("https://sts.cn-north-1.amazonaws.com.cn")
638                .build()
639        );
640    }
641
642    /// For region cn-northwest-1 with FIPS disabled and DualStack disabled
643    #[test]
644    fn test_31() {
645        let params = crate::config::endpoint::Params::builder()
646            .region("cn-northwest-1".to_string())
647            .use_fips(false)
648            .use_dual_stack(false)
649            .build()
650            .expect("invalid params");
651        let resolver = crate::config::endpoint::DefaultResolver::new();
652        let endpoint = resolver.resolve_endpoint(&params);
653        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.cn-northwest-1.amazonaws.com.cn");
654        assert_eq!(
655            endpoint,
656            ::aws_smithy_types::endpoint::Endpoint::builder()
657                .url("https://sts.cn-northwest-1.amazonaws.com.cn")
658                .build()
659        );
660    }
661
662    /// For region cn-north-1 with FIPS enabled and DualStack enabled
663    #[test]
664    fn test_32() {
665        let params = crate::config::endpoint::Params::builder()
666            .region("cn-north-1".to_string())
667            .use_fips(true)
668            .use_dual_stack(true)
669            .build()
670            .expect("invalid params");
671        let resolver = crate::config::endpoint::DefaultResolver::new();
672        let endpoint = resolver.resolve_endpoint(&params);
673        let endpoint = endpoint.expect("Expected valid endpoint: https://sts-fips.cn-north-1.api.amazonwebservices.com.cn");
674        assert_eq!(
675            endpoint,
676            ::aws_smithy_types::endpoint::Endpoint::builder()
677                .url("https://sts-fips.cn-north-1.api.amazonwebservices.com.cn")
678                .build()
679        );
680    }
681
682    /// For region cn-north-1 with FIPS enabled and DualStack disabled
683    #[test]
684    fn test_33() {
685        let params = crate::config::endpoint::Params::builder()
686            .region("cn-north-1".to_string())
687            .use_fips(true)
688            .use_dual_stack(false)
689            .build()
690            .expect("invalid params");
691        let resolver = crate::config::endpoint::DefaultResolver::new();
692        let endpoint = resolver.resolve_endpoint(&params);
693        let endpoint = endpoint.expect("Expected valid endpoint: https://sts-fips.cn-north-1.amazonaws.com.cn");
694        assert_eq!(
695            endpoint,
696            ::aws_smithy_types::endpoint::Endpoint::builder()
697                .url("https://sts-fips.cn-north-1.amazonaws.com.cn")
698                .build()
699        );
700    }
701
702    /// For region cn-north-1 with FIPS disabled and DualStack enabled
703    #[test]
704    fn test_34() {
705        let params = crate::config::endpoint::Params::builder()
706            .region("cn-north-1".to_string())
707            .use_fips(false)
708            .use_dual_stack(true)
709            .build()
710            .expect("invalid params");
711        let resolver = crate::config::endpoint::DefaultResolver::new();
712        let endpoint = resolver.resolve_endpoint(&params);
713        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.cn-north-1.api.amazonwebservices.com.cn");
714        assert_eq!(
715            endpoint,
716            ::aws_smithy_types::endpoint::Endpoint::builder()
717                .url("https://sts.cn-north-1.api.amazonwebservices.com.cn")
718                .build()
719        );
720    }
721
722    /// For region us-gov-east-1 with FIPS disabled and DualStack disabled
723    #[test]
724    fn test_35() {
725        let params = crate::config::endpoint::Params::builder()
726            .region("us-gov-east-1".to_string())
727            .use_fips(false)
728            .use_dual_stack(false)
729            .build()
730            .expect("invalid params");
731        let resolver = crate::config::endpoint::DefaultResolver::new();
732        let endpoint = resolver.resolve_endpoint(&params);
733        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.us-gov-east-1.amazonaws.com");
734        assert_eq!(
735            endpoint,
736            ::aws_smithy_types::endpoint::Endpoint::builder()
737                .url("https://sts.us-gov-east-1.amazonaws.com")
738                .build()
739        );
740    }
741
742    /// For region us-gov-east-1 with FIPS enabled and DualStack disabled
743    #[test]
744    fn test_36() {
745        let params = crate::config::endpoint::Params::builder()
746            .region("us-gov-east-1".to_string())
747            .use_fips(true)
748            .use_dual_stack(false)
749            .build()
750            .expect("invalid params");
751        let resolver = crate::config::endpoint::DefaultResolver::new();
752        let endpoint = resolver.resolve_endpoint(&params);
753        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.us-gov-east-1.amazonaws.com");
754        assert_eq!(
755            endpoint,
756            ::aws_smithy_types::endpoint::Endpoint::builder()
757                .url("https://sts.us-gov-east-1.amazonaws.com")
758                .build()
759        );
760    }
761
762    /// For region us-gov-west-1 with FIPS disabled and DualStack disabled
763    #[test]
764    fn test_37() {
765        let params = crate::config::endpoint::Params::builder()
766            .region("us-gov-west-1".to_string())
767            .use_fips(false)
768            .use_dual_stack(false)
769            .build()
770            .expect("invalid params");
771        let resolver = crate::config::endpoint::DefaultResolver::new();
772        let endpoint = resolver.resolve_endpoint(&params);
773        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.us-gov-west-1.amazonaws.com");
774        assert_eq!(
775            endpoint,
776            ::aws_smithy_types::endpoint::Endpoint::builder()
777                .url("https://sts.us-gov-west-1.amazonaws.com")
778                .build()
779        );
780    }
781
782    /// For region us-gov-west-1 with FIPS enabled and DualStack disabled
783    #[test]
784    fn test_38() {
785        let params = crate::config::endpoint::Params::builder()
786            .region("us-gov-west-1".to_string())
787            .use_fips(true)
788            .use_dual_stack(false)
789            .build()
790            .expect("invalid params");
791        let resolver = crate::config::endpoint::DefaultResolver::new();
792        let endpoint = resolver.resolve_endpoint(&params);
793        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.us-gov-west-1.amazonaws.com");
794        assert_eq!(
795            endpoint,
796            ::aws_smithy_types::endpoint::Endpoint::builder()
797                .url("https://sts.us-gov-west-1.amazonaws.com")
798                .build()
799        );
800    }
801
802    /// For region us-gov-east-1 with FIPS enabled and DualStack enabled
803    #[test]
804    fn test_39() {
805        let params = crate::config::endpoint::Params::builder()
806            .region("us-gov-east-1".to_string())
807            .use_fips(true)
808            .use_dual_stack(true)
809            .build()
810            .expect("invalid params");
811        let resolver = crate::config::endpoint::DefaultResolver::new();
812        let endpoint = resolver.resolve_endpoint(&params);
813        let endpoint = endpoint.expect("Expected valid endpoint: https://sts-fips.us-gov-east-1.api.aws");
814        assert_eq!(
815            endpoint,
816            ::aws_smithy_types::endpoint::Endpoint::builder()
817                .url("https://sts-fips.us-gov-east-1.api.aws")
818                .build()
819        );
820    }
821
822    /// For region us-gov-east-1 with FIPS disabled and DualStack enabled
823    #[test]
824    fn test_40() {
825        let params = crate::config::endpoint::Params::builder()
826            .region("us-gov-east-1".to_string())
827            .use_fips(false)
828            .use_dual_stack(true)
829            .build()
830            .expect("invalid params");
831        let resolver = crate::config::endpoint::DefaultResolver::new();
832        let endpoint = resolver.resolve_endpoint(&params);
833        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.us-gov-east-1.api.aws");
834        assert_eq!(
835            endpoint,
836            ::aws_smithy_types::endpoint::Endpoint::builder()
837                .url("https://sts.us-gov-east-1.api.aws")
838                .build()
839        );
840    }
841
842    /// For region us-iso-east-1 with FIPS disabled and DualStack disabled
843    #[test]
844    fn test_41() {
845        let params = crate::config::endpoint::Params::builder()
846            .region("us-iso-east-1".to_string())
847            .use_fips(false)
848            .use_dual_stack(false)
849            .build()
850            .expect("invalid params");
851        let resolver = crate::config::endpoint::DefaultResolver::new();
852        let endpoint = resolver.resolve_endpoint(&params);
853        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.us-iso-east-1.c2s.ic.gov");
854        assert_eq!(
855            endpoint,
856            ::aws_smithy_types::endpoint::Endpoint::builder()
857                .url("https://sts.us-iso-east-1.c2s.ic.gov")
858                .build()
859        );
860    }
861
862    /// For region us-iso-west-1 with FIPS disabled and DualStack disabled
863    #[test]
864    fn test_42() {
865        let params = crate::config::endpoint::Params::builder()
866            .region("us-iso-west-1".to_string())
867            .use_fips(false)
868            .use_dual_stack(false)
869            .build()
870            .expect("invalid params");
871        let resolver = crate::config::endpoint::DefaultResolver::new();
872        let endpoint = resolver.resolve_endpoint(&params);
873        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.us-iso-west-1.c2s.ic.gov");
874        assert_eq!(
875            endpoint,
876            ::aws_smithy_types::endpoint::Endpoint::builder()
877                .url("https://sts.us-iso-west-1.c2s.ic.gov")
878                .build()
879        );
880    }
881
882    /// For region us-iso-east-1 with FIPS enabled and DualStack disabled
883    #[test]
884    fn test_43() {
885        let params = crate::config::endpoint::Params::builder()
886            .region("us-iso-east-1".to_string())
887            .use_fips(true)
888            .use_dual_stack(false)
889            .build()
890            .expect("invalid params");
891        let resolver = crate::config::endpoint::DefaultResolver::new();
892        let endpoint = resolver.resolve_endpoint(&params);
893        let endpoint = endpoint.expect("Expected valid endpoint: https://sts-fips.us-iso-east-1.c2s.ic.gov");
894        assert_eq!(
895            endpoint,
896            ::aws_smithy_types::endpoint::Endpoint::builder()
897                .url("https://sts-fips.us-iso-east-1.c2s.ic.gov")
898                .build()
899        );
900    }
901
902    /// For region us-isob-east-1 with FIPS disabled and DualStack disabled
903    #[test]
904    fn test_44() {
905        let params = crate::config::endpoint::Params::builder()
906            .region("us-isob-east-1".to_string())
907            .use_fips(false)
908            .use_dual_stack(false)
909            .build()
910            .expect("invalid params");
911        let resolver = crate::config::endpoint::DefaultResolver::new();
912        let endpoint = resolver.resolve_endpoint(&params);
913        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.us-isob-east-1.sc2s.sgov.gov");
914        assert_eq!(
915            endpoint,
916            ::aws_smithy_types::endpoint::Endpoint::builder()
917                .url("https://sts.us-isob-east-1.sc2s.sgov.gov")
918                .build()
919        );
920    }
921
922    /// For region us-isob-east-1 with FIPS enabled and DualStack disabled
923    #[test]
924    fn test_45() {
925        let params = crate::config::endpoint::Params::builder()
926            .region("us-isob-east-1".to_string())
927            .use_fips(true)
928            .use_dual_stack(false)
929            .build()
930            .expect("invalid params");
931        let resolver = crate::config::endpoint::DefaultResolver::new();
932        let endpoint = resolver.resolve_endpoint(&params);
933        let endpoint = endpoint.expect("Expected valid endpoint: https://sts-fips.us-isob-east-1.sc2s.sgov.gov");
934        assert_eq!(
935            endpoint,
936            ::aws_smithy_types::endpoint::Endpoint::builder()
937                .url("https://sts-fips.us-isob-east-1.sc2s.sgov.gov")
938                .build()
939        );
940    }
941
942    /// For custom endpoint with region set and fips disabled and dualstack disabled
943    #[test]
944    fn test_46() {
945        let params = crate::config::endpoint::Params::builder()
946            .region("us-east-1".to_string())
947            .use_fips(false)
948            .use_dual_stack(false)
949            .endpoint("https://example.com".to_string())
950            .build()
951            .expect("invalid params");
952        let resolver = crate::config::endpoint::DefaultResolver::new();
953        let endpoint = resolver.resolve_endpoint(&params);
954        let endpoint = endpoint.expect("Expected valid endpoint: https://example.com");
955        assert_eq!(
956            endpoint,
957            ::aws_smithy_types::endpoint::Endpoint::builder().url("https://example.com").build()
958        );
959    }
960
961    /// For custom endpoint with region not set and fips disabled and dualstack disabled
962    #[test]
963    fn test_47() {
964        let params = crate::config::endpoint::Params::builder()
965            .use_fips(false)
966            .use_dual_stack(false)
967            .endpoint("https://example.com".to_string())
968            .build()
969            .expect("invalid params");
970        let resolver = crate::config::endpoint::DefaultResolver::new();
971        let endpoint = resolver.resolve_endpoint(&params);
972        let endpoint = endpoint.expect("Expected valid endpoint: https://example.com");
973        assert_eq!(
974            endpoint,
975            ::aws_smithy_types::endpoint::Endpoint::builder().url("https://example.com").build()
976        );
977    }
978
979    /// For custom endpoint with fips enabled and dualstack disabled
980    #[test]
981    fn test_48() {
982        let params = crate::config::endpoint::Params::builder()
983            .region("us-east-1".to_string())
984            .use_fips(true)
985            .use_dual_stack(false)
986            .endpoint("https://example.com".to_string())
987            .build()
988            .expect("invalid params");
989        let resolver = crate::config::endpoint::DefaultResolver::new();
990        let endpoint = resolver.resolve_endpoint(&params);
991        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]");
992        assert_eq!(format!("{}", error), "Invalid Configuration: FIPS and custom endpoint are not supported")
993    }
994
995    /// For custom endpoint with fips disabled and dualstack enabled
996    #[test]
997    fn test_49() {
998        let params = crate::config::endpoint::Params::builder()
999            .region("us-east-1".to_string())
1000            .use_fips(false)
1001            .use_dual_stack(true)
1002            .endpoint("https://example.com".to_string())
1003            .build()
1004            .expect("invalid params");
1005        let resolver = crate::config::endpoint::DefaultResolver::new();
1006        let endpoint = resolver.resolve_endpoint(&params);
1007        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]");
1008        assert_eq!(
1009            format!("{}", error),
1010            "Invalid Configuration: Dualstack and custom endpoint are not supported"
1011        )
1012    }
1013
1014    /// Missing region
1015    #[test]
1016    fn test_50() {
1017        let params = crate::config::endpoint::Params::builder().build().expect("invalid params");
1018        let resolver = crate::config::endpoint::DefaultResolver::new();
1019        let endpoint = resolver.resolve_endpoint(&params);
1020        let error = endpoint.expect_err("expected error: Invalid Configuration: Missing Region [Missing region]");
1021        assert_eq!(format!("{}", error), "Invalid Configuration: Missing Region")
1022    }
1023
1024    /// UseGlobalEndpoint with legacy region `ap-northeast-1`
1025    #[test]
1026    fn test_51() {
1027        let params = crate::config::endpoint::Params::builder()
1028            .region("ap-northeast-1".to_string())
1029            .use_fips(false)
1030            .use_dual_stack(false)
1031            .use_global_endpoint(true)
1032            .build()
1033            .expect("invalid params");
1034        let resolver = crate::config::endpoint::DefaultResolver::new();
1035        let endpoint = resolver.resolve_endpoint(&params);
1036        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.amazonaws.com");
1037        assert_eq!(
1038            endpoint,
1039            ::aws_smithy_types::endpoint::Endpoint::builder()
1040                .url("https://sts.amazonaws.com")
1041                .property(
1042                    "authSchemes",
1043                    vec![{
1044                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1045                        out.insert("name".to_string(), "sigv4".to_string().into());
1046                        out.insert("signingName".to_string(), "sts".to_string().into());
1047                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1048                        out
1049                    }
1050                    .into()]
1051                )
1052                .build()
1053        );
1054    }
1055
1056    /// UseGlobalEndpoint with legacy region `ap-south-1`
1057    #[test]
1058    fn test_52() {
1059        let params = crate::config::endpoint::Params::builder()
1060            .region("ap-south-1".to_string())
1061            .use_fips(false)
1062            .use_dual_stack(false)
1063            .use_global_endpoint(true)
1064            .build()
1065            .expect("invalid params");
1066        let resolver = crate::config::endpoint::DefaultResolver::new();
1067        let endpoint = resolver.resolve_endpoint(&params);
1068        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.amazonaws.com");
1069        assert_eq!(
1070            endpoint,
1071            ::aws_smithy_types::endpoint::Endpoint::builder()
1072                .url("https://sts.amazonaws.com")
1073                .property(
1074                    "authSchemes",
1075                    vec![{
1076                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1077                        out.insert("name".to_string(), "sigv4".to_string().into());
1078                        out.insert("signingName".to_string(), "sts".to_string().into());
1079                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1080                        out
1081                    }
1082                    .into()]
1083                )
1084                .build()
1085        );
1086    }
1087
1088    /// UseGlobalEndpoint with legacy region `ap-southeast-1`
1089    #[test]
1090    fn test_53() {
1091        let params = crate::config::endpoint::Params::builder()
1092            .region("ap-southeast-1".to_string())
1093            .use_fips(false)
1094            .use_dual_stack(false)
1095            .use_global_endpoint(true)
1096            .build()
1097            .expect("invalid params");
1098        let resolver = crate::config::endpoint::DefaultResolver::new();
1099        let endpoint = resolver.resolve_endpoint(&params);
1100        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.amazonaws.com");
1101        assert_eq!(
1102            endpoint,
1103            ::aws_smithy_types::endpoint::Endpoint::builder()
1104                .url("https://sts.amazonaws.com")
1105                .property(
1106                    "authSchemes",
1107                    vec![{
1108                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1109                        out.insert("name".to_string(), "sigv4".to_string().into());
1110                        out.insert("signingName".to_string(), "sts".to_string().into());
1111                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1112                        out
1113                    }
1114                    .into()]
1115                )
1116                .build()
1117        );
1118    }
1119
1120    /// UseGlobalEndpoint with legacy region `ap-southeast-2`
1121    #[test]
1122    fn test_54() {
1123        let params = crate::config::endpoint::Params::builder()
1124            .region("ap-southeast-2".to_string())
1125            .use_fips(false)
1126            .use_dual_stack(false)
1127            .use_global_endpoint(true)
1128            .build()
1129            .expect("invalid params");
1130        let resolver = crate::config::endpoint::DefaultResolver::new();
1131        let endpoint = resolver.resolve_endpoint(&params);
1132        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.amazonaws.com");
1133        assert_eq!(
1134            endpoint,
1135            ::aws_smithy_types::endpoint::Endpoint::builder()
1136                .url("https://sts.amazonaws.com")
1137                .property(
1138                    "authSchemes",
1139                    vec![{
1140                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1141                        out.insert("name".to_string(), "sigv4".to_string().into());
1142                        out.insert("signingName".to_string(), "sts".to_string().into());
1143                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1144                        out
1145                    }
1146                    .into()]
1147                )
1148                .build()
1149        );
1150    }
1151
1152    /// UseGlobalEndpoint with legacy region `aws-global`
1153    #[test]
1154    fn test_55() {
1155        let params = crate::config::endpoint::Params::builder()
1156            .region("aws-global".to_string())
1157            .use_fips(false)
1158            .use_dual_stack(false)
1159            .use_global_endpoint(true)
1160            .build()
1161            .expect("invalid params");
1162        let resolver = crate::config::endpoint::DefaultResolver::new();
1163        let endpoint = resolver.resolve_endpoint(&params);
1164        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.amazonaws.com");
1165        assert_eq!(
1166            endpoint,
1167            ::aws_smithy_types::endpoint::Endpoint::builder()
1168                .url("https://sts.amazonaws.com")
1169                .property(
1170                    "authSchemes",
1171                    vec![{
1172                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1173                        out.insert("name".to_string(), "sigv4".to_string().into());
1174                        out.insert("signingName".to_string(), "sts".to_string().into());
1175                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1176                        out
1177                    }
1178                    .into()]
1179                )
1180                .build()
1181        );
1182    }
1183
1184    /// UseGlobalEndpoint with legacy region `ca-central-1`
1185    #[test]
1186    fn test_56() {
1187        let params = crate::config::endpoint::Params::builder()
1188            .region("ca-central-1".to_string())
1189            .use_fips(false)
1190            .use_dual_stack(false)
1191            .use_global_endpoint(true)
1192            .build()
1193            .expect("invalid params");
1194        let resolver = crate::config::endpoint::DefaultResolver::new();
1195        let endpoint = resolver.resolve_endpoint(&params);
1196        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.amazonaws.com");
1197        assert_eq!(
1198            endpoint,
1199            ::aws_smithy_types::endpoint::Endpoint::builder()
1200                .url("https://sts.amazonaws.com")
1201                .property(
1202                    "authSchemes",
1203                    vec![{
1204                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1205                        out.insert("name".to_string(), "sigv4".to_string().into());
1206                        out.insert("signingName".to_string(), "sts".to_string().into());
1207                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1208                        out
1209                    }
1210                    .into()]
1211                )
1212                .build()
1213        );
1214    }
1215
1216    /// UseGlobalEndpoint with legacy region `eu-central-1`
1217    #[test]
1218    fn test_57() {
1219        let params = crate::config::endpoint::Params::builder()
1220            .region("eu-central-1".to_string())
1221            .use_fips(false)
1222            .use_dual_stack(false)
1223            .use_global_endpoint(true)
1224            .build()
1225            .expect("invalid params");
1226        let resolver = crate::config::endpoint::DefaultResolver::new();
1227        let endpoint = resolver.resolve_endpoint(&params);
1228        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.amazonaws.com");
1229        assert_eq!(
1230            endpoint,
1231            ::aws_smithy_types::endpoint::Endpoint::builder()
1232                .url("https://sts.amazonaws.com")
1233                .property(
1234                    "authSchemes",
1235                    vec![{
1236                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1237                        out.insert("name".to_string(), "sigv4".to_string().into());
1238                        out.insert("signingName".to_string(), "sts".to_string().into());
1239                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1240                        out
1241                    }
1242                    .into()]
1243                )
1244                .build()
1245        );
1246    }
1247
1248    /// UseGlobalEndpoint with legacy region `eu-north-1`
1249    #[test]
1250    fn test_58() {
1251        let params = crate::config::endpoint::Params::builder()
1252            .region("eu-north-1".to_string())
1253            .use_fips(false)
1254            .use_dual_stack(false)
1255            .use_global_endpoint(true)
1256            .build()
1257            .expect("invalid params");
1258        let resolver = crate::config::endpoint::DefaultResolver::new();
1259        let endpoint = resolver.resolve_endpoint(&params);
1260        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.amazonaws.com");
1261        assert_eq!(
1262            endpoint,
1263            ::aws_smithy_types::endpoint::Endpoint::builder()
1264                .url("https://sts.amazonaws.com")
1265                .property(
1266                    "authSchemes",
1267                    vec![{
1268                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1269                        out.insert("name".to_string(), "sigv4".to_string().into());
1270                        out.insert("signingName".to_string(), "sts".to_string().into());
1271                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1272                        out
1273                    }
1274                    .into()]
1275                )
1276                .build()
1277        );
1278    }
1279
1280    /// UseGlobalEndpoint with legacy region `eu-west-1`
1281    #[test]
1282    fn test_59() {
1283        let params = crate::config::endpoint::Params::builder()
1284            .region("eu-west-1".to_string())
1285            .use_fips(false)
1286            .use_dual_stack(false)
1287            .use_global_endpoint(true)
1288            .build()
1289            .expect("invalid params");
1290        let resolver = crate::config::endpoint::DefaultResolver::new();
1291        let endpoint = resolver.resolve_endpoint(&params);
1292        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.amazonaws.com");
1293        assert_eq!(
1294            endpoint,
1295            ::aws_smithy_types::endpoint::Endpoint::builder()
1296                .url("https://sts.amazonaws.com")
1297                .property(
1298                    "authSchemes",
1299                    vec![{
1300                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1301                        out.insert("name".to_string(), "sigv4".to_string().into());
1302                        out.insert("signingName".to_string(), "sts".to_string().into());
1303                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1304                        out
1305                    }
1306                    .into()]
1307                )
1308                .build()
1309        );
1310    }
1311
1312    /// UseGlobalEndpoint with legacy region `eu-west-2`
1313    #[test]
1314    fn test_60() {
1315        let params = crate::config::endpoint::Params::builder()
1316            .region("eu-west-2".to_string())
1317            .use_fips(false)
1318            .use_dual_stack(false)
1319            .use_global_endpoint(true)
1320            .build()
1321            .expect("invalid params");
1322        let resolver = crate::config::endpoint::DefaultResolver::new();
1323        let endpoint = resolver.resolve_endpoint(&params);
1324        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.amazonaws.com");
1325        assert_eq!(
1326            endpoint,
1327            ::aws_smithy_types::endpoint::Endpoint::builder()
1328                .url("https://sts.amazonaws.com")
1329                .property(
1330                    "authSchemes",
1331                    vec![{
1332                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1333                        out.insert("name".to_string(), "sigv4".to_string().into());
1334                        out.insert("signingName".to_string(), "sts".to_string().into());
1335                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1336                        out
1337                    }
1338                    .into()]
1339                )
1340                .build()
1341        );
1342    }
1343
1344    /// UseGlobalEndpoint with legacy region `eu-west-3`
1345    #[test]
1346    fn test_61() {
1347        let params = crate::config::endpoint::Params::builder()
1348            .region("eu-west-3".to_string())
1349            .use_fips(false)
1350            .use_dual_stack(false)
1351            .use_global_endpoint(true)
1352            .build()
1353            .expect("invalid params");
1354        let resolver = crate::config::endpoint::DefaultResolver::new();
1355        let endpoint = resolver.resolve_endpoint(&params);
1356        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.amazonaws.com");
1357        assert_eq!(
1358            endpoint,
1359            ::aws_smithy_types::endpoint::Endpoint::builder()
1360                .url("https://sts.amazonaws.com")
1361                .property(
1362                    "authSchemes",
1363                    vec![{
1364                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1365                        out.insert("name".to_string(), "sigv4".to_string().into());
1366                        out.insert("signingName".to_string(), "sts".to_string().into());
1367                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1368                        out
1369                    }
1370                    .into()]
1371                )
1372                .build()
1373        );
1374    }
1375
1376    /// UseGlobalEndpoint with legacy region `sa-east-1`
1377    #[test]
1378    fn test_62() {
1379        let params = crate::config::endpoint::Params::builder()
1380            .region("sa-east-1".to_string())
1381            .use_fips(false)
1382            .use_dual_stack(false)
1383            .use_global_endpoint(true)
1384            .build()
1385            .expect("invalid params");
1386        let resolver = crate::config::endpoint::DefaultResolver::new();
1387        let endpoint = resolver.resolve_endpoint(&params);
1388        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.amazonaws.com");
1389        assert_eq!(
1390            endpoint,
1391            ::aws_smithy_types::endpoint::Endpoint::builder()
1392                .url("https://sts.amazonaws.com")
1393                .property(
1394                    "authSchemes",
1395                    vec![{
1396                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1397                        out.insert("name".to_string(), "sigv4".to_string().into());
1398                        out.insert("signingName".to_string(), "sts".to_string().into());
1399                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1400                        out
1401                    }
1402                    .into()]
1403                )
1404                .build()
1405        );
1406    }
1407
1408    /// UseGlobalEndpoint with legacy region `us-east-1`
1409    #[test]
1410    fn test_63() {
1411        let params = crate::config::endpoint::Params::builder()
1412            .region("us-east-1".to_string())
1413            .use_fips(false)
1414            .use_dual_stack(false)
1415            .use_global_endpoint(true)
1416            .build()
1417            .expect("invalid params");
1418        let resolver = crate::config::endpoint::DefaultResolver::new();
1419        let endpoint = resolver.resolve_endpoint(&params);
1420        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.amazonaws.com");
1421        assert_eq!(
1422            endpoint,
1423            ::aws_smithy_types::endpoint::Endpoint::builder()
1424                .url("https://sts.amazonaws.com")
1425                .property(
1426                    "authSchemes",
1427                    vec![{
1428                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1429                        out.insert("name".to_string(), "sigv4".to_string().into());
1430                        out.insert("signingName".to_string(), "sts".to_string().into());
1431                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1432                        out
1433                    }
1434                    .into()]
1435                )
1436                .build()
1437        );
1438    }
1439
1440    /// UseGlobalEndpoint with legacy region `us-east-2`
1441    #[test]
1442    fn test_64() {
1443        let params = crate::config::endpoint::Params::builder()
1444            .region("us-east-2".to_string())
1445            .use_fips(false)
1446            .use_dual_stack(false)
1447            .use_global_endpoint(true)
1448            .build()
1449            .expect("invalid params");
1450        let resolver = crate::config::endpoint::DefaultResolver::new();
1451        let endpoint = resolver.resolve_endpoint(&params);
1452        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.amazonaws.com");
1453        assert_eq!(
1454            endpoint,
1455            ::aws_smithy_types::endpoint::Endpoint::builder()
1456                .url("https://sts.amazonaws.com")
1457                .property(
1458                    "authSchemes",
1459                    vec![{
1460                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1461                        out.insert("name".to_string(), "sigv4".to_string().into());
1462                        out.insert("signingName".to_string(), "sts".to_string().into());
1463                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1464                        out
1465                    }
1466                    .into()]
1467                )
1468                .build()
1469        );
1470    }
1471
1472    /// UseGlobalEndpoint with legacy region `us-west-1`
1473    #[test]
1474    fn test_65() {
1475        let params = crate::config::endpoint::Params::builder()
1476            .region("us-west-1".to_string())
1477            .use_fips(false)
1478            .use_dual_stack(false)
1479            .use_global_endpoint(true)
1480            .build()
1481            .expect("invalid params");
1482        let resolver = crate::config::endpoint::DefaultResolver::new();
1483        let endpoint = resolver.resolve_endpoint(&params);
1484        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.amazonaws.com");
1485        assert_eq!(
1486            endpoint,
1487            ::aws_smithy_types::endpoint::Endpoint::builder()
1488                .url("https://sts.amazonaws.com")
1489                .property(
1490                    "authSchemes",
1491                    vec![{
1492                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1493                        out.insert("name".to_string(), "sigv4".to_string().into());
1494                        out.insert("signingName".to_string(), "sts".to_string().into());
1495                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1496                        out
1497                    }
1498                    .into()]
1499                )
1500                .build()
1501        );
1502    }
1503
1504    /// UseGlobalEndpoint with legacy region `us-west-2`
1505    #[test]
1506    fn test_66() {
1507        let params = crate::config::endpoint::Params::builder()
1508            .region("us-west-2".to_string())
1509            .use_fips(false)
1510            .use_dual_stack(false)
1511            .use_global_endpoint(true)
1512            .build()
1513            .expect("invalid params");
1514        let resolver = crate::config::endpoint::DefaultResolver::new();
1515        let endpoint = resolver.resolve_endpoint(&params);
1516        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.amazonaws.com");
1517        assert_eq!(
1518            endpoint,
1519            ::aws_smithy_types::endpoint::Endpoint::builder()
1520                .url("https://sts.amazonaws.com")
1521                .property(
1522                    "authSchemes",
1523                    vec![{
1524                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1525                        out.insert("name".to_string(), "sigv4".to_string().into());
1526                        out.insert("signingName".to_string(), "sts".to_string().into());
1527                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1528                        out
1529                    }
1530                    .into()]
1531                )
1532                .build()
1533        );
1534    }
1535
1536    /// UseGlobalEndpoint with Non-legacy region `us-east-3`
1537    #[test]
1538    fn test_67() {
1539        let params = crate::config::endpoint::Params::builder()
1540            .region("us-east-3".to_string())
1541            .use_fips(false)
1542            .use_dual_stack(false)
1543            .use_global_endpoint(true)
1544            .build()
1545            .expect("invalid params");
1546        let resolver = crate::config::endpoint::DefaultResolver::new();
1547        let endpoint = resolver.resolve_endpoint(&params);
1548        let endpoint = endpoint.expect("Expected valid endpoint: https://sts.us-east-3.amazonaws.com");
1549        assert_eq!(
1550            endpoint,
1551            ::aws_smithy_types::endpoint::Endpoint::builder()
1552                .url("https://sts.us-east-3.amazonaws.com")
1553                .property(
1554                    "authSchemes",
1555                    vec![{
1556                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1557                        out.insert("name".to_string(), "sigv4".to_string().into());
1558                        out.insert("signingName".to_string(), "sts".to_string().into());
1559                        out.insert("signingRegion".to_string(), "us-east-3".to_string().into());
1560                        out
1561                    }
1562                    .into()]
1563                )
1564                .build()
1565        );
1566    }
1567
1568    /// UseGlobalEndpoint with legacy region and custom endpoint
1569    #[test]
1570    fn test_68() {
1571        let params = crate::config::endpoint::Params::builder()
1572            .region("us-west-1".to_string())
1573            .use_fips(false)
1574            .use_dual_stack(false)
1575            .use_global_endpoint(true)
1576            .endpoint("https://example.com".to_string())
1577            .build()
1578            .expect("invalid params");
1579        let resolver = crate::config::endpoint::DefaultResolver::new();
1580        let endpoint = resolver.resolve_endpoint(&params);
1581        let endpoint = endpoint.expect("Expected valid endpoint: https://example.com");
1582        assert_eq!(
1583            endpoint,
1584            ::aws_smithy_types::endpoint::Endpoint::builder().url("https://example.com").build()
1585        );
1586    }
1587
1588    /// UseGlobalEndpoint with unset region and custom endpoint
1589    #[test]
1590    fn test_69() {
1591        let params = crate::config::endpoint::Params::builder()
1592            .use_fips(false)
1593            .use_dual_stack(false)
1594            .use_global_endpoint(false)
1595            .endpoint("https://example.com".to_string())
1596            .build()
1597            .expect("invalid params");
1598        let resolver = crate::config::endpoint::DefaultResolver::new();
1599        let endpoint = resolver.resolve_endpoint(&params);
1600        let endpoint = endpoint.expect("Expected valid endpoint: https://example.com");
1601        assert_eq!(
1602            endpoint,
1603            ::aws_smithy_types::endpoint::Endpoint::builder().url("https://example.com").build()
1604        );
1605    }
1606}
1607
1608/// Endpoint resolver trait specific to AWS Security Token Service
1609pub trait ResolveEndpoint: ::std::marker::Send + ::std::marker::Sync + ::std::fmt::Debug {
1610    /// Resolve an endpoint with the given parameters
1611    fn resolve_endpoint<'a>(&'a self, params: &'a crate::config::endpoint::Params) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a>;
1612
1613    /// Convert this service-specific resolver into a `SharedEndpointResolver`
1614    ///
1615    /// The resulting resolver will downcast `EndpointResolverParams` into `crate::config::endpoint::Params`.
1616    fn into_shared_resolver(self) -> ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver
1617    where
1618        Self: Sized + 'static,
1619    {
1620        ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver::new(DowncastParams(self))
1621    }
1622}
1623
1624#[derive(Debug)]
1625struct DowncastParams<T>(T);
1626impl<T> ::aws_smithy_runtime_api::client::endpoint::ResolveEndpoint for DowncastParams<T>
1627where
1628    T: ResolveEndpoint,
1629{
1630    fn resolve_endpoint<'a>(
1631        &'a self,
1632        params: &'a ::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams,
1633    ) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a> {
1634        let ep = match params.get::<crate::config::endpoint::Params>() {
1635            Some(params) => self.0.resolve_endpoint(params),
1636            None => ::aws_smithy_runtime_api::client::endpoint::EndpointFuture::ready(Err("params of expected type was not present".into())),
1637        };
1638        ep
1639    }
1640}
1641
1642/// The default endpoint resolver
1643#[derive(Debug, Default)]
1644pub struct DefaultResolver {
1645    partition_resolver: crate::endpoint_lib::partition::PartitionResolver,
1646}
1647
1648impl DefaultResolver {
1649    /// Create a new endpoint resolver with default settings
1650    pub fn new() -> Self {
1651        Self {
1652            partition_resolver: crate::endpoint_lib::DEFAULT_PARTITION_RESOLVER.clone(),
1653        }
1654    }
1655
1656    fn resolve_endpoint(
1657        &self,
1658        params: &crate::config::endpoint::Params,
1659    ) -> ::std::result::Result<::aws_smithy_types::endpoint::Endpoint, ::aws_smithy_runtime_api::box_error::BoxError> {
1660        let mut diagnostic_collector = crate::endpoint_lib::diagnostic::DiagnosticCollector::new();
1661        Ok(
1662            crate::config::endpoint::internals::resolve_endpoint(params, &mut diagnostic_collector, &self.partition_resolver)
1663                .map_err(|err| err.with_source(diagnostic_collector.take_last_error()))?,
1664        )
1665    }
1666}
1667
1668impl crate::config::endpoint::ResolveEndpoint for DefaultResolver {
1669    fn resolve_endpoint(&self, params: &crate::config::endpoint::Params) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'_> {
1670        ::aws_smithy_runtime_api::client::endpoint::EndpointFuture::ready(self.resolve_endpoint(params))
1671    }
1672}
1673
1674#[non_exhaustive]
1675#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
1676/// Configuration parameters for resolving the correct endpoint
1677pub struct Params {
1678    /// The AWS region used to dispatch the request.
1679    pub(crate) region: ::std::option::Option<::std::string::String>,
1680    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
1681    pub(crate) use_dual_stack: bool,
1682    /// 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.
1683    pub(crate) use_fips: bool,
1684    /// Override the endpoint used to send this request
1685    pub(crate) endpoint: ::std::option::Option<::std::string::String>,
1686    /// Whether the global endpoint should be used, rather then the regional endpoint for us-east-1.
1687    pub(crate) use_global_endpoint: bool,
1688}
1689impl Params {
1690    /// Create a builder for [`Params`]
1691    pub fn builder() -> crate::config::endpoint::ParamsBuilder {
1692        crate::config::endpoint::ParamsBuilder::default()
1693    }
1694    /// The AWS region used to dispatch the request.
1695    pub fn region(&self) -> ::std::option::Option<&str> {
1696        self.region.as_deref()
1697    }
1698    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
1699    pub fn use_dual_stack(&self) -> ::std::option::Option<bool> {
1700        Some(self.use_dual_stack)
1701    }
1702    /// 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.
1703    pub fn use_fips(&self) -> ::std::option::Option<bool> {
1704        Some(self.use_fips)
1705    }
1706    /// Override the endpoint used to send this request
1707    pub fn endpoint(&self) -> ::std::option::Option<&str> {
1708        self.endpoint.as_deref()
1709    }
1710    /// Whether the global endpoint should be used, rather then the regional endpoint for us-east-1.
1711    pub fn use_global_endpoint(&self) -> ::std::option::Option<bool> {
1712        Some(self.use_global_endpoint)
1713    }
1714}
1715
1716/// Builder for [`Params`]
1717#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
1718pub struct ParamsBuilder {
1719    region: ::std::option::Option<::std::string::String>,
1720    use_dual_stack: ::std::option::Option<bool>,
1721    use_fips: ::std::option::Option<bool>,
1722    endpoint: ::std::option::Option<::std::string::String>,
1723    use_global_endpoint: ::std::option::Option<bool>,
1724}
1725impl ParamsBuilder {
1726    /// Consume this builder, creating [`Params`].
1727    pub fn build(self) -> ::std::result::Result<crate::config::endpoint::Params, crate::config::endpoint::InvalidParams> {
1728        if let Some(region) = &self.region {
1729            if !crate::endpoint_lib::host::is_valid_host_label(
1730                region.as_ref() as &str,
1731                true,
1732                &mut crate::endpoint_lib::diagnostic::DiagnosticCollector::new(),
1733            ) {
1734                return Err(crate::config::endpoint::InvalidParams::invalid_value(
1735                    "region",
1736                    "must be a valid host label",
1737                ));
1738            }
1739        };
1740        Ok(
1741            #[allow(clippy::unnecessary_lazy_evaluations)]
1742            crate::config::endpoint::Params {
1743                region: self.region,
1744                use_dual_stack: self
1745                    .use_dual_stack
1746                    .or_else(|| Some(false))
1747                    .ok_or_else(|| crate::config::endpoint::InvalidParams::missing("use_dual_stack"))?,
1748                use_fips: self
1749                    .use_fips
1750                    .or_else(|| Some(false))
1751                    .ok_or_else(|| crate::config::endpoint::InvalidParams::missing("use_fips"))?,
1752                endpoint: self.endpoint,
1753                use_global_endpoint: self
1754                    .use_global_endpoint
1755                    .or_else(|| Some(false))
1756                    .ok_or_else(|| crate::config::endpoint::InvalidParams::missing("use_global_endpoint"))?,
1757            },
1758        )
1759    }
1760    /// Sets the value for region
1761    ///
1762    /// The AWS region used to dispatch the request.
1763    pub fn region(mut self, value: impl Into<::std::string::String>) -> Self {
1764        self.region = Some(value.into());
1765        self
1766    }
1767
1768    /// Sets the value for region
1769    ///
1770    /// The AWS region used to dispatch the request.
1771    pub fn set_region(mut self, param: Option<::std::string::String>) -> Self {
1772        self.region = param;
1773        self
1774    }
1775    /// Sets the value for use_dual_stack
1776    ///
1777    /// When unset, this parameter has a default value of `false`.
1778    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
1779    pub fn use_dual_stack(mut self, value: impl Into<bool>) -> Self {
1780        self.use_dual_stack = Some(value.into());
1781        self
1782    }
1783
1784    /// Sets the value for use_dual_stack
1785    ///
1786    /// When unset, this parameter has a default value of `false`.
1787    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
1788    pub fn set_use_dual_stack(mut self, param: Option<bool>) -> Self {
1789        self.use_dual_stack = param;
1790        self
1791    }
1792    /// Sets the value for use_fips
1793    ///
1794    /// When unset, this parameter has a default value of `false`.
1795    /// 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.
1796    pub fn use_fips(mut self, value: impl Into<bool>) -> Self {
1797        self.use_fips = Some(value.into());
1798        self
1799    }
1800
1801    /// Sets the value for use_fips
1802    ///
1803    /// When unset, this parameter has a default value of `false`.
1804    /// 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.
1805    pub fn set_use_fips(mut self, param: Option<bool>) -> Self {
1806        self.use_fips = param;
1807        self
1808    }
1809    /// Sets the value for endpoint
1810    ///
1811    /// Override the endpoint used to send this request
1812    pub fn endpoint(mut self, value: impl Into<::std::string::String>) -> Self {
1813        self.endpoint = Some(value.into());
1814        self
1815    }
1816
1817    /// Sets the value for endpoint
1818    ///
1819    /// Override the endpoint used to send this request
1820    pub fn set_endpoint(mut self, param: Option<::std::string::String>) -> Self {
1821        self.endpoint = param;
1822        self
1823    }
1824    /// Sets the value for use_global_endpoint
1825    ///
1826    /// When unset, this parameter has a default value of `false`.
1827    /// Whether the global endpoint should be used, rather then the regional endpoint for us-east-1.
1828    pub fn use_global_endpoint(mut self, value: impl Into<bool>) -> Self {
1829        self.use_global_endpoint = Some(value.into());
1830        self
1831    }
1832
1833    /// Sets the value for use_global_endpoint
1834    ///
1835    /// When unset, this parameter has a default value of `false`.
1836    /// Whether the global endpoint should be used, rather then the regional endpoint for us-east-1.
1837    pub fn set_use_global_endpoint(mut self, param: Option<bool>) -> Self {
1838        self.use_global_endpoint = param;
1839        self
1840    }
1841}
1842
1843/// An error that occurred during endpoint resolution
1844#[derive(Debug)]
1845pub struct InvalidParams {
1846    field: std::borrow::Cow<'static, str>,
1847    kind: InvalidParamsErrorKind,
1848}
1849
1850/// The kind of invalid parameter error
1851#[derive(Debug)]
1852enum InvalidParamsErrorKind {
1853    MissingField,
1854    InvalidValue { message: &'static str },
1855}
1856
1857impl InvalidParams {
1858    #[allow(dead_code)]
1859    fn missing(field: &'static str) -> Self {
1860        Self {
1861            field: field.into(),
1862            kind: InvalidParamsErrorKind::MissingField,
1863        }
1864    }
1865
1866    #[allow(dead_code)]
1867    fn invalid_value(field: &'static str, message: &'static str) -> Self {
1868        Self {
1869            field: field.into(),
1870            kind: InvalidParamsErrorKind::InvalidValue { message },
1871        }
1872    }
1873}
1874
1875impl std::fmt::Display for InvalidParams {
1876    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1877        match self.kind {
1878            InvalidParamsErrorKind::MissingField => write!(f, "a required field was missing: `{}`", self.field),
1879            InvalidParamsErrorKind::InvalidValue { message } => write!(f, "invalid value for field: `{}` - {}", self.field, message),
1880        }
1881    }
1882}
1883
1884impl std::error::Error for InvalidParams {}
1885
1886mod internals;