ctx.channel(), httpRequest, new DefaultHttpHeaders().add("X-CLIENT-REGISTRATION-ID", clientId), ctx.channel().newPromise()
@Test public void testCookieParseExpires() { // e.g. "Tue, 27 Oct 2015 12:54:24 GMT"; SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US); sdf.setTimeZone(TimeZone.getTimeZone("GMT")); Date date = new Date(System.currentTimeMillis() + 60000); final String cookieDef = String.format("efmembercheck=true; expires=%s; path=/; domain=.eclipse.org", sdf.format(date)); HttpHeaders responseHeaders = new DefaultHttpHeaders().add(SET_COOKIE, cookieDef); NettyResponse response = new NettyResponse(new NettyResponseStatus(null, null, null), responseHeaders, null); List<Cookie> cookies = response.getCookies(); assertEquals(cookies.size(), 1); Cookie cookie = cookies.get(0); assertTrue(cookie.maxAge() >= 58 && cookie.maxAge() <= 60); }
@Test public void testCookieParseWeirdExpiresValue() { final String cookieDef = "efmembercheck=true; expires=60; path=/; domain=.eclipse.org"; HttpHeaders responseHeaders = new DefaultHttpHeaders().add(SET_COOKIE, cookieDef); NettyResponse response = new NettyResponse(new NettyResponseStatus(null, null, null), responseHeaders, null); List<Cookie> cookies = response.getCookies(); assertEquals(cookies.size(), 1); Cookie cookie = cookies.get(0); assertEquals(cookie.maxAge(), Long.MIN_VALUE); } }
@Test public void testCookieParseMaxAge() { final String cookieDef = "efmembercheck=true; max-age=60; path=/; domain=.eclipse.org"; HttpHeaders responseHeaders = new DefaultHttpHeaders().add(SET_COOKIE, cookieDef); NettyResponse response = new NettyResponse(new NettyResponseStatus(null, null, null), responseHeaders, null); List<Cookie> cookies = response.getCookies(); assertEquals(cookies.size(), 1); Cookie cookie = cookies.get(0); assertEquals(cookie.maxAge(), 60); }
@Test public void testInvalidInputStream() throws IOException, ExecutionException, InterruptedException { try (AsyncHttpClient c = asyncHttpClient()) { HttpHeaders h = new DefaultHttpHeaders().add(CONTENT_TYPE, HttpHeaderValues.APPLICATION_X_WWW_FORM_URLENCODED); InputStream is = new InputStream() { int readAllowed; @Override public int available() { return 1; // Fake } @Override public int read() { int fakeCount = readAllowed++; if (fakeCount == 0) { return (int) 'a'; } else if (fakeCount == 1) { return (int) 'b'; } else if (fakeCount == 2) { return (int) 'c'; } else { return -1; } } }; Response resp = c.preparePost(getTargetUrl()).setHeaders(h).setBody(is).execute().get(); assertNotNull(resp); assertEquals(resp.getStatusCode(), HttpServletResponse.SC_OK); assertEquals(resp.getHeader("X-Param"), "abc"); } }
HttpHeaders requestHeaders = new DefaultHttpHeaders(false).add(request.getHeaders());
HttpHeaders requestHeaders = new DefaultHttpHeaders(false).add(request.getHeaders());
/** * Adds a new header with the specified {@code name} and {@code value}. * <p/> * Will not replace any existing values for the header. * * @param name The name of the header * @param value The value of the header * @return this builder */ public Builder add(CharSequence name, String value) { this.nettyHeaders.add(name, checkNotNull(value)); return this; }
/** * Adds a new header with the specified {@code name} and {@code value}. * <p/> * Will not replace any existing values for the header. * * @param name The name of the header * @param value The value of the header * @return this builder */ public Builder add(CharSequence name, Object value) { this.nettyHeaders.add(name, requireNonNull(value)); return this; }
/** * Adds a new header with the specified {@code name} and {@code value}. * <p/> * Will not replace any existing values for the header. * * @param name The name of the header * @param value The value of the header * @return this builder */ public Builder add(CharSequence name, Object value) { this.nettyHeaders.add(name, checkNotNull(value)); return this; }
/** * Adds a new header with the specified {@code name} and {@code value}. * <p/> * Will not replace any existing values for the header. * * @param name The name of the header * @param value The value of the header * @return this builder */ public Builder add(CharSequence name, String value) { this.nettyHeaders.add(name, requireNonNull(value)); return this; }
/** * Creates a {@link Multimap} from an {@link Iterable} of {@link Map.Entry}. */ protected final HttpHeaders createHeaders(Iterable<? extends Map.Entry<String, String>> entries) { DefaultHttpHeaders headers = new DefaultHttpHeaders(); for (Map.Entry<String, String> entry : entries) { headers.add(entry.getKey(), entry.getValue()); } return headers; } }
/** * Creates a {@link Multimap} from an {@link Iterable} of {@link Map.Entry}. */ protected final HttpHeaders createHeaders(Iterable<? extends Map.Entry<String, String>> entries) { DefaultHttpHeaders headers = new DefaultHttpHeaders(); for (Map.Entry<String, String> entry : entries) { headers.add(entry.getKey(), entry.getValue()); } return headers; } }
WebSocketClientHandler( URI uri, String userAgent, WebsocketConnection.WSClientEventHandler delegate) { this.delegate = checkNotNull(delegate, "delegate must not be null"); checkArgument(!Strings.isNullOrEmpty(userAgent), "user agent must not be null or empty"); this.handshaker = WebSocketClientHandshakerFactory.newHandshaker( uri, WebSocketVersion.V13, null, true, new DefaultHttpHeaders().add("User-Agent", userAgent)); }
@Override public void sendString(HttpResponseStatus status, String data, HttpHeaders headers) { if (data == null) { sendStatus(status, headers); return; } ByteBuf buffer = Unpooled.wrappedBuffer(StandardCharsets.UTF_8.encode(data)); sendContent(status, buffer, addContentTypeIfMissing(new DefaultHttpHeaders().add(headers), "text/plain; charset=utf-8")); }
@Override public void sendJson(HttpResponseStatus status, String jsonString) { sendString(status, jsonString, new DefaultHttpHeaders().add(HttpHeaderNames.CONTENT_TYPE.toString(), "application/json")); }
@Override public CompletableFuture<ResponseInfo<CharSequence>> execute(RequestInfo<String> request, Executor longRunningTaskExecutor, ChannelHandlerContext ctx) { CharSequence responsePayload = new StringBuilder(UUID.randomUUID().toString()); String responsePayloadHash = getHashForPayload(responsePayload.toString().getBytes(CharsetUtil.UTF_8)); return CompletableFuture.completedFuture( ResponseInfo.newBuilder(responsePayload) .withHeaders(new DefaultHttpHeaders().add(RESPONSE_PAYLOAD_HASH_HEADER_KEY, responsePayloadHash)) .build() ); }
@Test(expected = InvalidCharsetInContentTypeHeaderException.class) public void determineCharsetFromContentType_throws_InvalidCharsetInContentTypeHeaderException_if_passed_header_with_invalid_charset() { // given HttpHeaders headers = new DefaultHttpHeaders().add(HttpHeaders.Names.CONTENT_TYPE, "text/text charset=garbagio"); // expect HttpUtils.determineCharsetFromContentType(headers, CharsetUtil.UTF_8); fail("Expected an exception but none was thrown"); }
@Override public CompletableFuture<ResponseInfo<byte[]>> execute(RequestInfo<String> request, Executor longRunningTaskExecutor, ChannelHandlerContext ctx) { byte[] responsePayload = generateRandomBytes(15000); String responsePayloadHash = getHashForPayload(responsePayload); return CompletableFuture.completedFuture( ResponseInfo.newBuilder(responsePayload) .withHeaders(new DefaultHttpHeaders().add(RESPONSE_PAYLOAD_HASH_HEADER_KEY, responsePayloadHash)) .build() ); }