Skip to main content

qubit_http/
lib.rs

1/*******************************************************************************
2 *
3 *    Copyright (c) 2025 - 2026 Haixing Hu.
4 *
5 *    SPDX-License-Identifier: Apache-2.0
6 *
7 *    Licensed under the Apache License, Version 2.0.
8 *
9 ******************************************************************************/
10#![allow(clippy::result_large_err)]
11// Keep `HttpError` rich (method/url/status/source) for diagnostics and retry decisions
12// across the crate's public APIs.
13
14//! # Qubit HTTP
15//!
16//! A general-purpose HTTP infrastructure module for Rust services.
17//!
18//! This crate provides:
19//! - Unified HTTP client options and factory abstractions
20//! - Loading those options from [`qubit_config::ConfigReader`] (`from_config` / factory `create_from_config`)
21//! - Consistent request/response/stream APIs
22//! - Secure and configurable logging with URL, header, and body sanitization
23//! - Built-in SSE decoding utilities in [`sse`]
24//! - Unified error model and retry hints
25//!
26
27mod client;
28pub mod constants;
29mod content_type;
30mod error;
31mod options;
32mod request;
33mod response;
34mod sanitize;
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::{
42    HttpError,
43    HttpErrorKind,
44    HttpResult,
45    RetryHint,
46};
47pub use options::{
48    HttpClientOptions,
49    HttpConfigError,
50    HttpConfigErrorKind,
51    HttpLoggingOptions,
52    HttpRetryMethodPolicy,
53    HttpRetryOptions,
54    HttpTimeoutOptions,
55    ProxyOptions,
56    ProxyType,
57};
58pub use qubit_retry::{
59    RetryDelay,
60    RetryJitter,
61    RetryOptions,
62};
63pub use request::{
64    AsyncHttpHeaderInjector,
65    HttpHeaderInjector,
66    HttpRequest,
67    HttpRequestBody,
68    HttpRequestBodyByteStream,
69    HttpRequestBuilder,
70    HttpRequestInterceptor,
71    HttpRequestInterceptors,
72    HttpRequestRetryOverride,
73    HttpRequestStreamingBody,
74};
75pub use response::{
76    HttpByteStream,
77    HttpResponse,
78    HttpResponseInterceptor,
79    HttpResponseInterceptorContext,
80    HttpResponseInterceptors,
81    HttpResponseMeta,
82};
83pub use sanitize::{
84    BodyLogContext,
85    BodyPreview,
86    LogSanitizePolicy,
87    LogSanitizer,
88    SensitiveBodyFields,
89    SensitiveHttpHeaders,
90    SensitiveQueryParams,
91};
92pub use tokio_util::sync::CancellationToken;