-
-
Notifications
You must be signed in to change notification settings - Fork 709
/
headers.rs
32 lines (25 loc) · 793 Bytes
/
headers.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#![deny(warnings)]
extern crate pretty_env_logger;
extern crate warp;
use std::net::SocketAddr;
use warp::Filter;
/// Create a server that requires header conditions:
///
/// - `Host` is a `SocketAddr`
/// - `Accept` is exactly `*/*`
///
/// If these conditions don't match, a 404 is returned.
fn main() {
pretty_env_logger::init();
// For this example, we assume no DNS was used,
// so the Host header should be an address.
let host = warp::header::<SocketAddr>("host");
// Match when we get `accept: */*` exactly.
let accept_stars = warp::header::exact("accept", "*/*");
let routes = host.and(accept_stars)
.map(|addr| {
format!("accepting stars on {}", addr)
});
warp::serve(routes)
.run(([127, 0, 0, 1], 3030));
}