Refactor send_request for appservices

merge-requests/65/head
Jonas Platte 3 years ago committed by Timo Kösters
parent 7067d7acae
commit e72fd44bb5
No known key found for this signature in database
GPG Key ID: 24DA7517711A2BA4

@ -49,51 +49,46 @@ where
*reqwest_request.timeout_mut() = Some(Duration::from_secs(30)); *reqwest_request.timeout_mut() = Some(Duration::from_secs(30));
let url = reqwest_request.url().clone(); let url = reqwest_request.url().clone();
let reqwest_response = globals.reqwest_client().execute(reqwest_request).await; let mut reqwest_response = globals.reqwest_client().execute(reqwest_request).await?;
// Because reqwest::Response -> http::Response is complicated: // Because reqwest::Response -> http::Response is complicated:
match reqwest_response { let status = reqwest_response.status();
Ok(mut reqwest_response) => { let mut http_response = http::Response::builder().status(status);
let status = reqwest_response.status(); let headers = http_response.headers_mut().unwrap();
let mut http_response = http::Response::builder().status(status);
let headers = http_response.headers_mut().unwrap();
for (k, v) in reqwest_response.headers_mut().drain() { for (k, v) in reqwest_response.headers_mut().drain() {
if let Some(key) = k { if let Some(key) = k {
headers.insert(key, v); headers.insert(key, v);
} }
} }
let status = reqwest_response.status();
let body = reqwest_response.bytes().await.unwrap_or_else(|e| { let status = reqwest_response.status();
warn!("server error: {}", e);
Vec::new().into()
}); // TODO: handle timeout
if status != 200 { let body = reqwest_response.bytes().await.unwrap_or_else(|e| {
warn!( warn!("server error: {}", e);
"Appservice returned bad response {} {}\n{}\n{:?}", Vec::new().into()
destination, }); // TODO: handle timeout
status,
url,
utils::string_from_bytes(&body)
);
}
let response = T::IncomingResponse::try_from_http_response( if status != 200 {
http_response warn!(
.body(body) "Appservice returned bad response {} {}\n{}\n{:?}",
.expect("reqwest body is valid http body"), destination,
); status,
response.map_err(|_| { url,
warn!( utils::string_from_bytes(&body)
"Appservice returned invalid response bytes {}\n{}", );
destination, url
);
Error::BadServerResponse("Server returned bad response.")
})
}
Err(e) => Err(e.into()),
} }
let response = T::IncomingResponse::try_from_http_response(
http_response
.body(body)
.expect("reqwest body is valid http body"),
);
response.map_err(|_| {
warn!(
"Appservice returned invalid response bytes {}\n{}",
destination, url
);
Error::BadServerResponse("Server returned bad response.")
})
} }

Loading…
Cancel
Save