hyper_sync/header/common/
accept_encoding.rs

1use header::{Encoding, QualityItem};
2
3header! {
4    /// `Accept-Encoding` header, defined in
5    /// [RFC7231](http://tools.ietf.org/html/rfc7231#section-5.3.4)
6    ///
7    /// The `Accept-Encoding` header field can be used by user agents to
8    /// indicate what response content-codings are
9    /// acceptable in the response.  An  `identity` token is used as a synonym
10    /// for "no encoding" in order to communicate when no encoding is
11    /// preferred.
12    ///
13    /// # ABNF
14    ///
15    /// ```text
16    /// Accept-Encoding  = #( codings [ weight ] )
17    /// codings          = content-coding / "identity" / "*"
18    /// ```
19    ///
20    /// # Example values
21    /// * `compress, gzip`
22    /// * ``
23    /// * `*`
24    /// * `compress;q=0.5, gzip;q=1`
25    /// * `gzip;q=1.0, identity; q=0.5, *;q=0`
26    ///
27    /// # Examples
28    /// ```
29    /// use hyper_sync::header::{Headers, AcceptEncoding, Encoding, qitem};
30    ///
31    /// let mut headers = Headers::new();
32    /// headers.set(
33    ///     AcceptEncoding(vec![qitem(Encoding::Chunked)])
34    /// );
35    /// ```
36    /// ```
37    /// use hyper_sync::header::{Headers, AcceptEncoding, Encoding, qitem};
38    ///
39    /// let mut headers = Headers::new();
40    /// headers.set(
41    ///     AcceptEncoding(vec![
42    ///         qitem(Encoding::Chunked),
43    ///         qitem(Encoding::Gzip),
44    ///         qitem(Encoding::Deflate),
45    ///     ])
46    /// );
47    /// ```
48    /// ```
49    /// use hyper_sync::header::{Headers, AcceptEncoding, Encoding, QualityItem, q, qitem};
50    ///
51    /// let mut headers = Headers::new();
52    /// headers.set(
53    ///     AcceptEncoding(vec![
54    ///         qitem(Encoding::Chunked),
55    ///         QualityItem::new(Encoding::Gzip, q(600)),
56    ///         QualityItem::new(Encoding::EncodingExt("*".to_owned()), q(0)),
57    ///     ])
58    /// );
59    /// ```
60    (AcceptEncoding, "Accept-Encoding") => (QualityItem<Encoding>)*
61
62    test_accept_encoding {
63        // From the RFC
64        test_header!(test1, vec![b"compress, gzip"]);
65        test_header!(test2, vec![b""], Some(AcceptEncoding(vec![])));
66        test_header!(test3, vec![b"*"]);
67        // Note: Removed quality 1 from gzip
68        test_header!(test4, vec![b"compress;q=0.5, gzip"]);
69        // Note: Removed quality 1 from gzip
70        test_header!(test5, vec![b"gzip, identity; q=0.5, *;q=0"]);
71    }
72}