use crate::{
Error,
common::body_to_bytes,
error::normal_error,
request::{Oss, OssRequest},
};
use http::Method;
use super::WebsiteConfiguration;
pub struct GetBucketWebsite {
req: OssRequest,
}
impl GetBucketWebsite {
pub(super) fn new(oss: Oss) -> Self {
let mut req = OssRequest::new(oss, Method::GET);
req.insert_query("website", "");
GetBucketWebsite { req }
}
pub async fn send(self) -> Result<WebsiteConfiguration, Error> {
let response = self.req.send_to_oss()?.await?;
match response.status() {
code if code.is_success() => {
let bytes = body_to_bytes(response.into_body()).await?;
let config: WebsiteConfiguration = serde_xml_rs::from_reader(bytes.as_ref())
.map_err(|_| Error::OssInvalidResponse(Some(bytes)))?;
Ok(config)
}
_ => Err(normal_error(response).await),
}
}
}