# Cookie Parser A Rust library for parsing Cookie and Set-Cookie HTTP headers with support for all standard cookie attributes. ## Features - Parse Cookie header strings into structured data - Parse Set-Cookie header strings with full attribute support - Support for cookie extensions ## Usage Install using cargo: ```sh cargo add cookie_parser ``` ### Parsing Cookie Headers ```rust use cookie_parser::{parse_cookie_string, CookiePair}; fn main() { let cookies = parse_cookie_string("session=abc123; user=john_doe")?; for cookie in cookies { println!("Name: {}, Value: {}", cookie.name, cookie.value); } } ``` ### Parsing Set-Cookie Headers ```rust use cookie_parser::{parse_set_cookie, SetCookie}; fn main() { let set_cookie = parse_set_cookie( "session=abc123; HttpOnly; Secure; Path=/; Domain=example.com; Max-Age=3600" )?; println!("Cookie name: {}", set_cookie.pair.name); println!("Cookie value: {}", set_cookie.pair.value); println!("Is secure: {}", set_cookie.secure); println!("Is HTTP-only: {}", set_cookie.http_only); if let Some(domain) = set_cookie.domain { println!("Domain: {}", domain); } } ``` ## API Reference ### Structures #### `CookiePair` Represents a name-value pair in a cookie. ```rust pub struct CookiePair { pub name: String, pub value: String, } ``` #### `SetCookie` Represents a complete Set-Cookie header with all possible attributes. ```rust pub struct SetCookie { pub pair: CookiePair, pub secure: bool, pub http_only: bool, pub max_age: Option, pub domain: Option, pub expires: Option, pub path: Option, pub extensions: Vec, } ``` ### Functions #### `parse_cookie_string` ```rust pub fn parse_cookie_string(input: &str) -> Result, CookieParseError> ``` Parses a Cookie header string into a vector of cookie pairs. #### `parse_set_cookie` ```rust pub fn parse_set_cookie(input: &str) -> Result ``` Parses a Set-Cookie header string into a structured `SetCookie` object. ### Errors The library uses a custom error type `CookieParseError` with the following variants: - `ErrorCookieStringSyntax`: Invalid cookie string syntax - `ErrorCookieStringEmpty`: Cookie string is empty ## License MIT