private static LiveHttpRequest addUserAgent(String userAgent, LiveHttpRequest request) { if (userAgent != null) { return request.newBuilder() .header(USER_AGENT, userAgent) .build(); } else { return request; } }
@Override public Optional<HttpHandler> route(LiveHttpRequest request, HttpInterceptor.Context ignore) { String path = request.path(); return routes.entrySet().stream() .filter(entry -> path.startsWith(entry.getKey())) .findFirst() .map(Map.Entry::getValue); }
MetricRequest(LiveHttpRequest request) { this.root = metricName(request.path()).orElse(null); this.searchTerm = request.queryParam(FILTER_PARAM).orElse(null); this.prettyPrint = request.queryParam(PRETTY_PRINT_PARAM).isPresent(); this.prefix = root + "."; }
private static LiveHttpRequest removeBadContentLength(LiveHttpRequest request) { Optional<Long> contentLength = request.contentLength(); if (contentLength.isPresent() && request.chunked()) { return request.newBuilder() .removeHeader(CONTENT_LENGTH) .build(); } return request; } }
@Test public void createsARequestWithDefaultValues() { LiveHttpRequest request = get("/index").build(); assertThat(request.version(), is(HTTP_1_1)); assertThat(request.url().toString(), is("/index")); assertThat(request.path(), is("/index")); assertThat(request.id(), is(notNullValue())); assertThat(request.cookies(), is(emptyIterable())); assertThat(request.headers(), is(emptyIterable())); assertThat(request.headers("any"), is(emptyIterable())); assertThat(bytesToString(request.body()), is("")); assertThat(request.cookie("any"), isAbsent()); assertThat(request.header("any"), isAbsent()); assertThat(request.keepAlive(), is(true)); assertThat(request.method(), is(GET)); assertThat(request.queryParam("any"), isAbsent()); assertThat(request.queryParams("any"), is(emptyIterable())); }
@Test public void createsRequestBuilderFromRequest() { LiveHttpRequest originalRequest = get("/home") .cookies(requestCookie("fred", "blogs")) .header("some", "header") .build(); LiveHttpRequest clonedRequest = originalRequest.newBuilder().build(); assertThat(clonedRequest.method(), is(originalRequest.method())); assertThat(clonedRequest.url(), is(originalRequest.url())); assertThat(clonedRequest.headers().toString(), is(originalRequest.headers().toString())); assertThat(clonedRequest.body(), is(originalRequest.body())); }
@Test public void convertsToStreamingHttpRequest() throws Exception { HttpRequest fullRequest = new HttpRequest.Builder(POST, "/foo/bar").body("foobar", UTF_8) .version(HTTP_1_1) .header("HeaderName", "HeaderValue") .cookies(requestCookie("CookieName", "CookieValue")) .build(); LiveHttpRequest streaming = fullRequest.stream(); assertThat(streaming.method(), is(HttpMethod.POST)); assertThat(streaming.url(), is(url("/foo/bar").build())); assertThat(streaming.version(), is(HTTP_1_1)); assertThat(streaming.headers(), containsInAnyOrder( header("Content-Length", "6"), header("HeaderName", "HeaderValue"), header("Cookie", "CookieName=CookieValue"))); assertThat(streaming.cookies(), contains(requestCookie("CookieName", "CookieValue"))); StepVerifier.create(streaming.aggregate(0x10000).map(it -> it.bodyAs(UTF_8))) .expectNext("foobar") .verifyComplete(); }
private static Object id(LiveHttpRequest request) { return request != null ? request.id() : null; }
@Test public void transformsByAddingCookiesList() { LiveHttpRequest request = LiveHttpRequest.get("/").build() .newBuilder() .addCookies(ImmutableList.of(requestCookie("cookie", "xyz202"))) .build(); assertEquals(request.cookie("cookie"), Optional.of(requestCookie("cookie", "xyz202"))); }
@Test public void canModifyPreviouslyCreatedRequest() { LiveHttpRequest request = get("/foo") .header("remove", "remove") .build(); LiveHttpRequest newRequest = request.newBuilder() .uri("/home") .header("remove", "notanymore") .build(); assertThat(newRequest.url().path(), is("/home")); assertThat(newRequest.headers(), hasItem(header("remove", "notanymore"))); }
@Test public void transformerAddsHeader() { LiveHttpRequest request = LiveHttpRequest.get("/").build() .newBuilder() .addHeader("x", "y") .build(); assertEquals(request.header("x"), Optional.of("y")); }
private static Info information(LiveHttpRequest request, Origin origin, boolean longFormatEnabled) { Info info = new Info() .add("method", request.method()) .add("uri", request.url()) .add("origin", origin != null ? origin.hostAndPortString() : "N/A"); if (longFormatEnabled) { info.add("headers", request.headers()); } return info; }
private FlowControllingHttpContentProducer createProducer(ChannelHandlerContext ctx, LiveHttpRequest request) { String requestPrefix = request != null ? format("Request(method=%s, url=%s, id=%s)", request.method(), request.url(), request.id()) : "Request NA"; String loggingPrefix = format("%s -> %s", ctx.channel().remoteAddress(), ctx.channel().localAddress()); return new FlowControllingHttpContentProducer( () -> ctx.channel().read(), () -> { ctx.channel().config().setAutoRead(true); emitResponseCompleted(); }, this::emitResponseError, () -> scheduleResourcesTearDown(ctx), format("%s, %s", loggingPrefix, requestPrefix), origin); }
@Test public void transformsUri() { LiveHttpRequest request = LiveHttpRequest.get("/x").build() .newBuilder() .uri("/y") .build(); assertEquals(request.url().path(), "/y"); }
/** * Rewrites the URL of the request according to the rewrite rules. * * @param request a request * @return a rewritten request */ public LiveHttpRequest rewrite(LiveHttpRequest request) { String path = request.path(); String newPath = newPath(path); if (!Objects.equals(newPath, path)) { Url newUrl = request.url().newBuilder().path(newPath).build(); return request.newBuilder() .url(newUrl) .build(); } return request; }
@Test public void canRemoveAHeader() { Object hdValue = "b"; LiveHttpRequest request = get("/") .header("a", hdValue) .addHeader("c", hdValue) .build(); LiveHttpRequest shouldRemoveHeader = request.newBuilder() .removeHeader("c") .build(); assertThat(shouldRemoveHeader.headers(), contains(header("a", "b"))); }
private LiveHttpRequest enrich(LiveHttpRequest request, Context context) { LiveHttpRequest.Transformer builder = request.newBuilder(); xForwardedFor(request, context) .ifPresent(headerValue -> builder.header(X_FORWARDED_FOR, headerValue)); return builder .header(requestIdHeaderName, request.id()) .header(X_FORWARDED_PROTO, xForwardedProto(request, context.isSecure())) .build(); }
@Test public void transformsId() { LiveHttpRequest request = LiveHttpRequest.get("/").id("abc").build() .newBuilder() .id("xyz") .build(); assertEquals(request.id(), "xyz"); }
private String xHcomPluginsHeader(LiveHttpRequest message) { return message.headers().get(X_HCOM_PLUGINS_HEADER).orElse("") .concat(" test-plugin-a") .trim(); }