Skip to content

Commit 8e9e318

Browse files
committed
Add isahc metrics to response if available
Those metrics then can be consumed via the response extensions. ```rust let res: http_types::Response = some_req.await?; if let Some(metrics) = &res.ext::<isahc::Metrics>() { // use the metrics ... } ```
1 parent 749e374 commit 8e9e318

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

src/isahc.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
use super::{async_trait, Body, Error, HttpClient, Request, Response};
44

55
use async_std::io::BufReader;
6-
use isahc::http;
6+
use isahc::{http, ResponseExt};
77

88
/// Curl-based HTTP Client.
99
#[derive(Debug)]
@@ -47,13 +47,19 @@ impl HttpClient for IsahcClient {
4747

4848
let request = builder.body(body).unwrap();
4949
let res = self.0.send_async(request).await.map_err(Error::from)?;
50+
let maybe_metrics = res.metrics().cloned();
5051
let (parts, body) = res.into_parts();
5152
let len = body.len().map(|len| len as usize);
5253
let body = Body::from_reader(BufReader::new(body), len);
5354
let mut response = http_types::Response::new(parts.status.as_u16());
5455
for (name, value) in &parts.headers {
5556
response.insert_header(name.as_str(), value.to_str().unwrap());
5657
}
58+
59+
if let Some(metrics) = maybe_metrics {
60+
response.ext_mut().insert(metrics);
61+
}
62+
5763
response.set_body(body);
5864
Ok(response)
5965
}

0 commit comments

Comments
 (0)