add referer header definition
This commit is contained in:
		| @@ -28,6 +28,7 @@ pub use self::user_agent::UserAgent; | |||||||
| pub use self::vary::Vary; | pub use self::vary::Vary; | ||||||
| pub use self::server::Server; | pub use self::server::Server; | ||||||
| pub use self::set_cookie::SetCookie; | pub use self::set_cookie::SetCookie; | ||||||
|  | pub use self::referer::Referer; | ||||||
|  |  | ||||||
| macro_rules! bench_header( | macro_rules! bench_header( | ||||||
|     ($name:ident, $ty:ty, $value:expr) => { |     ($name:ident, $ty:ty, $value:expr) => { | ||||||
| @@ -144,3 +145,7 @@ pub mod user_agent; | |||||||
|  |  | ||||||
| /// Exposes the Vary header. | /// Exposes the Vary header. | ||||||
| pub mod vary; | pub mod vary; | ||||||
|  |  | ||||||
|  | /// Exposes the Referer header | ||||||
|  | pub mod referer; | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										35
									
								
								src/header/common/referer.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								src/header/common/referer.rs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | |||||||
|  | use header::{Header, HeaderFormat}; | ||||||
|  | use std::fmt::{self, Show}; | ||||||
|  | use header::shared::util::from_one_raw_str; | ||||||
|  |  | ||||||
|  | /// The `Referer` header. | ||||||
|  | /// | ||||||
|  | /// The Referer header is used by user agents to inform server about | ||||||
|  | /// the page URL user has came from. | ||||||
|  | /// | ||||||
|  | /// See alse [RFC 1945, section 10.13](http://tools.ietf.org/html/rfc1945#section-10.13). | ||||||
|  | /// | ||||||
|  | /// Currently just a string, but maybe better replace it with url::Url or something like it. | ||||||
|  | #[derive(Clone, PartialEq, Show)] | ||||||
|  | pub struct Referer(pub String); | ||||||
|  |  | ||||||
|  | deref!(Referer => String); | ||||||
|  |  | ||||||
|  | impl Header for Referer { | ||||||
|  |     fn header_name(_: Option<Referer>) -> &'static str { | ||||||
|  |         "Referer" | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     fn parse_header(raw: &[Vec<u8>]) -> Option<Referer> { | ||||||
|  |         from_one_raw_str(raw).map(|s| Referer(s)) | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | impl HeaderFormat for Referer { | ||||||
|  |     fn fmt_header(&self, fmt: &mut fmt::Formatter) -> fmt::Result { | ||||||
|  |         let Referer(ref value) = *self; | ||||||
|  |         value.fmt(fmt) | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | bench_header!(bench, Referer, { vec![b"http://foo.com/hello:3000".to_vec()] }); | ||||||
		Reference in New Issue
	
	Block a user