aws_sdk_codestar/config/
endpoint.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use ::aws_smithy_runtime_api::client::endpoint::EndpointFuture;
3pub use ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver;
4pub use ::aws_smithy_types::endpoint::Endpoint;
5
6///
7#[cfg(test)]
8mod test {
9
10    /// For region ap-northeast-1 with FIPS disabled and DualStack disabled
11    #[test]
12    fn test_1() {
13        let params = crate::config::endpoint::Params::builder()
14            .region("ap-northeast-1".to_string())
15            .use_fips(false)
16            .use_dual_stack(false)
17            .build()
18            .expect("invalid params");
19        let resolver = crate::config::endpoint::DefaultResolver::new();
20        let endpoint = resolver.resolve_endpoint(&params);
21        let endpoint = endpoint.expect("Expected valid endpoint: https://codestar.ap-northeast-1.amazonaws.com");
22        assert_eq!(
23            endpoint,
24            ::aws_smithy_types::endpoint::Endpoint::builder()
25                .url("https://codestar.ap-northeast-1.amazonaws.com")
26                .build()
27        );
28    }
29
30    /// For region ap-northeast-2 with FIPS disabled and DualStack disabled
31    #[test]
32    fn test_2() {
33        let params = crate::config::endpoint::Params::builder()
34            .region("ap-northeast-2".to_string())
35            .use_fips(false)
36            .use_dual_stack(false)
37            .build()
38            .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://codestar.ap-northeast-2.amazonaws.com");
42        assert_eq!(
43            endpoint,
44            ::aws_smithy_types::endpoint::Endpoint::builder()
45                .url("https://codestar.ap-northeast-2.amazonaws.com")
46                .build()
47        );
48    }
49
50    /// For region ap-southeast-1 with FIPS disabled and DualStack disabled
51    #[test]
52    fn test_3() {
53        let params = crate::config::endpoint::Params::builder()
54            .region("ap-southeast-1".to_string())
55            .use_fips(false)
56            .use_dual_stack(false)
57            .build()
58            .expect("invalid params");
59        let resolver = crate::config::endpoint::DefaultResolver::new();
60        let endpoint = resolver.resolve_endpoint(&params);
61        let endpoint = endpoint.expect("Expected valid endpoint: https://codestar.ap-southeast-1.amazonaws.com");
62        assert_eq!(
63            endpoint,
64            ::aws_smithy_types::endpoint::Endpoint::builder()
65                .url("https://codestar.ap-southeast-1.amazonaws.com")
66                .build()
67        );
68    }
69
70    /// For region ap-southeast-2 with FIPS disabled and DualStack disabled
71    #[test]
72    fn test_4() {
73        let params = crate::config::endpoint::Params::builder()
74            .region("ap-southeast-2".to_string())
75            .use_fips(false)
76            .use_dual_stack(false)
77            .build()
78            .expect("invalid params");
79        let resolver = crate::config::endpoint::DefaultResolver::new();
80        let endpoint = resolver.resolve_endpoint(&params);
81        let endpoint = endpoint.expect("Expected valid endpoint: https://codestar.ap-southeast-2.amazonaws.com");
82        assert_eq!(
83            endpoint,
84            ::aws_smithy_types::endpoint::Endpoint::builder()
85                .url("https://codestar.ap-southeast-2.amazonaws.com")
86                .build()
87        );
88    }
89
90    /// For region ca-central-1 with FIPS disabled and DualStack disabled
91    #[test]
92    fn test_5() {
93        let params = crate::config::endpoint::Params::builder()
94            .region("ca-central-1".to_string())
95            .use_fips(false)
96            .use_dual_stack(false)
97            .build()
98            .expect("invalid params");
99        let resolver = crate::config::endpoint::DefaultResolver::new();
100        let endpoint = resolver.resolve_endpoint(&params);
101        let endpoint = endpoint.expect("Expected valid endpoint: https://codestar.ca-central-1.amazonaws.com");
102        assert_eq!(
103            endpoint,
104            ::aws_smithy_types::endpoint::Endpoint::builder()
105                .url("https://codestar.ca-central-1.amazonaws.com")
106                .build()
107        );
108    }
109
110    /// For region eu-central-1 with FIPS disabled and DualStack disabled
111    #[test]
112    fn test_6() {
113        let params = crate::config::endpoint::Params::builder()
114            .region("eu-central-1".to_string())
115            .use_fips(false)
116            .use_dual_stack(false)
117            .build()
118            .expect("invalid params");
119        let resolver = crate::config::endpoint::DefaultResolver::new();
120        let endpoint = resolver.resolve_endpoint(&params);
121        let endpoint = endpoint.expect("Expected valid endpoint: https://codestar.eu-central-1.amazonaws.com");
122        assert_eq!(
123            endpoint,
124            ::aws_smithy_types::endpoint::Endpoint::builder()
125                .url("https://codestar.eu-central-1.amazonaws.com")
126                .build()
127        );
128    }
129
130    /// For region eu-north-1 with FIPS disabled and DualStack disabled
131    #[test]
132    fn test_7() {
133        let params = crate::config::endpoint::Params::builder()
134            .region("eu-north-1".to_string())
135            .use_fips(false)
136            .use_dual_stack(false)
137            .build()
138            .expect("invalid params");
139        let resolver = crate::config::endpoint::DefaultResolver::new();
140        let endpoint = resolver.resolve_endpoint(&params);
141        let endpoint = endpoint.expect("Expected valid endpoint: https://codestar.eu-north-1.amazonaws.com");
142        assert_eq!(
143            endpoint,
144            ::aws_smithy_types::endpoint::Endpoint::builder()
145                .url("https://codestar.eu-north-1.amazonaws.com")
146                .build()
147        );
148    }
149
150    /// For region eu-west-1 with FIPS disabled and DualStack disabled
151    #[test]
152    fn test_8() {
153        let params = crate::config::endpoint::Params::builder()
154            .region("eu-west-1".to_string())
155            .use_fips(false)
156            .use_dual_stack(false)
157            .build()
158            .expect("invalid params");
159        let resolver = crate::config::endpoint::DefaultResolver::new();
160        let endpoint = resolver.resolve_endpoint(&params);
161        let endpoint = endpoint.expect("Expected valid endpoint: https://codestar.eu-west-1.amazonaws.com");
162        assert_eq!(
163            endpoint,
164            ::aws_smithy_types::endpoint::Endpoint::builder()
165                .url("https://codestar.eu-west-1.amazonaws.com")
166                .build()
167        );
168    }
169
170    /// For region eu-west-2 with FIPS disabled and DualStack disabled
171    #[test]
172    fn test_9() {
173        let params = crate::config::endpoint::Params::builder()
174            .region("eu-west-2".to_string())
175            .use_fips(false)
176            .use_dual_stack(false)
177            .build()
178            .expect("invalid params");
179        let resolver = crate::config::endpoint::DefaultResolver::new();
180        let endpoint = resolver.resolve_endpoint(&params);
181        let endpoint = endpoint.expect("Expected valid endpoint: https://codestar.eu-west-2.amazonaws.com");
182        assert_eq!(
183            endpoint,
184            ::aws_smithy_types::endpoint::Endpoint::builder()
185                .url("https://codestar.eu-west-2.amazonaws.com")
186                .build()
187        );
188    }
189
190    /// For region us-east-1 with FIPS disabled and DualStack disabled
191    #[test]
192    fn test_10() {
193        let params = crate::config::endpoint::Params::builder()
194            .region("us-east-1".to_string())
195            .use_fips(false)
196            .use_dual_stack(false)
197            .build()
198            .expect("invalid params");
199        let resolver = crate::config::endpoint::DefaultResolver::new();
200        let endpoint = resolver.resolve_endpoint(&params);
201        let endpoint = endpoint.expect("Expected valid endpoint: https://codestar.us-east-1.amazonaws.com");
202        assert_eq!(
203            endpoint,
204            ::aws_smithy_types::endpoint::Endpoint::builder()
205                .url("https://codestar.us-east-1.amazonaws.com")
206                .build()
207        );
208    }
209
210    /// For region us-east-2 with FIPS disabled and DualStack disabled
211    #[test]
212    fn test_11() {
213        let params = crate::config::endpoint::Params::builder()
214            .region("us-east-2".to_string())
215            .use_fips(false)
216            .use_dual_stack(false)
217            .build()
218            .expect("invalid params");
219        let resolver = crate::config::endpoint::DefaultResolver::new();
220        let endpoint = resolver.resolve_endpoint(&params);
221        let endpoint = endpoint.expect("Expected valid endpoint: https://codestar.us-east-2.amazonaws.com");
222        assert_eq!(
223            endpoint,
224            ::aws_smithy_types::endpoint::Endpoint::builder()
225                .url("https://codestar.us-east-2.amazonaws.com")
226                .build()
227        );
228    }
229
230    /// For region us-west-1 with FIPS disabled and DualStack disabled
231    #[test]
232    fn test_12() {
233        let params = crate::config::endpoint::Params::builder()
234            .region("us-west-1".to_string())
235            .use_fips(false)
236            .use_dual_stack(false)
237            .build()
238            .expect("invalid params");
239        let resolver = crate::config::endpoint::DefaultResolver::new();
240        let endpoint = resolver.resolve_endpoint(&params);
241        let endpoint = endpoint.expect("Expected valid endpoint: https://codestar.us-west-1.amazonaws.com");
242        assert_eq!(
243            endpoint,
244            ::aws_smithy_types::endpoint::Endpoint::builder()
245                .url("https://codestar.us-west-1.amazonaws.com")
246                .build()
247        );
248    }
249
250    /// For region us-west-2 with FIPS disabled and DualStack disabled
251    #[test]
252    fn test_13() {
253        let params = crate::config::endpoint::Params::builder()
254            .region("us-west-2".to_string())
255            .use_fips(false)
256            .use_dual_stack(false)
257            .build()
258            .expect("invalid params");
259        let resolver = crate::config::endpoint::DefaultResolver::new();
260        let endpoint = resolver.resolve_endpoint(&params);
261        let endpoint = endpoint.expect("Expected valid endpoint: https://codestar.us-west-2.amazonaws.com");
262        assert_eq!(
263            endpoint,
264            ::aws_smithy_types::endpoint::Endpoint::builder()
265                .url("https://codestar.us-west-2.amazonaws.com")
266                .build()
267        );
268    }
269
270    /// For region us-east-1 with FIPS enabled and DualStack enabled
271    #[test]
272    fn test_14() {
273        let params = crate::config::endpoint::Params::builder()
274            .region("us-east-1".to_string())
275            .use_fips(true)
276            .use_dual_stack(true)
277            .build()
278            .expect("invalid params");
279        let resolver = crate::config::endpoint::DefaultResolver::new();
280        let endpoint = resolver.resolve_endpoint(&params);
281        let endpoint = endpoint.expect("Expected valid endpoint: https://codestar-fips.us-east-1.api.aws");
282        assert_eq!(
283            endpoint,
284            ::aws_smithy_types::endpoint::Endpoint::builder()
285                .url("https://codestar-fips.us-east-1.api.aws")
286                .build()
287        );
288    }
289
290    /// For region us-east-1 with FIPS enabled and DualStack disabled
291    #[test]
292    fn test_15() {
293        let params = crate::config::endpoint::Params::builder()
294            .region("us-east-1".to_string())
295            .use_fips(true)
296            .use_dual_stack(false)
297            .build()
298            .expect("invalid params");
299        let resolver = crate::config::endpoint::DefaultResolver::new();
300        let endpoint = resolver.resolve_endpoint(&params);
301        let endpoint = endpoint.expect("Expected valid endpoint: https://codestar-fips.us-east-1.amazonaws.com");
302        assert_eq!(
303            endpoint,
304            ::aws_smithy_types::endpoint::Endpoint::builder()
305                .url("https://codestar-fips.us-east-1.amazonaws.com")
306                .build()
307        );
308    }
309
310    /// For region us-east-1 with FIPS disabled and DualStack enabled
311    #[test]
312    fn test_16() {
313        let params = crate::config::endpoint::Params::builder()
314            .region("us-east-1".to_string())
315            .use_fips(false)
316            .use_dual_stack(true)
317            .build()
318            .expect("invalid params");
319        let resolver = crate::config::endpoint::DefaultResolver::new();
320        let endpoint = resolver.resolve_endpoint(&params);
321        let endpoint = endpoint.expect("Expected valid endpoint: https://codestar.us-east-1.api.aws");
322        assert_eq!(
323            endpoint,
324            ::aws_smithy_types::endpoint::Endpoint::builder()
325                .url("https://codestar.us-east-1.api.aws")
326                .build()
327        );
328    }
329
330    /// For region cn-north-1 with FIPS enabled and DualStack enabled
331    #[test]
332    fn test_17() {
333        let params = crate::config::endpoint::Params::builder()
334            .region("cn-north-1".to_string())
335            .use_fips(true)
336            .use_dual_stack(true)
337            .build()
338            .expect("invalid params");
339        let resolver = crate::config::endpoint::DefaultResolver::new();
340        let endpoint = resolver.resolve_endpoint(&params);
341        let endpoint = endpoint.expect("Expected valid endpoint: https://codestar-fips.cn-north-1.api.amazonwebservices.com.cn");
342        assert_eq!(
343            endpoint,
344            ::aws_smithy_types::endpoint::Endpoint::builder()
345                .url("https://codestar-fips.cn-north-1.api.amazonwebservices.com.cn")
346                .build()
347        );
348    }
349
350    /// For region cn-north-1 with FIPS enabled and DualStack disabled
351    #[test]
352    fn test_18() {
353        let params = crate::config::endpoint::Params::builder()
354            .region("cn-north-1".to_string())
355            .use_fips(true)
356            .use_dual_stack(false)
357            .build()
358            .expect("invalid params");
359        let resolver = crate::config::endpoint::DefaultResolver::new();
360        let endpoint = resolver.resolve_endpoint(&params);
361        let endpoint = endpoint.expect("Expected valid endpoint: https://codestar-fips.cn-north-1.amazonaws.com.cn");
362        assert_eq!(
363            endpoint,
364            ::aws_smithy_types::endpoint::Endpoint::builder()
365                .url("https://codestar-fips.cn-north-1.amazonaws.com.cn")
366                .build()
367        );
368    }
369
370    /// For region cn-north-1 with FIPS disabled and DualStack enabled
371    #[test]
372    fn test_19() {
373        let params = crate::config::endpoint::Params::builder()
374            .region("cn-north-1".to_string())
375            .use_fips(false)
376            .use_dual_stack(true)
377            .build()
378            .expect("invalid params");
379        let resolver = crate::config::endpoint::DefaultResolver::new();
380        let endpoint = resolver.resolve_endpoint(&params);
381        let endpoint = endpoint.expect("Expected valid endpoint: https://codestar.cn-north-1.api.amazonwebservices.com.cn");
382        assert_eq!(
383            endpoint,
384            ::aws_smithy_types::endpoint::Endpoint::builder()
385                .url("https://codestar.cn-north-1.api.amazonwebservices.com.cn")
386                .build()
387        );
388    }
389
390    /// For region cn-north-1 with FIPS disabled and DualStack disabled
391    #[test]
392    fn test_20() {
393        let params = crate::config::endpoint::Params::builder()
394            .region("cn-north-1".to_string())
395            .use_fips(false)
396            .use_dual_stack(false)
397            .build()
398            .expect("invalid params");
399        let resolver = crate::config::endpoint::DefaultResolver::new();
400        let endpoint = resolver.resolve_endpoint(&params);
401        let endpoint = endpoint.expect("Expected valid endpoint: https://codestar.cn-north-1.amazonaws.com.cn");
402        assert_eq!(
403            endpoint,
404            ::aws_smithy_types::endpoint::Endpoint::builder()
405                .url("https://codestar.cn-north-1.amazonaws.com.cn")
406                .build()
407        );
408    }
409
410    /// For region us-gov-east-1 with FIPS enabled and DualStack enabled
411    #[test]
412    fn test_21() {
413        let params = crate::config::endpoint::Params::builder()
414            .region("us-gov-east-1".to_string())
415            .use_fips(true)
416            .use_dual_stack(true)
417            .build()
418            .expect("invalid params");
419        let resolver = crate::config::endpoint::DefaultResolver::new();
420        let endpoint = resolver.resolve_endpoint(&params);
421        let endpoint = endpoint.expect("Expected valid endpoint: https://codestar-fips.us-gov-east-1.api.aws");
422        assert_eq!(
423            endpoint,
424            ::aws_smithy_types::endpoint::Endpoint::builder()
425                .url("https://codestar-fips.us-gov-east-1.api.aws")
426                .build()
427        );
428    }
429
430    /// For region us-gov-east-1 with FIPS enabled and DualStack disabled
431    #[test]
432    fn test_22() {
433        let params = crate::config::endpoint::Params::builder()
434            .region("us-gov-east-1".to_string())
435            .use_fips(true)
436            .use_dual_stack(false)
437            .build()
438            .expect("invalid params");
439        let resolver = crate::config::endpoint::DefaultResolver::new();
440        let endpoint = resolver.resolve_endpoint(&params);
441        let endpoint = endpoint.expect("Expected valid endpoint: https://codestar-fips.us-gov-east-1.amazonaws.com");
442        assert_eq!(
443            endpoint,
444            ::aws_smithy_types::endpoint::Endpoint::builder()
445                .url("https://codestar-fips.us-gov-east-1.amazonaws.com")
446                .build()
447        );
448    }
449
450    /// For region us-gov-east-1 with FIPS disabled and DualStack enabled
451    #[test]
452    fn test_23() {
453        let params = crate::config::endpoint::Params::builder()
454            .region("us-gov-east-1".to_string())
455            .use_fips(false)
456            .use_dual_stack(true)
457            .build()
458            .expect("invalid params");
459        let resolver = crate::config::endpoint::DefaultResolver::new();
460        let endpoint = resolver.resolve_endpoint(&params);
461        let endpoint = endpoint.expect("Expected valid endpoint: https://codestar.us-gov-east-1.api.aws");
462        assert_eq!(
463            endpoint,
464            ::aws_smithy_types::endpoint::Endpoint::builder()
465                .url("https://codestar.us-gov-east-1.api.aws")
466                .build()
467        );
468    }
469
470    /// For region us-gov-east-1 with FIPS disabled and DualStack disabled
471    #[test]
472    fn test_24() {
473        let params = crate::config::endpoint::Params::builder()
474            .region("us-gov-east-1".to_string())
475            .use_fips(false)
476            .use_dual_stack(false)
477            .build()
478            .expect("invalid params");
479        let resolver = crate::config::endpoint::DefaultResolver::new();
480        let endpoint = resolver.resolve_endpoint(&params);
481        let endpoint = endpoint.expect("Expected valid endpoint: https://codestar.us-gov-east-1.amazonaws.com");
482        assert_eq!(
483            endpoint,
484            ::aws_smithy_types::endpoint::Endpoint::builder()
485                .url("https://codestar.us-gov-east-1.amazonaws.com")
486                .build()
487        );
488    }
489
490    /// For region us-iso-east-1 with FIPS enabled and DualStack enabled
491    #[test]
492    fn test_25() {
493        let params = crate::config::endpoint::Params::builder()
494            .region("us-iso-east-1".to_string())
495            .use_fips(true)
496            .use_dual_stack(true)
497            .build()
498            .expect("invalid params");
499        let resolver = crate::config::endpoint::DefaultResolver::new();
500        let endpoint = resolver.resolve_endpoint(&params);
501        let error = endpoint.expect_err("expected error: FIPS and DualStack are enabled, but this partition does not support one or both [For region us-iso-east-1 with FIPS enabled and DualStack enabled]");
502        assert_eq!(
503            format!("{}", error),
504            "FIPS and DualStack are enabled, but this partition does not support one or both"
505        )
506    }
507
508    /// For region us-iso-east-1 with FIPS enabled and DualStack disabled
509    #[test]
510    fn test_26() {
511        let params = crate::config::endpoint::Params::builder()
512            .region("us-iso-east-1".to_string())
513            .use_fips(true)
514            .use_dual_stack(false)
515            .build()
516            .expect("invalid params");
517        let resolver = crate::config::endpoint::DefaultResolver::new();
518        let endpoint = resolver.resolve_endpoint(&params);
519        let endpoint = endpoint.expect("Expected valid endpoint: https://codestar-fips.us-iso-east-1.c2s.ic.gov");
520        assert_eq!(
521            endpoint,
522            ::aws_smithy_types::endpoint::Endpoint::builder()
523                .url("https://codestar-fips.us-iso-east-1.c2s.ic.gov")
524                .build()
525        );
526    }
527
528    /// For region us-iso-east-1 with FIPS disabled and DualStack enabled
529    #[test]
530    fn test_27() {
531        let params = crate::config::endpoint::Params::builder()
532            .region("us-iso-east-1".to_string())
533            .use_fips(false)
534            .use_dual_stack(true)
535            .build()
536            .expect("invalid params");
537        let resolver = crate::config::endpoint::DefaultResolver::new();
538        let endpoint = resolver.resolve_endpoint(&params);
539        let error = endpoint.expect_err("expected error: DualStack is enabled but this partition does not support DualStack [For region us-iso-east-1 with FIPS disabled and DualStack enabled]");
540        assert_eq!(format!("{}", error), "DualStack is enabled but this partition does not support DualStack")
541    }
542
543    /// For region us-iso-east-1 with FIPS disabled and DualStack disabled
544    #[test]
545    fn test_28() {
546        let params = crate::config::endpoint::Params::builder()
547            .region("us-iso-east-1".to_string())
548            .use_fips(false)
549            .use_dual_stack(false)
550            .build()
551            .expect("invalid params");
552        let resolver = crate::config::endpoint::DefaultResolver::new();
553        let endpoint = resolver.resolve_endpoint(&params);
554        let endpoint = endpoint.expect("Expected valid endpoint: https://codestar.us-iso-east-1.c2s.ic.gov");
555        assert_eq!(
556            endpoint,
557            ::aws_smithy_types::endpoint::Endpoint::builder()
558                .url("https://codestar.us-iso-east-1.c2s.ic.gov")
559                .build()
560        );
561    }
562
563    /// For region us-isob-east-1 with FIPS enabled and DualStack enabled
564    #[test]
565    fn test_29() {
566        let params = crate::config::endpoint::Params::builder()
567            .region("us-isob-east-1".to_string())
568            .use_fips(true)
569            .use_dual_stack(true)
570            .build()
571            .expect("invalid params");
572        let resolver = crate::config::endpoint::DefaultResolver::new();
573        let endpoint = resolver.resolve_endpoint(&params);
574        let error = endpoint.expect_err("expected error: FIPS and DualStack are enabled, but this partition does not support one or both [For region us-isob-east-1 with FIPS enabled and DualStack enabled]");
575        assert_eq!(
576            format!("{}", error),
577            "FIPS and DualStack are enabled, but this partition does not support one or both"
578        )
579    }
580
581    /// For region us-isob-east-1 with FIPS enabled and DualStack disabled
582    #[test]
583    fn test_30() {
584        let params = crate::config::endpoint::Params::builder()
585            .region("us-isob-east-1".to_string())
586            .use_fips(true)
587            .use_dual_stack(false)
588            .build()
589            .expect("invalid params");
590        let resolver = crate::config::endpoint::DefaultResolver::new();
591        let endpoint = resolver.resolve_endpoint(&params);
592        let endpoint = endpoint.expect("Expected valid endpoint: https://codestar-fips.us-isob-east-1.sc2s.sgov.gov");
593        assert_eq!(
594            endpoint,
595            ::aws_smithy_types::endpoint::Endpoint::builder()
596                .url("https://codestar-fips.us-isob-east-1.sc2s.sgov.gov")
597                .build()
598        );
599    }
600
601    /// For region us-isob-east-1 with FIPS disabled and DualStack enabled
602    #[test]
603    fn test_31() {
604        let params = crate::config::endpoint::Params::builder()
605            .region("us-isob-east-1".to_string())
606            .use_fips(false)
607            .use_dual_stack(true)
608            .build()
609            .expect("invalid params");
610        let resolver = crate::config::endpoint::DefaultResolver::new();
611        let endpoint = resolver.resolve_endpoint(&params);
612        let error = endpoint.expect_err("expected error: DualStack is enabled but this partition does not support DualStack [For region us-isob-east-1 with FIPS disabled and DualStack enabled]");
613        assert_eq!(format!("{}", error), "DualStack is enabled but this partition does not support DualStack")
614    }
615
616    /// For region us-isob-east-1 with FIPS disabled and DualStack disabled
617    #[test]
618    fn test_32() {
619        let params = crate::config::endpoint::Params::builder()
620            .region("us-isob-east-1".to_string())
621            .use_fips(false)
622            .use_dual_stack(false)
623            .build()
624            .expect("invalid params");
625        let resolver = crate::config::endpoint::DefaultResolver::new();
626        let endpoint = resolver.resolve_endpoint(&params);
627        let endpoint = endpoint.expect("Expected valid endpoint: https://codestar.us-isob-east-1.sc2s.sgov.gov");
628        assert_eq!(
629            endpoint,
630            ::aws_smithy_types::endpoint::Endpoint::builder()
631                .url("https://codestar.us-isob-east-1.sc2s.sgov.gov")
632                .build()
633        );
634    }
635
636    /// For custom endpoint with region set and fips disabled and dualstack disabled
637    #[test]
638    fn test_33() {
639        let params = crate::config::endpoint::Params::builder()
640            .region("us-east-1".to_string())
641            .use_fips(false)
642            .use_dual_stack(false)
643            .endpoint("https://example.com".to_string())
644            .build()
645            .expect("invalid params");
646        let resolver = crate::config::endpoint::DefaultResolver::new();
647        let endpoint = resolver.resolve_endpoint(&params);
648        let endpoint = endpoint.expect("Expected valid endpoint: https://example.com");
649        assert_eq!(
650            endpoint,
651            ::aws_smithy_types::endpoint::Endpoint::builder().url("https://example.com").build()
652        );
653    }
654
655    /// For custom endpoint with region not set and fips disabled and dualstack disabled
656    #[test]
657    fn test_34() {
658        let params = crate::config::endpoint::Params::builder()
659            .use_fips(false)
660            .use_dual_stack(false)
661            .endpoint("https://example.com".to_string())
662            .build()
663            .expect("invalid params");
664        let resolver = crate::config::endpoint::DefaultResolver::new();
665        let endpoint = resolver.resolve_endpoint(&params);
666        let endpoint = endpoint.expect("Expected valid endpoint: https://example.com");
667        assert_eq!(
668            endpoint,
669            ::aws_smithy_types::endpoint::Endpoint::builder().url("https://example.com").build()
670        );
671    }
672
673    /// For custom endpoint with fips enabled and dualstack disabled
674    #[test]
675    fn test_35() {
676        let params = crate::config::endpoint::Params::builder()
677            .region("us-east-1".to_string())
678            .use_fips(true)
679            .use_dual_stack(false)
680            .endpoint("https://example.com".to_string())
681            .build()
682            .expect("invalid params");
683        let resolver = crate::config::endpoint::DefaultResolver::new();
684        let endpoint = resolver.resolve_endpoint(&params);
685        let error = endpoint.expect_err("expected error: Invalid Configuration: FIPS and custom endpoint are not supported [For custom endpoint with fips enabled and dualstack disabled]");
686        assert_eq!(format!("{}", error), "Invalid Configuration: FIPS and custom endpoint are not supported")
687    }
688
689    /// For custom endpoint with fips disabled and dualstack enabled
690    #[test]
691    fn test_36() {
692        let params = crate::config::endpoint::Params::builder()
693            .region("us-east-1".to_string())
694            .use_fips(false)
695            .use_dual_stack(true)
696            .endpoint("https://example.com".to_string())
697            .build()
698            .expect("invalid params");
699        let resolver = crate::config::endpoint::DefaultResolver::new();
700        let endpoint = resolver.resolve_endpoint(&params);
701        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]");
702        assert_eq!(
703            format!("{}", error),
704            "Invalid Configuration: Dualstack and custom endpoint are not supported"
705        )
706    }
707
708    /// Missing region
709    #[test]
710    fn test_37() {
711        let params = crate::config::endpoint::Params::builder().build().expect("invalid params");
712        let resolver = crate::config::endpoint::DefaultResolver::new();
713        let endpoint = resolver.resolve_endpoint(&params);
714        let error = endpoint.expect_err("expected error: Invalid Configuration: Missing Region [Missing region]");
715        assert_eq!(format!("{}", error), "Invalid Configuration: Missing Region")
716    }
717}
718
719/// Endpoint resolver trait specific to AWS CodeStar
720pub trait ResolveEndpoint: ::std::marker::Send + ::std::marker::Sync + ::std::fmt::Debug {
721    /// Resolve an endpoint with the given parameters
722    fn resolve_endpoint<'a>(&'a self, params: &'a crate::config::endpoint::Params) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a>;
723
724    /// Convert this service-specific resolver into a `SharedEndpointResolver`
725    ///
726    /// The resulting resolver will downcast `EndpointResolverParams` into `crate::config::endpoint::Params`.
727    fn into_shared_resolver(self) -> ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver
728    where
729        Self: Sized + 'static,
730    {
731        ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver::new(DowncastParams(self))
732    }
733}
734
735#[derive(Debug)]
736struct DowncastParams<T>(T);
737impl<T> ::aws_smithy_runtime_api::client::endpoint::ResolveEndpoint for DowncastParams<T>
738where
739    T: ResolveEndpoint,
740{
741    fn resolve_endpoint<'a>(
742        &'a self,
743        params: &'a ::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams,
744    ) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a> {
745        let ep = match params.get::<crate::config::endpoint::Params>() {
746            Some(params) => self.0.resolve_endpoint(params),
747            None => ::aws_smithy_runtime_api::client::endpoint::EndpointFuture::ready(Err("params of expected type was not present".into())),
748        };
749        ep
750    }
751}
752
753/// The default endpoint resolver
754#[derive(Debug, Default)]
755pub struct DefaultResolver {
756    partition_resolver: crate::endpoint_lib::partition::PartitionResolver,
757}
758
759impl DefaultResolver {
760    /// Create a new endpoint resolver with default settings
761    pub fn new() -> Self {
762        Self {
763            partition_resolver: crate::endpoint_lib::DEFAULT_PARTITION_RESOLVER.clone(),
764        }
765    }
766
767    fn resolve_endpoint(
768        &self,
769        params: &crate::config::endpoint::Params,
770    ) -> Result<::aws_smithy_types::endpoint::Endpoint, ::aws_smithy_runtime_api::box_error::BoxError> {
771        let mut diagnostic_collector = crate::endpoint_lib::diagnostic::DiagnosticCollector::new();
772        Ok(
773            crate::config::endpoint::internals::resolve_endpoint(params, &mut diagnostic_collector, &self.partition_resolver)
774                .map_err(|err| err.with_source(diagnostic_collector.take_last_error()))?,
775        )
776    }
777}
778
779impl crate::config::endpoint::ResolveEndpoint for DefaultResolver {
780    fn resolve_endpoint(&self, params: &crate::config::endpoint::Params) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture {
781        ::aws_smithy_runtime_api::client::endpoint::EndpointFuture::ready(self.resolve_endpoint(params))
782    }
783}
784
785#[non_exhaustive]
786#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
787/// Configuration parameters for resolving the correct endpoint
788pub struct Params {
789    /// The AWS region used to dispatch the request.
790    pub(crate) region: ::std::option::Option<::std::string::String>,
791    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
792    pub(crate) use_dual_stack: bool,
793    /// 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.
794    pub(crate) use_fips: bool,
795    /// Override the endpoint used to send this request
796    pub(crate) endpoint: ::std::option::Option<::std::string::String>,
797}
798impl Params {
799    /// Create a builder for [`Params`]
800    pub fn builder() -> crate::config::endpoint::ParamsBuilder {
801        crate::config::endpoint::ParamsBuilder::default()
802    }
803    /// The AWS region used to dispatch the request.
804    pub fn region(&self) -> ::std::option::Option<&str> {
805        self.region.as_deref()
806    }
807    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
808    pub fn use_dual_stack(&self) -> ::std::option::Option<bool> {
809        Some(self.use_dual_stack)
810    }
811    /// 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.
812    pub fn use_fips(&self) -> ::std::option::Option<bool> {
813        Some(self.use_fips)
814    }
815    /// Override the endpoint used to send this request
816    pub fn endpoint(&self) -> ::std::option::Option<&str> {
817        self.endpoint.as_deref()
818    }
819}
820
821/// Builder for [`Params`]
822#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
823pub struct ParamsBuilder {
824    region: ::std::option::Option<::std::string::String>,
825    use_dual_stack: ::std::option::Option<bool>,
826    use_fips: ::std::option::Option<bool>,
827    endpoint: ::std::option::Option<::std::string::String>,
828}
829impl ParamsBuilder {
830    /// Consume this builder, creating [`Params`].
831    pub fn build(self) -> ::std::result::Result<crate::config::endpoint::Params, crate::config::endpoint::InvalidParams> {
832        Ok(
833            #[allow(clippy::unnecessary_lazy_evaluations)]
834            crate::config::endpoint::Params {
835                region: self.region,
836                use_dual_stack: self
837                    .use_dual_stack
838                    .or_else(|| Some(false))
839                    .ok_or_else(|| crate::config::endpoint::InvalidParams::missing("use_dual_stack"))?,
840                use_fips: self
841                    .use_fips
842                    .or_else(|| Some(false))
843                    .ok_or_else(|| crate::config::endpoint::InvalidParams::missing("use_fips"))?,
844                endpoint: self.endpoint,
845            },
846        )
847    }
848    /// Sets the value for region
849    ///
850    /// The AWS region used to dispatch the request.
851    pub fn region(mut self, value: impl Into<::std::string::String>) -> Self {
852        self.region = Some(value.into());
853        self
854    }
855
856    /// Sets the value for region
857    ///
858    /// The AWS region used to dispatch the request.
859    pub fn set_region(mut self, param: Option<::std::string::String>) -> Self {
860        self.region = param;
861        self
862    }
863    /// Sets the value for use_dual_stack
864    ///
865    /// When unset, this parameter has a default value of `false`.
866    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
867    pub fn use_dual_stack(mut self, value: impl Into<bool>) -> Self {
868        self.use_dual_stack = Some(value.into());
869        self
870    }
871
872    /// Sets the value for use_dual_stack
873    ///
874    /// When unset, this parameter has a default value of `false`.
875    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
876    pub fn set_use_dual_stack(mut self, param: Option<bool>) -> Self {
877        self.use_dual_stack = param;
878        self
879    }
880    /// Sets the value for use_fips
881    ///
882    /// When unset, this parameter has a default value of `false`.
883    /// 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.
884    pub fn use_fips(mut self, value: impl Into<bool>) -> Self {
885        self.use_fips = Some(value.into());
886        self
887    }
888
889    /// Sets the value for use_fips
890    ///
891    /// When unset, this parameter has a default value of `false`.
892    /// 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.
893    pub fn set_use_fips(mut self, param: Option<bool>) -> Self {
894        self.use_fips = param;
895        self
896    }
897    /// Sets the value for endpoint
898    ///
899    /// Override the endpoint used to send this request
900    pub fn endpoint(mut self, value: impl Into<::std::string::String>) -> Self {
901        self.endpoint = Some(value.into());
902        self
903    }
904
905    /// Sets the value for endpoint
906    ///
907    /// Override the endpoint used to send this request
908    pub fn set_endpoint(mut self, param: Option<::std::string::String>) -> Self {
909        self.endpoint = param;
910        self
911    }
912}
913
914/// An error that occurred during endpoint resolution
915#[derive(Debug)]
916pub struct InvalidParams {
917    field: std::borrow::Cow<'static, str>,
918}
919
920impl InvalidParams {
921    #[allow(dead_code)]
922    fn missing(field: &'static str) -> Self {
923        Self { field: field.into() }
924    }
925}
926
927impl std::fmt::Display for InvalidParams {
928    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
929        write!(f, "a required field was missing: `{}`", self.field)
930    }
931}
932
933impl std::error::Error for InvalidParams {}
934
935mod internals;