aws_sdk_transcribestreaming/config/
endpoint.rs1pub 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-northeast-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://transcribestreaming.ap-northeast-1.amazonaws.com");
43 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.ap-northeast-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-2".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://transcribestreaming.ap-northeast-2.amazonaws.com");
58 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.ap-northeast-2.amazonaws.com")
59 .build());
60 }
61
62 #[test]
64 fn test_3() {
65 let params = crate::config::endpoint::Params::builder()
66 .region("ap-southeast-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://transcribestreaming.ap-southeast-2.amazonaws.com");
73 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.ap-southeast-2.amazonaws.com")
74 .build());
75 }
76
77 #[test]
79 fn test_4() {
80 let params = crate::config::endpoint::Params::builder()
81 .region("ca-central-1".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://transcribestreaming.ca-central-1.amazonaws.com");
88 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.ca-central-1.amazonaws.com")
89 .build());
90 }
91
92 #[test]
94 fn test_5() {
95 let params = crate::config::endpoint::Params::builder()
96 .region("eu-central-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://transcribestreaming.eu-central-1.amazonaws.com");
103 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.eu-central-1.amazonaws.com")
104 .build());
105 }
106
107 #[test]
109 fn test_6() {
110 let params = crate::config::endpoint::Params::builder()
111 .region("eu-west-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://transcribestreaming.eu-west-1.amazonaws.com");
118 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.eu-west-1.amazonaws.com")
119 .build());
120 }
121
122 #[test]
124 fn test_7() {
125 let params = crate::config::endpoint::Params::builder()
126 .region("eu-west-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://transcribestreaming.eu-west-2.amazonaws.com");
133 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.eu-west-2.amazonaws.com")
134 .build());
135 }
136
137 #[test]
139 fn test_8() {
140 let params = crate::config::endpoint::Params::builder()
141 .region("sa-east-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://transcribestreaming.sa-east-1.amazonaws.com");
148 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.sa-east-1.amazonaws.com")
149 .build());
150 }
151
152 #[test]
154 fn test_9() {
155 let params = crate::config::endpoint::Params::builder()
156 .region("us-east-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://transcribestreaming.us-east-1.amazonaws.com");
163 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.us-east-1.amazonaws.com")
164 .build());
165 }
166
167 #[test]
169 fn test_10() {
170 let params = crate::config::endpoint::Params::builder()
171 .region("us-east-2".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://transcribestreaming.us-east-2.amazonaws.com");
178 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.us-east-2.amazonaws.com")
179 .build());
180 }
181
182 #[test]
184 fn test_11() {
185 let params = crate::config::endpoint::Params::builder()
186 .region("us-west-2".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://transcribestreaming.us-west-2.amazonaws.com");
193 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.us-west-2.amazonaws.com")
194 .build());
195 }
196
197 #[test]
199 fn test_12() {
200 let params = crate::config::endpoint::Params::builder()
201 .region("us-east-1".to_string())
202 .use_fips(true)
203 .use_dual_stack(true)
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://transcribestreaming-fips.us-east-1.api.aws");
208 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming-fips.us-east-1.api.aws")
209 .build());
210 }
211
212 #[test]
214 fn test_13() {
215 let params = crate::config::endpoint::Params::builder()
216 .region("us-east-1".to_string())
217 .use_fips(true)
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://transcribestreaming-fips.us-east-1.amazonaws.com");
223 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming-fips.us-east-1.amazonaws.com")
224 .build());
225 }
226
227 #[test]
229 fn test_14() {
230 let params = crate::config::endpoint::Params::builder()
231 .region("us-east-1".to_string())
232 .use_fips(false)
233 .use_dual_stack(true)
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://transcribestreaming.us-east-1.api.aws");
238 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.us-east-1.api.aws")
239 .build());
240 }
241
242 #[test]
244 fn test_15() {
245 let params = crate::config::endpoint::Params::builder()
246 .region("cn-north-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://transcribestreaming.cn-north-1.amazonaws.com.cn");
253 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.cn-north-1.amazonaws.com.cn")
254 .build());
255 }
256
257 #[test]
259 fn test_16() {
260 let params = crate::config::endpoint::Params::builder()
261 .region("cn-northwest-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://transcribestreaming.cn-northwest-1.amazonaws.com.cn");
268 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.cn-northwest-1.amazonaws.com.cn")
269 .build());
270 }
271
272 #[test]
274 fn test_17() {
275 let params = crate::config::endpoint::Params::builder()
276 .region("cn-north-1".to_string())
277 .use_fips(true)
278 .use_dual_stack(true)
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://transcribestreaming-fips.cn-north-1.api.amazonwebservices.com.cn");
283 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming-fips.cn-north-1.api.amazonwebservices.com.cn")
284 .build());
285 }
286
287 #[test]
289 fn test_18() {
290 let params = crate::config::endpoint::Params::builder()
291 .region("cn-north-1".to_string())
292 .use_fips(true)
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://transcribestreaming-fips.cn-north-1.amazonaws.com.cn");
298 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming-fips.cn-north-1.amazonaws.com.cn")
299 .build());
300 }
301
302 #[test]
304 fn test_19() {
305 let params = crate::config::endpoint::Params::builder()
306 .region("cn-north-1".to_string())
307 .use_fips(false)
308 .use_dual_stack(true)
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://transcribestreaming.cn-north-1.api.amazonwebservices.com.cn");
313 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.cn-north-1.api.amazonwebservices.com.cn")
314 .build());
315 }
316
317 #[test]
319 fn test_20() {
320 let params = crate::config::endpoint::Params::builder()
321 .region("us-gov-east-1".to_string())
322 .use_fips(false)
323 .use_dual_stack(false)
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://transcribestreaming.us-gov-east-1.amazonaws.com");
328 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.us-gov-east-1.amazonaws.com")
329 .build());
330 }
331
332 #[test]
334 fn test_21() {
335 let params = crate::config::endpoint::Params::builder()
336 .region("us-gov-west-1".to_string())
337 .use_fips(false)
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://transcribestreaming.us-gov-west-1.amazonaws.com");
343 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.us-gov-west-1.amazonaws.com")
344 .build());
345 }
346
347 #[test]
349 fn test_22() {
350 let params = crate::config::endpoint::Params::builder()
351 .region("us-gov-east-1".to_string())
352 .use_fips(true)
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://transcribestreaming-fips.us-gov-east-1.api.aws");
358 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming-fips.us-gov-east-1.api.aws")
359 .build());
360 }
361
362 #[test]
364 fn test_23() {
365 let params = crate::config::endpoint::Params::builder()
366 .region("us-gov-east-1".to_string())
367 .use_fips(true)
368 .use_dual_stack(false)
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://transcribestreaming-fips.us-gov-east-1.amazonaws.com");
373 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming-fips.us-gov-east-1.amazonaws.com")
374 .build());
375 }
376
377 #[test]
379 fn test_24() {
380 let params = crate::config::endpoint::Params::builder()
381 .region("us-gov-east-1".to_string())
382 .use_fips(false)
383 .use_dual_stack(true)
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://transcribestreaming.us-gov-east-1.api.aws");
388 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.us-gov-east-1.api.aws")
389 .build());
390 }
391
392 #[test]
394 fn test_25() {
395 let params = crate::config::endpoint::Params::builder()
396 .region("us-iso-east-1".to_string())
397 .use_fips(false)
398 .use_dual_stack(false)
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://transcribestreaming.us-iso-east-1.c2s.ic.gov");
403 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.us-iso-east-1.c2s.ic.gov")
404 .build());
405 }
406
407 #[test]
409 fn test_26() {
410 let params = crate::config::endpoint::Params::builder()
411 .region("us-iso-east-1".to_string())
412 .use_fips(true)
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://transcribestreaming-fips.us-iso-east-1.c2s.ic.gov");
418 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming-fips.us-iso-east-1.c2s.ic.gov")
419 .build());
420 }
421
422 #[test]
424 fn test_27() {
425 let params = crate::config::endpoint::Params::builder()
426 .region("us-isob-east-1".to_string())
427 .use_fips(true)
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://transcribestreaming-fips.us-isob-east-1.sc2s.sgov.gov");
433 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming-fips.us-isob-east-1.sc2s.sgov.gov")
434 .build());
435 }
436
437 #[test]
439 fn test_28() {
440 let params = crate::config::endpoint::Params::builder()
441 .region("us-isob-east-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://transcribestreaming.us-isob-east-1.sc2s.sgov.gov");
448 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.us-isob-east-1.sc2s.sgov.gov")
449 .build());
450 }
451
452 #[test]
454 fn test_29() {
455 let params = crate::config::endpoint::Params::builder()
456 .region("us-east-1".to_string())
457 .use_fips(false)
458 .use_dual_stack(false)
459 .endpoint("https://example.com".to_string())
460 .build().expect("invalid params");
461 let resolver = crate::config::endpoint::DefaultResolver::new();
462 let endpoint = resolver.resolve_endpoint(¶ms);
463 let endpoint = endpoint.expect("Expected valid endpoint: https://example.com");
464 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://example.com")
465 .build());
466 }
467
468 #[test]
470 fn test_30() {
471 let params = crate::config::endpoint::Params::builder()
472 .use_fips(false)
473 .use_dual_stack(false)
474 .endpoint("https://example.com".to_string())
475 .build().expect("invalid params");
476 let resolver = crate::config::endpoint::DefaultResolver::new();
477 let endpoint = resolver.resolve_endpoint(¶ms);
478 let endpoint = endpoint.expect("Expected valid endpoint: https://example.com");
479 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://example.com")
480 .build());
481 }
482
483 #[test]
485 fn test_31() {
486 let params = crate::config::endpoint::Params::builder()
487 .region("us-east-1".to_string())
488 .use_fips(true)
489 .use_dual_stack(false)
490 .endpoint("https://example.com".to_string())
491 .build().expect("invalid params");
492 let resolver = crate::config::endpoint::DefaultResolver::new();
493 let endpoint = resolver.resolve_endpoint(¶ms);
494 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]");
495 assert_eq!(format!("{}", error), "Invalid Configuration: FIPS and custom endpoint are not supported")
496 }
497
498 #[test]
500 fn test_32() {
501 let params = crate::config::endpoint::Params::builder()
502 .region("us-east-1".to_string())
503 .use_fips(false)
504 .use_dual_stack(true)
505 .endpoint("https://example.com".to_string())
506 .build().expect("invalid params");
507 let resolver = crate::config::endpoint::DefaultResolver::new();
508 let endpoint = resolver.resolve_endpoint(¶ms);
509 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]");
510 assert_eq!(format!("{}", error), "Invalid Configuration: Dualstack and custom endpoint are not supported")
511 }
512
513 #[test]
515 fn test_33() {
516 let params = crate::config::endpoint::Params::builder()
517 .build().expect("invalid params");
518 let resolver = crate::config::endpoint::DefaultResolver::new();
519 let endpoint = resolver.resolve_endpoint(¶ms);
520 let error = endpoint.expect_err("expected error: Invalid Configuration: Missing Region [Missing region]");
521 assert_eq!(format!("{}", error), "Invalid Configuration: Missing Region")
522 }
523
524
525}
526
527pub trait ResolveEndpoint: ::std::marker::Send + ::std::marker::Sync + ::std::fmt::Debug {
529 fn resolve_endpoint<'a>(&'a self, params: &'a crate::config::endpoint::Params) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a>;
531
532 fn into_shared_resolver(self) -> ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver
536 where
537 Self: Sized + 'static,
538 {
539 ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver::new(DowncastParams(self))
540 }
541 }
542
543 #[derive(Debug)]
544 struct DowncastParams<T>(T);
545 impl<T> ::aws_smithy_runtime_api::client::endpoint::ResolveEndpoint for DowncastParams<T>
546 where
547 T: ResolveEndpoint,
548 {
549 fn resolve_endpoint<'a>(&'a self, params: &'a ::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a> {
550 let ep = match params.get::<crate::config::endpoint::Params>() {
551 Some(params) => self.0.resolve_endpoint(params),
552 None => ::aws_smithy_runtime_api::client::endpoint::EndpointFuture::ready(Err("params of expected type was not present".into())),
553 };
554 ep
555 }
556
557 }
558
559#[derive(Debug, Default)]
561 pub struct DefaultResolver {
562 partition_resolver: crate::endpoint_lib::partition::PartitionResolver
563 }
564
565 impl DefaultResolver {
566 pub fn new() -> Self {
568 Self { partition_resolver: crate::endpoint_lib::DEFAULT_PARTITION_RESOLVER.clone() }
569 }
570
571 fn resolve_endpoint(&self, params: &crate::config::endpoint::Params) -> ::std::result::Result<::aws_smithy_types::endpoint::Endpoint, ::aws_smithy_runtime_api::box_error::BoxError> {
572 let mut diagnostic_collector = crate::endpoint_lib::diagnostic::DiagnosticCollector::new();
573 Ok(crate::config::endpoint::internals::resolve_endpoint(params, &mut diagnostic_collector, &self.partition_resolver)
574 .map_err(|err|err.with_source(diagnostic_collector.take_last_error()))?)
575 }
576 }
577
578 impl crate::config::endpoint::ResolveEndpoint for DefaultResolver {
579 fn resolve_endpoint(&self, params: &crate::config::endpoint::Params) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'_> {
580 ::aws_smithy_runtime_api::client::endpoint::EndpointFuture::ready(self.resolve_endpoint(params))
581 }
582 }
583
584#[non_exhaustive]
585#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
586pub struct Params {
588 pub(crate) region: ::std::option::Option<::std::string::String>,
590 pub(crate) use_dual_stack: bool,
592 pub(crate) use_fips: bool,
594 pub(crate) endpoint: ::std::option::Option<::std::string::String>,
596}
597impl Params {
598 pub fn builder() -> crate::config::endpoint::ParamsBuilder {
600 crate::config::endpoint::ParamsBuilder::default()
601 }
602 pub fn region(&self) -> ::std::option::Option<&str> {
604 self.region.as_deref()
605 }
606 pub fn use_dual_stack(&self) -> ::std::option::Option<bool> {
608 Some(self.use_dual_stack)
609 }
610 pub fn use_fips(&self) -> ::std::option::Option<bool> {
612 Some(self.use_fips)
613 }
614 pub fn endpoint(&self) -> ::std::option::Option<&str> {
616 self.endpoint.as_deref()
617 }
618}
619
620#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
622pub struct ParamsBuilder {
623 region: ::std::option::Option<::std::string::String>,
624 use_dual_stack: ::std::option::Option<bool>,
625 use_fips: ::std::option::Option<bool>,
626 endpoint: ::std::option::Option<::std::string::String>,
627}
628impl ParamsBuilder {
629 pub fn build(self) -> ::std::result::Result<crate::config::endpoint::Params, crate::config::endpoint::InvalidParams> {
631 if let Some(region) = &self.region {
632 if !crate::endpoint_lib::host::is_valid_host_label(region.as_ref() as &str, true, &mut crate::endpoint_lib::diagnostic::DiagnosticCollector::new()) {
633 return Err(crate::config::endpoint::InvalidParams::invalid_value("region", "must be a valid host label"))
634 }
635 };
636 Ok(#[allow(clippy::unnecessary_lazy_evaluations)]
637 crate::config::endpoint::Params {
638 region: self.region
639 ,
640 use_dual_stack: self.use_dual_stack
641 .or_else(||Some(false))
642 .ok_or_else(||crate::config::endpoint::InvalidParams::missing("use_dual_stack"))?
643 ,
644 use_fips: self.use_fips
645 .or_else(||Some(false))
646 .ok_or_else(||crate::config::endpoint::InvalidParams::missing("use_fips"))?
647 ,
648 endpoint: self.endpoint
649 ,
650 })
651 }
652 pub fn region(mut self, value: impl Into<::std::string::String>) -> Self {
656 self.region = Some(value.into());
657 self
658 }
659
660 pub fn set_region(mut self, param: Option<::std::string::String>) -> Self {
664 self.region = param;
665 self
666 }
667 pub fn use_dual_stack(mut self, value: impl Into<bool>) -> Self {
672 self.use_dual_stack = Some(value.into());
673 self
674 }
675
676 pub fn set_use_dual_stack(mut self, param: Option<bool>) -> Self {
681 self.use_dual_stack = param;
682 self
683 }
684 pub fn use_fips(mut self, value: impl Into<bool>) -> Self {
689 self.use_fips = Some(value.into());
690 self
691 }
692
693 pub fn set_use_fips(mut self, param: Option<bool>) -> Self {
698 self.use_fips = param;
699 self
700 }
701 pub fn endpoint(mut self, value: impl Into<::std::string::String>) -> Self {
705 self.endpoint = Some(value.into());
706 self
707 }
708
709 pub fn set_endpoint(mut self, param: Option<::std::string::String>) -> Self {
713 self.endpoint = param;
714 self
715 }
716}
717
718#[derive(Debug)]
720 pub struct InvalidParams {
721 field: std::borrow::Cow<'static, str>,
722 kind: InvalidParamsErrorKind,
723 }
724
725 #[derive(Debug)]
727 enum InvalidParamsErrorKind {
728 MissingField,
729 InvalidValue {
730 message: &'static str,
731 }
732 }
733
734 impl InvalidParams {
735 #[allow(dead_code)]
736 fn missing(field: &'static str) -> Self {
737 Self { field: field.into(), kind: InvalidParamsErrorKind::MissingField }
738 }
739
740 #[allow(dead_code)]
741 fn invalid_value(field: &'static str, message: &'static str) -> Self {
742 Self { field: field.into(), kind: InvalidParamsErrorKind::InvalidValue { message }}
743 }
744 }
745
746 impl std::fmt::Display for InvalidParams {
747 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
748 match self.kind {
749 InvalidParamsErrorKind::MissingField => write!(f, "a required field was missing: `{}`", self.field),
750 InvalidParamsErrorKind::InvalidValue { message} => write!(f, "invalid value for field: `{}` - {}", self.field, message),
751 }
752 }
753 }
754
755 impl std::error::Error for InvalidParams { }
756
757mod internals;
758