Merge pull request #1256 from brendanzab/add-missing-headers
feat(headers): Add missing headers
This commit is contained in:
		| @@ -1,30 +0,0 @@ | ||||
| header! { | ||||
|     /// `Last-Event-ID` header, defined in | ||||
|     /// [RFC3864](https://html.spec.whatwg.org/multipage/references.html#refsRFC3864) | ||||
|     /// | ||||
|     /// The `Last-Event-ID` header contains information about | ||||
|     /// the last event in an http interaction so that it's easier to | ||||
|     /// track of event state. This is helpful when working | ||||
|     /// with [Server-Sent-Events](http://www.html5rocks.com/en/tutorials/eventsource/basics/). If the connection were to be dropped, for example, it'd | ||||
|     /// be useful to let the server know what the last event you | ||||
|     /// received was. | ||||
|     /// | ||||
|     /// The spec is a String with the id of the last event, it can be | ||||
|     /// an empty string which acts a sort of "reset". | ||||
|     /// | ||||
|     /// # Example | ||||
|     /// ``` | ||||
|     /// use hyper::header::{Headers, LastEventID}; | ||||
|     /// | ||||
|     /// let mut headers = Headers::new(); | ||||
|     /// headers.set(LastEventID("1".to_owned())); | ||||
|     /// ``` | ||||
|     (LastEventID, "Last-Event-ID") => [String] | ||||
|  | ||||
|     test_last_event_id { | ||||
|         // Initial state | ||||
|         test_header!(test1, vec![b""]); | ||||
|         // Own testcase | ||||
|         test_header!(test2, vec![b"1"], Some(LastEventID("1".to_owned()))); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										63
									
								
								src/header/common/last_event_id.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								src/header/common/last_event_id.rs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,63 @@ | ||||
| use std::fmt::{self, Display}; | ||||
| use header::{self, Header, Raw}; | ||||
|  | ||||
| /// `Last-Event-ID` header, defined in | ||||
| /// [RFC3864](https://html.spec.whatwg.org/multipage/references.html#refsRFC3864) | ||||
| /// | ||||
| /// The `Last-Event-ID` header contains information about | ||||
| /// the last event in an http interaction so that it's easier to | ||||
| /// track of event state. This is helpful when working | ||||
| /// with [Server-Sent-Events](http://www.html5rocks.com/en/tutorials/eventsource/basics/). If the connection were to be dropped, for example, it'd | ||||
| /// be useful to let the server know what the last event you | ||||
| /// received was. | ||||
| /// | ||||
| /// The spec is a String with the id of the last event, it can be | ||||
| /// an empty string which acts a sort of "reset". | ||||
| /// | ||||
| /// # Example | ||||
| /// ``` | ||||
| /// use hyper::header::{Headers, LastEventId}; | ||||
| /// | ||||
| /// let mut headers = Headers::new(); | ||||
| /// headers.set(LastEventId("1".to_owned())); | ||||
| /// ``` | ||||
| #[derive(Clone, Debug, PartialEq)] | ||||
| pub struct LastEventId(pub String); | ||||
|  | ||||
| impl Header for LastEventId { | ||||
|     #[inline] | ||||
|     fn header_name() -> &'static str { | ||||
|         static NAME: &'static str = "Last-Event-ID"; | ||||
|         NAME | ||||
|     } | ||||
|  | ||||
|     #[inline] | ||||
|     fn parse_header(raw: &Raw) -> ::Result<Self> { | ||||
|         match raw.one() { | ||||
|             Some(line) if line.is_empty() => Ok(LastEventId("".to_owned())), | ||||
|             Some(line) => header::parsing::from_raw_str(line).map(LastEventId), | ||||
|             None => Err(::Error::Header), | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     #[inline] | ||||
|     fn fmt_header(&self, f: &mut header::Formatter) -> fmt::Result { | ||||
|         f.fmt_line(self) | ||||
|     } | ||||
| } | ||||
|  | ||||
| impl Display for LastEventId { | ||||
|     #[inline] | ||||
|     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { | ||||
|         Display::fmt(&self.0, f) | ||||
|     } | ||||
| } | ||||
|  | ||||
| __hyper__deref!(LastEventId => String); | ||||
|  | ||||
| __hyper__tm!(LastEventId, tests { | ||||
|     // Initial state | ||||
|     test_header!(test1, vec![b""]); | ||||
|     // Own testcase | ||||
|     test_header!(test2, vec![b"1"], Some(LastEventId("1".to_owned()))); | ||||
| }); | ||||
| @@ -6,6 +6,10 @@ | ||||
| //! strongly-typed theme, the [mime](https://docs.rs/mime) crate | ||||
| //! is used, such as `ContentType(pub Mime)`. | ||||
|  | ||||
| pub use self::accept_charset::AcceptCharset; | ||||
| pub use self::accept_encoding::AcceptEncoding; | ||||
| pub use self::accept_language::AcceptLanguage; | ||||
| pub use self::accept_ranges::{AcceptRanges, RangeUnit}; | ||||
| pub use self::accept::Accept; | ||||
| pub use self::access_control_allow_credentials::AccessControlAllowCredentials; | ||||
| pub use self::access_control_allow_headers::AccessControlAllowHeaders; | ||||
| @@ -15,18 +19,14 @@ pub use self::access_control_expose_headers::AccessControlExposeHeaders; | ||||
| pub use self::access_control_max_age::AccessControlMaxAge; | ||||
| pub use self::access_control_request_headers::AccessControlRequestHeaders; | ||||
| pub use self::access_control_request_method::AccessControlRequestMethod; | ||||
| pub use self::accept_charset::AcceptCharset; | ||||
| pub use self::accept_encoding::AcceptEncoding; | ||||
| pub use self::accept_language::AcceptLanguage; | ||||
| pub use self::accept_ranges::{AcceptRanges, RangeUnit}; | ||||
| pub use self::allow::Allow; | ||||
| pub use self::authorization::{Authorization, Scheme, Basic, Bearer}; | ||||
| pub use self::cache_control::{CacheControl, CacheDirective}; | ||||
| pub use self::connection::{Connection, ConnectionOption}; | ||||
| pub use self::content_disposition::{ContentDisposition, DispositionType, DispositionParam}; | ||||
| pub use self::content_length::ContentLength; | ||||
| pub use self::content_encoding::ContentEncoding; | ||||
| pub use self::content_language::ContentLanguage; | ||||
| pub use self::content_length::ContentLength; | ||||
| pub use self::content_location::ContentLocation; | ||||
| pub use self::content_range::{ContentRange, ContentRangeSpec}; | ||||
| pub use self::content_type::ContentType; | ||||
| @@ -40,9 +40,11 @@ pub use self::host::Host; | ||||
| pub use self::if_match::IfMatch; | ||||
| pub use self::if_modified_since::IfModifiedSince; | ||||
| pub use self::if_none_match::IfNoneMatch; | ||||
| pub use self::if_unmodified_since::IfUnmodifiedSince; | ||||
| pub use self::if_range::IfRange; | ||||
| pub use self::if_unmodified_since::IfUnmodifiedSince; | ||||
| pub use self::last_event_id::LastEventId; | ||||
| pub use self::last_modified::LastModified; | ||||
| pub use self::link::{Link, LinkValue, RelationType, MediaDesc}; | ||||
| pub use self::location::Location; | ||||
| pub use self::origin::Origin; | ||||
| pub use self::pragma::Pragma; | ||||
| @@ -55,12 +57,12 @@ pub use self::retry_after::RetryAfter; | ||||
| pub use self::server::Server; | ||||
| pub use self::set_cookie::SetCookie; | ||||
| pub use self::strict_transport_security::StrictTransportSecurity; | ||||
| pub use self::te::Te; | ||||
| pub use self::transfer_encoding::TransferEncoding; | ||||
| pub use self::upgrade::{Upgrade, Protocol, ProtocolName}; | ||||
| pub use self::user_agent::UserAgent; | ||||
| pub use self::vary::Vary; | ||||
| pub use self::warning::Warning; | ||||
| pub use self::link::{Link, LinkValue, RelationType, MediaDesc}; | ||||
|  | ||||
| #[doc(hidden)] | ||||
| #[macro_export] | ||||
| @@ -438,6 +440,10 @@ macro_rules! header { | ||||
| } | ||||
|  | ||||
|  | ||||
| mod accept_charset; | ||||
| mod accept_encoding; | ||||
| mod accept_language; | ||||
| mod accept_ranges; | ||||
| mod accept; | ||||
| mod access_control_allow_credentials; | ||||
| mod access_control_allow_headers; | ||||
| @@ -447,14 +453,9 @@ mod access_control_expose_headers; | ||||
| mod access_control_max_age; | ||||
| mod access_control_request_headers; | ||||
| mod access_control_request_method; | ||||
| mod accept_charset; | ||||
| mod accept_encoding; | ||||
| mod accept_language; | ||||
| mod accept_ranges; | ||||
| mod allow; | ||||
| mod authorization; | ||||
| mod cache_control; | ||||
| mod cookie; | ||||
| mod connection; | ||||
| mod content_disposition; | ||||
| mod content_encoding; | ||||
| @@ -463,6 +464,7 @@ mod content_length; | ||||
| mod content_location; | ||||
| mod content_range; | ||||
| mod content_type; | ||||
| mod cookie; | ||||
| mod date; | ||||
| mod etag; | ||||
| mod expect; | ||||
| @@ -474,7 +476,9 @@ mod if_modified_since; | ||||
| mod if_none_match; | ||||
| mod if_range; | ||||
| mod if_unmodified_since; | ||||
| mod last_event_id; | ||||
| mod last_modified; | ||||
| mod link; | ||||
| mod location; | ||||
| mod origin; | ||||
| mod pragma; | ||||
| @@ -487,9 +491,9 @@ mod retry_after; | ||||
| mod server; | ||||
| mod set_cookie; | ||||
| mod strict_transport_security; | ||||
| mod te; | ||||
| mod transfer_encoding; | ||||
| mod upgrade; | ||||
| mod user_agent; | ||||
| mod vary; | ||||
| mod warning; | ||||
| mod link; | ||||
|   | ||||
| @@ -25,19 +25,19 @@ header! { | ||||
|     /// | ||||
|     /// # Examples | ||||
|     /// ``` | ||||
|     /// use hyper::header::{Headers, TE, Encoding, qitem}; | ||||
|     /// use hyper::header::{Headers, Te, Encoding, qitem}; | ||||
|     /// | ||||
|     /// let mut headers = Headers::new(); | ||||
|     /// headers.set( | ||||
|     ///     TE(vec![qitem(Encoding::Trailers)]) | ||||
|     ///     Te(vec![qitem(Encoding::Trailers)]) | ||||
|     /// ); | ||||
|     /// ``` | ||||
|     /// ``` | ||||
|     /// use hyper::header::{Headers, TE, Encoding, qitem}; | ||||
|     /// use hyper::header::{Headers, Te, Encoding, qitem}; | ||||
|     /// | ||||
|     /// let mut headers = Headers::new(); | ||||
|     /// headers.set( | ||||
|     ///     TE(vec![ | ||||
|     ///     Te(vec![ | ||||
|     ///         qitem(Encoding::Trailers), | ||||
|     ///         qitem(Encoding::Gzip), | ||||
|     ///         qitem(Encoding::Deflate), | ||||
| @@ -45,18 +45,18 @@ header! { | ||||
|     /// ); | ||||
|     /// ``` | ||||
|     /// ``` | ||||
|     /// use hyper::header::{Headers, TE, Encoding, QualityItem, q, qitem}; | ||||
|     /// use hyper::header::{Headers, Te, Encoding, QualityItem, q, qitem}; | ||||
|     /// | ||||
|     /// let mut headers = Headers::new(); | ||||
|     /// headers.set( | ||||
|     ///     TE(vec![ | ||||
|     ///     Te(vec![ | ||||
|     ///         qitem(Encoding::Trailers), | ||||
|     ///         QualityItem::new(Encoding::Gzip, q(600)), | ||||
|     ///         QualityItem::new(Encoding::EncodingExt("*".to_owned()), q(0)), | ||||
|     ///     ]) | ||||
|     /// ); | ||||
|     /// ``` | ||||
|     (TE, "TE") => (QualityItem<Encoding>)* | ||||
|     (Te, "TE") => (QualityItem<Encoding>)* | ||||
|  | ||||
|     test_te { | ||||
|         // From the RFC | ||||
|   | ||||
		Reference in New Issue
	
	Block a user