@Override public void start() throws Exception { Router router = Router.router(vertx); router.route().handler(BodyHandler.create()); router.route().handler(req -> req.response().putHeader("content-type", "text/html") .end("<html><body><h1>Hello from vert.x!</h1></body></html>")); HttpServer server = vertx.createHttpServer(); server.requestStream() .toFlowable() .map(HttpServerRequest::pause) .onBackpressureDrop(req -> req.response().setStatusCode(503).end()) .observeOn(RxHelper.scheduler(vertx.getDelegate())) .subscribe(req -> { req.resume(); router.accept(req); }); server.rxListen(PORT).subscribe(res -> generateRequests()); }
@Override public void start() throws Exception { HttpServer server = vertx.createHttpServer(); server.requestStream().toFlowable().subscribe(req -> { HttpServerResponse resp = req.response(); String contentType = req.getHeader("Content-Type"); if (contentType != null) { resp.putHeader("Content-Type", contentType); } resp.setChunked(true); req.toFlowable().subscribe( resp::write, err -> {}, resp::end ); }); server.listen(8080); } }
@Override public void start() throws Exception { HttpServer server = vertx.createHttpServer(); server.requestStream().toFlowable().subscribe(req -> { req.response().putHeader("content-type", "application/json").end(new JsonObject().put("time", System.currentTimeMillis()).toString()); }); server.listen(8080); } }
/** * Send back a response with status 204 No Content. * * @param context routing context */ protected void noContent(RoutingContext context) { context.response().setStatusCode(204).end(); }
private void sendNotFound(HttpServerResponse serverResponse) { // Send a NOT_FOUND HTTP status code (404) serverResponse.setStatusCode(HttpStatusCode.NOT_FOUND_404); String message = environment.getProperty("http.errors[404].message", ""); serverResponse.headers().set(HttpHeaders.CONTENT_LENGTH, Integer.toString(message.length())); serverResponse.headers().set(HttpHeaders.CONTENT_TYPE, "text/plain"); serverResponse.headers().set(HttpHeaders.CONNECTION, HttpHeadersValues.CONNECTION_CLOSE); serverResponse.write(Buffer.buffer(message)); serverResponse.end(); }
private void routeSafe(HttpServerRequest req, Router router) { try { router.accept(req); } catch (IllegalArgumentException ex) { LOGGER.warn("Problem decoding Query String ", ex); req.response() .setStatusCode(BAD_REQUEST.code()) .setStatusMessage(BAD_REQUEST.reasonPhrase()) .end("Invalid characters in Query Parameter"); } } }
@Test public void testGet() { int times = 5; waitFor(times); HttpServer server = vertx.createHttpServer(new HttpServerOptions().setPort(8080)); server.requestStream().handler(req -> req.response().setChunked(true).end("some_content")); try { server.listen(ar -> { client = WebClient.wrap(vertx.createHttpClient(new HttpClientOptions())); Single<HttpResponse<Buffer>> single = client .get(8080, "localhost", "/the_uri") .as(BodyCodec.buffer()) .rxSend(); for (int i = 0; i < times; i++) { single.subscribe(resp -> { Buffer body = resp.body(); assertEquals("some_content", body.toString("UTF-8")); complete(); }, this::fail); } }); await(); } finally { server.close(); } }
/** * Send back a response with status 200 Ok. * * @param context routing context */ protected void ok(RoutingContext context) { context.response().end(); }
private void writeHeaders(HttpServerResponse response, MultiMap headers) { headers.names().stream() .filter(this::headerFilter) .forEach( name -> headers .getAll(name) .forEach(value -> response.putHeader(name, value)) ); }
@BeforeEach public void setUp() { tested = KnotxRepositoryHandler.create(vertx, configuration); when(httpServerResponse.setStatusCode(anyInt())).thenReturn(httpServerResponse); }
private void writeHeaders(final HttpServerResponse response, final ClientResponse clientResponse) { clientResponse.getHeaders().names().stream() .filter(this::headerFilter) .forEach( name -> clientResponse.getHeaders() .getAll(name) .forEach(value -> response.headers().add(name, value)) ); response.headers().remove(HttpHeaders.CONTENT_LENGTH.toString()); }
/** * Send back a response with status 201 Created. * * @param context routing context */ protected void created(RoutingContext context) { context.response().setStatusCode(201).end(); }
@Override public void start() throws Exception { HttpServer server = vertx.createHttpServer(); server.requestStream().toFlowable().subscribe(req -> { req.response().putHeader("content-type", "application/json").end(new JsonObject().put("time", System.currentTimeMillis()).toString()); }); server.listen(8080); } }
private void sendNotFound(HttpServerResponse serverResponse) { // Send a NOT_FOUND HTTP status code (404) serverResponse.setStatusCode(HttpStatusCode.NOT_FOUND_404); String message = environment.getProperty("http.errors[404].message", ""); serverResponse.headers().set(HttpHeaders.CONTENT_LENGTH, Integer.toString(message.length())); serverResponse.headers().set(HttpHeaders.CONTENT_TYPE, "text/plain"); serverResponse.headers().set(HttpHeaders.CONNECTION, HttpHeadersValues.CONNECTION_CLOSE); serverResponse.write(Buffer.buffer(message)); serverResponse.end(); }
private void routeSafe(HttpServerRequest req, Router router) { try { router.accept(req); } catch (IllegalArgumentException ex) { LOGGER.warn("Problem decoding Query String ", ex); req.response() .setStatusCode(BAD_REQUEST.code()) .setStatusMessage(BAD_REQUEST.reasonPhrase()) .end("Invalid characters in Query Parameter"); } } }
private void writeHeaders(HttpServerResponse response, MultiMap headers) { headers.names().stream() .filter(this::headerFilter) .forEach( name -> headers .getAll(name) .forEach(value -> response.putHeader(name, value)) ); }
private void writeHeaders(final HttpServerResponse response, final ClientResponse clientResponse) { clientResponse.getHeaders().names().stream() .filter(this::headerFilter) .forEach( name -> clientResponse.getHeaders() .getAll(name) .forEach(value -> response.headers().add(name, value)) ); response.headers().remove(HttpHeaders.CONTENT_LENGTH.toString()); }
private void doRedirect(HttpServerResponse response, String url) { response.putHeader(HttpHeaders.LOCATION, url).setStatusCode(302).end(); } }
static Action noContent(RoutingContext rc) { return () -> rc.response().setStatusCode(204).end(); }