A general purpose HTTP server based on Hyper and tower-service.
extern crate tsukuyomi_server;
use std::net::SocketAddr;
fn main() {
let new_service = {
use tsukuyomi_server::CritError;
use tsukuyomi_server::service::Service;
use tsukuyomi_server::service::http::{RequestBody, Body};
use tsukuyomi_server::vendor::futures::{future, Poll, Async};
use tsukuyomi_server::vendor::http::{Request, Response};
struct Echo;
impl Service for Echo {
type Request = Request<RequestBody>;
type Response = Response<Body>;
type Error = CritError;
type Future = future::FutureResult<Self::Response, Self::Error>;
fn poll_ready(&mut self) -> Poll<(), Self::Error> {
Ok(Async::Ready(()))
}
fn call(&mut self, _request: Self::Request) -> Self::Future {
future::ok(
Response::builder()
.body("Hello".into())
.expect("should be a valid response")
)
}
}
|| Ok::<_, CritError>(Echo)
};
tsukuyomi_server::server(new_service)
.transport(SocketAddr::from(([127, 0, 0, 1], 4000)))
.run_forever()
.expect("failed to start the server");
}
MIT license or Apache License, Version 2.0 at your option.