Throw StatusCode error if http response is non-success

to prevent a misleading deserialization error on error responses.
This commit is contained in:
Florian Jacob 2018-05-17 14:58:23 +02:00
parent 29f2d2fd7f
commit c59b43d027

View File

@ -243,6 +243,7 @@ impl ToTokens for Api {
#[allow(unused_variables)]
fn future_from(http_response: ::http::Response<Vec<u8>>)
-> Box<_Future<Item = Self, Error = Self::Error>> {
if http_response.status().is_success() {
#extract_headers
#deserialize_response_body
@ -255,6 +256,9 @@ impl ToTokens for Api {
});
Box::new(future_response)
} else {
Box::new(::futures::future::err(::ruma_api::Error::StatusCode(http_response.status().clone())))
}
}
}