From 5624b2da49930d04a050849e0b0db42fd94480f8 Mon Sep 17 00:00:00 2001 From: Jordan Doyle Date: Sun, 19 Jul 2020 22:16:23 +0100 Subject: [PATCH] Apply clippy lints --- 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> 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(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; } } -- rgit 0.1.3