added first basic http_server component
This commit is contained in:
parent
d7a1a46db8
commit
744283e494
2 changed files with 39 additions and 1 deletions
|
|
@ -1,3 +1,4 @@
|
|||
use crate::http_server;
|
||||
use crate::receiver;
|
||||
use crate::sender;
|
||||
use clap::{Parser, Subcommand};
|
||||
|
|
@ -79,7 +80,9 @@ impl Args {
|
|||
let transfer_name = name.as_deref().unwrap_or("None");
|
||||
receiver::download_info(transfer_name).await?
|
||||
}
|
||||
Some(Commands::Serve { port }) => {}
|
||||
Some(Commands::Serve { port }) => {
|
||||
http_server::start_server().await;
|
||||
}
|
||||
Some(Commands::Config {
|
||||
path,
|
||||
show,
|
||||
|
|
|
|||
|
|
@ -0,0 +1,35 @@
|
|||
use std::convert::Infallible;
|
||||
use std::net::SocketAddr;
|
||||
|
||||
use http_body_util::Full;
|
||||
use hyper::body::Bytes;
|
||||
use hyper::server::conn::http1;
|
||||
use hyper::service::service_fn;
|
||||
use hyper::{Request, Response};
|
||||
use hyper_util::rt::TokioIo;
|
||||
use tokio::net::TcpListener;
|
||||
|
||||
pub async fn hello(_: Request<hyper::body::Incoming>) -> Result<Response<Full<Bytes>>, Infallible> {
|
||||
Ok(Response::new(Full::new(Bytes::from("Hello, World!"))))
|
||||
}
|
||||
|
||||
pub async fn start_server() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
|
||||
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
|
||||
|
||||
let listener = TcpListener::bind(addr).await?;
|
||||
|
||||
loop {
|
||||
let (stream, _) = listener.accept().await?;
|
||||
|
||||
let io = TokioIo::new(stream);
|
||||
|
||||
tokio::task::spawn(async move {
|
||||
if let Err(err) = http1::Builder::new()
|
||||
.serve_connection(io, service_fn(hello))
|
||||
.await
|
||||
{
|
||||
eprintln!("Error serving connection: {:?}", err);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue