tsukuyomi-server

crates.io Docs.rs Master Doc dependency status Build Status

A general purpose HTTP server based on Hyper and tower-service.

Usage

```rust,norun extern crate futures; extern crate http; extern crate towerservice; extern crate tsukuyomi_server;

fn main() { let newservice = { use tsukuyomiserver::service::http::{RequestBody, Body};

    struct Echo;
    impl tower_service::Service for Echo {
        type Request = http::Request<RequestBody>;
        type Response = http::Response<Body>;
        type Error = tsukuyomi_server::CritError;
        type Future = futures::future::FutureResult<Self::Response, Self::Error>;

        fn poll_ready(&mut self) -> futures::Poll<(), Self::Error> {
            Ok(futures::Async::Ready(()))
        }

        fn call(&mut self, request: Self::Request) -> Self::Future {
            futures::future::ok(
                http::Response::builder()
                    .body("Hello".into())
                    .expect("should be a valid response")
            )
        }
    }

    || Ok::<_, std::io::Error>(Echo)
};

tsukuyomi_server::server(new_service)
    .transport(std::net::SocketAddr::from(([127, 0, 0, 1], 4000)))
    .run_forever()
    .expect("failed to start the server");

} ```

License

MIT license or Apache License, Version 2.0 at your option.