aws_sdk_ssooidc/config/
endpoint.rs

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