Skip to content

Commit e11ba53

Browse files
authored
chore: update kms externs correctly (#1717)
1 parent 09b2cda commit e11ba53

File tree

2 files changed

+44
-21
lines changed
  • AwsCryptographicMaterialProviders/runtimes/rust/src
  • ComAmazonawsKms/runtimes/rust/src

2 files changed

+44
-21
lines changed

AwsCryptographicMaterialProviders/runtimes/rust/src/kms.rs

Lines changed: 42 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,8 @@
55
#![deny(nonstandard_style)]
66
#![deny(clippy::all)]
77

8-
use aws_config::Region;
8+
use aws_config::{AppName, Region, SdkConfig};
99
use std::sync::LazyLock;
10-
1110
static 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

1817
impl 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>,

ComAmazonawsKms/runtimes/rust/src/kms.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ impl crate::r#software::amazon::cryptography::services::kms::internaldafny::_def
3131
let shared_config = Self::AddUserAgentStringToConfig(&shared_config);
3232
shared_config
3333
}
34+
3435
#[allow(non_snake_case)]
3536
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>>>{
3637
let region =
@@ -99,8 +100,7 @@ impl crate::r#software::amazon::cryptography::services::kms::internaldafny::_def
99100
region,
100101
);
101102
let any = dafny_runtime::cast_any_object!(kmsClient);
102-
let client =
103-
dafny_runtime::cast_object!(any, crate::client::Client);
103+
let client = dafny_runtime::cast_object!(any, crate::client::Client);
104104
let flag = match client.as_ref().inner.config().region() {
105105
Some(r) => r.as_ref() == region,
106106
None => false,

0 commit comments

Comments
 (0)