55#![ deny( nonstandard_style) ]
66#![ deny( clippy:: all) ]
77
8- use aws_config:: Region ;
8+ use aws_config:: { AppName , Region , SdkConfig } ;
99use std:: sync:: LazyLock ;
10-
1110static DAFNY_TOKIO_RUNTIME : LazyLock < tokio:: runtime:: Runtime > = LazyLock :: new ( || {
1211 tokio:: runtime:: Builder :: new_multi_thread ( )
1312 . enable_all ( )
@@ -17,12 +16,7 @@ static DAFNY_TOKIO_RUNTIME: LazyLock<tokio::runtime::Runtime> = LazyLock::new(||
1716
1817impl crate :: r#software:: amazon:: cryptography:: services:: kms:: internaldafny:: _default {
1918 #[ allow( non_snake_case) ]
20- pub fn KMSClientForRegion ( region : & :: dafny_runtime:: Sequence < :: dafny_runtime:: DafnyCharUTF16 > ) -> :: dafny_runtime:: Rc < crate :: r#_Wrappers_Compile:: Result < :: dafny_runtime:: Object < dyn crate :: software:: amazon:: cryptography:: services:: kms:: internaldafny:: types:: IKMSClient > , :: dafny_runtime:: Rc < crate :: software:: amazon:: cryptography:: services:: kms:: internaldafny:: types:: Error > > > {
21- let region =
22- dafny_runtime:: dafny_runtime_conversions:: unicode_chars_false:: dafny_string_to_string (
23- region,
24- ) ;
25-
19+ fn CreateSdkConfig ( ) -> SdkConfig {
2620 let shared_config = match tokio:: runtime:: Handle :: try_current ( ) {
2721 Ok ( curr) => tokio:: task:: block_in_place ( || {
2822 curr. block_on ( async {
@@ -34,6 +28,18 @@ impl crate::r#software::amazon::cryptography::services::kms::internaldafny::_def
3428 ) ) ,
3529 } ;
3630
31+ let shared_config = Self :: AddUserAgentStringToConfig ( & shared_config) ;
32+ shared_config
33+ }
34+
35+ #[ allow( non_snake_case) ]
36+ pub fn KMSClientForRegion ( region : & :: dafny_runtime:: Sequence < :: dafny_runtime:: DafnyCharUTF16 > ) -> :: dafny_runtime:: Rc < crate :: r#_Wrappers_Compile:: Result < :: dafny_runtime:: Object < dyn crate :: software:: amazon:: cryptography:: services:: kms:: internaldafny:: types:: IKMSClient > , :: dafny_runtime:: Rc < crate :: software:: amazon:: cryptography:: services:: kms:: internaldafny:: types:: Error > > > {
37+ let region =
38+ dafny_runtime:: dafny_runtime_conversions:: unicode_chars_false:: dafny_string_to_string (
39+ region,
40+ ) ;
41+
42+ let shared_config = & Self :: CreateSdkConfig ( ) ;
3743 let shared_config = shared_config
3844 . to_builder ( )
3945 . region ( Region :: new ( region) )
@@ -48,17 +54,7 @@ impl crate::r#software::amazon::cryptography::services::kms::internaldafny::_def
4854
4955 #[ allow( non_snake_case) ]
5056 pub fn KMSClient ( ) -> :: dafny_runtime:: Rc < crate :: r#_Wrappers_Compile:: Result < :: dafny_runtime:: Object < dyn crate :: software:: amazon:: cryptography:: services:: kms:: internaldafny:: types:: IKMSClient > , :: dafny_runtime:: Rc < crate :: software:: amazon:: cryptography:: services:: kms:: internaldafny:: types:: Error > > > {
51- let shared_config = match tokio:: runtime:: Handle :: try_current ( ) {
52- Ok ( curr) => tokio:: task:: block_in_place ( || {
53- curr. block_on ( async {
54- aws_config:: load_defaults ( aws_config:: BehaviorVersion :: latest ( ) ) . await
55- } )
56- } ) ,
57- Err ( _) => DAFNY_TOKIO_RUNTIME . block_on ( aws_config:: load_defaults (
58- aws_config:: BehaviorVersion :: latest ( ) ,
59- ) ) ,
60- } ;
61-
57+ let shared_config = & Self :: CreateSdkConfig ( ) ;
6258 let inner = aws_sdk_kms:: Client :: new ( & shared_config) ;
6359 let client = crate :: deps:: com_amazonaws_kms:: client:: Client { inner } ;
6460 let dafny_client = :: dafny_runtime:: upcast_object ( ) ( :: dafny_runtime:: object:: new ( client) ) ;
@@ -67,6 +63,33 @@ impl crate::r#software::amazon::cryptography::services::kms::internaldafny::_def
6763 } )
6864 }
6965
66+ #[ allow( non_snake_case) ]
67+ fn AddUserAgentStringToConfig ( sdkConfig : & SdkConfig ) -> SdkConfig {
68+ let runtime = format ! ( "Rust" ) ;
69+ let runtime_msg = dafny_runtime:: dafny_runtime_conversions:: unicode_chars_false:: string_to_dafny_string ( & runtime) ;
70+ // sadly rust doesn't allow for '/' in the app name which the dafny function adds
71+ // so we will replace '/' with '-' which is allowed
72+ let user_agent_string = dafny_runtime:: dafny_runtime_conversions:: unicode_chars_false:: dafny_string_to_string (
73+ & crate :: software:: amazon:: cryptography:: services:: kms:: internaldafny:: _default:: DafnyUserAgentSuffix ( & runtime_msg)
74+ ) ;
75+ let replaced_user_agent_string = user_agent_string. replace ( "/" , "-" ) ;
76+ // To update the user agent string we take the application name and update it.
77+ let current_app_name = sdkConfig. app_name ( )
78+ . map ( |app_name| app_name. to_string ( ) )
79+ . unwrap_or_else ( || "" . to_string ( ) ) ;
80+ let new_app_name = if current_app_name. is_empty ( ) {
81+ format ! ( "{}" , replaced_user_agent_string)
82+ } else {
83+ format ! ( "{} {} " , current_app_name, replaced_user_agent_string)
84+ } ;
85+ let app_name = AppName :: new ( new_app_name)
86+ . expect ( "Valid app name" ) ;
87+ let sdkConfig = sdkConfig
88+ . to_builder ( )
89+ . app_name ( app_name)
90+ . build ( ) ;
91+ sdkConfig
92+ }
7093 #[ allow( non_snake_case) ]
7194 pub fn RegionMatch (
7295 kmsClient : & :: dafny_runtime:: Object < dyn crate :: software:: amazon:: cryptography:: services:: kms:: internaldafny:: types:: IKMSClient > ,
0 commit comments