/** * Decodes the "Cookie" header in this request and returns the specified cookie. * * @param name cookie name * @return an optional cookie */ public Optional<RequestCookie> cookie(String name) { return cookies().stream() .filter(cookie -> cookie.name().equals(name)) .findFirst(); }
@VisibleForTesting static DefaultHttpRequest toNettyRequest(HttpRequest request) { DefaultHttpRequest nettyRequest = new DefaultHttpRequest(request.version(), request.method(), request.url().toString(), false); request.headers().forEach((name, value) -> nettyRequest.headers().add(name, value)); Cookie[] cookies = request.cookies().stream() .map(HttpRequestOperation::styxCookieToNettyCookie) .toArray(Cookie[]::new); if (cookies.length > 0) { nettyRequest.headers().set(COOKIE, ClientCookieEncoder.LAX.encode(cookies)); } return nettyRequest; }
@Test public void extractsEmptyIterableIfCookieHeaderNotSet() { HttpRequest request = get("/").build(); assertThat(request.cookies(), is(emptyIterable())); }
@Test public void createsARequestWithDefaultValues() { HttpRequest 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(request.body().length, is(0)); 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 addsCookies() { HttpRequest request = HttpRequest.get("/") .addCookies(requestCookie("x", "x1"), requestCookie("y", "y1")) .build(); assertThat(request.cookies(), containsInAnyOrder(requestCookie("x", "x1"), requestCookie("y", "y1"))); }
public Builder(HttpRequest request, byte[] body) { this.id = request.id(); this.method = httpMethod(request.method().name()); this.clientAddress = request.clientAddress(); this.url = request.url(); this.secure = request.isSecure(); this.version = httpVersion(request.version().toString()); this.headers = request.headers().newBuilder(); this.body = body; this.cookies = new ArrayList<>(request.cookies()); }
public Builder(HttpRequest request, Observable<ByteBuf> body) { this.id = request.id(); this.method = httpMethod(request.method().name()); this.clientAddress = request.clientAddress(); this.url = request.url(); this.secure = request.isSecure(); this.version = httpVersion(request.version().toString()); this.headers = request.headers().newBuilder(); this.body = body; this.cookies = new ArrayList<>(request.cookies()); }
@Test public void decodesToFullHttpRequest() throws Exception { LiveHttpRequest streamingRequest = post("/foo/bar", body("foo", "bar")) .version(HTTP_1_0) .header("HeaderName", "HeaderValue") .cookies(requestCookie("CookieName", "CookieValue")) .build(); HttpRequest full = Mono.from(streamingRequest.aggregate(0x1000)).block(); assertThat(full.method(), is(POST)); assertThat(full.url(), is(url("/foo/bar").build())); assertThat(full.version(), is(HTTP_1_0)); assertThat(full.headers(), containsInAnyOrder( header("HeaderName", "HeaderValue"), header("Cookie", "CookieName=CookieValue"))); assertThat(full.cookies(), contains(requestCookie("CookieName", "CookieValue"))); assertThat(full.body(), is(bytes("foobar"))); }
@Test public void newCookiesWithDuplicateNamesOverridePreviousOnes() { HttpRequest r1 = HttpRequest.get("/") .cookies(requestCookie("y", "y1")) .build(); HttpRequest r2 = r1.newBuilder().addCookies( requestCookie("y", "y2")) .build(); assertThat(r2.cookies(), containsInAnyOrder(requestCookie("y", "y2"))); }
Builder(HttpRequest request) { this.id = request.id(); this.method = httpMethod(request.method().name()); this.clientAddress = request.clientAddress(); this.url = request.url(); this.secure = request.isSecure(); this.version = httpVersion(request.version().toString()); this.headers = request.headers().newBuilder(); this.body = request.body().content(); this.cookies = new ArrayList<>(request.cookies()); }
@Test public void extractsAllCookies() { HttpRequest request = get("/") .cookies( requestCookie("cookie1", "foo"), requestCookie("cookie3", "baz"), requestCookie("cookie2", "bar")) .build(); assertThat(request.cookies(), containsInAnyOrder( requestCookie("cookie1", "foo"), requestCookie("cookie2", "bar"), requestCookie("cookie3", "baz"))); }
@Test public void addsCookiesToExistingCookies() { HttpRequest request = HttpRequest.get("/") .addCookies(requestCookie("z", "z1")) .addCookies(requestCookie("x", "x1"), requestCookie("y", "y1")) .build(); assertThat(request.cookies(), containsInAnyOrder(requestCookie("x", "x1"), requestCookie("y", "y1"), requestCookie("z", "z1"))); }
@Test public void removesCookies() { HttpRequest r1 = HttpRequest.get("/") .addCookies(requestCookie("x", "x1"), requestCookie("y", "y1")) .build(); HttpRequest r2 = r1.newBuilder() .removeCookies("x") .removeCookies("foo") // ensure that trying to remove a non-existent cookie does not cause Exception .build(); assertThat(r2.cookies(), contains(requestCookie("y", "y1"))); }
private static Info information(HttpRequest request, Origin origin, boolean longFormatEnabled) { Info info = new Info() .add("method", request.method()) .add("secure", request.isSecure()) .add("uri", request.url()) .add("origin", origin != null ? origin.hostAsString() : "N/A"); if (longFormatEnabled) { info.add("headers", request.headers()) .add("cookies", request.cookies()); } return info; }