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:
30 crate::HeaderEncode + crate::HeaderDecode + IntoIterator<Item = ForwardedElement>
31{
32 fn try_from_forwarded<'a, I>(into_it: I) -> Option<Self>
36 where
37 I: IntoIterator<Item = &'a ForwardedElement>,
38 Self: Sized;
39}
40
41#[cfg(test)]
42mod tests {
43 use super::*;
44
45 fn assert_forward_header<T: ForwardHeader>() {}
46
47 #[test]
48 fn test_forward_header_impls() {
49 assert_forward_header::<Forwarded>();
50 assert_forward_header::<Via>();
51 assert_forward_header::<XForwardedFor>();
52 assert_forward_header::<XForwardedHost>();
53 assert_forward_header::<XForwardedProto>();
54 assert_forward_header::<CFConnectingIp>();
55 assert_forward_header::<TrueClientIp>();
56 assert_forward_header::<XClientIp>();
57 assert_forward_header::<ClientIp>();
58 assert_forward_header::<XRealIp>();
59 }
60}