Skip to main content

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
29pub mod constants;
30mod error;
31mod http_byte_stream;
32mod http_client;
33mod http_client_factory;
34mod http_logger;
35mod http_response;
36mod http_stream_response;
37mod options;
38mod request;
39pub mod sse;
40
41pub use constants::DEFAULT_SENSITIVE_HEADER_NAMES;
42pub use error::{HttpError, HttpErrorKind, HttpResult, RetryHint};
43pub use http_byte_stream::HttpByteStream;
44pub use http_client::HttpClient;
45pub use http_client_factory::HttpClientFactory;
46pub use http_logger::HttpLogger;
47pub use http_response::HttpResponse;
48pub use http_stream_response::HttpStreamResponse;
49pub use options::{
50    HttpClientOptions, HttpConfigError, HttpConfigErrorKind, HttpLoggingOptions,
51    HttpRetryMethodPolicy, HttpRetryOptions, ProxyOptions, ProxyType, SensitiveHeaders,
52    TimeoutOptions,
53};
54pub use qubit_retry::{Delay, Jitter};
55pub use request::{
56    AsyncHeaderInjector, HeaderInjector, HttpRequest, HttpRequestBody, HttpRequestBuilder,
57    HttpRequestRetryOverride,
58};
59pub use tokio_util::sync::CancellationToken;