diff --git a/core/http/src/handlers/handlers.rs b/core/http/src/handlers/handlers.rs index 0f724cd86990039c4a096f43efb76a053e3f13f2..17812fc16ccef1b1b0c42edfc231c4626620cf29 100755 --- a/core/http/src/handlers/handlers.rs +++ b/core/http/src/handlers/handlers.rs @@ -10,7 +10,7 @@ use crate::handling::{ }; use crate::setup::MountPoint; -static MAX_HTTPMESSAGE_SIZE: u16 = 4196; +static MAX_HTTP_MESSAGE_SIZE: u16 = 4196; pub async fn handle_connection(mut stream: TcpStream, mountpoints: Vec<MountPoint<'_>>) { let mut buf_reader = BufReader::new(&mut stream); @@ -88,7 +88,7 @@ pub async fn handle_connection(mut stream: TcpStream, mountpoints: Vec<MountPoin 0 }; if length != 0 { - let mut buffer = vec![0u8; MAX_HTTPMESSAGE_SIZE.into()]; + let mut buffer = vec![0u8; MAX_HTTP_MESSAGE_SIZE.into()]; let read = buf_reader.read(&mut buffer).await.unwrap(); if read != length { len_not_defined(stream, Status::LengthRequired).await; diff --git a/core/http/src/handling/request.rs b/core/http/src/handling/request.rs index ff4db83ed1bee70488bae7c4f82ef6b46b0088d9..171798a2f9fed838a2e83d47b415a0a9abc9f861 100644 --- a/core/http/src/handling/request.rs +++ b/core/http/src/handling/request.rs @@ -2,8 +2,6 @@ use std::{collections::HashMap, error::Error, fmt::Display}; -use tokio::io::BufReader; - use crate::utils::mime::mime_enum::Mime; static TWO_NEWLINES: u8 = 3; @@ -13,7 +11,27 @@ use super::{ routes::{Data, Uri}, }; +pub trait FromRequest: Send { + fn get_data(&self) -> &Self; + fn set_data(&mut self, data: &Self); + fn append(&mut self, data: &Self); +} + +impl FromRequest for Vec<u8> { + fn get_data(&self) -> &Self { + &self + } + + fn set_data(&mut self, data: &Self) { + *self = data.to_vec(); + } + fn append(&mut self, data: &Self) { + self.extend_from_slice(data); + } +} + type HeaderMap = Vec<String>; + #[derive(Clone)] pub struct Request<'a> { pub uri: Uri<'a>, @@ -203,7 +221,7 @@ impl Request<'_> { let end_boundary = format!("{temp_bound}--\r").as_bytes().to_owned(); temp_bound.push('\r'); let boundary = temp_bound.as_bytes(); - Request::get_multipart(data, boundary, &end_boundary, &mut keymap); + Request::get_multipart_data(data, boundary, &end_boundary, &mut keymap); } _ => { return Err(ParseFormError { @@ -213,15 +231,6 @@ impl Request<'_> { }; Ok(keymap) } - fn decode_multipart<'a>( - data: &Data, - keys: &[&'a str], - ) -> HashMap<String, Result<Vec<u8>, ParseFormError>> { - let mut data = data.buffer.as_ref(); - let mut buf_reader = BufReader::new(&mut data); - let mut http_request: Vec<String> = Vec::with_capacity(2); - todo!() - } fn get_multipart_data( data: &[u8], boundary: &[u8],