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