cookie_monster/
http.rs

1use http::HeaderMap;
2
3use crate::{Cookie, CookieJar};
4
5impl CookieJar {
6    pub fn from_headers(headers: &HeaderMap) -> Self {
7        let iter = headers
8            .get_all("cookie")
9            .into_iter()
10            .filter_map(|header| header.to_str().ok())
11            .flat_map(|cookie_str| cookie_str.split(';'))
12            .filter_map(|string| Cookie::parse_cookie_encoded(string).ok());
13
14        CookieJar::from_original(iter)
15    }
16
17    pub fn write_cookies(self, headers: &mut HeaderMap) {
18        for cookie in self.iter_non_original() {
19            if let Some(header) = cookie
20                .serialize_encoded()
21                .ok()
22                .and_then(|string| string.parse().ok())
23            {
24                headers.append("set-cookie", header);
25            }
26        }
27    }
28}