use http::StatusCode;
use crate::service::{AwsRequest, AwsServiceError};
pub fn query_response_xml(action: &str, namespace: &str, inner: &str, request_id: &str) -> String {
format!(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\
<{action}Response xmlns=\"{namespace}\">\
<{action}Result>{inner}</{action}Result>\
<ResponseMetadata><RequestId>{request_id}</RequestId></ResponseMetadata>\
</{action}Response>"
)
}
pub fn query_metadata_only_xml(action: &str, namespace: &str, request_id: &str) -> String {
format!(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\
<{action}Response xmlns=\"{namespace}\">\
<ResponseMetadata><RequestId>{request_id}</RequestId></ResponseMetadata>\
</{action}Response>"
)
}
pub fn optional_query_param(req: &AwsRequest, name: &str) -> Option<String> {
req.query_params
.get(name)
.cloned()
.filter(|value| !value.is_empty())
}
pub fn required_query_param(req: &AwsRequest, name: &str) -> Result<String, AwsServiceError> {
optional_query_param(req, name).ok_or_else(|| {
AwsServiceError::aws_error(
StatusCode::BAD_REQUEST,
"MissingParameter",
format!("The request must contain the parameter {name}."),
)
})
}