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