hyperx/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    /// # extern crate http;
30    /// use hyperx::header::{AcceptEncoding, Encoding, qitem, TypedHeaders};
31    ///
32    /// let mut headers = http::HeaderMap::new();
33    /// headers.encode(
34    ///     &AcceptEncoding(vec![qitem(Encoding::Chunked)])
35    /// );
36    /// ```
37    /// ```
38    /// # extern crate http;
39    /// use hyperx::header::{AcceptEncoding, Encoding, qitem, TypedHeaders};
40    ///
41    /// let mut headers = http::HeaderMap::new();
42    /// headers.encode(
43    ///     &AcceptEncoding(vec![
44    ///         qitem(Encoding::Chunked),
45    ///         qitem(Encoding::Gzip),
46    ///         qitem(Encoding::Deflate),
47    ///     ])
48    /// );
49    /// ```
50    /// ```
51    /// # extern crate http;
52    /// use hyperx::header::{AcceptEncoding, Encoding, QualityItem, q, qitem, TypedHeaders};
53    ///
54    /// let mut headers = http::HeaderMap::new();
55    /// headers.encode(
56    ///     &AcceptEncoding(vec![
57    ///         qitem(Encoding::Chunked),
58    ///         QualityItem::new(Encoding::Gzip, q(600)),
59    ///         QualityItem::new(Encoding::EncodingExt("*".to_owned()), q(0)),
60    ///     ])
61    /// );
62    /// ```
63    (AcceptEncoding, "Accept-Encoding") => (QualityItem<Encoding>)*
64
65    test_accept_encoding {
66        // From the RFC
67        test_header!(test1, vec![b"compress, gzip"]);
68        test_header!(test2, vec![b""], Some(AcceptEncoding(vec![])));
69        test_header!(test3, vec![b"*"]);
70        // Note: Removed quality 1 from gzip
71        test_header!(test4, vec![b"compress;q=0.5, gzip"]);
72        // Note: Removed quality 1 from gzip
73        test_header!(test5, vec![b"gzip, identity; q=0.5, *;q=0"]);
74    }
75}
76
77standard_header!(AcceptEncoding, ACCEPT_ENCODING);