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}