refactor(headers): Fail to parse single value header values
A single value header value can't be "", so `from_one_raw_str()` now returns `None` on empty values. This makes custom checks in headers obsolete. BREAKING CHANGE: `from_one_raw_str()` returns `None` on empty values.
This commit is contained in:
		| @@ -57,4 +57,6 @@ fn test_parse_header() { | |||||||
|     let c: Pragma = Header::parse_header([b"FoObar".to_vec()].as_ref()).unwrap(); |     let c: Pragma = Header::parse_header([b"FoObar".to_vec()].as_ref()).unwrap(); | ||||||
|     let d = Pragma::Ext("FoObar".to_string()); |     let d = Pragma::Ext("FoObar".to_string()); | ||||||
|     assert_eq!(c, d); |     assert_eq!(c, d); | ||||||
|  |     let e: Option<Pragma> = Header::parse_header([b"".to_vec()].as_ref()); | ||||||
|  |     assert_eq!(e, None); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -9,10 +9,12 @@ pub fn from_one_raw_str<T: str::FromStr>(raw: &[Vec<u8>]) -> Option<T> { | |||||||
|         return None; |         return None; | ||||||
|     } |     } | ||||||
|     // we JUST checked that raw.len() == 1, so raw[0] WILL exist. |     // we JUST checked that raw.len() == 1, so raw[0] WILL exist. | ||||||
|     match str::from_utf8(&raw[0][..]) { |     if let Ok(s) = str::from_utf8(&raw[0][..]) { | ||||||
|         Ok(s) => str::FromStr::from_str(s).ok(), |         if s != "" { | ||||||
|         Err(_) => None |             return str::FromStr::from_str(s).ok(); | ||||||
|         } |         } | ||||||
|  |     } | ||||||
|  |     None | ||||||
| } | } | ||||||
|  |  | ||||||
| /// Reads a comma-delimited raw header into a Vec. | /// Reads a comma-delimited raw header into a Vec. | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user