final String ifModifiedSince = request.headers().get(IF_MODIFIED_SINCE); if (ifModifiedSince != null && !ifModifiedSince.isEmpty()) { SimpleDateFormat dateFormatter = new SimpleDateFormat(StaticFileServerHandler.HTTP_DATE_FORMAT, Locale.US); StaticFileServerHandler.setDateAndCacheHeaders(response, file); if (HttpHeaders.isKeepAlive(request)) { response.headers().set(CONNECTION, HttpHeaders.Values.KEEP_ALIVE); HttpHeaders.setContentLength(response, fileLength); if (!HttpHeaders.isKeepAlive(request)) { lastContentFuture.addListener(ChannelFutureListener.CLOSE);
HttpHeaders.setHeader(response, CONNECTION, HttpHeaders.Values.CLOSE); HttpHeaders.setHeader(response, CACHE_CONTROL, "private"); HttpHeaders.setHeader(response, CONTENT_TYPE, "application/octet-stream"); HttpHeaders.setContentLength(response, status.getLen());
@Override protected void channelRead0(ChannelHandlerContext ctx, HttpObject msg) throws Exception { LOG.debug("Received {}", msg); if (msg instanceof HttpResponse) { HttpResponse response = (HttpResponse) msg; currentStatus = response.getStatus(); currentType = response.headers().get(HttpHeaders.Names.CONTENT_TYPE); currentLocation = response.headers().get(HttpHeaders.Names.LOCATION); if (HttpHeaders.isTransferEncodingChunked(response)) { LOG.debug("Content is chunked"); } } if (msg instanceof HttpContent) { HttpContent content = (HttpContent) msg; // Add the content currentContent += content.content().toString(CharsetUtil.UTF_8); // Finished with this if (content instanceof LastHttpContent) { responses.add(new SimpleHttpResponse(currentStatus, currentType, currentContent, currentLocation)); currentStatus = null; currentType = null; currentLocation = null; currentContent = ""; ctx.close(); } } } }
private void display(ChannelHandlerContext ctx, HttpRequest request, String message) { HttpResponse response = new DefaultHttpResponse(HTTP_1_1, OK); response.headers().set(CONTENT_TYPE, "text/plain"); if (HttpHeaders.isKeepAlive(request)) { response.headers().set(CONNECTION, HttpHeaders.Values.KEEP_ALIVE); } byte[] buf = message.getBytes(ConfigConstants.DEFAULT_CHARSET); ByteBuf b = Unpooled.copiedBuffer(buf); HttpHeaders.setContentLength(response, buf.length); // write the initial line and the header. ctx.write(response); ctx.write(b); ChannelFuture lastContentFuture = ctx.writeAndFlush(LastHttpContent.EMPTY_LAST_CONTENT); // close the connection, if no keep-alive is needed if (!HttpHeaders.isKeepAlive(request)) { lastContentFuture.addListener(ChannelFutureListener.CLOSE); } } }
private void sendError(ChannelHandlerContext ctx, String error) { if (ctx.channel().isActive()) { DefaultFullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.INTERNAL_SERVER_ERROR, Unpooled.wrappedBuffer(error.getBytes(ConfigConstants.DEFAULT_CHARSET))); response.headers().set(HttpHeaders.Names.CONTENT_TYPE, "text/plain"); response.headers().set(HttpHeaders.Names.CONTENT_LENGTH, response.content().readableBytes()); ctx.writeAndFlush(response); } } }
public static ChannelFuture flush(Channel ch, HttpRequest req, HttpResponse res) { if (!HttpHeaders.isKeepAlive(req)) { return ch.writeAndFlush(res).addListener(ChannelFutureListener.CLOSE); } else { res.headers().set(HttpHeaders.Names.CONNECTION, HttpHeaders.Values.KEEP_ALIVE); return ch.writeAndFlush(res); } } }
HttpResponse response = new DefaultHttpResponse(HTTP_1_1, statusCode); response.headers().set(CONTENT_TYPE, RestConstants.REST_CONTENT_TYPE); response.headers().set(headerEntry.getKey(), headerEntry.getValue()); response.headers().set(CONNECTION, HttpHeaders.Values.KEEP_ALIVE); HttpHeaders.setContentLength(response, buf.length);
.set(HttpHeaders.Names.HOST, targetAddress) .set(HttpHeaders.Names.CONNECTION, HttpHeaders.Values.CLOSE) .add(HttpHeaders.Names.CONTENT_LENGTH, jsonPayload.capacity()) .add(HttpHeaders.Names.CONTENT_TYPE, RestConstants.REST_CONTENT_TYPE); .set(HttpHeaders.Names.HOST, targetAddress) .set(HttpHeaders.Names.CONNECTION, HttpHeaders.Values.CLOSE);
/** * Sends the given error response and status code to the given channel. * * @param channelHandlerContext identifying the open channel * @param httpRequest originating http request * @param errorMessage which should be sent * @param statusCode of the message to send * @param headers additional header values */ public static CompletableFuture<Void> sendErrorResponse( ChannelHandlerContext channelHandlerContext, HttpRequest httpRequest, ErrorResponseBody errorMessage, HttpResponseStatus statusCode, Map<String, String> headers) { return sendErrorResponse( channelHandlerContext, HttpHeaders.isKeepAlive(httpRequest), errorMessage, statusCode, headers); }
ctx.channel().attr(UPLOADED_FILES).set(new FileUploads(currentUploadDir)); if (currentJsonPayload != null) { currentHttpRequest.headers().set(HttpHeaders.Names.CONTENT_LENGTH, currentJsonPayload.length); currentHttpRequest.headers().set(HttpHeaders.Names.CONTENT_TYPE, RestConstants.REST_CONTENT_TYPE); ctx.fireChannelRead(currentHttpRequest); ctx.fireChannelRead(httpContent.replace(Unpooled.wrappedBuffer(currentJsonPayload))); } else { currentHttpRequest.headers().set(HttpHeaders.Names.CONTENT_LENGTH, 0); currentHttpRequest.headers().remove(HttpHeaders.Names.CONTENT_TYPE); ctx.fireChannelRead(currentHttpRequest); ctx.fireChannelRead(LastHttpContent.EMPTY_LAST_CONTENT);
@Override protected void channelRead0(ChannelHandlerContext channelHandlerContext, HttpRequest httpRequest) { if (HttpHeaders.is100ContinueExpected(httpRequest)) { channelHandlerContext.writeAndFlush(new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.CONTINUE)); return; } // Route HttpMethod method = httpRequest.getMethod(); QueryStringDecoder qsd = new QueryStringDecoder(httpRequest.uri()); RouteResult<?> routeResult = router.route(method, qsd.path(), qsd.parameters()); if (routeResult == null) { respondNotFound(channelHandlerContext, httpRequest); return; } routed(channelHandlerContext, routeResult, httpRequest); }
response.headers().set(CONTENT_TYPE, "text/plain"); if (HttpHeaders.isKeepAlive(httpRequest)) { response.headers().set(CONNECTION, HttpHeaders.Values.KEEP_ALIVE); HttpHeaders.setContentLength(response, fileLength); if (!HttpHeaders.isKeepAlive(httpRequest)) { lastContentFuture.addListener(ChannelFutureListener.CLOSE);
/** * Sends a simple GET request to the given path. You only specify the $path part of * http://$host:$host/$path. * * @param path The $path to GET (http://$host:$host/$path) */ public void sendGetRequest(String path, FiniteDuration timeout) throws TimeoutException, InterruptedException { if (!path.startsWith("/")) { path = "/" + path; } HttpRequest getRequest = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, path); getRequest.headers().set(HttpHeaders.Names.HOST, host); getRequest.headers().set(HttpHeaders.Names.CONNECTION, HttpHeaders.Values.CLOSE); sendRequest(getRequest, timeout); }
public static ChannelFuture flush(ChannelHandlerContext ctx, HttpRequest request, HttpResponse response) { if (!HttpHeaders.isKeepAlive(request)) { return ctx.writeAndFlush(response).addListener(ChannelFutureListener.CLOSE); } else { response.headers().set(HttpHeaders.Names.CONNECTION, HttpHeaders.Values.KEEP_ALIVE); return ctx.writeAndFlush(response); } }
HttpResponse response = new DefaultHttpResponse(HTTP_1_1, statusCode); response.headers().set(CONTENT_TYPE, RestConstants.REST_CONTENT_TYPE); response.headers().set(headerEntry.getKey(), headerEntry.getValue()); response.headers().set(CONNECTION, HttpHeaders.Values.KEEP_ALIVE); HttpHeaders.setContentLength(response, buf.length);
.set(HttpHeaders.Names.HOST, targetAddress) .set(HttpHeaders.Names.CONNECTION, HttpHeaders.Values.CLOSE) .add(HttpHeaders.Names.CONTENT_LENGTH, jsonPayload.capacity()) .add(HttpHeaders.Names.CONTENT_TYPE, RestConstants.REST_CONTENT_TYPE); .set(HttpHeaders.Names.HOST, targetAddress) .set(HttpHeaders.Names.CONNECTION, HttpHeaders.Values.CLOSE);
/** * Sends the given response and status code to the given channel. * * @param channelHandlerContext identifying the open channel * @param httpRequest originating http request * @param message which should be sent * @param statusCode of the message to send * @param headers additional header values */ public static void sendResponse( @Nonnull ChannelHandlerContext channelHandlerContext, @Nonnull HttpRequest httpRequest, @Nonnull String message, @Nonnull HttpResponseStatus statusCode, @Nonnull Map<String, String> headers) { sendResponse( channelHandlerContext, HttpHeaders.isKeepAlive(httpRequest), message, statusCode, headers); }
ctx.channel().attr(UPLOADED_FILES).set(new FileUploads(currentUploadDir)); if (currentJsonPayload != null) { currentHttpRequest.headers().set(HttpHeaders.Names.CONTENT_LENGTH, currentJsonPayload.length); currentHttpRequest.headers().set(HttpHeaders.Names.CONTENT_TYPE, RestConstants.REST_CONTENT_TYPE); ctx.fireChannelRead(currentHttpRequest); ctx.fireChannelRead(httpContent.replace(Unpooled.wrappedBuffer(currentJsonPayload))); } else { currentHttpRequest.headers().set(HttpHeaders.Names.CONTENT_LENGTH, 0); currentHttpRequest.headers().remove(HttpHeaders.Names.CONTENT_TYPE); ctx.fireChannelRead(currentHttpRequest); ctx.fireChannelRead(LastHttpContent.EMPTY_LAST_CONTENT);
@Override protected void channelRead0(ChannelHandlerContext channelHandlerContext, HttpRequest httpRequest) { if (HttpHeaders.is100ContinueExpected(httpRequest)) { channelHandlerContext.writeAndFlush(new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.CONTINUE)); return; } // Route HttpMethod method = httpRequest.getMethod(); QueryStringDecoder qsd = new QueryStringDecoder(httpRequest.uri()); RouteResult<?> routeResult = router.route(method, qsd.path(), qsd.parameters()); if (routeResult == null) { respondNotFound(channelHandlerContext, httpRequest); return; } routed(channelHandlerContext, routeResult, httpRequest); }
final String ifModifiedSince = request.headers().get(IF_MODIFIED_SINCE); if (ifModifiedSince != null && !ifModifiedSince.isEmpty()) { SimpleDateFormat dateFormatter = new SimpleDateFormat(HTTP_DATE_FORMAT, Locale.US); setDateAndCacheHeaders(response, file); if (HttpHeaders.isKeepAlive(request)) { response.headers().set(CONNECTION, HttpHeaders.Values.KEEP_ALIVE); HttpHeaders.setContentLength(response, fileLength); if (!HttpHeaders.isKeepAlive(request)) { lastContentFuture.addListener(ChannelFutureListener.CLOSE);