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)
}