1use http::StatusCode;
4
5use crate::service::{AwsRequest, AwsServiceError};
6
7pub fn query_response_xml(action: &str, namespace: &str, inner: &str, request_id: &str) -> String {
18 format!(
19 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\
20 <{action}Response xmlns=\"{namespace}\">\
21 <{action}Result>{inner}</{action}Result>\
22 <ResponseMetadata><RequestId>{request_id}</RequestId></ResponseMetadata>\
23 </{action}Response>"
24 )
25}
26
27pub fn query_metadata_only_xml(action: &str, namespace: &str, request_id: &str) -> String {
29 format!(
30 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\
31 <{action}Response xmlns=\"{namespace}\">\
32 <ResponseMetadata><RequestId>{request_id}</RequestId></ResponseMetadata>\
33 </{action}Response>"
34 )
35}
36
37pub fn optional_query_param(req: &AwsRequest, name: &str) -> Option<String> {
41 req.query_params
42 .get(name)
43 .cloned()
44 .filter(|value| !value.is_empty())
45}
46
47pub fn required_query_param(req: &AwsRequest, name: &str) -> Result<String, AwsServiceError> {
51 optional_query_param(req, name).ok_or_else(|| {
52 AwsServiceError::aws_error(
53 StatusCode::BAD_REQUEST,
54 "MissingParameter",
55 format!("The request must contain the parameter {name}."),
56 )
57 })
58}