tsukuyomi-server 0.1.2

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

tsukuyomi-server

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

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

Usage

extern crate futures;
extern crate http;
extern crate tower_service;
extern crate tsukuyomi_server;

fn main() {
    let new_service = {
        use tsukuyomi_server::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.