use crate::nomutil::NomParseError;
use super::HeaderMap;
pub type ParseError = crate::error::ParseError;
pub struct HeaderParser {
}
impl HeaderParser {
pub fn new() -> Self {
Self {}
}
pub fn parse_header(&self, input: &[u8]) -> Result<HeaderMap, ParseError> {
super::pc::parse_fields(input)
.map_err(|error| crate::error::ParseError(NomParseError::from_nom(input, &error)))
}
}
impl Default for HeaderParser {
fn default() -> Self {
Self::new()
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_parse_ok() {
let data = b"k1: v1\r\n";
assert!(HeaderParser::new().parse_header(data).is_ok());
}
#[test]
fn test_parse_err() {
let data = b"k1: v1\r\nk2";
let error = HeaderParser::new().parse_header(data).unwrap_err();
assert_eq!(error.offset(), 8);
}
}