1 use ::HeaderValue;
2 
3 /// `Location` header, defined in
4 /// [RFC7231](http://tools.ietf.org/html/rfc7231#section-7.1.2)
5 ///
6 /// The `Location` header field is used in some responses to refer to a
7 /// specific resource in relation to the response.  The type of
8 /// relationship is defined by the combination of request method and
9 /// status code semantics.
10 ///
11 /// # ABNF
12 ///
13 /// ```text
14 /// Location = URI-reference
15 /// ```
16 ///
17 /// # Example values
18 /// * `/People.html#tim`
19 /// * `http://www.example.net/index.html`
20 ///
21 /// # Examples
22 ///
23 //TODO: make this a `Uri`?
24 #[derive(Clone, Debug, PartialEq, Header)]
25 pub struct Location(HeaderValue);
26 
27 #[cfg(test)]
28 mod tests {
29     use super::*;
30     use super::super::test_decode;
31 
32     #[test]
absolute_uri()33     fn absolute_uri() {
34         let s = "http://www.example.net/index.html";
35         let loc = test_decode::<Location>(&[s]).unwrap();
36 
37         assert_eq!(loc, Location(HeaderValue::from_static(s)));
38     }
39 
40     #[test]
relative_uri_with_fragment()41     fn relative_uri_with_fragment() {
42         let s = "/People.html#tim";
43         let loc = test_decode::<Location>(&[s]).unwrap();
44 
45         assert_eq!(loc, Location(HeaderValue::from_static(s)));
46     }
47 }
48