use kekse::CookieJar;
fn main() {
let hostile = "garbage; =novalue; broken pair; SID=deadbeef; ;;; theme";
let jar = CookieJar::parse_strict(hostile);
let sid = jar
.get_all("SID")
.find(|c| !c.value().is_empty())
.map(|c| c.value());
println!("hostile header: {hostile:?}");
println!(
" -> recovered SID = {sid:?} ({} pair(s) kept)\n",
jar.len()
);
assert_eq!(sid, Some("deadbeef"));
let reported = CookieJar::parse_strict_reported(hostile);
println!("the report for the same header:");
for issue in &reported.issues {
println!(" - {issue}");
}
assert_eq!(reported.value.len(), jar.len());
assert!(reported.into_result().is_err());
println!();
let long = "a=b; ".repeat(10_000);
let nasties = [
"", "=", ";;;;;;", "k=\u{0}\u{1}\u{7f}", "x=y\r\nInjected: header", "🍪=🎃", long.as_str(), ];
println!("corrupted inputs (none panic):");
for nasty in nasties {
let jar = CookieJar::parse_strict(nasty);
let preview: String = nasty.chars().take(16).collect();
println!(" {:>2} pair(s) from {preview:?}", jar.len());
}
println!("\nevery input returned a (possibly empty) jar — no panics.");
}