logtail_rust/http_client/
mod.rs1mod 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;