Struct httparse::ParserConfig

source ·
pub struct ParserConfig { /* private fields */ }
Expand description

Parser configuration.

Implementations§

source§

impl ParserConfig

source

pub fn allow_spaces_after_header_name_in_responses( &mut self, value: bool ) -> &mut Self

Sets whether spaces should be allowed after header name.

source

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.

source

pub fn multiple_spaces_in_request_line_delimiters_are_allowed(&self) -> bool

Whether multiple spaces are allowed as delimiters in request lines.

source

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.

source

pub fn multiple_spaces_in_response_status_delimiters_are_allowed(&self) -> bool

Whether multiple spaces are allowed as delimiters in response status lines.

source

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");
source

pub fn obsolete_multiline_headers_in_responses_are_allowed(&self) -> bool

Whether obsolete multiline headers should be allowed.

source

pub fn parse_request<'headers, 'buf>( &self, request: &mut Request<'headers, 'buf>, buf: &'buf [u8] ) -> Result<usize>

Parses a request with the given config.

source

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

source

pub fn parse_response<'headers, 'buf>( &self, response: &mut Response<'headers, 'buf>, buf: &'buf [u8] ) -> Result<usize>

Parses a response with the given config.

source

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

source§

fn clone(&self) -> ParserConfig

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ParserConfig

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for ParserConfig

source§

fn default() -> ParserConfig

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.