package cf.component; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.handler.codec.http.DefaultFullHttpResponse; import io.netty.handler.codec.http.HttpHeaders; import io.netty.handler.codec.http.HttpMethod; import io.netty.handler.codec.http.HttpRequest; import io.netty.handler.codec.http.HttpResponse; import io.netty.handler.codec.http.HttpResponseStatus; import io.netty.handler.codec.http.HttpVersion; import io.netty.util.CharsetUtil; import cf.component.http.RequestException; import cf.component.http.RequestHandler; import cf.component.http.SimpleHttpServer; import java.net.InetSocketAddress; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @author Mike Heath */ public class TestServer { public static void main(String[] args) { final SimpleHttpServer server = new SimpleHttpServer(new InetSocketAddress(3080)); server.addHandler(Pattern.compile("/"), new RequestHandler() { @Override public HttpResponse handleRequest(HttpRequest request, Matcher uriMatcher, ByteBuf body) throws RequestException { final ByteBuf buffer = Unpooled.copiedBuffer("Hello world, dude", CharsetUtil.UTF_8); final HttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, buffer); response.headers().add(HttpHeaders.Names.CONTENT_TYPE, "text/plain; charset=UTF-8"); return response; } }); // Bind server.addHandler(Pattern.compile("/+gateway/v1/configurations/(.*?)/handles(/(.*))?"), new RequestHandler() { @Override public HttpResponse handleRequest(HttpRequest request, Matcher uriMatcher, ByteBuf body) throws RequestException { if (request.getMethod() == HttpMethod.POST) { System.out.println("Binding service instance " + uriMatcher.group(1)); final ByteBuf buffer = Unpooled.copiedBuffer("{\"service_id\":\"bind_1\",\"configuration\":{\"yourmom\":\"Went to college.\"}, \"credentials\":{\"host\":\"test\",\"port\":1}}", CharsetUtil.UTF_8); final HttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, buffer); response.headers().add(HttpHeaders.Names.CONTENT_TYPE, "application/json; charset=UTF-8"); return response; } throw new RequestException(HttpResponseStatus.NOT_FOUND); } }); // Create and delete server.addHandler(Pattern.compile("/+gateway/v1/configurations(/(.*))?"), new RequestHandler() { @Override public HttpResponse handleRequest(HttpRequest request, Matcher uriMatcher, ByteBuf body) throws RequestException { // TODO Validate auth token if (request.getMethod() == HttpMethod.POST) { System.out.println("Creating service instance"); final ByteBuf buffer = Unpooled.copiedBuffer("{\"service_id\":\"id_1\",\"configuration\":{\"yourmom\":\"Goes to college.\"}, \"credentials\":{}}", CharsetUtil.UTF_8); final HttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, buffer); response.headers().add(HttpHeaders.Names.CONTENT_TYPE, "application/json; charset=UTF-8"); return response; } if (request.getMethod() == HttpMethod.DELETE) { System.out.println("Deleting service " + uriMatcher.group(2)); final ByteBuf buffer = Unpooled.copiedBuffer("{}", CharsetUtil.UTF_8); final HttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, buffer); response.headers().add(HttpHeaders.Names.CONTENT_TYPE, "application/json; charset=UTF-8"); return response; } throw new RequestException(HttpResponseStatus.NOT_FOUND); } }); System.out.println("Listening on port 3080"); } }