aws_sdk_dynamodbstreams/config/
endpoint.rs1pub use ::aws_smithy_runtime_api::client::endpoint::EndpointFuture;
3pub use ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver;
4pub use ::aws_smithy_types::endpoint::Endpoint;
5
6#[cfg(test)]
7mod test {
8
9 #[test]
11 fn test_1() {
12 let params = crate::config::endpoint::Params::builder()
13 .endpoint("https://example.com".to_string())
14 .use_fips(false)
15 .build()
16 .expect("invalid params");
17 let resolver = crate::config::endpoint::DefaultResolver::new();
18 let endpoint = resolver.resolve_endpoint(¶ms);
19 let endpoint = endpoint.expect("Expected valid endpoint: https://example.com");
20 assert_eq!(
21 endpoint,
22 ::aws_smithy_types::endpoint::Endpoint::builder().url("https://example.com").build()
23 );
24 }
25
26 #[test]
28 fn test_2() {
29 let params = crate::config::endpoint::Params::builder()
30 .endpoint("https://example.com".to_string())
31 .use_fips(true)
32 .build()
33 .expect("invalid params");
34 let resolver = crate::config::endpoint::DefaultResolver::new();
35 let endpoint = resolver.resolve_endpoint(¶ms);
36 let error = endpoint
37 .expect_err("expected error: Invalid Configuration: FIPS and custom endpoint are not supported [For custom endpoint with fips enabled]");
38 assert_eq!(format!("{}", error), "Invalid Configuration: FIPS and custom endpoint are not supported")
39 }
40
41 #[test]
43 fn test_3() {
44 let params = crate::config::endpoint::Params::builder()
45 .endpoint("https://example.com".to_string())
46 .use_fips(false)
47 .use_dual_stack(true)
48 .build()
49 .expect("invalid params");
50 let resolver = crate::config::endpoint::DefaultResolver::new();
51 let endpoint = resolver.resolve_endpoint(¶ms);
52 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]");
53 assert_eq!(
54 format!("{}", error),
55 "Invalid Configuration: Dualstack and custom endpoint are not supported"
56 )
57 }
58
59 #[test]
61 fn test_4() {
62 let params = crate::config::endpoint::Params::builder()
63 .region("us-east-1".to_string())
64 .use_fips(true)
65 .use_dual_stack(true)
66 .build()
67 .expect("invalid params");
68 let resolver = crate::config::endpoint::DefaultResolver::new();
69 let endpoint = resolver.resolve_endpoint(¶ms);
70 let endpoint = endpoint.expect("Expected valid endpoint: https://streams-dynamodb-fips.us-east-1.api.aws");
71 assert_eq!(
72 endpoint,
73 ::aws_smithy_types::endpoint::Endpoint::builder()
74 .url("https://streams-dynamodb-fips.us-east-1.api.aws")
75 .build()
76 );
77 }
78
79 #[test]
81 fn test_5() {
82 let params = crate::config::endpoint::Params::builder()
83 .region("us-east-1".to_string())
84 .use_fips(true)
85 .use_dual_stack(false)
86 .build()
87 .expect("invalid params");
88 let resolver = crate::config::endpoint::DefaultResolver::new();
89 let endpoint = resolver.resolve_endpoint(¶ms);
90 let endpoint = endpoint.expect("Expected valid endpoint: https://streams.dynamodb-fips.us-east-1.amazonaws.com");
91 assert_eq!(
92 endpoint,
93 ::aws_smithy_types::endpoint::Endpoint::builder()
94 .url("https://streams.dynamodb-fips.us-east-1.amazonaws.com")
95 .build()
96 );
97 }
98
99 #[test]
101 fn test_6() {
102 let params = crate::config::endpoint::Params::builder()
103 .region("us-east-1".to_string())
104 .use_fips(false)
105 .use_dual_stack(true)
106 .build()
107 .expect("invalid params");
108 let resolver = crate::config::endpoint::DefaultResolver::new();
109 let endpoint = resolver.resolve_endpoint(¶ms);
110 let endpoint = endpoint.expect("Expected valid endpoint: https://streams-dynamodb.us-east-1.api.aws");
111 assert_eq!(
112 endpoint,
113 ::aws_smithy_types::endpoint::Endpoint::builder()
114 .url("https://streams-dynamodb.us-east-1.api.aws")
115 .build()
116 );
117 }
118
119 #[test]
121 fn test_7() {
122 let params = crate::config::endpoint::Params::builder()
123 .region("us-east-1".to_string())
124 .use_fips(false)
125 .use_dual_stack(false)
126 .build()
127 .expect("invalid params");
128 let resolver = crate::config::endpoint::DefaultResolver::new();
129 let endpoint = resolver.resolve_endpoint(¶ms);
130 let endpoint = endpoint.expect("Expected valid endpoint: https://streams.dynamodb.us-east-1.amazonaws.com");
131 assert_eq!(
132 endpoint,
133 ::aws_smithy_types::endpoint::Endpoint::builder()
134 .url("https://streams.dynamodb.us-east-1.amazonaws.com")
135 .build()
136 );
137 }
138
139 #[test]
141 fn test_8() {
142 let params = crate::config::endpoint::Params::builder()
143 .region("cn-northwest-1".to_string())
144 .use_fips(true)
145 .use_dual_stack(true)
146 .build()
147 .expect("invalid params");
148 let resolver = crate::config::endpoint::DefaultResolver::new();
149 let endpoint = resolver.resolve_endpoint(¶ms);
150 let endpoint = endpoint.expect("Expected valid endpoint: https://streams-dynamodb-fips.cn-northwest-1.api.amazonwebservices.com.cn");
151 assert_eq!(
152 endpoint,
153 ::aws_smithy_types::endpoint::Endpoint::builder()
154 .url("https://streams-dynamodb-fips.cn-northwest-1.api.amazonwebservices.com.cn")
155 .build()
156 );
157 }
158
159 #[test]
161 fn test_9() {
162 let params = crate::config::endpoint::Params::builder()
163 .region("cn-northwest-1".to_string())
164 .use_fips(true)
165 .use_dual_stack(false)
166 .build()
167 .expect("invalid params");
168 let resolver = crate::config::endpoint::DefaultResolver::new();
169 let endpoint = resolver.resolve_endpoint(¶ms);
170 let endpoint = endpoint.expect("Expected valid endpoint: https://streams.dynamodb-fips.cn-northwest-1.amazonaws.com.cn");
171 assert_eq!(
172 endpoint,
173 ::aws_smithy_types::endpoint::Endpoint::builder()
174 .url("https://streams.dynamodb-fips.cn-northwest-1.amazonaws.com.cn")
175 .build()
176 );
177 }
178
179 #[test]
181 fn test_10() {
182 let params = crate::config::endpoint::Params::builder()
183 .region("cn-northwest-1".to_string())
184 .use_fips(false)
185 .use_dual_stack(true)
186 .build()
187 .expect("invalid params");
188 let resolver = crate::config::endpoint::DefaultResolver::new();
189 let endpoint = resolver.resolve_endpoint(¶ms);
190 let endpoint = endpoint.expect("Expected valid endpoint: https://streams-dynamodb.cn-northwest-1.api.amazonwebservices.com.cn");
191 assert_eq!(
192 endpoint,
193 ::aws_smithy_types::endpoint::Endpoint::builder()
194 .url("https://streams-dynamodb.cn-northwest-1.api.amazonwebservices.com.cn")
195 .build()
196 );
197 }
198
199 #[test]
201 fn test_11() {
202 let params = crate::config::endpoint::Params::builder()
203 .region("cn-northwest-1".to_string())
204 .use_fips(false)
205 .use_dual_stack(false)
206 .build()
207 .expect("invalid params");
208 let resolver = crate::config::endpoint::DefaultResolver::new();
209 let endpoint = resolver.resolve_endpoint(¶ms);
210 let endpoint = endpoint.expect("Expected valid endpoint: https://streams.dynamodb.cn-northwest-1.amazonaws.com.cn");
211 assert_eq!(
212 endpoint,
213 ::aws_smithy_types::endpoint::Endpoint::builder()
214 .url("https://streams.dynamodb.cn-northwest-1.amazonaws.com.cn")
215 .build()
216 );
217 }
218
219 #[test]
221 fn test_12() {
222 let params = crate::config::endpoint::Params::builder()
223 .region("us-gov-west-1".to_string())
224 .use_fips(true)
225 .use_dual_stack(true)
226 .build()
227 .expect("invalid params");
228 let resolver = crate::config::endpoint::DefaultResolver::new();
229 let endpoint = resolver.resolve_endpoint(¶ms);
230 let endpoint = endpoint.expect("Expected valid endpoint: https://streams-dynamodb-fips.us-gov-west-1.api.aws");
231 assert_eq!(
232 endpoint,
233 ::aws_smithy_types::endpoint::Endpoint::builder()
234 .url("https://streams-dynamodb-fips.us-gov-west-1.api.aws")
235 .build()
236 );
237 }
238
239 #[test]
241 fn test_13() {
242 let params = crate::config::endpoint::Params::builder()
243 .region("us-gov-west-1".to_string())
244 .use_fips(true)
245 .use_dual_stack(false)
246 .build()
247 .expect("invalid params");
248 let resolver = crate::config::endpoint::DefaultResolver::new();
249 let endpoint = resolver.resolve_endpoint(¶ms);
250 let endpoint = endpoint.expect("Expected valid endpoint: https://streams.dynamodb.us-gov-west-1.amazonaws.com");
251 assert_eq!(
252 endpoint,
253 ::aws_smithy_types::endpoint::Endpoint::builder()
254 .url("https://streams.dynamodb.us-gov-west-1.amazonaws.com")
255 .build()
256 );
257 }
258
259 #[test]
261 fn test_14() {
262 let params = crate::config::endpoint::Params::builder()
263 .region("us-gov-west-1".to_string())
264 .use_fips(false)
265 .use_dual_stack(true)
266 .build()
267 .expect("invalid params");
268 let resolver = crate::config::endpoint::DefaultResolver::new();
269 let endpoint = resolver.resolve_endpoint(¶ms);
270 let endpoint = endpoint.expect("Expected valid endpoint: https://streams-dynamodb.us-gov-west-1.api.aws");
271 assert_eq!(
272 endpoint,
273 ::aws_smithy_types::endpoint::Endpoint::builder()
274 .url("https://streams-dynamodb.us-gov-west-1.api.aws")
275 .build()
276 );
277 }
278
279 #[test]
281 fn test_15() {
282 let params = crate::config::endpoint::Params::builder()
283 .region("us-gov-west-1".to_string())
284 .use_fips(false)
285 .use_dual_stack(false)
286 .build()
287 .expect("invalid params");
288 let resolver = crate::config::endpoint::DefaultResolver::new();
289 let endpoint = resolver.resolve_endpoint(¶ms);
290 let endpoint = endpoint.expect("Expected valid endpoint: https://streams.dynamodb.us-gov-west-1.amazonaws.com");
291 assert_eq!(
292 endpoint,
293 ::aws_smithy_types::endpoint::Endpoint::builder()
294 .url("https://streams.dynamodb.us-gov-west-1.amazonaws.com")
295 .build()
296 );
297 }
298
299 #[test]
301 fn test_16() {
302 let params = crate::config::endpoint::Params::builder()
303 .region("us-iso-east-1".to_string())
304 .use_fips(true)
305 .use_dual_stack(false)
306 .build()
307 .expect("invalid params");
308 let resolver = crate::config::endpoint::DefaultResolver::new();
309 let endpoint = resolver.resolve_endpoint(¶ms);
310 let endpoint = endpoint.expect("Expected valid endpoint: https://streams.dynamodb-fips.us-iso-east-1.c2s.ic.gov");
311 assert_eq!(
312 endpoint,
313 ::aws_smithy_types::endpoint::Endpoint::builder()
314 .url("https://streams.dynamodb-fips.us-iso-east-1.c2s.ic.gov")
315 .build()
316 );
317 }
318
319 #[test]
321 fn test_17() {
322 let params = crate::config::endpoint::Params::builder()
323 .region("us-iso-east-1".to_string())
324 .use_fips(false)
325 .use_dual_stack(false)
326 .build()
327 .expect("invalid params");
328 let resolver = crate::config::endpoint::DefaultResolver::new();
329 let endpoint = resolver.resolve_endpoint(¶ms);
330 let endpoint = endpoint.expect("Expected valid endpoint: https://streams.dynamodb.us-iso-east-1.c2s.ic.gov");
331 assert_eq!(
332 endpoint,
333 ::aws_smithy_types::endpoint::Endpoint::builder()
334 .url("https://streams.dynamodb.us-iso-east-1.c2s.ic.gov")
335 .build()
336 );
337 }
338
339 #[test]
341 fn test_18() {
342 let params = crate::config::endpoint::Params::builder()
343 .region("us-isob-east-1".to_string())
344 .use_fips(true)
345 .use_dual_stack(false)
346 .build()
347 .expect("invalid params");
348 let resolver = crate::config::endpoint::DefaultResolver::new();
349 let endpoint = resolver.resolve_endpoint(¶ms);
350 let endpoint = endpoint.expect("Expected valid endpoint: https://streams.dynamodb-fips.us-isob-east-1.sc2s.sgov.gov");
351 assert_eq!(
352 endpoint,
353 ::aws_smithy_types::endpoint::Endpoint::builder()
354 .url("https://streams.dynamodb-fips.us-isob-east-1.sc2s.sgov.gov")
355 .build()
356 );
357 }
358
359 #[test]
361 fn test_19() {
362 let params = crate::config::endpoint::Params::builder()
363 .region("us-isob-east-1".to_string())
364 .use_fips(false)
365 .use_dual_stack(false)
366 .build()
367 .expect("invalid params");
368 let resolver = crate::config::endpoint::DefaultResolver::new();
369 let endpoint = resolver.resolve_endpoint(¶ms);
370 let endpoint = endpoint.expect("Expected valid endpoint: https://streams.dynamodb.us-isob-east-1.sc2s.sgov.gov");
371 assert_eq!(
372 endpoint,
373 ::aws_smithy_types::endpoint::Endpoint::builder()
374 .url("https://streams.dynamodb.us-isob-east-1.sc2s.sgov.gov")
375 .build()
376 );
377 }
378
379 #[test]
381 fn test_20() {
382 let params = crate::config::endpoint::Params::builder()
383 .region("eu-isoe-west-1".to_string())
384 .use_fips(true)
385 .use_dual_stack(false)
386 .build()
387 .expect("invalid params");
388 let resolver = crate::config::endpoint::DefaultResolver::new();
389 let endpoint = resolver.resolve_endpoint(¶ms);
390 let endpoint = endpoint.expect("Expected valid endpoint: https://streams.dynamodb-fips.eu-isoe-west-1.cloud.adc-e.uk");
391 assert_eq!(
392 endpoint,
393 ::aws_smithy_types::endpoint::Endpoint::builder()
394 .url("https://streams.dynamodb-fips.eu-isoe-west-1.cloud.adc-e.uk")
395 .build()
396 );
397 }
398
399 #[test]
401 fn test_21() {
402 let params = crate::config::endpoint::Params::builder()
403 .region("eu-isoe-west-1".to_string())
404 .use_fips(false)
405 .use_dual_stack(false)
406 .build()
407 .expect("invalid params");
408 let resolver = crate::config::endpoint::DefaultResolver::new();
409 let endpoint = resolver.resolve_endpoint(¶ms);
410 let endpoint = endpoint.expect("Expected valid endpoint: https://streams.dynamodb.eu-isoe-west-1.cloud.adc-e.uk");
411 assert_eq!(
412 endpoint,
413 ::aws_smithy_types::endpoint::Endpoint::builder()
414 .url("https://streams.dynamodb.eu-isoe-west-1.cloud.adc-e.uk")
415 .build()
416 );
417 }
418
419 #[test]
421 fn test_22() {
422 let params = crate::config::endpoint::Params::builder()
423 .region("us-isof-south-1".to_string())
424 .use_fips(true)
425 .use_dual_stack(false)
426 .build()
427 .expect("invalid params");
428 let resolver = crate::config::endpoint::DefaultResolver::new();
429 let endpoint = resolver.resolve_endpoint(¶ms);
430 let endpoint = endpoint.expect("Expected valid endpoint: https://streams.dynamodb-fips.us-isof-south-1.csp.hci.ic.gov");
431 assert_eq!(
432 endpoint,
433 ::aws_smithy_types::endpoint::Endpoint::builder()
434 .url("https://streams.dynamodb-fips.us-isof-south-1.csp.hci.ic.gov")
435 .build()
436 );
437 }
438
439 #[test]
441 fn test_23() {
442 let params = crate::config::endpoint::Params::builder()
443 .region("us-isof-south-1".to_string())
444 .use_fips(false)
445 .use_dual_stack(false)
446 .build()
447 .expect("invalid params");
448 let resolver = crate::config::endpoint::DefaultResolver::new();
449 let endpoint = resolver.resolve_endpoint(¶ms);
450 let endpoint = endpoint.expect("Expected valid endpoint: https://streams.dynamodb.us-isof-south-1.csp.hci.ic.gov");
451 assert_eq!(
452 endpoint,
453 ::aws_smithy_types::endpoint::Endpoint::builder()
454 .url("https://streams.dynamodb.us-isof-south-1.csp.hci.ic.gov")
455 .build()
456 );
457 }
458
459 #[test]
461 fn test_24() {
462 let params = crate::config::endpoint::Params::builder()
463 .region("eusc-de-east-1".to_string())
464 .use_fips(true)
465 .use_dual_stack(false)
466 .build()
467 .expect("invalid params");
468 let resolver = crate::config::endpoint::DefaultResolver::new();
469 let endpoint = resolver.resolve_endpoint(¶ms);
470 let endpoint = endpoint.expect("Expected valid endpoint: https://streams.dynamodb-fips.eusc-de-east-1.amazonaws.eu");
471 assert_eq!(
472 endpoint,
473 ::aws_smithy_types::endpoint::Endpoint::builder()
474 .url("https://streams.dynamodb-fips.eusc-de-east-1.amazonaws.eu")
475 .build()
476 );
477 }
478
479 #[test]
481 fn test_25() {
482 let params = crate::config::endpoint::Params::builder()
483 .region("eusc-de-east-1".to_string())
484 .use_fips(false)
485 .use_dual_stack(false)
486 .build()
487 .expect("invalid params");
488 let resolver = crate::config::endpoint::DefaultResolver::new();
489 let endpoint = resolver.resolve_endpoint(¶ms);
490 let endpoint = endpoint.expect("Expected valid endpoint: https://streams.dynamodb.eusc-de-east-1.amazonaws.eu");
491 assert_eq!(
492 endpoint,
493 ::aws_smithy_types::endpoint::Endpoint::builder()
494 .url("https://streams.dynamodb.eusc-de-east-1.amazonaws.eu")
495 .build()
496 );
497 }
498
499 #[test]
501 fn test_26() {
502 let params = crate::config::endpoint::Params::builder().build().expect("invalid params");
503 let resolver = crate::config::endpoint::DefaultResolver::new();
504 let endpoint = resolver.resolve_endpoint(¶ms);
505 let error = endpoint.expect_err("expected error: Invalid Configuration: Missing Region [Missing region]");
506 assert_eq!(format!("{}", error), "Invalid Configuration: Missing Region")
507 }
508}
509
510pub trait ResolveEndpoint: ::std::marker::Send + ::std::marker::Sync + ::std::fmt::Debug {
512 fn resolve_endpoint<'a>(&'a self, params: &'a crate::config::endpoint::Params) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a>;
514
515 fn into_shared_resolver(self) -> ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver
519 where
520 Self: Sized + 'static,
521 {
522 ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver::new(DowncastParams(self))
523 }
524}
525
526#[derive(Debug)]
527struct DowncastParams<T>(T);
528impl<T> ::aws_smithy_runtime_api::client::endpoint::ResolveEndpoint for DowncastParams<T>
529where
530 T: ResolveEndpoint,
531{
532 fn resolve_endpoint<'a>(
533 &'a self,
534 params: &'a ::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams,
535 ) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a> {
536 let ep = match params.get::<crate::config::endpoint::Params>() {
537 Some(params) => self.0.resolve_endpoint(params),
538 None => ::aws_smithy_runtime_api::client::endpoint::EndpointFuture::ready(Err("params of expected type was not present".into())),
539 };
540 ep
541 }
542}
543
544#[derive(Debug, Default)]
546pub struct DefaultResolver {
547 partition_resolver: crate::endpoint_lib::partition::PartitionResolver,
548}
549
550impl DefaultResolver {
551 pub fn new() -> Self {
553 Self {
554 partition_resolver: crate::endpoint_lib::DEFAULT_PARTITION_RESOLVER.clone(),
555 }
556 }
557
558 fn resolve_endpoint(
559 &self,
560 params: &crate::config::endpoint::Params,
561 ) -> ::std::result::Result<::aws_smithy_types::endpoint::Endpoint, ::aws_smithy_runtime_api::box_error::BoxError> {
562 let mut diagnostic_collector = crate::endpoint_lib::diagnostic::DiagnosticCollector::new();
563 Ok(
564 crate::config::endpoint::internals::resolve_endpoint(params, &mut diagnostic_collector, &self.partition_resolver)
565 .map_err(|err| err.with_source(diagnostic_collector.take_last_error()))?,
566 )
567 }
568}
569
570impl crate::config::endpoint::ResolveEndpoint for DefaultResolver {
571 fn resolve_endpoint(&self, params: &crate::config::endpoint::Params) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'_> {
572 ::aws_smithy_runtime_api::client::endpoint::EndpointFuture::ready(self.resolve_endpoint(params))
573 }
574}
575
576#[non_exhaustive]
577#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
578pub struct Params {
580 pub(crate) use_dual_stack: bool,
582 pub(crate) use_fips: bool,
584 pub(crate) endpoint: ::std::option::Option<::std::string::String>,
586 pub(crate) region: ::std::option::Option<::std::string::String>,
588}
589impl Params {
590 pub fn builder() -> crate::config::endpoint::ParamsBuilder {
592 crate::config::endpoint::ParamsBuilder::default()
593 }
594 pub fn use_dual_stack(&self) -> ::std::option::Option<bool> {
596 Some(self.use_dual_stack)
597 }
598 pub fn use_fips(&self) -> ::std::option::Option<bool> {
600 Some(self.use_fips)
601 }
602 pub fn endpoint(&self) -> ::std::option::Option<&str> {
604 self.endpoint.as_deref()
605 }
606 pub fn region(&self) -> ::std::option::Option<&str> {
608 self.region.as_deref()
609 }
610}
611
612#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
614pub struct ParamsBuilder {
615 use_dual_stack: ::std::option::Option<bool>,
616 use_fips: ::std::option::Option<bool>,
617 endpoint: ::std::option::Option<::std::string::String>,
618 region: ::std::option::Option<::std::string::String>,
619}
620impl ParamsBuilder {
621 pub fn build(self) -> ::std::result::Result<crate::config::endpoint::Params, crate::config::endpoint::InvalidParams> {
623 Ok(
624 #[allow(clippy::unnecessary_lazy_evaluations)]
625 crate::config::endpoint::Params {
626 use_dual_stack: self
627 .use_dual_stack
628 .or_else(|| Some(false))
629 .ok_or_else(|| crate::config::endpoint::InvalidParams::missing("use_dual_stack"))?,
630 use_fips: self
631 .use_fips
632 .or_else(|| Some(false))
633 .ok_or_else(|| crate::config::endpoint::InvalidParams::missing("use_fips"))?,
634 endpoint: self.endpoint,
635 region: self.region,
636 },
637 )
638 }
639 pub fn use_dual_stack(mut self, value: impl Into<bool>) -> Self {
644 self.use_dual_stack = Some(value.into());
645 self
646 }
647
648 pub fn set_use_dual_stack(mut self, param: Option<bool>) -> Self {
653 self.use_dual_stack = param;
654 self
655 }
656 pub fn use_fips(mut self, value: impl Into<bool>) -> Self {
661 self.use_fips = Some(value.into());
662 self
663 }
664
665 pub fn set_use_fips(mut self, param: Option<bool>) -> Self {
670 self.use_fips = param;
671 self
672 }
673 pub fn endpoint(mut self, value: impl Into<::std::string::String>) -> Self {
677 self.endpoint = Some(value.into());
678 self
679 }
680
681 pub fn set_endpoint(mut self, param: Option<::std::string::String>) -> Self {
685 self.endpoint = param;
686 self
687 }
688 pub fn region(mut self, value: impl Into<::std::string::String>) -> Self {
692 self.region = Some(value.into());
693 self
694 }
695
696 pub fn set_region(mut self, param: Option<::std::string::String>) -> Self {
700 self.region = param;
701 self
702 }
703}
704
705#[derive(Debug)]
707pub struct InvalidParams {
708 field: std::borrow::Cow<'static, str>,
709}
710
711impl InvalidParams {
712 #[allow(dead_code)]
713 fn missing(field: &'static str) -> Self {
714 Self { field: field.into() }
715 }
716}
717
718impl std::fmt::Display for InvalidParams {
719 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
720 write!(f, "a required field was missing: `{}`", self.field)
721 }
722}
723
724impl std::error::Error for InvalidParams {}
725
726mod internals;