hyper_sync/header/common/
vary.rs

1use unicase::Ascii;
2
3header! {
4    /// `Vary` header, defined in [RFC7231](https://tools.ietf.org/html/rfc7231#section-7.1.4)
5    ///
6    /// The "Vary" header field in a response describes what parts of a
7    /// request message, aside from the method, Host header field, and
8    /// request target, might influence the origin server's process for
9    /// selecting and representing this response.  The value consists of
10    /// either a single asterisk ("*") or a list of header field names
11    /// (case-insensitive).
12    ///
13    /// # ABNF
14    ///
15    /// ```text
16    /// Vary = "*" / 1#field-name
17    /// ```
18    ///
19    /// # Example values
20    ///
21    /// * `accept-encoding, accept-language`
22    ///
23    /// # Example
24    ///
25    /// ```
26    /// use hyper_sync::header::{Headers, Vary};
27    ///
28    /// let mut headers = Headers::new();
29    /// headers.set(Vary::Any);
30    /// ```
31    ///
32    /// # Example
33    ///
34    /// ```
35    /// # extern crate hyper_sync;
36    /// # extern crate unicase;
37    /// # fn main() {
38    /// // extern crate unicase;
39    ///
40    /// use hyper_sync::header::{Headers, Vary};
41    /// use unicase::Ascii;
42    ///
43    /// let mut headers = Headers::new();
44    /// headers.set(
45    ///     Vary::Items(vec![
46    ///         Ascii::new("accept-encoding".to_owned()),
47    ///         Ascii::new("accept-language".to_owned()),
48    ///     ])
49    /// );
50    /// # }
51    /// ```
52    (Vary, "Vary") => {Any / (Ascii<String>)+}
53
54    test_vary {
55        test_header!(test1, vec![b"accept-encoding, accept-language"]);
56
57        #[test]
58        fn test2() {
59            let mut vary: ::Result<Vary>;
60
61            vary = Header::parse_header(&"*".into());
62            assert_eq!(vary.ok(), Some(Vary::Any));
63
64            vary = Header::parse_header(&"etag,cookie,allow".into());
65            assert_eq!(vary.ok(), Some(Vary::Items(vec!["eTag".parse().unwrap(),
66                                                        "cookIE".parse().unwrap(),
67                                                        "AlLOw".parse().unwrap(),])));
68        }
69    }
70}