diff --git a/src/main.rs b/src/main.rs index e7a11a9..781d707 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,23 @@ -fn main() { - println!("Hello, world!"); +mod request; +mod response; +mod shared_enums; + +use std::{ + io::{BufRead, BufReader, Write}, + net::TcpListener, +}; + +fn main() -> std::io::Result<()> { + let listener = TcpListener::bind("127.0.0.1:8080")?; + for incoming_stream in listener.incoming() { + let stream = incoming_stream?; + + let mut reader = BufReader::new(&stream); + let mut line = Vec::::new(); + + let mut writer = stream; + writer.write_all("Ok".as_bytes())?; + writer.flush()?; + } + Ok(()) } diff --git a/src/request.rs b/src/request.rs new file mode 100644 index 0000000..8d761c0 --- /dev/null +++ b/src/request.rs @@ -0,0 +1,19 @@ +use crate::shared_enums::ContentType; + +pub struct Request { + first_line: String, + headers: Vec, + data: Vec, +} + +pub enum RequestHeader { + Host(String), + UserAgent(String), + ContentType(ContentType), + Accept((String, String)), + Other(String, String), +} + +impl Request { + fn from_bufreader +} diff --git a/src/response.rs b/src/response.rs new file mode 100644 index 0000000..9f54057 --- /dev/null +++ b/src/response.rs @@ -0,0 +1,17 @@ +use crate::shared_enums::ContentType; + +pub struct Response { + first_line: String, + headers: Vec, + data: Vec, +} + +pub enum ResponseHeader { + ContentLength(u32), + ContentType(ContentType), + CacheControl(CacheControl), +} + +pub enum CacheControl { + NoStore, +} diff --git a/src/shared_enums.rs b/src/shared_enums.rs new file mode 100644 index 0000000..99e924a --- /dev/null +++ b/src/shared_enums.rs @@ -0,0 +1,14 @@ +pub enum ContentType { + Text(TextType), + Aplication(ApplicationType), +} + +pub enum TextType { + Html, + Css, + Javascript, +} + +pub enum ApplicationType { + Json, +}