reqwest_retry/
retryable.rs

1use crate::retryable_strategy::{DefaultRetryableStrategy, RetryableStrategy};
2use reqwest_middleware::Error;
3
4/// Classification of an error/status returned by request.
5#[derive(PartialEq, Eq)]
6pub enum Retryable {
7    /// The failure was due to something that might resolve in the future.
8    Transient,
9    /// Unresolvable error.
10    Fatal,
11}
12
13impl Retryable {
14    /// Try to map a `reqwest` response into `Retryable`.
15    ///
16    /// Returns `None` if the response object does not contain any errors.
17    ///
18    pub fn from_reqwest_response(res: &Result<reqwest::Response, Error>) -> Option<Self> {
19        DefaultRetryableStrategy.handle(res)
20    }
21}
22
23impl From<&reqwest::Error> for Retryable {
24    fn from(_status: &reqwest::Error) -> Retryable {
25        Retryable::Transient
26    }
27}