Merge pull request #235 from kstep/referer-header
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::server::Server; | ||||
| pub use self::set_cookie::SetCookie; | ||||
| pub use self::referer::Referer; | ||||
|  | ||||
| macro_rules! bench_header( | ||||
|     ($name:ident, $ty:ty, $value:expr) => { | ||||
| @@ -202,3 +203,7 @@ pub mod user_agent; | ||||
|  | ||||
| /// Exposes the Vary header. | ||||
| 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