From 07f8985f1981601941793d8ed833f05032aefe36 Mon Sep 17 00:00:00 2001 From: maxstrb Date: Sat, 4 Oct 2025 23:03:19 +0200 Subject: [PATCH] creating structs, enums, figuring out networking rules --- src/main.rs | 24 ++++++++++++++++++++++-- src/request.rs | 19 +++++++++++++++++++ src/response.rs | 17 +++++++++++++++++ src/shared_enums.rs | 14 ++++++++++++++ 4 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 src/request.rs create mode 100644 src/response.rs create mode 100644 src/shared_enums.rs 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, +}