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 | //! strongly-typed theme, the [mime](https://docs.rs/mime) crate | ||||||
| //! is used, such as `ContentType(pub Mime)`. | //! 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::accept::Accept; | ||||||
| pub use self::access_control_allow_credentials::AccessControlAllowCredentials; | pub use self::access_control_allow_credentials::AccessControlAllowCredentials; | ||||||
| pub use self::access_control_allow_headers::AccessControlAllowHeaders; | 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_max_age::AccessControlMaxAge; | ||||||
| pub use self::access_control_request_headers::AccessControlRequestHeaders; | pub use self::access_control_request_headers::AccessControlRequestHeaders; | ||||||
| pub use self::access_control_request_method::AccessControlRequestMethod; | 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::allow::Allow; | ||||||
| pub use self::authorization::{Authorization, Scheme, Basic, Bearer}; | pub use self::authorization::{Authorization, Scheme, Basic, Bearer}; | ||||||
| pub use self::cache_control::{CacheControl, CacheDirective}; | pub use self::cache_control::{CacheControl, CacheDirective}; | ||||||
| pub use self::connection::{Connection, ConnectionOption}; | pub use self::connection::{Connection, ConnectionOption}; | ||||||
| pub use self::content_disposition::{ContentDisposition, DispositionType, DispositionParam}; | pub use self::content_disposition::{ContentDisposition, DispositionType, DispositionParam}; | ||||||
| pub use self::content_length::ContentLength; |  | ||||||
| pub use self::content_encoding::ContentEncoding; | pub use self::content_encoding::ContentEncoding; | ||||||
| pub use self::content_language::ContentLanguage; | pub use self::content_language::ContentLanguage; | ||||||
|  | pub use self::content_length::ContentLength; | ||||||
| pub use self::content_location::ContentLocation; | pub use self::content_location::ContentLocation; | ||||||
| pub use self::content_range::{ContentRange, ContentRangeSpec}; | pub use self::content_range::{ContentRange, ContentRangeSpec}; | ||||||
| pub use self::content_type::ContentType; | 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_match::IfMatch; | ||||||
| pub use self::if_modified_since::IfModifiedSince; | pub use self::if_modified_since::IfModifiedSince; | ||||||
| pub use self::if_none_match::IfNoneMatch; | pub use self::if_none_match::IfNoneMatch; | ||||||
| pub use self::if_unmodified_since::IfUnmodifiedSince; |  | ||||||
| pub use self::if_range::IfRange; | 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::last_modified::LastModified; | ||||||
|  | pub use self::link::{Link, LinkValue, RelationType, MediaDesc}; | ||||||
| pub use self::location::Location; | pub use self::location::Location; | ||||||
| pub use self::origin::Origin; | pub use self::origin::Origin; | ||||||
| pub use self::pragma::Pragma; | pub use self::pragma::Pragma; | ||||||
| @@ -55,12 +57,12 @@ pub use self::retry_after::RetryAfter; | |||||||
| 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::strict_transport_security::StrictTransportSecurity; | pub use self::strict_transport_security::StrictTransportSecurity; | ||||||
|  | pub use self::te::Te; | ||||||
| pub use self::transfer_encoding::TransferEncoding; | pub use self::transfer_encoding::TransferEncoding; | ||||||
| pub use self::upgrade::{Upgrade, Protocol, ProtocolName}; | pub use self::upgrade::{Upgrade, Protocol, ProtocolName}; | ||||||
| pub use self::user_agent::UserAgent; | pub use self::user_agent::UserAgent; | ||||||
| pub use self::vary::Vary; | pub use self::vary::Vary; | ||||||
| pub use self::warning::Warning; | pub use self::warning::Warning; | ||||||
| pub use self::link::{Link, LinkValue, RelationType, MediaDesc}; |  | ||||||
|  |  | ||||||
| #[doc(hidden)] | #[doc(hidden)] | ||||||
| #[macro_export] | #[macro_export] | ||||||
| @@ -438,6 +440,10 @@ macro_rules! header { | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | mod accept_charset; | ||||||
|  | mod accept_encoding; | ||||||
|  | mod accept_language; | ||||||
|  | mod accept_ranges; | ||||||
| mod accept; | mod accept; | ||||||
| mod access_control_allow_credentials; | mod access_control_allow_credentials; | ||||||
| mod access_control_allow_headers; | mod access_control_allow_headers; | ||||||
| @@ -447,14 +453,9 @@ mod access_control_expose_headers; | |||||||
| mod access_control_max_age; | mod access_control_max_age; | ||||||
| mod access_control_request_headers; | mod access_control_request_headers; | ||||||
| mod access_control_request_method; | mod access_control_request_method; | ||||||
| mod accept_charset; |  | ||||||
| mod accept_encoding; |  | ||||||
| mod accept_language; |  | ||||||
| mod accept_ranges; |  | ||||||
| mod allow; | mod allow; | ||||||
| mod authorization; | mod authorization; | ||||||
| mod cache_control; | mod cache_control; | ||||||
| mod cookie; |  | ||||||
| mod connection; | mod connection; | ||||||
| mod content_disposition; | mod content_disposition; | ||||||
| mod content_encoding; | mod content_encoding; | ||||||
| @@ -463,6 +464,7 @@ mod content_length; | |||||||
| mod content_location; | mod content_location; | ||||||
| mod content_range; | mod content_range; | ||||||
| mod content_type; | mod content_type; | ||||||
|  | mod cookie; | ||||||
| mod date; | mod date; | ||||||
| mod etag; | mod etag; | ||||||
| mod expect; | mod expect; | ||||||
| @@ -474,7 +476,9 @@ mod if_modified_since; | |||||||
| mod if_none_match; | mod if_none_match; | ||||||
| mod if_range; | mod if_range; | ||||||
| mod if_unmodified_since; | mod if_unmodified_since; | ||||||
|  | mod last_event_id; | ||||||
| mod last_modified; | mod last_modified; | ||||||
|  | mod link; | ||||||
| mod location; | mod location; | ||||||
| mod origin; | mod origin; | ||||||
| mod pragma; | mod pragma; | ||||||
| @@ -487,9 +491,9 @@ mod retry_after; | |||||||
| mod server; | mod server; | ||||||
| mod set_cookie; | mod set_cookie; | ||||||
| mod strict_transport_security; | mod strict_transport_security; | ||||||
|  | mod te; | ||||||
| mod transfer_encoding; | mod transfer_encoding; | ||||||
| mod upgrade; | mod upgrade; | ||||||
| mod user_agent; | mod user_agent; | ||||||
| mod vary; | mod vary; | ||||||
| mod warning; | mod warning; | ||||||
| mod link; |  | ||||||
|   | |||||||
| @@ -25,19 +25,19 @@ header! { | |||||||
|     /// |     /// | ||||||
|     /// # Examples |     /// # Examples | ||||||
|     /// ``` |     /// ``` | ||||||
|     /// use hyper::header::{Headers, TE, Encoding, qitem}; |     /// use hyper::header::{Headers, Te, Encoding, qitem}; | ||||||
|     /// |     /// | ||||||
|     /// let mut headers = Headers::new(); |     /// let mut headers = Headers::new(); | ||||||
|     /// headers.set( |     /// 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(); |     /// let mut headers = Headers::new(); | ||||||
|     /// headers.set( |     /// headers.set( | ||||||
|     ///     TE(vec![ |     ///     Te(vec![ | ||||||
|     ///         qitem(Encoding::Trailers), |     ///         qitem(Encoding::Trailers), | ||||||
|     ///         qitem(Encoding::Gzip), |     ///         qitem(Encoding::Gzip), | ||||||
|     ///         qitem(Encoding::Deflate), |     ///         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(); |     /// let mut headers = Headers::new(); | ||||||
|     /// headers.set( |     /// headers.set( | ||||||
|     ///     TE(vec![ |     ///     Te(vec![ | ||||||
|     ///         qitem(Encoding::Trailers), |     ///         qitem(Encoding::Trailers), | ||||||
|     ///         QualityItem::new(Encoding::Gzip, q(600)), |     ///         QualityItem::new(Encoding::Gzip, q(600)), | ||||||
|     ///         QualityItem::new(Encoding::EncodingExt("*".to_owned()), q(0)), |     ///         QualityItem::new(Encoding::EncodingExt("*".to_owned()), q(0)), | ||||||
|     ///     ]) |     ///     ]) | ||||||
|     /// ); |     /// ); | ||||||
|     /// ``` |     /// ``` | ||||||
|     (TE, "TE") => (QualityItem<Encoding>)* |     (Te, "TE") => (QualityItem<Encoding>)* | ||||||
|  |  | ||||||
|     test_te { |     test_te { | ||||||
|         // From the RFC |         // From the RFC | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user