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
impl BodyType
Sourcepub fn resolve(
headers_body_type: Option<BodyType>,
connection_type: ConnectionType,
request: bool,
http11: bool,
chunked_if_unspecified: bool,
) -> Result<Self, HeadersMismatchError>
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/orTransfer-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 anyconnection_type
: The resolved connection typerequest
: Whether we are dealing with a request or a responsehttp11
: Whether the HTTP protocol is 1.1chunked_if_unspecified
: (HTTP1.1 only) Upgrades the body type to Chunked if requested so and if no body was specified in the headers
Sourcepub fn from_header(name: &str, value: &str) -> Option<Self>
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
Sourcepub fn from_headers<'a, H>(headers: H) -> Option<Self>
pub fn from_headers<'a, H>(headers: H) -> Option<Self>
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
Sourcepub fn raw_header<'a>(
&self,
buf: &'a mut String<20>,
) -> Option<(&str, &'a [u8])>
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