Skip to main content

better_fetch/backend/
mod.rs

1pub(crate) mod exec;
2mod reqwest;
3
4pub use reqwest::ReqwestBackend;
5
6use async_trait::async_trait;
7use bytes::Bytes;
8use http::{HeaderMap, Method, StatusCode};
9use std::time::Duration;
10
11use crate::Result;
12
13/// Prepared HTTP request passed to a backend.
14#[derive(Debug, Clone)]
15pub struct HttpRequest {
16    pub method: Method,
17    pub url: url::Url,
18    pub headers: HeaderMap,
19    pub body: Option<Bytes>,
20    pub timeout: Option<Duration>,
21}
22
23/// Raw HTTP response from a backend.
24#[derive(Debug, Clone)]
25pub struct HttpResponse {
26    pub status: StatusCode,
27    pub headers: HeaderMap,
28    pub body: Bytes,
29}
30
31#[async_trait]
32pub trait HttpBackend: Send + Sync {
33    async fn execute(&self, request: HttpRequest) -> Result<HttpResponse>;
34}