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,18 +243,22 @@ impl ToTokens for Api {
#[allow(unused_variables)] #[allow(unused_variables)]
fn future_from(http_response: ::http::Response<Vec<u8>>) fn future_from(http_response: ::http::Response<Vec<u8>>)
-> Box<_Future<Item = Self, Error = Self::Error>> { -> Box<_Future<Item = Self, Error = Self::Error>> {
#extract_headers if http_response.status().is_success() {
#extract_headers
#deserialize_response_body #deserialize_response_body
.and_then(move |response_body| { .and_then(move |response_body| {
let response = Response { let response = Response {
#response_init_fields #response_init_fields
}; };
Ok(response) Ok(response)
}); });
Box::new(future_response) Box::new(future_response)
} else {
Box::new(::futures::future::err(::ruma_api::Error::StatusCode(http_response.status().clone())))
}
} }
} }