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(-)
@@ -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",
@@ -14,4 +14,5 @@
env_logger = "0.7"
bytes = "0.5"
httparse = "1.3"
clap = "2.33"
clap = "2.33"
derive_more = "0.99"
@@ -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;
}
}