1pub 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#[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 #[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(¶ms);
42 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.ap-east-1.amazonaws.com");
43 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.ap-east-1.amazonaws.com")
44 .build());
45 }
46
47 #[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(¶ms);
57 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.ap-northeast-1.amazonaws.com");
58 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.ap-northeast-1.amazonaws.com")
59 .build());
60 }
61
62 #[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(¶ms);
72 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.ap-northeast-2.amazonaws.com");
73 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.ap-northeast-2.amazonaws.com")
74 .build());
75 }
76
77 #[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(¶ms);
87 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.ap-northeast-3.amazonaws.com");
88 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.ap-northeast-3.amazonaws.com")
89 .build());
90 }
91
92 #[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(¶ms);
102 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.ap-south-1.amazonaws.com");
103 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.ap-south-1.amazonaws.com")
104 .build());
105 }
106
107 #[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(¶ms);
117 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.ap-southeast-1.amazonaws.com");
118 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.ap-southeast-1.amazonaws.com")
119 .build());
120 }
121
122 #[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(¶ms);
132 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.ap-southeast-2.amazonaws.com");
133 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.ap-southeast-2.amazonaws.com")
134 .build());
135 }
136
137 #[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(¶ms);
147 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.ca-central-1.amazonaws.com");
148 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.ca-central-1.amazonaws.com")
149 .build());
150 }
151
152 #[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(¶ms);
162 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.eu-central-1.amazonaws.com");
163 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.eu-central-1.amazonaws.com")
164 .build());
165 }
166
167 #[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(¶ms);
177 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.eu-north-1.amazonaws.com");
178 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.eu-north-1.amazonaws.com")
179 .build());
180 }
181
182 #[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(¶ms);
192 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.eu-south-1.amazonaws.com");
193 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.eu-south-1.amazonaws.com")
194 .build());
195 }
196
197 #[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(¶ms);
207 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.eu-west-1.amazonaws.com");
208 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.eu-west-1.amazonaws.com")
209 .build());
210 }
211
212 #[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(¶ms);
222 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.eu-west-2.amazonaws.com");
223 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.eu-west-2.amazonaws.com")
224 .build());
225 }
226
227 #[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(¶ms);
237 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.eu-west-3.amazonaws.com");
238 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.eu-west-3.amazonaws.com")
239 .build());
240 }
241
242 #[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(¶ms);
252 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.me-south-1.amazonaws.com");
253 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.me-south-1.amazonaws.com")
254 .build());
255 }
256
257 #[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(¶ms);
267 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.sa-east-1.amazonaws.com");
268 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.sa-east-1.amazonaws.com")
269 .build());
270 }
271
272 #[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(¶ms);
282 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.us-east-1.amazonaws.com");
283 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.us-east-1.amazonaws.com")
284 .build());
285 }
286
287 #[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(¶ms);
297 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.us-east-2.amazonaws.com");
298 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.us-east-2.amazonaws.com")
299 .build());
300 }
301
302 #[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(¶ms);
312 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.us-west-2.amazonaws.com");
313 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.us-west-2.amazonaws.com")
314 .build());
315 }
316
317 #[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(¶ms);
327 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso-fips.us-east-1.api.aws");
328 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso-fips.us-east-1.api.aws")
329 .build());
330 }
331
332 #[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(¶ms);
342 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso-fips.us-east-1.amazonaws.com");
343 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso-fips.us-east-1.amazonaws.com")
344 .build());
345 }
346
347 #[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(¶ms);
357 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.us-east-1.api.aws");
358 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.us-east-1.api.aws")
359 .build());
360 }
361
362 #[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(¶ms);
372 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso-fips.cn-north-1.api.amazonwebservices.com.cn");
373 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso-fips.cn-north-1.api.amazonwebservices.com.cn")
374 .build());
375 }
376
377 #[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(¶ms);
387 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso-fips.cn-north-1.amazonaws.com.cn");
388 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso-fips.cn-north-1.amazonaws.com.cn")
389 .build());
390 }
391
392 #[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(¶ms);
402 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.cn-north-1.api.amazonwebservices.com.cn");
403 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.cn-north-1.api.amazonwebservices.com.cn")
404 .build());
405 }
406
407 #[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(¶ms);
417 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.cn-north-1.amazonaws.com.cn");
418 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.cn-north-1.amazonaws.com.cn")
419 .build());
420 }
421
422 #[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(¶ms);
432 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.us-gov-east-1.amazonaws.com");
433 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.us-gov-east-1.amazonaws.com")
434 .build());
435 }
436
437 #[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(¶ms);
447 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.us-gov-west-1.amazonaws.com");
448 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.us-gov-west-1.amazonaws.com")
449 .build());
450 }
451
452 #[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(¶ms);
462 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso-fips.us-gov-east-1.api.aws");
463 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso-fips.us-gov-east-1.api.aws")
464 .build());
465 }
466
467 #[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(¶ms);
477 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.us-gov-east-1.amazonaws.com");
478 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.us-gov-east-1.amazonaws.com")
479 .build());
480 }
481
482 #[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(¶ms);
492 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.us-gov-east-1.api.aws");
493 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.us-gov-east-1.api.aws")
494 .build());
495 }
496
497 #[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(¶ms);
507 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso-fips.us-iso-east-1.c2s.ic.gov");
508 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso-fips.us-iso-east-1.c2s.ic.gov")
509 .build());
510 }
511
512 #[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(¶ms);
522 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.us-iso-east-1.c2s.ic.gov");
523 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.us-iso-east-1.c2s.ic.gov")
524 .build());
525 }
526
527 #[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(¶ms);
537 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso-fips.us-isob-east-1.sc2s.sgov.gov");
538 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso-fips.us-isob-east-1.sc2s.sgov.gov")
539 .build());
540 }
541
542 #[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(¶ms);
552 let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.us-isob-east-1.sc2s.sgov.gov");
553 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://portal.sso.us-isob-east-1.sc2s.sgov.gov")
554 .build());
555 }
556
557 #[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(¶ms);
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 #[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(¶ms);
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 #[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(¶ms);
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 #[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(¶ms);
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 #[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(¶ms);
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
632pub trait ResolveEndpoint: ::std::marker::Send + ::std::marker::Sync + ::std::fmt::Debug {
634 fn resolve_endpoint<'a>(&'a self, params: &'a crate::config::endpoint::Params) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a>;
636
637 fn into_shared_resolver(self) -> ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver
641 where
642 Self: Sized + 'static,
643 {
644 ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver::new(DowncastParams(self))
645 }
646 }
647
648 #[derive(Debug)]
649 struct DowncastParams<T>(T);
650 impl<T> ::aws_smithy_runtime_api::client::endpoint::ResolveEndpoint for DowncastParams<T>
651 where
652 T: ResolveEndpoint,
653 {
654 fn resolve_endpoint<'a>(&'a self, params: &'a ::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a> {
655 let ep = match params.get::<crate::config::endpoint::Params>() {
656 Some(params) => self.0.resolve_endpoint(params),
657 None => ::aws_smithy_runtime_api::client::endpoint::EndpointFuture::ready(Err("params of expected type was not present".into())),
658 };
659 ep
660 }
661
662 }
663
664#[derive(Debug, Default)]
666 pub struct DefaultResolver {
667 partition_resolver: crate::endpoint_lib::partition::PartitionResolver
668 }
669
670 impl DefaultResolver {
671 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)]
691pub struct Params {
693 pub(crate) region: ::std::option::Option<::std::string::String>,
695 pub(crate) use_dual_stack: bool,
697 pub(crate) use_fips: bool,
699 pub(crate) endpoint: ::std::option::Option<::std::string::String>,
701}
702impl Params {
703 pub fn builder() -> crate::config::endpoint::ParamsBuilder {
705 crate::config::endpoint::ParamsBuilder::default()
706 }
707 pub fn region(&self) -> ::std::option::Option<&str> {
709 self.region.as_deref()
710 }
711 pub fn use_dual_stack(&self) -> ::std::option::Option<bool> {
713 Some(self.use_dual_stack)
714 }
715 pub fn use_fips(&self) -> ::std::option::Option<bool> {
717 Some(self.use_fips)
718 }
719 pub fn endpoint(&self) -> ::std::option::Option<&str> {
721 self.endpoint.as_deref()
722 }
723}
724
725#[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 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 pub fn region(mut self, value: impl Into<::std::string::String>) -> Self {
761 self.region = Some(value.into());
762 self
763 }
764
765 pub fn set_region(mut self, param: Option<::std::string::String>) -> Self {
769 self.region = param;
770 self
771 }
772 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 pub fn set_use_dual_stack(mut self, param: Option<bool>) -> Self {
786 self.use_dual_stack = param;
787 self
788 }
789 pub fn use_fips(mut self, value: impl Into<bool>) -> Self {
794 self.use_fips = Some(value.into());
795 self
796 }
797
798 pub fn set_use_fips(mut self, param: Option<bool>) -> Self {
803 self.use_fips = param;
804 self
805 }
806 pub fn endpoint(mut self, value: impl Into<::std::string::String>) -> Self {
810 self.endpoint = Some(value.into());
811 self
812 }
813
814 pub fn set_endpoint(mut self, param: Option<::std::string::String>) -> Self {
818 self.endpoint = param;
819 self
820 }
821}
822
823#[derive(Debug)]
825 pub struct InvalidParams {
826 field: std::borrow::Cow<'static, str>,
827 kind: InvalidParamsErrorKind,
828 }
829
830 #[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