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