use std::io::Read;
pub struct UreqTimeoutExtractorReader<R> {
pub r: R,
}
impl<R: Read> Read for UreqTimeoutExtractorReader<R> {
fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
self.r.read(buf).map_err(|e| {
if e.kind() != std::io::ErrorKind::Other {
return e;
}
let ureq_err = match e.downcast::<ureq::Error>() {
Err(e) => return e,
Ok(e) => e,
};
match ureq_err {
ureq::Error::Timeout(..) => {
std::io::Error::new(std::io::ErrorKind::TimedOut, ureq_err)
}
e => std::io::Error::other(e),
}
})
}
}