BodyType

Enum BodyType 

Source
pub enum BodyType {
    Chunked,
    ContentLen(u64),
    Raw,
}
Expand description

Body type

Variants§

§

Chunked

Chunked body (Transfer-Encoding: Chunked)

§

ContentLen(u64)

Content-length body (Content-Length: {len})

§

Raw

Raw body - can only be used with responses, where the connection type is Close

Implementations§

Source§

impl BodyType

Source

pub fn resolve( headers_body_type: Option<BodyType>, connection_type: ConnectionType, request: bool, http11: bool, chunked_if_unspecified: bool, ) -> Result<Self, HeadersMismatchError>

Resolve the body type

Resolution is based on:

  • The body type found in the headers (i.e. Content-Length and/or Transfer-Encoding), if any
  • (if the above is missing) based on the resolved connection type, HTTP protocol and whether we are dealing with a request or a response

Parameters:

  • headers_body_type: The body type found in the headers, if any
  • connection_type: The resolved connection type
  • request: Whether we are dealing with a request or a response
  • http11: Whether the HTTP protocol is 1.1
  • chunked_if_unspecified: (HTTP1.1 only) Upgrades the body type to Chunked if requested so and if no body was specified in the headers
Source

pub fn from_header(name: &str, value: &str) -> Option<Self>

Create a body type from a header

If the header is not a Content-Length or Transfer-Encoding header, this method returns None

Source

pub fn from_headers<'a, H>(headers: H) -> Option<Self>
where H: IntoIterator<Item = (&'a str, &'a str)>,

Create a body type from headers

If multiple body type headers are found, this method logs a warning and returns the last one If no body type headers are found, this method returns None

Source

pub fn raw_header<'a>( &self, buf: &'a mut String<20>, ) -> Option<(&str, &'a [u8])>

Create a raw header from the body type

If the body type is Raw, this method returns None as a raw body cannot be represented in a header and is rather, a consequence of using connection type Close with HTTP server responses

Trait Implementations§

Source§

impl Clone for BodyType

Source§

fn clone(&self) -> BodyType

Returns a duplicate 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 BodyType

Source§

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

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

impl Display for BodyType

Source§

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

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

impl Hash for BodyType

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for BodyType

Source§

fn eq(&self, other: &BodyType) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for BodyType

Source§

impl Eq for BodyType

Source§

impl StructuralPartialEq for BodyType

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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, U> TryFrom<U> for T
where U: Into<T>,

Source§

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>,

Source§

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.