use crate::utils::error::Error;
use bytes::Bytes;
use http::{Extensions, HeaderMap, Method, Uri, Version};
use std::fmt;
#[derive(Debug, Clone)]
pub struct Request {
pub method: Method,
pub uri: Uri,
pub version: Version,
pub headers: HeaderMap,
pub body: Bytes,
pub extensions: Extensions,
}
impl Request {
pub fn json(&self) -> Result<serde_json::Value, Error> {
serde_json::from_slice(&self.body).map_err(|e| {
Error::ParseError(format!("Failed to parse JSON body: {}", e))
})
}
}
impl fmt::Display for Request {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(
f,
"{} for {}: Body Data: {} ",
self.method,
self.uri,
String::from_utf8_lossy(&self.body)
)
}
}