Skip to main content

logtail_rust/http_client/
mod.rs

1mod base_client;
2pub mod service;
3
4pub use base_client::ReqwestClient;
5
6use reqwest::header::HeaderMap;
7use serde_json::Value;
8use std::future::Future;
9
10#[derive(Debug, thiserror::Error)]
11pub enum LogtailError {
12    #[error("HTTP {status}: {message}")]
13    Http { status: u16, message: String },
14    #[error("serialization failed: {0}")]
15    Serialization(#[from] serde_json::Error),
16    #[error("network error: {0}")]
17    Network(#[from] reqwest::Error),
18}
19
20pub trait HttpClient: Send + Sync {
21    fn post_json(
22        &self,
23        url: &str,
24        body: &Value,
25        extra_headers: Option<HeaderMap>,
26    ) -> impl Future<Output = Result<Option<Value>, LogtailError>> + Send;
27}
28
29#[cfg(test)]
30pub(crate) mod mock;