pub async fn send_request<T: DeserializeOwned>(
access_key: &str,
secret_key: &str,
endpoint: &str,
region: &str,
service: &str,
method: &str,
content_type: &str,
query_params: BTreeMap<&str, &str>,
body_params: Value,
) -> Result<T, Box<dyn Error>>