Skip to content

Commit b912e56

Browse files
authored
Merge pull request #717 from belak/optional-cookies
Add an optional cookies feature
2 parents 32fc6db + f006293 commit b912e56

File tree

5 files changed

+35
-9
lines changed

5 files changed

+35
-9
lines changed

Cargo.toml

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,12 @@ features = ["docs"]
2424
rustdoc-args = ["--cfg", "feature=\"docs\""]
2525

2626
[features]
27-
default = ["h1-server", "logger", "sessions"]
27+
default = ["h1-server", "cookies", "logger", "sessions"]
28+
cookies = []
2829
h1-server = ["async-h1"]
2930
logger = ["femme"]
3031
docs = ["unstable"]
31-
sessions = ["async-session"]
32+
sessions = ["async-session", "cookies"]
3233
unstable = []
3334
# DO NOT USE. Only exists to expose internals so they can be benchmarked.
3435
__internal__bench = []
@@ -61,11 +62,29 @@ serde = { version = "1.0.117", features = ["derive"] }
6162
surf = { version = "2.0.0", default-features = false, features = ["h1-client"] }
6263
tempfile = "3.1.0"
6364

65+
[[test]]
66+
name = "cookies"
67+
path = "tests/cookies.rs"
68+
required-features = ["cookies"]
69+
6470
[[test]]
6571
name = "nested"
6672
path = "tests/nested.rs"
6773
required-features = ["unstable"]
6874

75+
[[test]]
76+
name = "sessions"
77+
path = "tests/sessions.rs"
78+
required-features = ["sessions"]
79+
6980
[[bench]]
7081
name = "router"
7182
harness = false
83+
84+
[[example]]
85+
name = "cookies"
86+
required-features = ["cookies"]
87+
88+
[[example]]
89+
name = "sessions"
90+
required-features = ["sessions"]

src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
#![doc(html_favicon_url = "https://yoshuawuyts.com/assets/http-rs/favicon.ico")]
6161
#![doc(html_logo_url = "https://yoshuawuyts.com/assets/http-rs/logo-rounded.png")]
6262

63+
#[cfg(feature = "cookies")]
6364
mod cookies;
6465
mod endpoint;
6566
mod fs;

src/request.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ use route_recognizer::Params;
55
use std::ops::Index;
66
use std::pin::Pin;
77

8+
#[cfg(feature = "cookies")]
89
use crate::cookies::CookieData;
10+
#[cfg(feature = "cookies")]
911
use crate::http::cookies::Cookie;
1012
use crate::http::format_err;
1113
use crate::http::headers::{self, HeaderName, HeaderValues, ToHeaderValues};
@@ -485,6 +487,7 @@ impl<State> Request<State> {
485487
}
486488

487489
/// returns a `Cookie` by name of the cookie.
490+
#[cfg(feature = "cookies")]
488491
#[must_use]
489492
pub fn cookie(&self, name: &str) -> Option<Cookie<'static>> {
490493
self.ext::<CookieData>()

src/security/cors.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,7 @@ mod test {
364364
}
365365

366366
#[async_std::test]
367+
#[cfg(feature = "cookies")]
367368
async fn retain_cookies() {
368369
let mut app = crate::Server::new();
369370
app.with(CorsMiddleware::new().allow_origin(ALLOW_ORIGIN));

src/server.rs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
use async_std::io;
44
use async_std::sync::Arc;
55

6+
#[cfg(feature = "cookies")]
67
use crate::cookies;
78
use crate::listener::{Listener, ToListener};
89
use crate::log;
@@ -100,15 +101,16 @@ impl<State: Clone + Send + Sync + 'static> Server<State> {
100101
/// # Ok(()) }) }
101102
/// ```
102103
pub fn with_state(state: State) -> Self {
103-
let mut server = Self {
104+
Self {
104105
router: Arc::new(Router::new()),
105-
middleware: Arc::new(vec![]),
106+
middleware: Arc::new(vec![
107+
#[cfg(feature = "cookies")]
108+
Arc::new(cookies::CookiesMiddleware::new()),
109+
#[cfg(feature = "logger")]
110+
Arc::new(log::LogMiddleware::new()),
111+
]),
106112
state,
107-
};
108-
server.with(cookies::CookiesMiddleware::new());
109-
#[cfg(feature = "logger")]
110-
server.with(log::LogMiddleware::new());
111-
server
113+
}
112114
}
113115

114116
/// Add a new route at the given `path`, relative to root.

0 commit comments

Comments
 (0)