pub mod headers;
pub mod parser;
pub mod request;
pub mod response;
pub mod status;
pub use headers::{HeaderMap, HeaderName, HeaderValue};
pub use parser::{HttpParser, ParseError, ParseResult, ParseState};
pub use request::{Method, Request, Version};
pub use response::{Body, Response};
pub use status::HttpStatusCode;
/// Check if a header is a hop-by-hop header (should not be forwarded by proxy)
pub fn is_hop_by_hop_header(name: &str) -> bool {
matches!(
name.to_lowercase().as_str(),
"connection"
| "keep-alive"
| "proxy-authenticate"
| "proxy-authorization"
| "te"
| "trailers"
| "transfer-encoding"
| "upgrade"
)
}
/// Parse a content-type header to extract the MIME type (without parameters)
pub fn parse_content_type(ct: &str) -> &str {
ct.split(';').next().unwrap_or(ct).trim()
}