1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
use bytes::Bytes;
use log::*;
use serde::de::DeserializeOwned;
use serde_json::from_slice;
use super::super::super::request::BufferedHttpResponse;
use super::super::super::RusotoError;
pub struct ResponsePayload {
body: Bytes,
}
impl ResponsePayload {
pub fn new(res: &BufferedHttpResponse) -> Self {
let mut body = res.body.clone();
if body.is_empty() || body.as_ref() == b"null" {
body = Bytes::from_static(b"{}");
}
debug!("Response body: {:?}", body);
debug!("Response status: {}", res.status);
Self { body }
}
pub fn deserialize<T: DeserializeOwned, E>(&self) -> Result<T, RusotoError<E>> {
Ok(from_slice(&self.body)?)
}
}