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//!
14//! ## Quick Start
15//!
16//! ```rust
17//! use reqwest_builder::{IntoReqwestBuilder, RequestBody};
18//! use serde::Serialize;
19//!
20//! #[derive(Serialize)]
21//! struct CreateUserRequest {
22//!     name: String,
23//!     email: String,
24//! }
25//!
26//! impl IntoReqwestBuilder for CreateUserRequest {
27//!     type Headers = ();
28//!
29//!     fn method(&self) -> http::Method {
30//!         http::Method::POST
31//!     }
32//!
33//!     fn endpoint(&self) -> String {
34//!         "/users".to_string()
35//!     }
36//! }
37//! ```
38
39// Core modules
40pub mod errors;
41pub mod file_upload;
42pub mod serialization;
43pub mod trait_impl;
44pub mod types;
45
46// Feature-gated modules
47#[cfg(feature = "derive")]
48pub use reqwest_builder_derive::*;
49
50// Re-exports for convenience
51pub use errors::ReqwestBuilderError;
52pub use file_upload::FileUpload;
53pub use trait_impl::{IntoReqwestBuilder, QueryParamValue, query_param_helper};
54pub use types::{QueryParams, RequestBody};
55
56// Re-export serialization functions for advanced users
57pub use serialization::{construct_url, serialize_to_form_params, serialize_to_header_map};