qubit_http/lib.rs
1/*******************************************************************************
2 *
3 * Copyright (c) 2025 - 2026.
4 * Haixing Hu, Qubit Co. Ltd.
5 *
6 * All rights reserved.
7 *
8 ******************************************************************************/
9#![allow(clippy::result_large_err)]
10// Keep `HttpError` rich (method/url/status/source) for diagnostics and retry decisions
11// across the crate's public APIs.
12
13//! # Qubit HTTP
14//!
15//! A general-purpose HTTP infrastructure module for Rust services.
16//!
17//! This crate provides:
18//! - Unified HTTP client options and factory abstractions
19//! - Loading those options from [`qubit_config::ConfigReader`] (`from_config` / factory `create_from_config`)
20//! - Consistent request/response/stream APIs
21//! - Secure and configurable logging with sensitive header masking
22//! - Built-in SSE decoding utilities in [`sse`]
23//! - Unified error model and retry hints
24//!
25//! # Author
26//!
27//! Haixing Hu
28
29mod client;
30pub mod constants;
31mod error;
32mod options;
33mod request;
34mod response;
35pub mod sse;
36
37pub use client::http_logger::HttpLogger;
38pub use client::HttpClient;
39pub use client::HttpClientFactory;
40pub use constants::DEFAULT_SENSITIVE_HEADER_NAMES;
41pub use error::{HttpError, HttpErrorKind, HttpResult, RetryHint};
42pub use options::{
43 HttpClientOptions, HttpConfigError, HttpConfigErrorKind, HttpLoggingOptions,
44 HttpRetryMethodPolicy, HttpRetryOptions, ProxyOptions, ProxyType, SensitiveHeaders,
45 SseDecodeOptions, TimeoutOptions,
46};
47pub use qubit_retry::{Delay, Jitter};
48pub use request::{
49 AsyncHeaderInjector, HeaderInjector, HttpRequest, HttpRequestBody, HttpRequestBuilder,
50 HttpRequestRetryOverride, RequestInterceptor,
51};
52pub use response::{HttpByteStream, HttpResponse, HttpResponseMeta, ResponseInterceptor};
53pub use tokio_util::sync::CancellationToken;