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,17 @@ 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+ #[ allow( non_snake_case) ]
35+ 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 > > > {
36+ let region =
37+ dafny_runtime:: dafny_runtime_conversions:: unicode_chars_false:: dafny_string_to_string (
38+ region,
39+ ) ;
40+
41+ let shared_config = & Self :: CreateSdkConfig ( ) ;
3742 let shared_config = shared_config
3843 . to_builder ( )
3944 . region ( Region :: new ( region) )
@@ -48,17 +53,7 @@ impl crate::r#software::amazon::cryptography::services::kms::internaldafny::_def
4853
4954 #[ allow( non_snake_case) ]
5055 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-
56+ let shared_config = & Self :: CreateSdkConfig ( ) ;
6257 let inner = aws_sdk_kms:: Client :: new ( & shared_config) ;
6358 let client = crate :: client:: Client { inner } ;
6459 let dafny_client = :: dafny_runtime:: upcast_object ( ) ( :: dafny_runtime:: object:: new ( client) ) ;
@@ -67,6 +62,33 @@ impl crate::r#software::amazon::cryptography::services::kms::internaldafny::_def
6762 } )
6863 }
6964
65+ #[ allow( non_snake_case) ]
66+ fn AddUserAgentStringToConfig ( sdkConfig : & SdkConfig ) -> SdkConfig {
67+ let runtime = format ! ( "Rust" ) ;
68+ let runtime_msg = dafny_runtime:: dafny_runtime_conversions:: unicode_chars_false:: string_to_dafny_string ( & runtime) ;
69+ // sadly rust doesn't allow for '/' in the app name which the dafny function adds
70+ // so we will replace '/' with '-' which is allowed
71+ let user_agent_string = dafny_runtime:: dafny_runtime_conversions:: unicode_chars_false:: dafny_string_to_string (
72+ & crate :: software:: amazon:: cryptography:: services:: kms:: internaldafny:: _default:: DafnyUserAgentSuffix ( & runtime_msg)
73+ ) ;
74+ let replaced_user_agent_string = user_agent_string. replace ( "/" , "-" ) ;
75+ // To update the user agent string we take the application name and update it.
76+ let current_app_name = sdkConfig. app_name ( )
77+ . map ( |app_name| app_name. to_string ( ) )
78+ . unwrap_or_else ( || "" . to_string ( ) ) ;
79+ let new_app_name = if current_app_name. is_empty ( ) {
80+ format ! ( "{}" , replaced_user_agent_string)
81+ } else {
82+ format ! ( "{} {} " , current_app_name, replaced_user_agent_string)
83+ } ;
84+ let app_name = AppName :: new ( new_app_name)
85+ . expect ( "Valid app name" ) ;
86+ let sdkConfig = sdkConfig
87+ . to_builder ( )
88+ . app_name ( app_name)
89+ . build ( ) ;
90+ sdkConfig
91+ }
7092 #[ allow( non_snake_case) ]
7193 pub fn RegionMatch (
7294 kmsClient : & :: dafny_runtime:: Object < dyn crate :: software:: amazon:: cryptography:: services:: kms:: internaldafny:: types:: IKMSClient > ,
0 commit comments