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                impl ::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 ap-east-1 with FIPS disabled and DualStack disabled
32                    #[test]
33                    fn test_1() {
34                        let params = crate::config::endpoint::Params::builder()
35    .region("ap-east-1".to_string())
36    .use_fips(false)
37    .use_dual_stack(false)
38    .build().expect("invalid params");
39                        let resolver = crate::config::endpoint::DefaultResolver::new();
40                        let endpoint = resolver.resolve_endpoint(&params);
41                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.ap-east-1.amazonaws.com");
42                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.ap-east-1.amazonaws.com")
43    .build());
44                    }
45    
46    /// For region ap-northeast-1 with FIPS disabled and DualStack disabled
47                    #[test]
48                    fn test_2() {
49                        let params = crate::config::endpoint::Params::builder()
50    .region("ap-northeast-1".to_string())
51    .use_fips(false)
52    .use_dual_stack(false)
53    .build().expect("invalid params");
54                        let resolver = crate::config::endpoint::DefaultResolver::new();
55                        let endpoint = resolver.resolve_endpoint(&params);
56                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.ap-northeast-1.amazonaws.com");
57                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.ap-northeast-1.amazonaws.com")
58    .build());
59                    }
60    
61    /// For region ap-northeast-2 with FIPS disabled and DualStack disabled
62                    #[test]
63                    fn test_3() {
64                        let params = crate::config::endpoint::Params::builder()
65    .region("ap-northeast-2".to_string())
66    .use_fips(false)
67    .use_dual_stack(false)
68    .build().expect("invalid params");
69                        let resolver = crate::config::endpoint::DefaultResolver::new();
70                        let endpoint = resolver.resolve_endpoint(&params);
71                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.ap-northeast-2.amazonaws.com");
72                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.ap-northeast-2.amazonaws.com")
73    .build());
74                    }
75    
76    /// For region ap-northeast-3 with FIPS disabled and DualStack disabled
77                    #[test]
78                    fn test_4() {
79                        let params = crate::config::endpoint::Params::builder()
80    .region("ap-northeast-3".to_string())
81    .use_fips(false)
82    .use_dual_stack(false)
83    .build().expect("invalid params");
84                        let resolver = crate::config::endpoint::DefaultResolver::new();
85                        let endpoint = resolver.resolve_endpoint(&params);
86                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.ap-northeast-3.amazonaws.com");
87                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.ap-northeast-3.amazonaws.com")
88    .build());
89                    }
90    
91    /// For region ap-south-1 with FIPS disabled and DualStack disabled
92                    #[test]
93                    fn test_5() {
94                        let params = crate::config::endpoint::Params::builder()
95    .region("ap-south-1".to_string())
96    .use_fips(false)
97    .use_dual_stack(false)
98    .build().expect("invalid params");
99                        let resolver = crate::config::endpoint::DefaultResolver::new();
100                        let endpoint = resolver.resolve_endpoint(&params);
101                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.ap-south-1.amazonaws.com");
102                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.ap-south-1.amazonaws.com")
103    .build());
104                    }
105    
106    /// For region ap-southeast-1 with FIPS disabled and DualStack disabled
107                    #[test]
108                    fn test_6() {
109                        let params = crate::config::endpoint::Params::builder()
110    .region("ap-southeast-1".to_string())
111    .use_fips(false)
112    .use_dual_stack(false)
113    .build().expect("invalid params");
114                        let resolver = crate::config::endpoint::DefaultResolver::new();
115                        let endpoint = resolver.resolve_endpoint(&params);
116                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.ap-southeast-1.amazonaws.com");
117                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.ap-southeast-1.amazonaws.com")
118    .build());
119                    }
120    
121    /// For region ap-southeast-2 with FIPS disabled and DualStack disabled
122                    #[test]
123                    fn test_7() {
124                        let params = crate::config::endpoint::Params::builder()
125    .region("ap-southeast-2".to_string())
126    .use_fips(false)
127    .use_dual_stack(false)
128    .build().expect("invalid params");
129                        let resolver = crate::config::endpoint::DefaultResolver::new();
130                        let endpoint = resolver.resolve_endpoint(&params);
131                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.ap-southeast-2.amazonaws.com");
132                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.ap-southeast-2.amazonaws.com")
133    .build());
134                    }
135    
136    /// For region ca-central-1 with FIPS disabled and DualStack disabled
137                    #[test]
138                    fn test_8() {
139                        let params = crate::config::endpoint::Params::builder()
140    .region("ca-central-1".to_string())
141    .use_fips(false)
142    .use_dual_stack(false)
143    .build().expect("invalid params");
144                        let resolver = crate::config::endpoint::DefaultResolver::new();
145                        let endpoint = resolver.resolve_endpoint(&params);
146                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.ca-central-1.amazonaws.com");
147                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.ca-central-1.amazonaws.com")
148    .build());
149                    }
150    
151    /// For region eu-central-1 with FIPS disabled and DualStack disabled
152                    #[test]
153                    fn test_9() {
154                        let params = crate::config::endpoint::Params::builder()
155    .region("eu-central-1".to_string())
156    .use_fips(false)
157    .use_dual_stack(false)
158    .build().expect("invalid params");
159                        let resolver = crate::config::endpoint::DefaultResolver::new();
160                        let endpoint = resolver.resolve_endpoint(&params);
161                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.eu-central-1.amazonaws.com");
162                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.eu-central-1.amazonaws.com")
163    .build());
164                    }
165    
166    /// For region eu-north-1 with FIPS disabled and DualStack disabled
167                    #[test]
168                    fn test_10() {
169                        let params = crate::config::endpoint::Params::builder()
170    .region("eu-north-1".to_string())
171    .use_fips(false)
172    .use_dual_stack(false)
173    .build().expect("invalid params");
174                        let resolver = crate::config::endpoint::DefaultResolver::new();
175                        let endpoint = resolver.resolve_endpoint(&params);
176                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.eu-north-1.amazonaws.com");
177                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.eu-north-1.amazonaws.com")
178    .build());
179                    }
180    
181    /// For region eu-south-1 with FIPS disabled and DualStack disabled
182                    #[test]
183                    fn test_11() {
184                        let params = crate::config::endpoint::Params::builder()
185    .region("eu-south-1".to_string())
186    .use_fips(false)
187    .use_dual_stack(false)
188    .build().expect("invalid params");
189                        let resolver = crate::config::endpoint::DefaultResolver::new();
190                        let endpoint = resolver.resolve_endpoint(&params);
191                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.eu-south-1.amazonaws.com");
192                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.eu-south-1.amazonaws.com")
193    .build());
194                    }
195    
196    /// For region eu-west-1 with FIPS disabled and DualStack disabled
197                    #[test]
198                    fn test_12() {
199                        let params = crate::config::endpoint::Params::builder()
200    .region("eu-west-1".to_string())
201    .use_fips(false)
202    .use_dual_stack(false)
203    .build().expect("invalid params");
204                        let resolver = crate::config::endpoint::DefaultResolver::new();
205                        let endpoint = resolver.resolve_endpoint(&params);
206                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.eu-west-1.amazonaws.com");
207                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.eu-west-1.amazonaws.com")
208    .build());
209                    }
210    
211    /// For region eu-west-2 with FIPS disabled and DualStack disabled
212                    #[test]
213                    fn test_13() {
214                        let params = crate::config::endpoint::Params::builder()
215    .region("eu-west-2".to_string())
216    .use_fips(false)
217    .use_dual_stack(false)
218    .build().expect("invalid params");
219                        let resolver = crate::config::endpoint::DefaultResolver::new();
220                        let endpoint = resolver.resolve_endpoint(&params);
221                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.eu-west-2.amazonaws.com");
222                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.eu-west-2.amazonaws.com")
223    .build());
224                    }
225    
226    /// For region eu-west-3 with FIPS disabled and DualStack disabled
227                    #[test]
228                    fn test_14() {
229                        let params = crate::config::endpoint::Params::builder()
230    .region("eu-west-3".to_string())
231    .use_fips(false)
232    .use_dual_stack(false)
233    .build().expect("invalid params");
234                        let resolver = crate::config::endpoint::DefaultResolver::new();
235                        let endpoint = resolver.resolve_endpoint(&params);
236                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.eu-west-3.amazonaws.com");
237                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.eu-west-3.amazonaws.com")
238    .build());
239                    }
240    
241    /// For region me-south-1 with FIPS disabled and DualStack disabled
242                    #[test]
243                    fn test_15() {
244                        let params = crate::config::endpoint::Params::builder()
245    .region("me-south-1".to_string())
246    .use_fips(false)
247    .use_dual_stack(false)
248    .build().expect("invalid params");
249                        let resolver = crate::config::endpoint::DefaultResolver::new();
250                        let endpoint = resolver.resolve_endpoint(&params);
251                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.me-south-1.amazonaws.com");
252                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.me-south-1.amazonaws.com")
253    .build());
254                    }
255    
256    /// For region sa-east-1 with FIPS disabled and DualStack disabled
257                    #[test]
258                    fn test_16() {
259                        let params = crate::config::endpoint::Params::builder()
260    .region("sa-east-1".to_string())
261    .use_fips(false)
262    .use_dual_stack(false)
263    .build().expect("invalid params");
264                        let resolver = crate::config::endpoint::DefaultResolver::new();
265                        let endpoint = resolver.resolve_endpoint(&params);
266                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.sa-east-1.amazonaws.com");
267                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.sa-east-1.amazonaws.com")
268    .build());
269                    }
270    
271    /// For region us-east-1 with FIPS disabled and DualStack disabled
272                    #[test]
273                    fn test_17() {
274                        let params = crate::config::endpoint::Params::builder()
275    .region("us-east-1".to_string())
276    .use_fips(false)
277    .use_dual_stack(false)
278    .build().expect("invalid params");
279                        let resolver = crate::config::endpoint::DefaultResolver::new();
280                        let endpoint = resolver.resolve_endpoint(&params);
281                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.us-east-1.amazonaws.com");
282                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.us-east-1.amazonaws.com")
283    .build());
284                    }
285    
286    /// For region us-east-2 with FIPS disabled and DualStack disabled
287                    #[test]
288                    fn test_18() {
289                        let params = crate::config::endpoint::Params::builder()
290    .region("us-east-2".to_string())
291    .use_fips(false)
292    .use_dual_stack(false)
293    .build().expect("invalid params");
294                        let resolver = crate::config::endpoint::DefaultResolver::new();
295                        let endpoint = resolver.resolve_endpoint(&params);
296                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.us-east-2.amazonaws.com");
297                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.us-east-2.amazonaws.com")
298    .build());
299                    }
300    
301    /// For region us-west-2 with FIPS disabled and DualStack disabled
302                    #[test]
303                    fn test_19() {
304                        let params = crate::config::endpoint::Params::builder()
305    .region("us-west-2".to_string())
306    .use_fips(false)
307    .use_dual_stack(false)
308    .build().expect("invalid params");
309                        let resolver = crate::config::endpoint::DefaultResolver::new();
310                        let endpoint = resolver.resolve_endpoint(&params);
311                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.us-west-2.amazonaws.com");
312                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.us-west-2.amazonaws.com")
313    .build());
314                    }
315    
316    /// For region us-east-1 with FIPS enabled and DualStack enabled
317                    #[test]
318                    fn test_20() {
319                        let params = crate::config::endpoint::Params::builder()
320    .region("us-east-1".to_string())
321    .use_fips(true)
322    .use_dual_stack(true)
323    .build().expect("invalid params");
324                        let resolver = crate::config::endpoint::DefaultResolver::new();
325                        let endpoint = resolver.resolve_endpoint(&params);
326                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc-fips.us-east-1.api.aws");
327                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc-fips.us-east-1.api.aws")
328    .build());
329                    }
330    
331    /// For region us-east-1 with FIPS enabled and DualStack disabled
332                    #[test]
333                    fn test_21() {
334                        let params = crate::config::endpoint::Params::builder()
335    .region("us-east-1".to_string())
336    .use_fips(true)
337    .use_dual_stack(false)
338    .build().expect("invalid params");
339                        let resolver = crate::config::endpoint::DefaultResolver::new();
340                        let endpoint = resolver.resolve_endpoint(&params);
341                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc-fips.us-east-1.amazonaws.com");
342                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc-fips.us-east-1.amazonaws.com")
343    .build());
344                    }
345    
346    /// For region us-east-1 with FIPS disabled and DualStack enabled
347                    #[test]
348                    fn test_22() {
349                        let params = crate::config::endpoint::Params::builder()
350    .region("us-east-1".to_string())
351    .use_fips(false)
352    .use_dual_stack(true)
353    .build().expect("invalid params");
354                        let resolver = crate::config::endpoint::DefaultResolver::new();
355                        let endpoint = resolver.resolve_endpoint(&params);
356                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.us-east-1.api.aws");
357                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.us-east-1.api.aws")
358    .build());
359                    }
360    
361    /// For region cn-north-1 with FIPS enabled and DualStack enabled
362                    #[test]
363                    fn test_23() {
364                        let params = crate::config::endpoint::Params::builder()
365    .region("cn-north-1".to_string())
366    .use_fips(true)
367    .use_dual_stack(true)
368    .build().expect("invalid params");
369                        let resolver = crate::config::endpoint::DefaultResolver::new();
370                        let endpoint = resolver.resolve_endpoint(&params);
371                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc-fips.cn-north-1.api.amazonwebservices.com.cn");
372                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc-fips.cn-north-1.api.amazonwebservices.com.cn")
373    .build());
374                    }
375    
376    /// For region cn-north-1 with FIPS enabled and DualStack disabled
377                    #[test]
378                    fn test_24() {
379                        let params = crate::config::endpoint::Params::builder()
380    .region("cn-north-1".to_string())
381    .use_fips(true)
382    .use_dual_stack(false)
383    .build().expect("invalid params");
384                        let resolver = crate::config::endpoint::DefaultResolver::new();
385                        let endpoint = resolver.resolve_endpoint(&params);
386                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc-fips.cn-north-1.amazonaws.com.cn");
387                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc-fips.cn-north-1.amazonaws.com.cn")
388    .build());
389                    }
390    
391    /// For region cn-north-1 with FIPS disabled and DualStack enabled
392                    #[test]
393                    fn test_25() {
394                        let params = crate::config::endpoint::Params::builder()
395    .region("cn-north-1".to_string())
396    .use_fips(false)
397    .use_dual_stack(true)
398    .build().expect("invalid params");
399                        let resolver = crate::config::endpoint::DefaultResolver::new();
400                        let endpoint = resolver.resolve_endpoint(&params);
401                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.cn-north-1.api.amazonwebservices.com.cn");
402                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.cn-north-1.api.amazonwebservices.com.cn")
403    .build());
404                    }
405    
406    /// For region cn-north-1 with FIPS disabled and DualStack disabled
407                    #[test]
408                    fn test_26() {
409                        let params = crate::config::endpoint::Params::builder()
410    .region("cn-north-1".to_string())
411    .use_fips(false)
412    .use_dual_stack(false)
413    .build().expect("invalid params");
414                        let resolver = crate::config::endpoint::DefaultResolver::new();
415                        let endpoint = resolver.resolve_endpoint(&params);
416                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.cn-north-1.amazonaws.com.cn");
417                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.cn-north-1.amazonaws.com.cn")
418    .build());
419                    }
420    
421    /// For region us-gov-east-1 with FIPS disabled and DualStack disabled
422                    #[test]
423                    fn test_27() {
424                        let params = crate::config::endpoint::Params::builder()
425    .region("us-gov-east-1".to_string())
426    .use_fips(false)
427    .use_dual_stack(false)
428    .build().expect("invalid params");
429                        let resolver = crate::config::endpoint::DefaultResolver::new();
430                        let endpoint = resolver.resolve_endpoint(&params);
431                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.us-gov-east-1.amazonaws.com");
432                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.us-gov-east-1.amazonaws.com")
433    .build());
434                    }
435    
436    /// For region us-gov-west-1 with FIPS disabled and DualStack disabled
437                    #[test]
438                    fn test_28() {
439                        let params = crate::config::endpoint::Params::builder()
440    .region("us-gov-west-1".to_string())
441    .use_fips(false)
442    .use_dual_stack(false)
443    .build().expect("invalid params");
444                        let resolver = crate::config::endpoint::DefaultResolver::new();
445                        let endpoint = resolver.resolve_endpoint(&params);
446                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.us-gov-west-1.amazonaws.com");
447                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.us-gov-west-1.amazonaws.com")
448    .build());
449                    }
450    
451    /// For region us-gov-east-1 with FIPS enabled and DualStack enabled
452                    #[test]
453                    fn test_29() {
454                        let params = crate::config::endpoint::Params::builder()
455    .region("us-gov-east-1".to_string())
456    .use_fips(true)
457    .use_dual_stack(true)
458    .build().expect("invalid params");
459                        let resolver = crate::config::endpoint::DefaultResolver::new();
460                        let endpoint = resolver.resolve_endpoint(&params);
461                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc-fips.us-gov-east-1.api.aws");
462                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc-fips.us-gov-east-1.api.aws")
463    .build());
464                    }
465    
466    /// For region us-gov-east-1 with FIPS enabled and DualStack disabled
467                    #[test]
468                    fn test_30() {
469                        let params = crate::config::endpoint::Params::builder()
470    .region("us-gov-east-1".to_string())
471    .use_fips(true)
472    .use_dual_stack(false)
473    .build().expect("invalid params");
474                        let resolver = crate::config::endpoint::DefaultResolver::new();
475                        let endpoint = resolver.resolve_endpoint(&params);
476                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.us-gov-east-1.amazonaws.com");
477                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.us-gov-east-1.amazonaws.com")
478    .build());
479                    }
480    
481    /// For region us-gov-east-1 with FIPS disabled and DualStack enabled
482                    #[test]
483                    fn test_31() {
484                        let params = crate::config::endpoint::Params::builder()
485    .region("us-gov-east-1".to_string())
486    .use_fips(false)
487    .use_dual_stack(true)
488    .build().expect("invalid params");
489                        let resolver = crate::config::endpoint::DefaultResolver::new();
490                        let endpoint = resolver.resolve_endpoint(&params);
491                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.us-gov-east-1.api.aws");
492                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.us-gov-east-1.api.aws")
493    .build());
494                    }
495    
496    /// For region us-iso-east-1 with FIPS enabled and DualStack disabled
497                    #[test]
498                    fn test_32() {
499                        let params = crate::config::endpoint::Params::builder()
500    .region("us-iso-east-1".to_string())
501    .use_fips(true)
502    .use_dual_stack(false)
503    .build().expect("invalid params");
504                        let resolver = crate::config::endpoint::DefaultResolver::new();
505                        let endpoint = resolver.resolve_endpoint(&params);
506                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc-fips.us-iso-east-1.c2s.ic.gov");
507                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc-fips.us-iso-east-1.c2s.ic.gov")
508    .build());
509                    }
510    
511    /// For region us-iso-east-1 with FIPS disabled and DualStack disabled
512                    #[test]
513                    fn test_33() {
514                        let params = crate::config::endpoint::Params::builder()
515    .region("us-iso-east-1".to_string())
516    .use_fips(false)
517    .use_dual_stack(false)
518    .build().expect("invalid params");
519                        let resolver = crate::config::endpoint::DefaultResolver::new();
520                        let endpoint = resolver.resolve_endpoint(&params);
521                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.us-iso-east-1.c2s.ic.gov");
522                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.us-iso-east-1.c2s.ic.gov")
523    .build());
524                    }
525    
526    /// For region us-isob-east-1 with FIPS enabled and DualStack disabled
527                    #[test]
528                    fn test_34() {
529                        let params = crate::config::endpoint::Params::builder()
530    .region("us-isob-east-1".to_string())
531    .use_fips(true)
532    .use_dual_stack(false)
533    .build().expect("invalid params");
534                        let resolver = crate::config::endpoint::DefaultResolver::new();
535                        let endpoint = resolver.resolve_endpoint(&params);
536                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc-fips.us-isob-east-1.sc2s.sgov.gov");
537                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc-fips.us-isob-east-1.sc2s.sgov.gov")
538    .build());
539                    }
540    
541    /// For region us-isob-east-1 with FIPS disabled and DualStack disabled
542                    #[test]
543                    fn test_35() {
544                        let params = crate::config::endpoint::Params::builder()
545    .region("us-isob-east-1".to_string())
546    .use_fips(false)
547    .use_dual_stack(false)
548    .build().expect("invalid params");
549                        let resolver = crate::config::endpoint::DefaultResolver::new();
550                        let endpoint = resolver.resolve_endpoint(&params);
551                        let endpoint = endpoint.expect("Expected valid endpoint: https://oidc.us-isob-east-1.sc2s.sgov.gov");
552                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://oidc.us-isob-east-1.sc2s.sgov.gov")
553    .build());
554                    }
555    
556    /// For custom endpoint with region set and fips disabled and dualstack disabled
557                    #[test]
558                    fn test_36() {
559                        let params = crate::config::endpoint::Params::builder()
560    .region("us-east-1".to_string())
561    .use_fips(false)
562    .use_dual_stack(false)
563    .endpoint("https://example.com".to_string())
564    .build().expect("invalid params");
565                        let resolver = crate::config::endpoint::DefaultResolver::new();
566                        let endpoint = resolver.resolve_endpoint(&params);
567                        let endpoint = endpoint.expect("Expected valid endpoint: https://example.com");
568                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://example.com")
569    .build());
570                    }
571    
572    /// For custom endpoint with region not set and fips disabled and dualstack disabled
573                    #[test]
574                    fn test_37() {
575                        let params = crate::config::endpoint::Params::builder()
576    .use_fips(false)
577    .use_dual_stack(false)
578    .endpoint("https://example.com".to_string())
579    .build().expect("invalid params");
580                        let resolver = crate::config::endpoint::DefaultResolver::new();
581                        let endpoint = resolver.resolve_endpoint(&params);
582                        let endpoint = endpoint.expect("Expected valid endpoint: https://example.com");
583                                    assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://example.com")
584    .build());
585                    }
586    
587    /// For custom endpoint with fips enabled and dualstack disabled
588                    #[test]
589                    fn test_38() {
590                        let params = crate::config::endpoint::Params::builder()
591    .region("us-east-1".to_string())
592    .use_fips(true)
593    .use_dual_stack(false)
594    .endpoint("https://example.com".to_string())
595    .build().expect("invalid params");
596                        let resolver = crate::config::endpoint::DefaultResolver::new();
597                        let endpoint = resolver.resolve_endpoint(&params);
598                        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]");
599                                    assert_eq!(format!("{}", error), "Invalid Configuration: FIPS and custom endpoint are not supported")
600                    }
601    
602    /// For custom endpoint with fips disabled and dualstack enabled
603                    #[test]
604                    fn test_39() {
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    .endpoint("https://example.com".to_string())
610    .build().expect("invalid params");
611                        let resolver = crate::config::endpoint::DefaultResolver::new();
612                        let endpoint = resolver.resolve_endpoint(&params);
613                        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]");
614                                    assert_eq!(format!("{}", error), "Invalid Configuration: Dualstack and custom endpoint are not supported")
615                    }
616    
617    /// Missing region
618                    #[test]
619                    fn test_40() {
620                        let params = crate::config::endpoint::Params::builder()
621    .build().expect("invalid params");
622                        let resolver = crate::config::endpoint::DefaultResolver::new();
623                        let endpoint = resolver.resolve_endpoint(&params);
624                        let error = endpoint.expect_err("expected error: Invalid Configuration: Missing Region [Missing region]");
625                                    assert_eq!(format!("{}", error), "Invalid Configuration: Missing Region")
626                    }
627    
628    
629}
630
631/// Endpoint resolver trait specific to AWS SSO OIDC
632            pub trait ResolveEndpoint: ::std::marker::Send + ::std::marker::Sync + ::std::fmt::Debug {
633                /// Resolve an endpoint with the given parameters
634                fn resolve_endpoint<'a>(&'a self, params: &'a crate::config::endpoint::Params) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a>;
635
636                /// Convert this service-specific resolver into a `SharedEndpointResolver`
637                ///
638                /// The resulting resolver will downcast `EndpointResolverParams` into `crate::config::endpoint::Params`.
639                fn into_shared_resolver(self) -> ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver
640                where
641                    Self: Sized + 'static,
642                {
643                    ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver::new(DowncastParams(self))
644                }
645            }
646
647            #[derive(Debug)]
648            struct DowncastParams<T>(T);
649            impl<T> ::aws_smithy_runtime_api::client::endpoint::ResolveEndpoint for DowncastParams<T>
650            where
651                T: ResolveEndpoint,
652            {
653                fn resolve_endpoint<'a>(&'a self, params: &'a ::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a> {
654                    let ep = match params.get::<crate::config::endpoint::Params>() {
655                        Some(params) => self.0.resolve_endpoint(params),
656                        None => ::aws_smithy_runtime_api::client::endpoint::EndpointFuture::ready(Err("params of expected type was not present".into())),
657                    };
658                    ep
659                }
660                
661            }
662
663/// The default endpoint resolver
664                #[derive(Debug, Default)]
665                pub struct DefaultResolver {
666                    partition_resolver: crate::endpoint_lib::partition::PartitionResolver
667                }
668
669                impl DefaultResolver {
670                    /// Create a new endpoint resolver with default settings
671                    pub fn new() -> Self {
672                        Self { partition_resolver: crate::endpoint_lib::DEFAULT_PARTITION_RESOLVER.clone() }
673                    }
674
675                    fn resolve_endpoint(&self, params: &crate::config::endpoint::Params) -> ::std::result::Result<::aws_smithy_types::endpoint::Endpoint, ::aws_smithy_runtime_api::box_error::BoxError> {
676                        let mut diagnostic_collector = crate::endpoint_lib::diagnostic::DiagnosticCollector::new();
677                        Ok(crate::config::endpoint::internals::resolve_endpoint(params, &mut diagnostic_collector, &self.partition_resolver)
678                            .map_err(|err|err.with_source(diagnostic_collector.take_last_error()))?)
679                    }
680                }
681
682                impl crate::config::endpoint::ResolveEndpoint for DefaultResolver {
683                    fn resolve_endpoint(&self, params: &crate::config::endpoint::Params) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'_> {
684                        ::aws_smithy_runtime_api::client::endpoint::EndpointFuture::ready(self.resolve_endpoint(params))
685                    }
686                }
687
688#[non_exhaustive]
689#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
690/// Configuration parameters for resolving the correct endpoint
691pub struct Params {
692    /// The AWS region used to dispatch the request.
693    pub(crate) region: ::std::option::Option<::std::string::String>,
694    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
695    pub(crate) use_dual_stack: bool,
696    /// 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.
697    pub(crate) use_fips: bool,
698    /// Override the endpoint used to send this request
699    pub(crate) endpoint: ::std::option::Option<::std::string::String>,
700}
701impl Params {
702    /// Create a builder for [`Params`]
703                    pub fn builder() -> crate::config::endpoint::ParamsBuilder {
704                        crate::config::endpoint::ParamsBuilder::default()
705                    }
706    /// The AWS region used to dispatch the request.
707    pub fn region(&self) -> ::std::option::Option<&str> {
708                            self.region.as_deref()
709                        }
710    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
711    pub fn use_dual_stack(&self) -> ::std::option::Option<bool> {
712                            Some(self.use_dual_stack)
713                        }
714    /// 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.
715    pub fn use_fips(&self) -> ::std::option::Option<bool> {
716                            Some(self.use_fips)
717                        }
718    /// Override the endpoint used to send this request
719    pub fn endpoint(&self) -> ::std::option::Option<&str> {
720                            self.endpoint.as_deref()
721                        }
722}
723
724/// Builder for [`Params`]
725#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
726pub struct ParamsBuilder {
727    region: ::std::option::Option<::std::string::String>,
728    use_dual_stack: ::std::option::Option<bool>,
729    use_fips: ::std::option::Option<bool>,
730    endpoint: ::std::option::Option<::std::string::String>,
731}
732impl ParamsBuilder {
733    /// Consume this builder, creating [`Params`].
734    pub fn build(self) -> ::std::result::Result<crate::config::endpoint::Params, crate::config::endpoint::InvalidParams> {
735        if let Some(region) = &self.region {
736                                                if !crate::endpoint_lib::host::is_valid_host_label(region.as_ref() as &str, true, &mut crate::endpoint_lib::diagnostic::DiagnosticCollector::new()) {
737                                                    return Err(crate::config::endpoint::InvalidParams::invalid_value("region", "must be a valid host label"))
738                                                }
739                                            };
740        Ok(#[allow(clippy::unnecessary_lazy_evaluations)]
741        crate::config::endpoint::Params {
742            region: self.region
743            ,
744            use_dual_stack: self.use_dual_stack
745            .or_else(||Some(false))
746            .ok_or_else(||crate::config::endpoint::InvalidParams::missing("use_dual_stack"))?
747            ,
748            use_fips: self.use_fips
749            .or_else(||Some(false))
750            .ok_or_else(||crate::config::endpoint::InvalidParams::missing("use_fips"))?
751            ,
752            endpoint: self.endpoint
753            ,
754        })
755    }
756    /// Sets the value for region 
757    /// 
758    /// The AWS region used to dispatch the request.
759                        pub fn region(mut self, value: impl Into<::std::string::String>) -> Self {
760                            self.region = Some(value.into());
761                            self
762                        }
763    
764                        /// Sets the value for region 
765    /// 
766    /// The AWS region used to dispatch the request.
767                        pub fn set_region(mut self, param: Option<::std::string::String>) -> Self {
768                            self.region = param;
769                            self
770                        }
771    /// Sets the value for use_dual_stack 
772    /// 
773    /// When unset, this parameter has a default value of `false`.
774    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
775                        pub fn use_dual_stack(mut self, value: impl Into<bool>) -> Self {
776                            self.use_dual_stack = Some(value.into());
777                            self
778                        }
779    
780                        /// Sets the value for use_dual_stack 
781    /// 
782    /// When unset, this parameter has a default value of `false`.
783    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
784                        pub fn set_use_dual_stack(mut self, param: Option<bool>) -> Self {
785                            self.use_dual_stack = param;
786                            self
787                        }
788    /// Sets the value for use_fips 
789    /// 
790    /// When unset, this parameter has a default value of `false`.
791    /// 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.
792                        pub fn use_fips(mut self, value: impl Into<bool>) -> Self {
793                            self.use_fips = Some(value.into());
794                            self
795                        }
796    
797                        /// Sets the value for use_fips 
798    /// 
799    /// When unset, this parameter has a default value of `false`.
800    /// 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.
801                        pub fn set_use_fips(mut self, param: Option<bool>) -> Self {
802                            self.use_fips = param;
803                            self
804                        }
805    /// Sets the value for endpoint 
806    /// 
807    /// Override the endpoint used to send this request
808                        pub fn endpoint(mut self, value: impl Into<::std::string::String>) -> Self {
809                            self.endpoint = Some(value.into());
810                            self
811                        }
812    
813                        /// Sets the value for endpoint 
814    /// 
815    /// Override the endpoint used to send this request
816                        pub fn set_endpoint(mut self, param: Option<::std::string::String>) -> Self {
817                            self.endpoint = param;
818                            self
819                        }
820}
821
822/// An error that occurred during endpoint resolution
823                    #[derive(Debug)]
824                    pub struct InvalidParams {
825                        field: std::borrow::Cow<'static, str>,
826                        kind: InvalidParamsErrorKind,
827                    }
828
829                    /// The kind of invalid parameter error
830                    #[derive(Debug)]
831                    enum InvalidParamsErrorKind {
832                        MissingField,
833                        InvalidValue {
834                            message: &'static str,
835                        }
836                    }
837
838                    impl InvalidParams {
839                        #[allow(dead_code)]
840                        fn missing(field: &'static str) -> Self {
841                            Self { field: field.into(), kind: InvalidParamsErrorKind::MissingField }
842                        }
843
844                        #[allow(dead_code)]
845                        fn invalid_value(field: &'static str, message: &'static str) -> Self {
846                            Self { field: field.into(), kind: InvalidParamsErrorKind::InvalidValue { message }}
847                        }
848                    }
849
850                    impl std::fmt::Display for InvalidParams {
851                        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
852                            match self.kind {
853                                InvalidParamsErrorKind::MissingField => write!(f, "a required field was missing: `{}`", self.field),
854                                InvalidParamsErrorKind::InvalidValue { message} => write!(f, "invalid value for field: `{}` - {}", self.field, message),
855                            }
856                        }
857                    }
858
859                    impl std::error::Error for InvalidParams { }
860
861mod internals;
862