Struct httparse::ParserConfig
source · pub struct ParserConfig { /* private fields */ }
Expand description
Parser configuration.
Implementations§
source§impl ParserConfig
impl ParserConfig
sourcepub fn allow_spaces_after_header_name_in_responses(
&mut self,
value: bool
) -> &mut Self
pub fn allow_spaces_after_header_name_in_responses( &mut self, value: bool ) -> &mut Self
Sets whether spaces should be allowed after header name.
sourcepub fn allow_multiple_spaces_in_request_line_delimiters(
&mut self,
value: bool
) -> &mut Self
pub fn allow_multiple_spaces_in_request_line_delimiters( &mut self, value: bool ) -> &mut Self
Sets whether multiple spaces are allowed as delimiters in request lines.
Background
The latest version of the HTTP/1.1 spec allows implementations to parse multiple
whitespace characters in place of the SP
delimiters in the request line, including:
SP, HTAB, VT (%x0B), FF (%x0C), or bare CR
This option relaxes the parser to allow for multiple spaces, but does not allow the request line to contain the other mentioned whitespace characters.
sourcepub fn multiple_spaces_in_request_line_delimiters_are_allowed(&self) -> bool
pub fn multiple_spaces_in_request_line_delimiters_are_allowed(&self) -> bool
Whether multiple spaces are allowed as delimiters in request lines.
sourcepub fn allow_multiple_spaces_in_response_status_delimiters(
&mut self,
value: bool
) -> &mut Self
pub fn allow_multiple_spaces_in_response_status_delimiters( &mut self, value: bool ) -> &mut Self
Sets whether multiple spaces are allowed as delimiters in response status lines.
Background
The latest version of the HTTP/1.1 spec allows implementations to parse multiple
whitespace characters in place of the SP
delimiters in the response status line,
including:
SP, HTAB, VT (%x0B), FF (%x0C), or bare CR
This option relaxes the parser to allow for multiple spaces, but does not allow the status line to contain the other mentioned whitespace characters.
sourcepub fn multiple_spaces_in_response_status_delimiters_are_allowed(&self) -> bool
pub fn multiple_spaces_in_response_status_delimiters_are_allowed(&self) -> bool
Whether multiple spaces are allowed as delimiters in response status lines.
sourcepub fn allow_obsolete_multiline_headers_in_responses(
&mut self,
value: bool
) -> &mut Self
pub fn allow_obsolete_multiline_headers_in_responses( &mut self, value: bool ) -> &mut Self
Sets whether obsolete multiline headers should be allowed.
This is an obsolete part of HTTP/1. Use at your own risk. If you are
building an HTTP library, the newlines (\r
and \n
) should be
replaced by spaces before handing the header value to the user.
Example
let buf = b"HTTP/1.1 200 OK\r\nFolded-Header: hello\r\n there \r\n\r\n";
let mut headers = [httparse::EMPTY_HEADER; 16];
let mut response = httparse::Response::new(&mut headers);
let res = httparse::ParserConfig::default()
.allow_obsolete_multiline_headers_in_responses(true)
.parse_response(&mut response, buf);
assert_eq!(res, Ok(httparse::Status::Complete(buf.len())));
assert_eq!(response.headers.len(), 1);
assert_eq!(response.headers[0].name, "Folded-Header");
assert_eq!(response.headers[0].value, b"hello\r\n there");
sourcepub fn obsolete_multiline_headers_in_responses_are_allowed(&self) -> bool
pub fn obsolete_multiline_headers_in_responses_are_allowed(&self) -> bool
Whether obsolete multiline headers should be allowed.
sourcepub fn parse_request<'headers, 'buf>(
&self,
request: &mut Request<'headers, 'buf>,
buf: &'buf [u8]
) -> Result<usize>
pub fn parse_request<'headers, 'buf>( &self, request: &mut Request<'headers, 'buf>, buf: &'buf [u8] ) -> Result<usize>
Parses a request with the given config.
sourcepub fn parse_request_with_uninit_headers<'headers, 'buf>(
&self,
request: &mut Request<'headers, 'buf>,
buf: &'buf [u8],
headers: &'headers mut [MaybeUninit<Header<'buf>>]
) -> Result<usize>
pub fn parse_request_with_uninit_headers<'headers, 'buf>( &self, request: &mut Request<'headers, 'buf>, buf: &'buf [u8], headers: &'headers mut [MaybeUninit<Header<'buf>>] ) -> Result<usize>
Parses a request with the given config and buffer for headers
sourcepub fn parse_response<'headers, 'buf>(
&self,
response: &mut Response<'headers, 'buf>,
buf: &'buf [u8]
) -> Result<usize>
pub fn parse_response<'headers, 'buf>( &self, response: &mut Response<'headers, 'buf>, buf: &'buf [u8] ) -> Result<usize>
Parses a response with the given config.
sourcepub fn parse_response_with_uninit_headers<'headers, 'buf>(
&self,
response: &mut Response<'headers, 'buf>,
buf: &'buf [u8],
headers: &'headers mut [MaybeUninit<Header<'buf>>]
) -> Result<usize>
pub fn parse_response_with_uninit_headers<'headers, 'buf>( &self, response: &mut Response<'headers, 'buf>, buf: &'buf [u8], headers: &'headers mut [MaybeUninit<Header<'buf>>] ) -> Result<usize>
Parses a response with the given config and buffer for headers
Trait Implementations§
source§impl Clone for ParserConfig
impl Clone for ParserConfig
source§fn clone(&self) -> ParserConfig
fn clone(&self) -> ParserConfig
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more