1use crate::error::DocxError;
2use crate::image::get_extension;
3use reqwest::Client;
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 content_type = headers
23 .get(reqwest::header::CONTENT_TYPE)
24 .map(|h| h.to_str().unwrap_or(""))
25 .unwrap_or("");
26 let extension = if !content_type.starts_with("image/") {
28 get_extension(url)?
29 } else {
30 &content_type[6..]
31 };
32 let image_data = response.bytes().await?.to_vec();
34 Ok((image_data, extension.to_string()))
35}