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