requiem_http/header/common/
accept_charset.rs

1use crate::header::{Charset, QualityItem, ACCEPT_CHARSET};
2
3header! {
4    /// `Accept-Charset` header, defined in
5    /// [RFC7231](http://tools.ietf.org/html/rfc7231#section-5.3.3)
6    ///
7    /// The `Accept-Charset` header field can be sent by a user agent to
8    /// indicate what charsets are acceptable in textual response content.
9    /// This field allows user agents capable of understanding more
10    /// comprehensive or special-purpose charsets to signal that capability
11    /// to an origin server that is capable of representing information in
12    /// those charsets.
13    ///
14    /// # ABNF
15    ///
16    /// ```text
17    /// Accept-Charset = 1#( ( charset / "*" ) [ weight ] )
18    /// ```
19    ///
20    /// # Example values
21    /// * `iso-8859-5, unicode-1-1;q=0.8`
22    ///
23    /// # Examples
24    /// ```rust
25    /// # extern crate requiem_http;
26    /// use requiem_http::Response;
27    /// use requiem_http::http::header::{AcceptCharset, Charset, qitem};
28    ///
29    /// # fn main() {
30    /// let mut builder = Response::Ok();
31    /// builder.set(
32    ///     AcceptCharset(vec![qitem(Charset::Us_Ascii)])
33    /// );
34    /// # }
35    /// ```
36    /// ```rust
37    /// # extern crate requiem_http;
38    /// use requiem_http::Response;
39    /// use requiem_http::http::header::{AcceptCharset, Charset, q, QualityItem};
40    ///
41    /// # fn main() {
42    /// let mut builder = Response::Ok();
43    /// builder.set(
44    ///     AcceptCharset(vec![
45    ///         QualityItem::new(Charset::Us_Ascii, q(900)),
46    ///         QualityItem::new(Charset::Iso_8859_10, q(200)),
47    ///     ])
48    /// );
49    /// # }
50    /// ```
51    /// ```rust
52    /// # extern crate requiem_http;
53    /// use requiem_http::Response;
54    /// use requiem_http::http::header::{AcceptCharset, Charset, qitem};
55    ///
56    /// # fn main() {
57    /// let mut builder = Response::Ok();
58    /// builder.set(
59    ///     AcceptCharset(vec![qitem(Charset::Ext("utf-8".to_owned()))])
60    /// );
61    /// # }
62    /// ```
63    (AcceptCharset, ACCEPT_CHARSET) => (QualityItem<Charset>)+
64
65    test_accept_charset {
66        /// Test case from RFC
67        test_header!(test1, vec![b"iso-8859-5, unicode-1-1;q=0.8"]);
68    }
69}