hyperx/header/common/access_control_expose_headers.rs
1use unicase::Ascii;
2
3header! {
4 /// `Access-Control-Expose-Headers` header, part of
5 /// [CORS](http://www.w3.org/TR/cors/#access-control-expose-headers-response-header)
6 ///
7 /// The Access-Control-Expose-Headers header indicates which headers are safe to expose to the
8 /// API of a CORS API specification.
9 ///
10 /// # ABNF
11 ///
12 /// ```text
13 /// Access-Control-Expose-Headers = "Access-Control-Expose-Headers" ":" #field-name
14 /// ```
15 ///
16 /// # Example values
17 /// * `ETag, Content-Length`
18 ///
19 /// # Examples
20 ///
21 /// ```
22 /// # extern crate http;
23 /// # extern crate hyperx;
24 /// # extern crate unicase;
25 /// # fn main() {
26 /// // extern crate unicase;
27 ///
28 /// use hyperx::header::{AccessControlExposeHeaders, TypedHeaders};
29 /// use unicase::Ascii;
30 ///
31 /// let mut headers = http::HeaderMap::new();
32 /// headers.encode(
33 /// &AccessControlExposeHeaders(vec![
34 /// Ascii::new("etag".to_owned()),
35 /// Ascii::new("content-length".to_owned())
36 /// ])
37 /// );
38 /// # }
39 /// ```
40 ///
41 /// ```
42 /// # extern crate http;
43 /// # extern crate hyperx;
44 /// # extern crate unicase;
45 /// # fn main() {
46 /// // extern crate unicase;
47 ///
48 /// use hyperx::header::{AccessControlExposeHeaders, TypedHeaders};
49 /// use unicase::Ascii;
50 ///
51 /// let mut headers = http::HeaderMap::new();
52 /// headers.encode(
53 /// &AccessControlExposeHeaders(vec![
54 /// Ascii::new("etag".to_owned()),
55 /// Ascii::new("content-length".to_owned())
56 /// ])
57 /// );
58 /// # }
59 /// ```
60 (AccessControlExposeHeaders, "Access-Control-Expose-Headers") => (Ascii<String>)*
61
62 test_access_control_expose_headers {
63 test_header!(test1, vec![b"etag, content-length"]);
64 }
65}
66
67standard_header!(AccessControlExposeHeaders, ACCESS_CONTROL_EXPOSE_HEADERS);