Ferrit Explore
中文·繁體·EN·日本語 Sign in Register
cielxl / veld / src / http / mod.rs
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()
}