feather_runtime/http/
request.rs1use crate::utils::error::Error;
2use bytes::Bytes;
3use http::{Extensions, HeaderMap, Method, Uri, Version};
4use std::fmt;
5
6
7#[derive(Debug, Clone)]
8pub struct HttpRequest {
9 pub method: Method,
12 pub uri: Uri,
14 pub version: Version,
16 pub headers: HeaderMap,
18 pub body: Bytes, pub extensions: Extensions, }
23
24impl HttpRequest {
25 pub fn json(&self) -> Result<serde_json::Value, Error> {
28 serde_json::from_slice(&self.body).map_err(|e| {
29 Error::ParseError(format!("Failed to parse JSON body: {}", e))
30 })
31 }
32}
33
34impl fmt::Display for HttpRequest {
35 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
36 write!(
37 f,
38 "{} for {}: Body Data: {} ",
39 self.method,
40 self.uri,
41 String::from_utf8_lossy(&self.body)
42 )
43 }
44}