List of usage examples for io.netty.handler.codec.http2 Http2Headers getAll
List<V> getAll(K name);
From source file:com.linecorp.armeria.internal.ArmeriaHttpUtilTest.java
License:Apache License
@Test public void outboundCookiesMustBeSplitForHttp2() { final HttpHeaders in = new DefaultHttpHeaders(); in.add(HttpHeaderNames.COOKIE, "a=b; c=d"); in.add(HttpHeaderNames.COOKIE, "e=f;g=h"); in.addObject(HttpHeaderNames.CONTENT_TYPE, MediaType.PLAIN_TEXT_UTF_8); in.add(HttpHeaderNames.COOKIE, "i=j"); in.add(HttpHeaderNames.COOKIE, "k=l;"); final Http2Headers out = toNettyHttp2(in); assertThat(out.getAll(HttpHeaderNames.COOKIE)).containsExactly("a=b", "c=d", "e=f", "g=h", "i=j", "k=l"); }
From source file:com.linkedin.r2.transport.http.client.TestNettyRequestAdapter.java
License:Apache License
@Test public void testStreamToHttp2HeadersCookies() throws Exception { StreamRequestBuilder streamRequestBuilder = new StreamRequestBuilder(new URI(ANY_URI)); IntStream.range(0, 10).forEach(i -> streamRequestBuilder.addCookie(ANY_COOKIE)); StreamRequest request = streamRequestBuilder .build(EntityStreams.newEntityStream(new ByteStringWriter(ByteString.copy(ANY_ENTITY.getBytes())))); Http2Headers headers = NettyRequestAdapter.toHttp2Headers(request); Assert.assertNotNull(headers);//ww w .j a va2 s . c o m List<CharSequence> cookies = headers.getAll(HttpHeaderNames.COOKIE); Assert.assertNotNull(cookies); Assert.assertEquals(cookies.size(), 10); }
From source file:io.vertx.core.http.Http2ServerTest.java
License:Open Source License
@Test public void testGet() throws Exception { String expected = TestUtils.randomAlphaString(1000); AtomicBoolean requestEnded = new AtomicBoolean(); Context ctx = vertx.getOrCreateContext(); server.requestHandler(req -> {/*from w ww .ja v a 2 s. c o m*/ assertOnIOContext(ctx); req.endHandler(v -> { assertOnIOContext(ctx); requestEnded.set(true); }); HttpServerResponse resp = req.response(); assertEquals(HttpMethod.GET, req.method()); assertEquals(DEFAULT_HTTPS_HOST_AND_PORT, req.host()); assertEquals("/", req.path()); assertTrue(req.isSSL()); assertEquals("https", req.scheme()); assertEquals("/", req.uri()); assertEquals("foo_request_value", req.getHeader("Foo_request")); assertEquals("bar_request_value", req.getHeader("bar_request")); assertEquals(2, req.headers().getAll("juu_request").size()); assertEquals("juu_request_value_1", req.headers().getAll("juu_request").get(0)); assertEquals("juu_request_value_2", req.headers().getAll("juu_request").get(1)); assertEquals(Collections.singletonList("cookie_1; cookie_2; cookie_3"), req.headers().getAll("cookie")); resp.putHeader("content-type", "text/plain"); resp.putHeader("Foo_response", "foo_response_value"); resp.putHeader("bar_response", "bar_response_value"); resp.putHeader("juu_response", (List<String>) Arrays.asList("juu_response_value_1", "juu_response_value_2")); resp.end(expected); }); startServer(ctx); TestClient client = new TestClient(); ChannelFuture fut = client.connect(DEFAULT_HTTPS_PORT, DEFAULT_HTTPS_HOST, request -> { int id = request.nextStreamId(); request.decoder.frameListener(new Http2EventAdapter() { @Override public void onHeadersRead(ChannelHandlerContext ctx, int streamId, Http2Headers headers, int streamDependency, short weight, boolean exclusive, int padding, boolean endStream) throws Http2Exception { vertx.runOnContext(v -> { assertEquals(id, streamId); assertEquals("200", headers.status().toString()); assertEquals("text/plain", headers.get("content-type").toString()); assertEquals("foo_response_value", headers.get("foo_response").toString()); assertEquals("bar_response_value", headers.get("bar_response").toString()); assertEquals(2, headers.getAll("juu_response").size()); assertEquals("juu_response_value_1", headers.getAll("juu_response").get(0).toString()); assertEquals("juu_response_value_2", headers.getAll("juu_response").get(1).toString()); assertFalse(endStream); }); } @Override public int onDataRead(ChannelHandlerContext ctx, int streamId, ByteBuf data, int padding, boolean endOfStream) throws Http2Exception { String actual = data.toString(StandardCharsets.UTF_8); vertx.runOnContext(v -> { assertEquals(id, streamId); assertEquals(expected, actual); assertTrue(endOfStream); testComplete(); }); return super.onDataRead(ctx, streamId, data, padding, endOfStream); } }); Http2Headers headers = GET("/").authority(DEFAULT_HTTPS_HOST_AND_PORT); headers.set("foo_request", "foo_request_value"); headers.set("bar_request", "bar_request_value"); headers.set("juu_request", "juu_request_value_1", "juu_request_value_2"); headers.set("cookie", Arrays.asList("cookie_1", "cookie_2", "cookie_3")); request.encoder.writeHeaders(request.context, id, headers, 0, true, request.context.newPromise()); request.context.flush(); }); fut.sync(); await(); }
From source file:io.vertx.core.http.Http2ServerTest.java
License:Open Source License
@Test public void testTrailers() throws Exception { server.requestHandler(req -> {//from w w w .ja v a2s . c om HttpServerResponse resp = req.response(); resp.setChunked(true); resp.write("some-content"); resp.putTrailer("Foo", "foo_value"); resp.putTrailer("bar", "bar_value"); resp.putTrailer("juu", (List<String>) Arrays.asList("juu_value_1", "juu_value_2")); resp.end(); }); startServer(); TestClient client = new TestClient(); ChannelFuture fut = client.connect(DEFAULT_HTTPS_PORT, DEFAULT_HTTPS_HOST, request -> { request.decoder.frameListener(new Http2EventAdapter() { int count; @Override public void onHeadersRead(ChannelHandlerContext ctx, int streamId, Http2Headers headers, int streamDependency, short weight, boolean exclusive, int padding, boolean endStream) throws Http2Exception { switch (count++) { case 0: vertx.runOnContext(v -> { assertFalse(endStream); }); break; case 1: vertx.runOnContext(v -> { assertEquals("foo_value", headers.get("foo").toString()); assertEquals(1, headers.getAll("foo").size()); assertEquals("foo_value", headers.getAll("foo").get(0).toString()); assertEquals("bar_value", headers.getAll("bar").get(0).toString()); assertEquals(2, headers.getAll("juu").size()); assertEquals("juu_value_1", headers.getAll("juu").get(0).toString()); assertEquals("juu_value_2", headers.getAll("juu").get(1).toString()); assertTrue(endStream); testComplete(); }); break; default: vertx.runOnContext(v -> { fail(); }); break; } } }); int id = request.nextStreamId(); request.encoder.writeHeaders(request.context, id, GET("/"), 0, true, request.context.newPromise()); request.context.flush(); }); fut.sync(); await(); }
From source file:io.vertx.core.http.impl.Http2HeadersAdaptor.java
License:Open Source License
public Http2HeadersAdaptor(Http2Headers headers) { List<CharSequence> cookies = headers.getAll(HttpHeaderNames.COOKIE); if (cookies != null && cookies.size() > 1) { // combine the cookie values into 1 header entry. // https://tools.ietf.org/html/rfc7540#section-8.1.2.5 String value = cookies.stream().collect(Collectors.joining("; ")); headers.set(HttpHeaderNames.COOKIE, value); }// w w w.ja va2 s. com this.headers = headers; }
From source file:io.vertx.test.core.Http2ServerTest.java
License:Open Source License
@Test public void testGet() throws Exception { String expected = TestUtils.randomAlphaString(1000); AtomicBoolean requestEnded = new AtomicBoolean(); Context ctx = vertx.getOrCreateContext(); server.requestHandler(req -> {/*w ww. j av a 2s .co m*/ assertOnIOContext(ctx); req.endHandler(v -> { assertOnIOContext(ctx); requestEnded.set(true); }); HttpServerResponse resp = req.response(); assertEquals(HttpMethod.GET, req.method()); assertEquals(DEFAULT_HTTPS_HOST_AND_PORT, req.host()); assertEquals("/", req.path()); assertEquals(DEFAULT_HTTPS_HOST_AND_PORT, req.getHeader(":authority")); assertTrue(req.isSSL()); assertEquals("https", req.getHeader(":scheme")); assertEquals("/", req.getHeader(":path")); assertEquals("GET", req.getHeader(":method")); assertEquals("foo_request_value", req.getHeader("Foo_request")); assertEquals("bar_request_value", req.getHeader("bar_request")); assertEquals(2, req.headers().getAll("juu_request").size()); assertEquals("juu_request_value_1", req.headers().getAll("juu_request").get(0)); assertEquals("juu_request_value_2", req.headers().getAll("juu_request").get(1)); assertEquals(Collections.singletonList("cookie_1; cookie_2; cookie_3"), req.headers().getAll("cookie")); resp.putHeader("content-type", "text/plain"); resp.putHeader("Foo_response", "foo_response_value"); resp.putHeader("bar_response", "bar_response_value"); resp.putHeader("juu_response", (List<String>) Arrays.asList("juu_response_value_1", "juu_response_value_2")); resp.end(expected); }); startServer(ctx); TestClient client = new TestClient(); ChannelFuture fut = client.connect(DEFAULT_HTTPS_PORT, DEFAULT_HTTPS_HOST, request -> { int id = request.nextStreamId(); request.decoder.frameListener(new Http2EventAdapter() { @Override public void onHeadersRead(ChannelHandlerContext ctx, int streamId, Http2Headers headers, int streamDependency, short weight, boolean exclusive, int padding, boolean endStream) throws Http2Exception { vertx.runOnContext(v -> { assertEquals(id, streamId); assertEquals("200", headers.status().toString()); assertEquals("text/plain", headers.get("content-type").toString()); assertEquals("foo_response_value", headers.get("foo_response").toString()); assertEquals("bar_response_value", headers.get("bar_response").toString()); assertEquals(2, headers.getAll("juu_response").size()); assertEquals("juu_response_value_1", headers.getAll("juu_response").get(0).toString()); assertEquals("juu_response_value_2", headers.getAll("juu_response").get(1).toString()); assertFalse(endStream); }); } @Override public int onDataRead(ChannelHandlerContext ctx, int streamId, ByteBuf data, int padding, boolean endOfStream) throws Http2Exception { String actual = data.toString(StandardCharsets.UTF_8); vertx.runOnContext(v -> { assertEquals(id, streamId); assertEquals(expected, actual); assertTrue(endOfStream); testComplete(); }); return super.onDataRead(ctx, streamId, data, padding, endOfStream); } }); Http2Headers headers = GET("/").authority(DEFAULT_HTTPS_HOST_AND_PORT); headers.set("foo_request", "foo_request_value"); headers.set("bar_request", "bar_request_value"); headers.set("juu_request", "juu_request_value_1", "juu_request_value_2"); headers.set("cookie", Arrays.asList("cookie_1", "cookie_2", "cookie_3")); request.encoder.writeHeaders(request.context, id, headers, 0, true, request.context.newPromise()); request.context.flush(); }); fut.sync(); await(); }