trillium_cookies/lib.rs
1#![forbid(unsafe_code)]
2#![deny(
3 clippy::dbg_macro,
4 missing_copy_implementations,
5 rustdoc::missing_crate_level_docs,
6 missing_debug_implementations,
7 missing_docs,
8 nonstandard_style,
9 unused_qualifications
10)]
11
12//! # the trillium cookie handler
13//!
14//! ## example
15//! ```
16//! use trillium::Conn;
17//! use trillium_cookies::{CookiesConnExt, CookiesHandler, cookie::Cookie};
18//! use trillium_testing::{TestServer, harness};
19//!
20//! # trillium_testing::block_on(async {
21//! async fn handler_that_uses_cookies(conn: Conn) -> Conn {
22//! let content = if let Some(cookie_value) = conn.cookies().get("some_cookie") {
23//! format!("current cookie value: {}", cookie_value.value())
24//! } else {
25//! String::from("no cookie value set")
26//! };
27//!
28//! conn.with_cookie(("some_cookie", "some-cookie-value"))
29//! .ok(content)
30//! }
31//!
32//! let handler = (CookiesHandler::new(), handler_that_uses_cookies);
33//! let app = TestServer::new(handler).await;
34//!
35//! app.get("/")
36//! .await
37//! .assert_ok()
38//! .assert_body("no cookie value set")
39//! .assert_header("set-cookie", "some_cookie=some-cookie-value");
40//!
41//! app.get("/")
42//! .with_request_header("cookie", "some_cookie=trillium")
43//! .await
44//! .assert_ok()
45//! .assert_body("current cookie value: trillium")
46//! .assert_header("set-cookie", "some_cookie=some-cookie-value");
47//! # });
48//! ```
49
50#[cfg(test)]
51#[doc = include_str!("../README.md")]
52mod readme {}
53
54mod cookies_handler;
55pub use cookies_handler::{CookiesHandler, cookies};
56
57mod cookies_conn_ext;
58pub use cookie;
59pub use cookies_conn_ext::CookiesConnExt;