aws_sdk_dynamodbstreams/config/
endpoint.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use ::aws_smithy_runtime_api::client::endpoint::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    /// For custom endpoint with region not set and fips disabled
10    #[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(&params);
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    /// For custom endpoint with fips enabled
27    #[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(&params);
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    /// For custom endpoint with fips disabled and dualstack enabled
42    #[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(&params);
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    /// For region us-east-1 with FIPS enabled and DualStack enabled
60    #[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(&params);
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    /// For region us-east-1 with FIPS enabled and DualStack disabled
80    #[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(&params);
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    /// For region us-east-1 with FIPS disabled and DualStack enabled
100    #[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(&params);
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    /// For region us-east-1 with FIPS disabled and DualStack disabled
120    #[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(&params);
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    /// For region cn-northwest-1 with FIPS enabled and DualStack enabled
140    #[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(&params);
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    /// For region cn-northwest-1 with FIPS enabled and DualStack disabled
160    #[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(&params);
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    /// For region cn-northwest-1 with FIPS disabled and DualStack enabled
180    #[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(&params);
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    /// For region cn-northwest-1 with FIPS disabled and DualStack disabled
200    #[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(&params);
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    /// For region us-gov-west-1 with FIPS enabled and DualStack enabled
220    #[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(&params);
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    /// For region us-gov-west-1 with FIPS enabled and DualStack disabled
240    #[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(&params);
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    /// For region us-gov-west-1 with FIPS disabled and DualStack enabled
260    #[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(&params);
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    /// For region us-gov-west-1 with FIPS disabled and DualStack disabled
280    #[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(&params);
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    /// For region us-iso-east-1 with FIPS enabled and DualStack disabled
300    #[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(&params);
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    /// For region us-iso-east-1 with FIPS disabled and DualStack disabled
320    #[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(&params);
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    /// For region us-isob-east-1 with FIPS enabled and DualStack disabled
340    #[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(&params);
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    /// For region us-isob-east-1 with FIPS disabled and DualStack disabled
360    #[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(&params);
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    /// For region eu-isoe-west-1 with FIPS enabled and DualStack disabled
380    #[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(&params);
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    /// For region eu-isoe-west-1 with FIPS disabled and DualStack disabled
400    #[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(&params);
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    /// For region us-isof-south-1 with FIPS enabled and DualStack disabled
420    #[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(&params);
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    /// For region us-isof-south-1 with FIPS disabled and DualStack disabled
440    #[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(&params);
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    /// For region eusc-de-east-1 with FIPS enabled and DualStack disabled
460    #[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(&params);
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    /// For region eusc-de-east-1 with FIPS disabled and DualStack disabled
480    #[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(&params);
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    /// Missing region
500    #[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(&params);
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
510/// Endpoint resolver trait specific to Amazon DynamoDB Streams
511pub trait ResolveEndpoint: ::std::marker::Send + ::std::marker::Sync + ::std::fmt::Debug {
512    /// Resolve an endpoint with the given parameters
513    fn resolve_endpoint<'a>(&'a self, params: &'a crate::config::endpoint::Params) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a>;
514
515    /// Convert this service-specific resolver into a `SharedEndpointResolver`
516    ///
517    /// The resulting resolver will downcast `EndpointResolverParams` into `crate::config::endpoint::Params`.
518    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/// The default endpoint resolver
545#[derive(Debug, Default)]
546pub struct DefaultResolver {
547    partition_resolver: crate::endpoint_lib::partition::PartitionResolver,
548}
549
550impl DefaultResolver {
551    /// Create a new endpoint resolver with default settings
552    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)]
578/// Configuration parameters for resolving the correct endpoint
579pub struct Params {
580    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
581    pub(crate) use_dual_stack: bool,
582    /// When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.
583    pub(crate) use_fips: bool,
584    /// Override the endpoint used to send this request
585    pub(crate) endpoint: ::std::option::Option<::std::string::String>,
586    /// The AWS region used to dispatch the request.
587    pub(crate) region: ::std::option::Option<::std::string::String>,
588}
589impl Params {
590    /// Create a builder for [`Params`]
591    pub fn builder() -> crate::config::endpoint::ParamsBuilder {
592        crate::config::endpoint::ParamsBuilder::default()
593    }
594    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
595    pub fn use_dual_stack(&self) -> ::std::option::Option<bool> {
596        Some(self.use_dual_stack)
597    }
598    /// When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.
599    pub fn use_fips(&self) -> ::std::option::Option<bool> {
600        Some(self.use_fips)
601    }
602    /// Override the endpoint used to send this request
603    pub fn endpoint(&self) -> ::std::option::Option<&str> {
604        self.endpoint.as_deref()
605    }
606    /// The AWS region used to dispatch the request.
607    pub fn region(&self) -> ::std::option::Option<&str> {
608        self.region.as_deref()
609    }
610}
611
612/// Builder for [`Params`]
613#[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    /// Consume this builder, creating [`Params`].
622    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    /// Sets the value for use_dual_stack
640    ///
641    /// When unset, this parameter has a default value of `false`.
642    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
643    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    /// Sets the value for use_dual_stack
649    ///
650    /// When unset, this parameter has a default value of `false`.
651    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
652    pub fn set_use_dual_stack(mut self, param: Option<bool>) -> Self {
653        self.use_dual_stack = param;
654        self
655    }
656    /// Sets the value for use_fips
657    ///
658    /// When unset, this parameter has a default value of `false`.
659    /// When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.
660    pub fn use_fips(mut self, value: impl Into<bool>) -> Self {
661        self.use_fips = Some(value.into());
662        self
663    }
664
665    /// Sets the value for use_fips
666    ///
667    /// When unset, this parameter has a default value of `false`.
668    /// When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.
669    pub fn set_use_fips(mut self, param: Option<bool>) -> Self {
670        self.use_fips = param;
671        self
672    }
673    /// Sets the value for endpoint
674    ///
675    /// Override the endpoint used to send this request
676    pub fn endpoint(mut self, value: impl Into<::std::string::String>) -> Self {
677        self.endpoint = Some(value.into());
678        self
679    }
680
681    /// Sets the value for endpoint
682    ///
683    /// Override the endpoint used to send this request
684    pub fn set_endpoint(mut self, param: Option<::std::string::String>) -> Self {
685        self.endpoint = param;
686        self
687    }
688    /// Sets the value for region
689    ///
690    /// The AWS region used to dispatch the request.
691    pub fn region(mut self, value: impl Into<::std::string::String>) -> Self {
692        self.region = Some(value.into());
693        self
694    }
695
696    /// Sets the value for region
697    ///
698    /// The AWS region used to dispatch the request.
699    pub fn set_region(mut self, param: Option<::std::string::String>) -> Self {
700        self.region = param;
701        self
702    }
703}
704
705/// An error that occurred during endpoint resolution
706#[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;