package netflix.karyon.examples.hellonoss.server.simple; import io.netty.buffer.ByteBuf; import io.reactivex.netty.protocol.http.server.HttpServerRequest; import io.reactivex.netty.protocol.http.server.HttpServerResponse; import io.reactivex.netty.protocol.http.server.RequestHandler; import netflix.karyon.examples.hellonoss.common.health.HealthCheck; import netflix.karyon.transport.http.SimpleUriRouter; import netflix.karyon.transport.http.health.HealthCheckEndpoint; import rx.Observable; /** * A {@link RequestHandler} implementation for this example. * * @author Nitesh Kant */ public class SimpleRouter implements RequestHandler<ByteBuf, ByteBuf> { private final SimpleUriRouter<ByteBuf, ByteBuf> delegate; public SimpleRouter() { final HelloWorldEndpoint endpoint = new HelloWorldEndpoint(); delegate = new SimpleUriRouter<ByteBuf, ByteBuf>(); delegate.addUri("/healthcheck", new HealthCheckEndpoint(new HealthCheck())) .addUri("/hello", new RequestHandler<ByteBuf, ByteBuf>() { @Override public Observable<Void> handle( HttpServerRequest<ByteBuf> request, HttpServerResponse<ByteBuf> response) { return endpoint.sayHello(response); } }) .addUri("/hello/to/*", new RequestHandler<ByteBuf, ByteBuf>() { @Override public Observable<Void> handle(HttpServerRequest<ByteBuf> request, HttpServerResponse<ByteBuf> response) { return endpoint.sayHelloToUser(request, response); } }); } @Override public Observable<Void> handle(HttpServerRequest<ByteBuf> request, HttpServerResponse<ByteBuf> response) { return delegate.handle(request, response); } }