diff --git a/src/api_type/bedrock/mod.rs b/src/api_type/bedrock/mod.rs index 9a2e41d..24ff2f4 100644 --- a/src/api_type/bedrock/mod.rs +++ b/src/api_type/bedrock/mod.rs @@ -27,7 +27,10 @@ fn extract_model_from_path(path: &str) -> Option { if model.is_empty() { return None; } - Some(model.to_owned()) + let decoded = percent_encoding::percent_decode_str(model) + .decode_utf8_lossy() + .into_owned(); + Some(decoded) } // Bedrock api url format : `/model//invoke[WithResponseStream]` @@ -135,6 +138,14 @@ mod tests { ); } + #[test] + fn extract_model_percent_decodes_segment() { + let arn = + "arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/abcd1234567"; + let encoded = "/model/arn%3Aaws%3Abedrock%3Aus-east-1%3A123456789012%3Aapplication-inference-profile%2Fabcd1234567/invoke"; + assert_eq!(extract_model_from_path(encoded), Some(arn.to_owned())); + } + #[test] fn extract_model_from_invalid_paths() { assert_eq!(extract_model_from_path("/model//invoke"), None);