pub struct Request { /* private fields */ }Expand description
Represents a parsed HTTP request.
Implementations§
Source§impl Request
impl Request
Sourcepub async fn http_from_reader(
reader: &mut BufReader<&mut TcpStream>,
buffer_size: usize,
) -> RequestReaderHandleResult
pub async fn http_from_reader( reader: &mut BufReader<&mut TcpStream>, buffer_size: usize, ) -> RequestReaderHandleResult
Sourcepub async fn http_request_from_stream(
stream: &ArcRwLockStream,
buffer_size: usize,
) -> RequestReaderHandleResult
pub async fn http_request_from_stream( stream: &ArcRwLockStream, buffer_size: usize, ) -> RequestReaderHandleResult
Creates a new Request object from a TCP stream.
§Parameters
stream: A reference to a&ArcRwLockStreamrepresenting the incoming connection.buffer_size: Request buffer size.
§Returns
Ok: ARequestobject populated with the HTTP request data.Err: AnRequestErrorif the request is invalid or cannot be read.
Sourcepub async fn ws_request_from_stream(
stream: &ArcRwLockStream,
buffer_size: usize,
request: &mut Self,
) -> RequestReaderHandleResult
pub async fn ws_request_from_stream( stream: &ArcRwLockStream, buffer_size: usize, request: &mut Self, ) -> RequestReaderHandleResult
Creates a new Request object from a TCP stream.
§Parameters
stream: A reference to a&ArcRwLockStreamrepresenting the incoming connection.buffer_size: Request buffer size.request: A reference to aRequestobject. This object is used as a template.
§Returns
Ok: ARequestobject populated with the HTTP request data.Err: AnRequestErrorif the request is invalid or cannot be read.
Sourcepub async fn ws_from_reader(
reader: &mut BufReader<&mut TcpStream>,
buffer_size: usize,
request: &mut Self,
) -> RequestReaderHandleResult
pub async fn ws_from_reader( reader: &mut BufReader<&mut TcpStream>, buffer_size: usize, request: &mut Self, ) -> RequestReaderHandleResult
Reads a WebSocket request from a TCP stream and constructs a Request object.
This function reads data from the provided BufReader wrapped around a TcpStream.
It attempts to read up to 1024 bytes into a buffer and constructs a Request object
based on the received data. The request body is set using the received bytes.
§Arguments
reader- A mutable reference to aBufReaderwrapping aTcpStream. This reader is used to read the incoming WebSocket request data.buffer_size: - Request buffer size.request- A reference to aRequestobject. This object is used as a template.
§Returns
Ok(Request)- ARequestobject constructed from the received data.- If no data is read (
Ok(0)), an emptyRequestobject is returned. - If data is successfully read, the request body is set with the received bytes.
- If no data is read (
Err(RequestError::InvalidWebSocketRequest)- If an error occurs while reading from the stream.
Sourcepub fn get_query<K>(&self, key: K) -> OptionRequestQuerysValuewhere
K: Into<RequestQuerysKey>,
pub fn get_query<K>(&self, key: K) -> OptionRequestQuerysValuewhere
K: Into<RequestQuerysKey>,
Sourcepub fn get_header<K>(&self, key: K) -> OptionRequestHeadersValuewhere
K: Into<RequestHeadersKey>,
pub fn get_header<K>(&self, key: K) -> OptionRequestHeadersValuewhere
K: Into<RequestHeadersKey>,
Sourcepub fn get_body_string(&self) -> String
pub fn get_body_string(&self) -> String
Retrieves the body content of the object as a UTF-8 encoded string.
This method uses String::from_utf8_lossy to convert the byte slice returned by self.get_body() into a string.
If the byte slice contains invalid UTF-8 sequences, they will be replaced with the Unicode replacement character (�).
§Returns
A String containing the body content.
Sourcepub fn get_body_json<T>(&self) -> ResultJsonError<T>where
T: DeserializeOwned,
pub fn get_body_json<T>(&self) -> ResultJsonError<T>where
T: DeserializeOwned,
Deserializes the body content of the object into a specified type T.
This method first retrieves the body content as a UTF-8 encoded string using self.get_body().
It then attempts to deserialize the string into the specified type T using json_from_slice.
§Type Parameters
T: The target type to deserialize into. It must implement theDeserializeOwnedtrait.
§Returns
Ok(T): The deserialized object of typeTif the deserialization is successful.Err(ResultJsonError): An error if the deserialization fails (e.g., invalid JSON format or type mismatch).
Sourcepub fn get_string(&self) -> String
pub fn get_string(&self) -> String
Converts the request to a formatted string representation.
- Returns: A
Stringcontaining formatted request details.
Sourcepub fn get_upgrade_type(&self) -> UpgradeType
pub fn get_upgrade_type(&self) -> UpgradeType
Retrieves the upgrade type from the request headers.
- Returns: The
UpgradeTypeextracted from theUPGRADEheader. If the header is missing or invalid, returns the defaultUpgradeType.
Sourcepub fn is_ws(&self) -> bool
pub fn is_ws(&self) -> bool
Checks whether the WebSocket upgrade is enabled.
- Returns:
trueif the upgrade type is WebSocket; otherwise,false.
Sourcepub fn is_h2c(&self) -> bool
pub fn is_h2c(&self) -> bool
Checks if the current upgrade type is HTTP/2 cleartext (h2c).
-
&self- The current instance (usually a request or context struct). -
Returns
trueif the upgrade type ish2c, otherwisefalse.
Sourcepub fn is_tls(&self) -> bool
pub fn is_tls(&self) -> bool
Checks if the current upgrade type is TLS (any version).
-
&self- The current instance (usually a request or context struct). -
Returns
trueif the upgrade type is anyTlsvariant, otherwisefalse.
Sourcepub fn is_unknown_upgrade(&self) -> bool
pub fn is_unknown_upgrade(&self) -> bool
Checks whether the upgrade type is unknown.
- Returns:
trueif the upgrade type is unknown; otherwise,false.
Sourcepub fn is_http1_1_or_higher(&self) -> bool
pub fn is_http1_1_or_higher(&self) -> bool
Checks if the HTTP version is HTTP/1.1 or higher.
- Returns:
trueif the HTTP version is 1.1 or higher; otherwise,false.
Sourcepub fn is_http0_9(&self) -> bool
pub fn is_http0_9(&self) -> bool
Checks whether the HTTP version is HTTP/0.9.
- Returns:
trueif the version is HTTP/0.9; otherwise,false.
Sourcepub fn is_http1_0(&self) -> bool
pub fn is_http1_0(&self) -> bool
Checks whether the HTTP version is HTTP/1.0.
- Returns:
trueif the version is HTTP/1.0; otherwise,false.
Sourcepub fn is_http1_1(&self) -> bool
pub fn is_http1_1(&self) -> bool
Checks whether the HTTP version is HTTP/1.1.
- Returns:
trueif the version is HTTP/1.1; otherwise,false.
Sourcepub fn is_http2(&self) -> bool
pub fn is_http2(&self) -> bool
Checks whether the HTTP version is HTTP/2.
- Returns:
trueif the version is HTTP/2; otherwise,false.
Sourcepub fn is_http3(&self) -> bool
pub fn is_http3(&self) -> bool
Checks whether the HTTP version is HTTP/3.
- Returns:
trueif the version is HTTP/3; otherwise,false.
Sourcepub fn is_unknown_version(&self) -> bool
pub fn is_unknown_version(&self) -> bool
Checks whether the HTTP version is unknown.
- Returns:
trueif the version is unknown; otherwise,false.
Sourcepub fn is_http(&self) -> bool
pub fn is_http(&self) -> bool
Checks whether the version belongs to the HTTP family.
- Returns:
trueif the version is a valid HTTP version; otherwise,false.
Sourcepub fn is_get(&self) -> bool
pub fn is_get(&self) -> bool
Checks whether the request method is GET.
- Returns:
trueif the method isGET; otherwise,false.
Sourcepub fn is_post(&self) -> bool
pub fn is_post(&self) -> bool
Checks whether the request method is POST.
- Returns:
trueif the method isPOST; otherwise,false.
Sourcepub fn is_put(&self) -> bool
pub fn is_put(&self) -> bool
Checks whether the request method is PUT.
- Returns:
trueif the method isPUT; otherwise,false.
Sourcepub fn is_delete(&self) -> bool
pub fn is_delete(&self) -> bool
Checks whether the request method is DELETE.
- Returns:
trueif the method isDELETE; otherwise,false.
Sourcepub fn is_patch(&self) -> bool
pub fn is_patch(&self) -> bool
Checks whether the request method is PATCH.
- Returns:
trueif the method isPATCH; otherwise,false.
Sourcepub fn is_head(&self) -> bool
pub fn is_head(&self) -> bool
Checks whether the request method is HEAD.
- Returns:
trueif the method isHEAD; otherwise,false.
Sourcepub fn is_options(&self) -> bool
pub fn is_options(&self) -> bool
Checks whether the request method is OPTIONS.
- Returns:
trueif the method isOPTIONS; otherwise,false.
Sourcepub fn is_connect(&self) -> bool
pub fn is_connect(&self) -> bool
Checks whether the request method is CONNECT.
- Returns:
trueif the method isCONNECT; otherwise,false.
Sourcepub fn is_trace(&self) -> bool
pub fn is_trace(&self) -> bool
Checks whether the request method is TRACE.
- Returns:
trueif the method isTRACE; otherwise,false.
Sourcepub fn is_unknown_method(&self) -> bool
pub fn is_unknown_method(&self) -> bool
Checks whether the request method is UNKNOWN.
- Returns:
trueif the method isUNKNOWN; otherwise,false.
Sourcepub fn is_enable_keep_alive(&self) -> bool
pub fn is_enable_keep_alive(&self) -> bool
Determines if keep-alive connection should be enabled for this request.
This function checks the Connection header and HTTP version to determine if keep-alive should be enabled. The logic is as follows:
- If Connection header exists:
- Returns true if header value is “keep-alive”
- Returns false if header value is “close”
- If no Connection header:
- Returns true if HTTP version is 1.1 or higher
- Returns false otherwise
§Returns
bool: true if keep-alive should be enabled, false otherwise