From d286adadc98816c7bbae2aff9ed6d682d5585665 Mon Sep 17 00:00:00 2001 From: _ <_@_> Date: Tue, 27 Oct 2020 20:39:02 -0500 Subject: [PATCH] :sparkle: You can now actually request different files --- src/bin/relay.rs | 2 +- src/bin/server.rs | 30 +++++++++++++----------------- src/http_serde.rs | 3 +-- todo.md | 1 - 4 files changed, 15 insertions(+), 21 deletions(-) diff --git a/src/bin/relay.rs b/src/bin/relay.rs index 39e36f3..a940688 100644 --- a/src/bin/relay.rs +++ b/src/bin/relay.rs @@ -103,7 +103,7 @@ async fn handle_http_response ( if ! watchers.wake_one (Message::HttpResponseResponseStream (body), &req_id) { println! ("Step 8 (bad thing)"); - return status_reply (StatusCode::BAD_REQUEST, "A bad thing happened.\n"); + status_reply (StatusCode::BAD_REQUEST, "A bad thing happened.\n") } else { println! ("Step 8"); diff --git a/src/bin/server.rs b/src/bin/server.rs index b24230c..ebad9e6 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -1,6 +1,7 @@ use std::{ convert::Infallible, error::Error, + path::PathBuf, sync::Arc, time::Duration, }; @@ -18,7 +19,6 @@ use tokio::{ io::AsyncReadExt, sync::mpsc::{ channel, - Receiver, }, time::delay_for, }; @@ -70,26 +70,25 @@ async fn main () -> Result <(), Box > { _ => continue, }; - println! ("Client requested {}", parts.uri); + let (req_id, uri) = (parts.id, parts.uri); + + println! ("Client requested {}", uri); println! ("Step 4/5"); println! ("Step 6"); let client = client.clone (); tokio::spawn (async move { - let resp_req = Uri::builder () - .scheme ("http") - .authority ("127.0.0.1:4000") - .path_and_query ("/listen/alien_wildlands") - .build ().unwrap (); - let (tx, rx) = channel (2); //let rx: Receiver > = rx; tokio::spawn (async move { - let path = "/home/user/pictures/bzqcChY.jpg"; - let path = "/home/user/videos/Decearing Egg.webm"; - let path = "/home/user/projects/2020/ptth/README.md"; + //let path = "/home/user/projects/2020/ptth/README.md"; + + let mut path = PathBuf::from ("/home/user"); + path.push (&uri [1..]); + + println! ("Opening file {:?}", path); let mut f = File::open (path).await.unwrap (); let mut tx = tx; @@ -114,14 +113,11 @@ async fn main () -> Result <(), Box > { } }); - let resp_req = client.post (&format! ("http://127.0.0.1:4000/http_response/{}", parts.id)).body (Body::wrap_stream (rx)); + let resp_req = client.post (&format! ("http://127.0.0.1:4000/http_response/{}", req_id)).body (Body::wrap_stream (rx)); println! ("Step 6"); - match resp_req.send ().await { - Err (e) => { - println! ("Err: {:?}", e); - }, - Ok (_) => (), + if let Err (e) = resp_req.send ().await { + println! ("Err: {:?}", e); } }); } diff --git a/src/http_serde.rs b/src/http_serde.rs index 953cd49..d28e1f0 100644 --- a/src/http_serde.rs +++ b/src/http_serde.rs @@ -1,7 +1,6 @@ use std::{ collections::*, - convert::{TryFrom, TryInto}, - iter::FromIterator, + convert::{TryFrom}, }; use serde::{Deserialize, Serialize}; diff --git a/todo.md b/todo.md index 006a766..68adf6a 100644 --- a/todo.md +++ b/todo.md @@ -1,3 +1,2 @@ - Byte range request header -- Actually pass request URL through relay - Content-Length response header