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 impl ::aws_smithy_runtime_api::client::interceptors::Intercept for EndpointOverrideFeatureTrackerInterceptor {
11 fn name(&self) -> &'static str {
12 "EndpointOverrideFeatureTrackerInterceptor"
13 }
14
15 fn read_before_execution(
16 &self,
17 _context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<'_>,
18 cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
19 ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
20 if cfg.load::<::aws_types::endpoint_config::EndpointUrl>().is_some() {
21 cfg.interceptor_state()
22 .store_append(::aws_runtime::sdk_feature::AwsSdkFeature::EndpointOverride);
23 }
24 ::std::result::Result::Ok(())
25 }
26 }
27
28#[cfg(test)]
29mod test {
30
31 #[test]
33 fn test_1() {
34 let params = crate::config::endpoint::Params::builder()
35 .region("ap-northeast-1".to_string())
36 .use_fips(false)
37 .use_dual_stack(false)
38 .build().expect("invalid params");
39 let resolver = crate::config::endpoint::DefaultResolver::new();
40 let endpoint = resolver.resolve_endpoint(¶ms);
41 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming.ap-northeast-1.amazonaws.com");
42 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.ap-northeast-1.amazonaws.com")
43 .build());
44 }
45
46 #[test]
48 fn test_2() {
49 let params = crate::config::endpoint::Params::builder()
50 .region("ap-northeast-2".to_string())
51 .use_fips(false)
52 .use_dual_stack(false)
53 .build().expect("invalid params");
54 let resolver = crate::config::endpoint::DefaultResolver::new();
55 let endpoint = resolver.resolve_endpoint(¶ms);
56 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming.ap-northeast-2.amazonaws.com");
57 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.ap-northeast-2.amazonaws.com")
58 .build());
59 }
60
61 #[test]
63 fn test_3() {
64 let params = crate::config::endpoint::Params::builder()
65 .region("ap-southeast-2".to_string())
66 .use_fips(false)
67 .use_dual_stack(false)
68 .build().expect("invalid params");
69 let resolver = crate::config::endpoint::DefaultResolver::new();
70 let endpoint = resolver.resolve_endpoint(¶ms);
71 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming.ap-southeast-2.amazonaws.com");
72 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.ap-southeast-2.amazonaws.com")
73 .build());
74 }
75
76 #[test]
78 fn test_4() {
79 let params = crate::config::endpoint::Params::builder()
80 .region("ca-central-1".to_string())
81 .use_fips(false)
82 .use_dual_stack(false)
83 .build().expect("invalid params");
84 let resolver = crate::config::endpoint::DefaultResolver::new();
85 let endpoint = resolver.resolve_endpoint(¶ms);
86 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming.ca-central-1.amazonaws.com");
87 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.ca-central-1.amazonaws.com")
88 .build());
89 }
90
91 #[test]
93 fn test_5() {
94 let params = crate::config::endpoint::Params::builder()
95 .region("eu-central-1".to_string())
96 .use_fips(false)
97 .use_dual_stack(false)
98 .build().expect("invalid params");
99 let resolver = crate::config::endpoint::DefaultResolver::new();
100 let endpoint = resolver.resolve_endpoint(¶ms);
101 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming.eu-central-1.amazonaws.com");
102 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.eu-central-1.amazonaws.com")
103 .build());
104 }
105
106 #[test]
108 fn test_6() {
109 let params = crate::config::endpoint::Params::builder()
110 .region("eu-west-1".to_string())
111 .use_fips(false)
112 .use_dual_stack(false)
113 .build().expect("invalid params");
114 let resolver = crate::config::endpoint::DefaultResolver::new();
115 let endpoint = resolver.resolve_endpoint(¶ms);
116 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming.eu-west-1.amazonaws.com");
117 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.eu-west-1.amazonaws.com")
118 .build());
119 }
120
121 #[test]
123 fn test_7() {
124 let params = crate::config::endpoint::Params::builder()
125 .region("eu-west-2".to_string())
126 .use_fips(false)
127 .use_dual_stack(false)
128 .build().expect("invalid params");
129 let resolver = crate::config::endpoint::DefaultResolver::new();
130 let endpoint = resolver.resolve_endpoint(¶ms);
131 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming.eu-west-2.amazonaws.com");
132 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.eu-west-2.amazonaws.com")
133 .build());
134 }
135
136 #[test]
138 fn test_8() {
139 let params = crate::config::endpoint::Params::builder()
140 .region("sa-east-1".to_string())
141 .use_fips(false)
142 .use_dual_stack(false)
143 .build().expect("invalid params");
144 let resolver = crate::config::endpoint::DefaultResolver::new();
145 let endpoint = resolver.resolve_endpoint(¶ms);
146 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming.sa-east-1.amazonaws.com");
147 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.sa-east-1.amazonaws.com")
148 .build());
149 }
150
151 #[test]
153 fn test_9() {
154 let params = crate::config::endpoint::Params::builder()
155 .region("us-east-1".to_string())
156 .use_fips(false)
157 .use_dual_stack(false)
158 .build().expect("invalid params");
159 let resolver = crate::config::endpoint::DefaultResolver::new();
160 let endpoint = resolver.resolve_endpoint(¶ms);
161 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming.us-east-1.amazonaws.com");
162 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.us-east-1.amazonaws.com")
163 .build());
164 }
165
166 #[test]
168 fn test_10() {
169 let params = crate::config::endpoint::Params::builder()
170 .region("us-east-2".to_string())
171 .use_fips(false)
172 .use_dual_stack(false)
173 .build().expect("invalid params");
174 let resolver = crate::config::endpoint::DefaultResolver::new();
175 let endpoint = resolver.resolve_endpoint(¶ms);
176 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming.us-east-2.amazonaws.com");
177 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.us-east-2.amazonaws.com")
178 .build());
179 }
180
181 #[test]
183 fn test_11() {
184 let params = crate::config::endpoint::Params::builder()
185 .region("us-west-2".to_string())
186 .use_fips(false)
187 .use_dual_stack(false)
188 .build().expect("invalid params");
189 let resolver = crate::config::endpoint::DefaultResolver::new();
190 let endpoint = resolver.resolve_endpoint(¶ms);
191 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming.us-west-2.amazonaws.com");
192 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.us-west-2.amazonaws.com")
193 .build());
194 }
195
196 #[test]
198 fn test_12() {
199 let params = crate::config::endpoint::Params::builder()
200 .region("us-east-1".to_string())
201 .use_fips(true)
202 .use_dual_stack(true)
203 .build().expect("invalid params");
204 let resolver = crate::config::endpoint::DefaultResolver::new();
205 let endpoint = resolver.resolve_endpoint(¶ms);
206 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming-fips.us-east-1.api.aws");
207 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming-fips.us-east-1.api.aws")
208 .build());
209 }
210
211 #[test]
213 fn test_13() {
214 let params = crate::config::endpoint::Params::builder()
215 .region("us-east-1".to_string())
216 .use_fips(true)
217 .use_dual_stack(false)
218 .build().expect("invalid params");
219 let resolver = crate::config::endpoint::DefaultResolver::new();
220 let endpoint = resolver.resolve_endpoint(¶ms);
221 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming-fips.us-east-1.amazonaws.com");
222 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming-fips.us-east-1.amazonaws.com")
223 .build());
224 }
225
226 #[test]
228 fn test_14() {
229 let params = crate::config::endpoint::Params::builder()
230 .region("us-east-1".to_string())
231 .use_fips(false)
232 .use_dual_stack(true)
233 .build().expect("invalid params");
234 let resolver = crate::config::endpoint::DefaultResolver::new();
235 let endpoint = resolver.resolve_endpoint(¶ms);
236 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming.us-east-1.api.aws");
237 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.us-east-1.api.aws")
238 .build());
239 }
240
241 #[test]
243 fn test_15() {
244 let params = crate::config::endpoint::Params::builder()
245 .region("cn-north-1".to_string())
246 .use_fips(false)
247 .use_dual_stack(false)
248 .build().expect("invalid params");
249 let resolver = crate::config::endpoint::DefaultResolver::new();
250 let endpoint = resolver.resolve_endpoint(¶ms);
251 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming.cn-north-1.amazonaws.com.cn");
252 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.cn-north-1.amazonaws.com.cn")
253 .build());
254 }
255
256 #[test]
258 fn test_16() {
259 let params = crate::config::endpoint::Params::builder()
260 .region("cn-northwest-1".to_string())
261 .use_fips(false)
262 .use_dual_stack(false)
263 .build().expect("invalid params");
264 let resolver = crate::config::endpoint::DefaultResolver::new();
265 let endpoint = resolver.resolve_endpoint(¶ms);
266 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming.cn-northwest-1.amazonaws.com.cn");
267 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.cn-northwest-1.amazonaws.com.cn")
268 .build());
269 }
270
271 #[test]
273 fn test_17() {
274 let params = crate::config::endpoint::Params::builder()
275 .region("cn-north-1".to_string())
276 .use_fips(true)
277 .use_dual_stack(true)
278 .build().expect("invalid params");
279 let resolver = crate::config::endpoint::DefaultResolver::new();
280 let endpoint = resolver.resolve_endpoint(¶ms);
281 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming-fips.cn-north-1.api.amazonwebservices.com.cn");
282 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming-fips.cn-north-1.api.amazonwebservices.com.cn")
283 .build());
284 }
285
286 #[test]
288 fn test_18() {
289 let params = crate::config::endpoint::Params::builder()
290 .region("cn-north-1".to_string())
291 .use_fips(true)
292 .use_dual_stack(false)
293 .build().expect("invalid params");
294 let resolver = crate::config::endpoint::DefaultResolver::new();
295 let endpoint = resolver.resolve_endpoint(¶ms);
296 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming-fips.cn-north-1.amazonaws.com.cn");
297 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming-fips.cn-north-1.amazonaws.com.cn")
298 .build());
299 }
300
301 #[test]
303 fn test_19() {
304 let params = crate::config::endpoint::Params::builder()
305 .region("cn-north-1".to_string())
306 .use_fips(false)
307 .use_dual_stack(true)
308 .build().expect("invalid params");
309 let resolver = crate::config::endpoint::DefaultResolver::new();
310 let endpoint = resolver.resolve_endpoint(¶ms);
311 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming.cn-north-1.api.amazonwebservices.com.cn");
312 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.cn-north-1.api.amazonwebservices.com.cn")
313 .build());
314 }
315
316 #[test]
318 fn test_20() {
319 let params = crate::config::endpoint::Params::builder()
320 .region("us-gov-east-1".to_string())
321 .use_fips(false)
322 .use_dual_stack(false)
323 .build().expect("invalid params");
324 let resolver = crate::config::endpoint::DefaultResolver::new();
325 let endpoint = resolver.resolve_endpoint(¶ms);
326 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming.us-gov-east-1.amazonaws.com");
327 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.us-gov-east-1.amazonaws.com")
328 .build());
329 }
330
331 #[test]
333 fn test_21() {
334 let params = crate::config::endpoint::Params::builder()
335 .region("us-gov-west-1".to_string())
336 .use_fips(false)
337 .use_dual_stack(false)
338 .build().expect("invalid params");
339 let resolver = crate::config::endpoint::DefaultResolver::new();
340 let endpoint = resolver.resolve_endpoint(¶ms);
341 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming.us-gov-west-1.amazonaws.com");
342 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.us-gov-west-1.amazonaws.com")
343 .build());
344 }
345
346 #[test]
348 fn test_22() {
349 let params = crate::config::endpoint::Params::builder()
350 .region("us-gov-east-1".to_string())
351 .use_fips(true)
352 .use_dual_stack(true)
353 .build().expect("invalid params");
354 let resolver = crate::config::endpoint::DefaultResolver::new();
355 let endpoint = resolver.resolve_endpoint(¶ms);
356 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming-fips.us-gov-east-1.api.aws");
357 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming-fips.us-gov-east-1.api.aws")
358 .build());
359 }
360
361 #[test]
363 fn test_23() {
364 let params = crate::config::endpoint::Params::builder()
365 .region("us-gov-east-1".to_string())
366 .use_fips(true)
367 .use_dual_stack(false)
368 .build().expect("invalid params");
369 let resolver = crate::config::endpoint::DefaultResolver::new();
370 let endpoint = resolver.resolve_endpoint(¶ms);
371 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming-fips.us-gov-east-1.amazonaws.com");
372 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming-fips.us-gov-east-1.amazonaws.com")
373 .build());
374 }
375
376 #[test]
378 fn test_24() {
379 let params = crate::config::endpoint::Params::builder()
380 .region("us-gov-east-1".to_string())
381 .use_fips(false)
382 .use_dual_stack(true)
383 .build().expect("invalid params");
384 let resolver = crate::config::endpoint::DefaultResolver::new();
385 let endpoint = resolver.resolve_endpoint(¶ms);
386 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming.us-gov-east-1.api.aws");
387 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.us-gov-east-1.api.aws")
388 .build());
389 }
390
391 #[test]
393 fn test_25() {
394 let params = crate::config::endpoint::Params::builder()
395 .region("us-iso-east-1".to_string())
396 .use_fips(false)
397 .use_dual_stack(false)
398 .build().expect("invalid params");
399 let resolver = crate::config::endpoint::DefaultResolver::new();
400 let endpoint = resolver.resolve_endpoint(¶ms);
401 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming.us-iso-east-1.c2s.ic.gov");
402 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.us-iso-east-1.c2s.ic.gov")
403 .build());
404 }
405
406 #[test]
408 fn test_26() {
409 let params = crate::config::endpoint::Params::builder()
410 .region("us-iso-east-1".to_string())
411 .use_fips(true)
412 .use_dual_stack(false)
413 .build().expect("invalid params");
414 let resolver = crate::config::endpoint::DefaultResolver::new();
415 let endpoint = resolver.resolve_endpoint(¶ms);
416 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming-fips.us-iso-east-1.c2s.ic.gov");
417 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming-fips.us-iso-east-1.c2s.ic.gov")
418 .build());
419 }
420
421 #[test]
423 fn test_27() {
424 let params = crate::config::endpoint::Params::builder()
425 .region("us-isob-east-1".to_string())
426 .use_fips(true)
427 .use_dual_stack(false)
428 .build().expect("invalid params");
429 let resolver = crate::config::endpoint::DefaultResolver::new();
430 let endpoint = resolver.resolve_endpoint(¶ms);
431 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming-fips.us-isob-east-1.sc2s.sgov.gov");
432 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming-fips.us-isob-east-1.sc2s.sgov.gov")
433 .build());
434 }
435
436 #[test]
438 fn test_28() {
439 let params = crate::config::endpoint::Params::builder()
440 .region("us-isob-east-1".to_string())
441 .use_fips(false)
442 .use_dual_stack(false)
443 .build().expect("invalid params");
444 let resolver = crate::config::endpoint::DefaultResolver::new();
445 let endpoint = resolver.resolve_endpoint(¶ms);
446 let endpoint = endpoint.expect("Expected valid endpoint: https://transcribestreaming.us-isob-east-1.sc2s.sgov.gov");
447 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://transcribestreaming.us-isob-east-1.sc2s.sgov.gov")
448 .build());
449 }
450
451 #[test]
453 fn test_29() {
454 let params = crate::config::endpoint::Params::builder()
455 .region("us-east-1".to_string())
456 .use_fips(false)
457 .use_dual_stack(false)
458 .endpoint("https://example.com".to_string())
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://example.com");
463 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://example.com")
464 .build());
465 }
466
467 #[test]
469 fn test_30() {
470 let params = crate::config::endpoint::Params::builder()
471 .use_fips(false)
472 .use_dual_stack(false)
473 .endpoint("https://example.com".to_string())
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://example.com");
478 assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://example.com")
479 .build());
480 }
481
482 #[test]
484 fn test_31() {
485 let params = crate::config::endpoint::Params::builder()
486 .region("us-east-1".to_string())
487 .use_fips(true)
488 .use_dual_stack(false)
489 .endpoint("https://example.com".to_string())
490 .build().expect("invalid params");
491 let resolver = crate::config::endpoint::DefaultResolver::new();
492 let endpoint = resolver.resolve_endpoint(¶ms);
493 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]");
494 assert_eq!(format!("{}", error), "Invalid Configuration: FIPS and custom endpoint are not supported")
495 }
496
497 #[test]
499 fn test_32() {
500 let params = crate::config::endpoint::Params::builder()
501 .region("us-east-1".to_string())
502 .use_fips(false)
503 .use_dual_stack(true)
504 .endpoint("https://example.com".to_string())
505 .build().expect("invalid params");
506 let resolver = crate::config::endpoint::DefaultResolver::new();
507 let endpoint = resolver.resolve_endpoint(¶ms);
508 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]");
509 assert_eq!(format!("{}", error), "Invalid Configuration: Dualstack and custom endpoint are not supported")
510 }
511
512 #[test]
514 fn test_33() {
515 let params = crate::config::endpoint::Params::builder()
516 .build().expect("invalid params");
517 let resolver = crate::config::endpoint::DefaultResolver::new();
518 let endpoint = resolver.resolve_endpoint(¶ms);
519 let error = endpoint.expect_err("expected error: Invalid Configuration: Missing Region [Missing region]");
520 assert_eq!(format!("{}", error), "Invalid Configuration: Missing Region")
521 }
522
523
524}
525
526pub trait ResolveEndpoint: ::std::marker::Send + ::std::marker::Sync + ::std::fmt::Debug {
528 fn resolve_endpoint<'a>(&'a self, params: &'a crate::config::endpoint::Params) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a>;
530
531 fn into_shared_resolver(self) -> ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver
535 where
536 Self: Sized + 'static,
537 {
538 ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver::new(DowncastParams(self))
539 }
540 }
541
542 #[derive(Debug)]
543 struct DowncastParams<T>(T);
544 impl<T> ::aws_smithy_runtime_api::client::endpoint::ResolveEndpoint for DowncastParams<T>
545 where
546 T: ResolveEndpoint,
547 {
548 fn resolve_endpoint<'a>(&'a self, params: &'a ::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a> {
549 let ep = match params.get::<crate::config::endpoint::Params>() {
550 Some(params) => self.0.resolve_endpoint(params),
551 None => ::aws_smithy_runtime_api::client::endpoint::EndpointFuture::ready(Err("params of expected type was not present".into())),
552 };
553 ep
554 }
555
556 }
557
558#[derive(Debug, Default)]
560 pub struct DefaultResolver {
561 partition_resolver: crate::endpoint_lib::partition::PartitionResolver
562 }
563
564 impl DefaultResolver {
565 pub fn new() -> Self {
567 Self { partition_resolver: crate::endpoint_lib::DEFAULT_PARTITION_RESOLVER.clone() }
568 }
569
570 fn resolve_endpoint(&self, params: &crate::config::endpoint::Params) -> ::std::result::Result<::aws_smithy_types::endpoint::Endpoint, ::aws_smithy_runtime_api::box_error::BoxError> {
571 let mut diagnostic_collector = crate::endpoint_lib::diagnostic::DiagnosticCollector::new();
572 Ok(crate::config::endpoint::internals::resolve_endpoint(params, &mut diagnostic_collector, &self.partition_resolver)
573 .map_err(|err|err.with_source(diagnostic_collector.take_last_error()))?)
574 }
575 }
576
577 impl crate::config::endpoint::ResolveEndpoint for DefaultResolver {
578 fn resolve_endpoint(&self, params: &crate::config::endpoint::Params) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'_> {
579 ::aws_smithy_runtime_api::client::endpoint::EndpointFuture::ready(self.resolve_endpoint(params))
580 }
581 }
582
583#[non_exhaustive]
584#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
585pub struct Params {
587 pub(crate) region: ::std::option::Option<::std::string::String>,
589 pub(crate) use_dual_stack: bool,
591 pub(crate) use_fips: bool,
593 pub(crate) endpoint: ::std::option::Option<::std::string::String>,
595}
596impl Params {
597 pub fn builder() -> crate::config::endpoint::ParamsBuilder {
599 crate::config::endpoint::ParamsBuilder::default()
600 }
601 pub fn region(&self) -> ::std::option::Option<&str> {
603 self.region.as_deref()
604 }
605 pub fn use_dual_stack(&self) -> ::std::option::Option<bool> {
607 Some(self.use_dual_stack)
608 }
609 pub fn use_fips(&self) -> ::std::option::Option<bool> {
611 Some(self.use_fips)
612 }
613 pub fn endpoint(&self) -> ::std::option::Option<&str> {
615 self.endpoint.as_deref()
616 }
617}
618
619#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
621pub struct ParamsBuilder {
622 region: ::std::option::Option<::std::string::String>,
623 use_dual_stack: ::std::option::Option<bool>,
624 use_fips: ::std::option::Option<bool>,
625 endpoint: ::std::option::Option<::std::string::String>,
626}
627impl ParamsBuilder {
628 pub fn build(self) -> ::std::result::Result<crate::config::endpoint::Params, crate::config::endpoint::InvalidParams> {
630 if let Some(region) = &self.region {
631 if !crate::endpoint_lib::host::is_valid_host_label(region.as_ref() as &str, true, &mut crate::endpoint_lib::diagnostic::DiagnosticCollector::new()) {
632 return Err(crate::config::endpoint::InvalidParams::invalid_value("region", "must be a valid host label"))
633 }
634 };
635 Ok(#[allow(clippy::unnecessary_lazy_evaluations)]
636 crate::config::endpoint::Params {
637 region: self.region
638 ,
639 use_dual_stack: self.use_dual_stack
640 .or_else(||Some(false))
641 .ok_or_else(||crate::config::endpoint::InvalidParams::missing("use_dual_stack"))?
642 ,
643 use_fips: self.use_fips
644 .or_else(||Some(false))
645 .ok_or_else(||crate::config::endpoint::InvalidParams::missing("use_fips"))?
646 ,
647 endpoint: self.endpoint
648 ,
649 })
650 }
651 pub fn region(mut self, value: impl Into<::std::string::String>) -> Self {
655 self.region = Some(value.into());
656 self
657 }
658
659 pub fn set_region(mut self, param: Option<::std::string::String>) -> Self {
663 self.region = param;
664 self
665 }
666 pub fn use_dual_stack(mut self, value: impl Into<bool>) -> Self {
671 self.use_dual_stack = Some(value.into());
672 self
673 }
674
675 pub fn set_use_dual_stack(mut self, param: Option<bool>) -> Self {
680 self.use_dual_stack = param;
681 self
682 }
683 pub fn use_fips(mut self, value: impl Into<bool>) -> Self {
688 self.use_fips = Some(value.into());
689 self
690 }
691
692 pub fn set_use_fips(mut self, param: Option<bool>) -> Self {
697 self.use_fips = param;
698 self
699 }
700 pub fn endpoint(mut self, value: impl Into<::std::string::String>) -> Self {
704 self.endpoint = Some(value.into());
705 self
706 }
707
708 pub fn set_endpoint(mut self, param: Option<::std::string::String>) -> Self {
712 self.endpoint = param;
713 self
714 }
715}
716
717#[derive(Debug)]
719 pub struct InvalidParams {
720 field: std::borrow::Cow<'static, str>,
721 kind: InvalidParamsErrorKind,
722 }
723
724 #[derive(Debug)]
726 enum InvalidParamsErrorKind {
727 MissingField,
728 InvalidValue {
729 message: &'static str,
730 }
731 }
732
733 impl InvalidParams {
734 #[allow(dead_code)]
735 fn missing(field: &'static str) -> Self {
736 Self { field: field.into(), kind: InvalidParamsErrorKind::MissingField }
737 }
738
739 #[allow(dead_code)]
740 fn invalid_value(field: &'static str, message: &'static str) -> Self {
741 Self { field: field.into(), kind: InvalidParamsErrorKind::InvalidValue { message }}
742 }
743 }
744
745 impl std::fmt::Display for InvalidParams {
746 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
747 match self.kind {
748 InvalidParamsErrorKind::MissingField => write!(f, "a required field was missing: `{}`", self.field),
749 InvalidParamsErrorKind::InvalidValue { message} => write!(f, "invalid value for field: `{}` - {}", self.field, message),
750 }
751 }
752 }
753
754 impl std::error::Error for InvalidParams { }
755
756mod internals;
757