rama_http_headers/forwarded/
mod.rs1use rama_net::forwarded::ForwardedElement;
2
3mod via;
4#[doc(inline)]
5pub use via::Via;
6
7mod std;
8#[doc(inline)]
9pub use std::Forwarded;
10
11mod x_forwarded_for;
12#[doc(inline)]
13pub use x_forwarded_for::XForwardedFor;
14
15mod x_forwarded_host;
16#[doc(inline)]
17pub use x_forwarded_host::XForwardedHost;
18
19mod x_forwarded_proto;
20#[doc(inline)]
21pub use x_forwarded_proto::XForwardedProto;
22
23mod exotic_forward_ip;
24#[doc(inline)]
25pub use exotic_forward_ip::{CFConnectingIp, ClientIp, TrueClientIp, XClientIp, XRealIp};
26
27pub trait ForwardHeader: crate::Header + IntoIterator<Item = ForwardedElement> {
30 fn try_from_forwarded<'a, I>(into_it: I) -> Option<Self>
34 where
35 I: IntoIterator<Item = &'a ForwardedElement>,
36 Self: Sized;
37}
38
39#[cfg(test)]
40mod tests {
41 use super::*;
42
43 fn assert_forward_header<T: ForwardHeader>() {}
44
45 #[test]
46 fn test_forward_header_impls() {
47 assert_forward_header::<Forwarded>();
48 assert_forward_header::<Via>();
49 assert_forward_header::<XForwardedFor>();
50 assert_forward_header::<XForwardedHost>();
51 assert_forward_header::<XForwardedProto>();
52 assert_forward_header::<CFConnectingIp>();
53 assert_forward_header::<TrueClientIp>();
54 assert_forward_header::<XClientIp>();
55 assert_forward_header::<ClientIp>();
56 assert_forward_header::<XRealIp>();
57 }
58}