🏡 index : ~doyle/scrs.git

author Jordan Doyle <jordan@doyle.la> 2020-07-19 22:16:23.0 +01:00:00
committer Jordan Doyle <jordan@doyle.la> 2020-07-19 22:16:23.0 +01:00:00
commit
5624b2da49930d04a050849e0b0db42fd94480f8 [patch]
tree
ebee65722c9ea9c23153cc76ffa6f56b3b210688
parent
50644e84a00242bd89df736f566a51626f7a4fe9
download
5624b2da49930d04a050849e0b0db42fd94480f8.tar.gz

Apply clippy lints



Diff

 scrs-serve/Cargo.lock  | 12 ++++++++++++
 scrs-serve/Cargo.toml  |  3 ++-
 scrs-serve/src/main.rs | 42 ++++++++++++++++++++++++++++++++----------
 3 files changed, 42 insertions(+), 15 deletions(-)

diff --git a/scrs-serve/Cargo.lock b/scrs-serve/Cargo.lock
index 9b7e688..a14f6dc 100644
--- a/scrs-serve/Cargo.lock
+++ a/scrs-serve/Cargo.lock
@@ -80,6 +80,17 @@
]

[[package]]
name = "derive_more"
version = "0.99.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "298998b1cf6b5b2c8a7b023dfd45821825ce3ba8a8af55c921a0e734e4653f76"
dependencies = [
 "proc-macro2",
 "quote",
 "syn",
]

[[package]]
name = "env_logger"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -486,6 +497,7 @@
 "bus_queue",
 "bytes",
 "clap",
 "derive_more",
 "env_logger",
 "futures",
 "http",
diff --git a/scrs-serve/Cargo.toml b/scrs-serve/Cargo.toml
index 4cae4ff..b7516cd 100644
--- a/scrs-serve/Cargo.toml
+++ a/scrs-serve/Cargo.toml
@@ -14,4 +14,5 @@
env_logger = "0.7"
bytes = "0.5"
httparse = "1.3"
clap = "2.33"
clap = "2.33"
derive_more = "0.99"
diff --git a/scrs-serve/src/main.rs b/scrs-serve/src/main.rs
index 4dc82e8..66de1a8 100644
--- a/scrs-serve/src/main.rs
+++ a/scrs-serve/src/main.rs
@@ -1,14 +1,39 @@
#![deny(clippy::pedantic)]
#![allow(clippy::used_underscore_binding)]

use bus_queue::flavors::arc_swap::{bounded, Publisher, Subscriber};
use bytes::Bytes;
use derive_more::Deref;
use futures::{SinkExt, StreamExt};
use tokio::sync::Mutex;

use tokio::io::{AsyncReadExt, AsyncWriteExt};
use tokio::net::TcpStream;
use tokio::sync::Mutex;

use std::convert::TryFrom;
use std::net::SocketAddr;
use std::sync::Arc;

#[derive(Debug, Deref)]
struct Request(http::Request<()>);

impl<'a, 'b: 'a> From<httparse::Request<'a, 'b>> for Request {
    fn from(parsed: httparse::Request<'a, 'b>) -> Self {
        let mut req = http::Request::builder()
            .version(http::Version::HTTP_11)
            .method(parsed.method.unwrap())
            .uri(parsed.path.unwrap());

        for header in parsed.headers {
            req.headers_mut().unwrap().insert(
                http::header::HeaderName::from_bytes(header.name.as_bytes()).unwrap(),
                http::HeaderValue::try_from(header.value).unwrap(),
            );
        }

        Self(req.body(()).unwrap())
    }
}

async fn write_response<W: tokio::io::AsyncWrite + Unpin>(mut writer: W, resp: http::Response<()>) {
    writer
@@ -55,18 +80,7 @@
        let header_buffer = buffer.split().freeze();
        parsed.parse(&header_buffer[..]).unwrap();

        let mut req = http::Request::builder()
            .version(http::Version::HTTP_11)
            .method(parsed.method.unwrap())
            .uri(parsed.path.unwrap());
        for header in parsed.headers.as_ref() {
            println!("parsing: {}", header.name);
            req.headers_mut().unwrap().insert(
                http::header::HeaderName::from_bytes(header.name.as_bytes()).unwrap(),
                http::HeaderValue::try_from(header.value).unwrap(),
            );
        }
        req.body(()).unwrap()
        Request::from(parsed)
    };

    let resp = http::Response::builder()
@@ -87,7 +101,7 @@

            loop {
                if let Some(v) = subscriber.next().await {
                    if let Err(_) = stream.write_all(v.as_ref()).await {
                    if stream.write_all(v.as_ref()).await.is_err() {
                        break;
                    }
                }