1use crate::error::DocxError;
2use reqwest::Client;
3use crate::image::get_extension;
4
5pub async fn request_image_data(
10 client: &Client,
11 url: &str,
12) -> Result<(Vec<u8>, String), DocxError> {
13 let response = client.get(url).send().await?;
15 if !response.status().is_success() {
17 return Err(DocxError::NotImage("请求图片错误".to_string()));
18 }
19 let headers = response.headers().clone();
21 let mut content_type = headers
23 .get(reqwest::header::CONTENT_TYPE)
24 .map(|h| h.to_str().unwrap_or("").to_string())
25 .unwrap_or("".to_string());
26 if !content_type.starts_with("image/") {
28 content_type = get_extension(url)?.to_string();
29 }
30 let image_data = response.bytes().await?.to_vec();
32 let extension = &content_type[6..];
33 Ok((image_data, extension.to_string()))
34}