usc 1.20230730.1349

A common lib for unitedservices
Documentation
use std::collections::HashMap;
use std::time::Duration;
use reqwest::header::HeaderMap;
use crate::myerror::MyError;
use reqwest::RequestBuilder;
use serde::{Serialize, Deserialize};
use bytes::Bytes;

pub async fn http_get(url :&str)->Result<String,MyError> {
    http_get_with_headers(url,HashMap::new()).await
}

pub async fn http_post_json<T: Serialize + ?Sized>(url :&str,data: &T)->Result<String,MyError> {
    http_post_json_with_headers(url,data,HashMap::new()).await
}
pub async fn download(url :&str)->Result<Bytes,MyError> {
    let body=download_with_headers(url,HashMap::new()).await;
    body
}

pub async fn http_get_with_headers(url :&str,headers:HashMap<&str,&str>)->Result<String,MyError> {
    let client = reqwest::Client::new();
    let mut request_builder=client.get(url);
    for (k,v) in headers {
        request_builder=request_builder.header(k,v);
    }
    let response=request_builder.send().await?;
    let body=response.text().await?;
    Ok(body)
}

pub async fn http_post_json_with_headers<T: Serialize + ?Sized>(url :&str,data: &T, headers:HashMap<&str,&str>)->Result<String,MyError> {
    let client = reqwest::Client::new();
    let mut request_builder =client.post(url);
    for (k,v) in headers {
        request_builder = request_builder.header(k, v);
    }
    request_builder = request_builder.json(data);
    let response= request_builder.send().await?;
    let body=response.text().await?;
    Ok(body)
}

pub async fn download_with_headers(url :&str,headers:HashMap<&str,&str>)->Result<Bytes,MyError> {
    let client = reqwest::Client::new();
    let mut request_builder =client.get(url);
    for (k,v) in headers {
        request_builder = request_builder.header(k, v);
    }
    let response= request_builder.send().await?;
    let body=response.bytes().await?;
    Ok(body)
}