// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license. // Adapted from https://github.com/hyperium/hyper/blob/master/examples/hello.rs #![deny(warnings)] use std::convert::Infallible; use std::env; use std::error::Error; use hyper::service::{make_service_fn, service_fn}; use hyper::{Body, Response, Server}; type Just = Result; #[tokio::main] async fn main() -> Result<(), Box> { let mut port: u16 = 4544; if let Some(custom_port) = env::args().nth(1) { port = custom_port.parse::().unwrap(); } let addr = ([127, 0, 0, 1], port).into(); // For every connection, we must make a `Service` to handle all // incoming HTTP requests on said connection. let new_service = make_service_fn(|_| { // This is the `Service` that will handle the connection. // `service_fn` is a helper to convert a function that // returns a Response into a `Service`. async { Just::Ok(service_fn(|_req| { async { Just::Ok(Response::new(Body::from(&b"Hello World!"[..]))) } })) } }); let server = Server::bind(&addr).tcp_nodelay(true).serve(new_service); println!("Listening on http://{}", addr); Ok(server.await?) }