object-storage 0.1.6

This library is used to manipulate oss or cos
Documentation
use anyhow::{anyhow, Result};
use reqwest::{header::HeaderMap, Method};

pub async fn request(
    method: Method,
    url: &str,
    headers: HeaderMap,
    body: Option<Vec<u8>>,
) -> Result<String> {
    let client = reqwest::Client::new();
    let response = match body {
        Some(body) => {
            client
                .request(method, url)
                .headers(headers)
                .body(body)
                .send()
                .await?
        }
        None => client.request(method, url).headers(headers).send().await?,
    };

    let status = response.status();
    let text = response.text().await?;
    if !status.is_success() {
        return Err(anyhow!(
            "Request failed with status code {}: {}",
            status,
            text
        ));
    }

    Ok(text)
}