aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authoromagdy7 <omar.professional8777@gmail.com>2024-06-03 20:20:15 +0300
committeromagdy7 <omar.professional8777@gmail.com>2024-06-03 20:20:15 +0300
commit66f3fcdf0fe097e37b9e3dc8d1a984c35b4d34a4 (patch)
tree845bd9ee058e1e02d2eb0004c36a432179585d53 /src/main.rs
parentb542d2e744e8fbd5b0c0eb1d55ce491c37f9419d (diff)
downloadtiny-server-66f3fcdf0fe097e37b9e3dc8d1a984c35b4d34a4.tar.xz
tiny-server-66f3fcdf0fe097e37b9e3dc8d1a984c35b4d34a4.zip
codecrafters submit [skip ci]
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs33
1 files changed, 32 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs
index 0ea01c5..2f61490 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -60,7 +60,9 @@ impl From<&[&str]> for Headers {
fn from(value: &[&str]) -> Self {
let mut header_map = HashMap::new();
for header in value.iter().filter(|val| !val.is_empty()) {
- let (key, val) = header.split_once(':').expect("Should be splitable by :");
+ let (key, val) = header
+ .split_once(": ")
+ .expect("Should be splitable by :<space>");
header_map.insert(key.to_string(), val.to_string());
}
Headers(header_map)
@@ -221,6 +223,35 @@ fn handle_client(mut stream: TcpStream) {
Err(e) => eprintln!("Failed to send response: {}", e),
}
}
+ ("user-agent", _) => {
+ let mut headers = HashMap::new();
+ let user_agent: String =
+ request.headers.unwrap().0.get("User-Agent").unwrap().into();
+ headers
+ .insert("Content-Type".to_string(), "text/plain".to_string());
+ headers.insert(
+ "Content-Length".to_string(),
+ user_agent.len().to_string(),
+ );
+ let body = user_agent;
+ let response: String = Response::new(
+ "1.1".to_string(),
+ StatusCode::Ok,
+ Some(Headers(headers)),
+ Some(body),
+ )
+ .into();
+ dbg!(&response);
+ let response = response.as_bytes();
+
+ match stream.write(response) {
+ Ok(_) => {
+ println!("Response sent successfully");
+ println!("Hello user-agent");
+ }
+ Err(e) => eprintln!("Failed to send response: {}", e),
+ }
+ }
_ => match stream.write(not_found) {
Ok(_) => println!("Response sent successfully"),
Err(e) => eprintln!("Failed to send response: {}", e),