pub async fn async_http_client(
request: oauth2::HttpRequest,
) -> Result<oauth2::HttpResponse, reqwest::Error> {
let client = reqwest::Client::builder()
.redirect(reqwest::redirect::Policy::none())
.build()?;
let method = request.method().clone();
let url = request.uri().to_string();
let headers = request.headers().clone();
let body = request.into_body();
let mut request_builder = client.request(method, &url).body(body);
for (name, value) in &headers {
request_builder = request_builder.header(name.as_str(), value.as_bytes());
}
let response = request_builder.send().await?;
let status_code = response.status();
let headers = response.headers().to_owned();
let body = response.bytes().await?.to_vec();
let mut builder = http::Response::builder().status(status_code);
for (name, value) in &headers {
builder = builder.header(name, value);
}
Ok(builder
.body(body)
.expect("Failed to build HTTP response"))
}
#[cfg(test)]
mod tests {
#[tokio::test]
async fn test_async_http_client_compiles() {
}
}