1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
use util::EntityTag; /// `ETag` header, defined in [RFC7232](http://tools.ietf.org/html/rfc7232#section-2.3) /// /// The `ETag` header field in a response provides the current entity-tag /// for the selected representation, as determined at the conclusion of /// handling the request. An entity-tag is an opaque validator for /// differentiating between multiple representations of the same /// resource, regardless of whether those multiple representations are /// due to resource state changes over time, content negotiation /// resulting in multiple representations being valid at the same time, /// or both. An entity-tag consists of an opaque quoted string, possibly /// prefixed by a weakness indicator. /// /// # ABNF /// /// ```text /// ETag = entity-tag /// ``` /// /// # Example values /// /// * `"xyzzy"` /// * `W/"xyzzy"` /// * `""` /// /// # Examples /// #[derive(Clone, Debug, PartialEq, Eq, Header)] #[header(name_const = "ETAG")] pub struct ETag(pub(super) EntityTag); /* test_etag { // From the RFC test_header!(test1, vec![b"\"xyzzy\""], Some(ETag(EntityTag::new(false, "xyzzy".to_owned())))); test_header!(test2, vec![b"W/\"xyzzy\""], Some(ETag(EntityTag::new(true, "xyzzy".to_owned())))); test_header!(test3, vec![b"\"\""], Some(ETag(EntityTag::new(false, "".to_owned())))); // Own tests test_header!(test4, vec![b"\"foobar\""], Some(ETag(EntityTag::new(false, "foobar".to_owned())))); test_header!(test5, vec![b"\"\""], Some(ETag(EntityTag::new(false, "".to_owned())))); test_header!(test6, vec![b"W/\"weak-etag\""], Some(ETag(EntityTag::new(true, "weak-etag".to_owned())))); test_header!(test7, vec![b"W/\"\x65\x62\""], Some(ETag(EntityTag::new(true, "\u{0065}\u{0062}".to_owned())))); test_header!(test8, vec![b"W/\"\""], Some(ETag(EntityTag::new(true, "".to_owned())))); test_header!(test9, vec![b"no-dquotes"], None::<ETag>); test_header!(test10, vec![b"w/\"the-first-w-is-case-sensitive\""], None::<ETag>); test_header!(test11, vec![b""], None::<ETag>); test_header!(test12, vec![b"\"unmatched-dquotes1"], None::<ETag>); test_header!(test13, vec![b"unmatched-dquotes2\""], None::<ETag>); test_header!(test14, vec![b"matched-\"dquotes\""], None::<ETag>); test_header!(test15, vec![b"\""], None::<ETag>); } */