private static LiveHttpRequest removeHopByHopHeaders(LiveHttpRequest request) { LiveHttpRequest.Transformer newRequest = request.newBuilder(); request.header(CONNECTION).ifPresent(connection -> { for (String connectToken : connection.split(",")) { String header = connectToken.trim(); newRequest.removeHeader(header); } newRequest.removeHeader(CONNECTION); }); newRequest .removeHeader(KEEP_ALIVE) .removeHeader(PROXY_AUTHENTICATE) .removeHeader(PROXY_AUTHORIZATION) .removeHeader(TE) .removeHeader(TRAILER) .removeHeader(UPGRADE); return newRequest.build(); } }
@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"))); }
@Override public Eventual<LiveHttpResponse> intercept(LiveHttpRequest request, Chain chain) { String header = xHcomPluginsHeader(request); final String configPath = environment.pluginConfig(String.class); String pluginsList = environment.configuration().get("plugins.active").get(); LiveHttpRequest newRequest = request.newBuilder() .header(X_HCOM_PLUGINS_HEADER, header) .header(X_HCOM_PLUGINS_CONFIGURATION_PATH, configPath) .header(X_HCOM_PLUGINS_LIST, pluginsList) .header("X-Hcom-Styx-Started", styxStarted) .header("X-Hcom-Styx-Stopped", styxStopped) .build(); Function<ByteBuf, String> byteBufStringFunction = byteBuf -> byteBuf.toString(Charsets.UTF_8); return chain.proceed(newRequest) .flatMap(response -> response.aggregate(1 * 1024 * 1024)) .map(response -> response.newBuilder() .header(X_HCOM_PLUGINS_HEADER, header) .header(X_HCOM_PLUGINS_CONFIGURATION_PATH, configPath) .header(X_HCOM_PLUGINS_LIST, pluginsList) .header("X-Hcom-Styx-Started", styxStarted) .header("X-Hcom-Styx-Stopped", styxStopped) .build()) .map(HttpResponse::stream); }
/** * 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 transformsHeaders() { LiveHttpRequest request = LiveHttpRequest.get("/").headers( new HttpHeaders.Builder() .add("x", "y") .build()) .build() .newBuilder() .headers( new HttpHeaders.Builder() .add("a", "b") .build()) .build(); assertThat(request.header("x"), is(Optional.empty())); assertThat(request.header("a"), is(Optional.of("b"))); }
@Test public void transformsCookiesViaList() { LiveHttpRequest request = LiveHttpRequest.get("/").addCookies(requestCookie("cookie", "xyz010")).build() .newBuilder() .cookies(ImmutableList.of(requestCookie("cookie", "xyz202"))) .build(); assertEquals(request.cookie("cookie"), Optional.of(requestCookie("cookie", "xyz202"))); }
@Override public Eventual<LiveHttpResponse> intercept(LiveHttpRequest request, Chain chain) { return request.aggregate(config.maxContentLength()) .flatMap(fullHttpRequest -> Eventual.from(asyncOperation(config.delayMillis()))) .map(outcome -> request.newBuilder().header("X-Outcome", outcome.result())) .flatMap(x -> chain.proceed(request)); } }
@Test public void transformsByRemovingCookieList() { LiveHttpRequest request = LiveHttpRequest.get("/").addCookies(requestCookie("cookie", "xyz202")).build() .newBuilder() .removeCookies(ImmutableList.of("cookie")) .build(); assertEquals(request.cookie("cookie"), Optional.empty()); }
@Test public void transformsCookies() { LiveHttpRequest request = LiveHttpRequest.get("/").addCookies(requestCookie("cookie", "xyz010")).build() .newBuilder() .cookies(requestCookie("cookie", "xyz202")) .build(); assertEquals(request.cookie("cookie"), Optional.of(requestCookie("cookie", "xyz202"))); }
@Test public void transformsByRemovingCookies() { LiveHttpRequest request = LiveHttpRequest.get("/").addCookies(requestCookie("cookie", "xyz202")).build() .newBuilder() .removeCookies("cookie") .build(); assertEquals(request.cookie("cookie"), Optional.empty()); }
@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())); }