reqwest_builder/lib.rs
1//! # Reqwest Builder
2//!
3//! A builder for reqwest requests with support for custom headers, query parameters,
4//! and body content, featuring comprehensive error handling.
5//!
6//! ## Features
7//!
8//! - **Builder Pattern**: Trait-based approach for converting request structures into reqwest builders
9//! - **Multiple Body Types**: Support for JSON, form-encoded, multipart, and no-body requests
10//! - **Error Handling**: Comprehensive error handling with detailed error messages
11//! - **File Uploads**: Built-in support for file uploads with MIME type detection
12//! - **Header Management**: Safe header serialization with proper error reporting
13//! - **Backward Compatibility**: Maintains compatibility with existing code
14//!
15//! ## Quick Start
16//!
17//! ```rust
18//! use reqwest_builder::{IntoReqwestBuilder, RequestBody};
19//! use serde::Serialize;
20//!
21//! #[derive(Serialize)]
22//! struct CreateUserRequest {
23//! name: String,
24//! email: String,
25//! }
26//!
27//! impl IntoReqwestBuilder for CreateUserRequest {
28//! type Headers = ();
29//!
30//! fn method(&self) -> http::Method {
31//! http::Method::POST
32//! }
33//!
34//! fn endpoint(&self) -> String {
35//! "/users".to_string()
36//! }
37//! }
38//! ```
39
40// Core modules
41pub mod errors;
42pub mod file_upload;
43pub mod serialization;
44pub mod trait_impl;
45pub mod types;
46
47// Feature-gated modules
48#[cfg(feature = "derive")]
49pub use reqwest_builder_derive::*;
50
51// Tests module
52#[cfg(test)]
53mod tests;
54
55// Re-exports for convenience
56pub use errors::ReqwestBuilderError;
57pub use file_upload::FileUpload;
58pub use trait_impl::{IntoReqwestBuilder, QueryParamValue, query_param_helper};
59pub use types::{QueryParams, RequestBody};
60
61// Re-export serialization functions for advanced users
62pub use serialization::{
63 construct_url_safe, serialize_to_form_params, serialize_to_form_params_safe,
64 serialize_to_header_map, serialize_to_header_map_safe,
65};