List of usage examples for io.netty.handler.codec.http HttpHeaders setHeader
@Deprecated public static void setHeader(HttpMessage message, CharSequence name, Iterable<?> values)
From source file:net.mms_projects.copy_it.api.http.Handler.java
License:Open Source License
/** * Internal message handler, this is where all the http requests come in. This is where most of the authorization * and page logic goes on./*from w w w.j av a 2s.co m*/ * @see net.mms_projects.copy_it.api.http.Page * @see net.mms_projects.copy_it.api.oauth.HeaderVerifier */ protected void messageReceived(final ChannelHandlerContext chx, final HttpObject o) throws Exception { if (o instanceof HttpRequest) { final HttpRequest http = (HttpRequest) o; this.request = http; final URI uri = new URI(request.getUri()); if ((page = Page.getNoAuthPage(uri.getPath())) != null) { database = DatabasePool.getDBConnection(); if (request.getMethod() == HttpMethod.GET) { try { final FullHttpResponse response = page.onGetRequest(request, database); HttpHeaders.setContentLength(response, response.content().readableBytes()); HttpHeaders.setHeader(response, CONTENT_TYPE, page.GetContentType()); if (isKeepAlive(request)) { HttpHeaders.setKeepAlive(response, true); chx.write(response); } else chx.write(response).addListener(ChannelFutureListener.CLOSE); } catch (ErrorException e) { e.printStackTrace(); final FullHttpResponse response = new DefaultFullHttpResponse(request.getProtocolVersion(), e.getStatus(), Unpooled.copiedBuffer(e.toString(), CharsetUtil.UTF_8)); HttpHeaders.setHeader(response, CONTENT_TYPE, Page.ContentTypes.JSON_TYPE); chx.write(response).addListener(ChannelFutureListener.CLOSE); } catch (Exception e) { e.printStackTrace(); final FullHttpResponse response = new DefaultFullHttpResponse(request.getProtocolVersion(), INTERNAL_SERVER_ERROR); chx.write(response).addListener(ChannelFutureListener.CLOSE); } } else if (request.getMethod() == HttpMethod.POST) postRequestDecoder = new HttpPostRequestDecoder(request); } else if ((page = Page.getAuthPage(uri.getPath())) == null) { final FullHttpResponse response = new DefaultFullHttpResponse(request.getProtocolVersion(), NOT_FOUND, Unpooled.copiedBuffer("404", CharsetUtil.UTF_8)); chx.write(response).addListener(ChannelFutureListener.CLOSE); } else { try { headerVerifier = new HeaderVerifier(http, uri); database = DatabasePool.getDBConnection(); headerVerifier.verifyConsumer(database); headerVerifier.verifyOAuthToken(database); headerVerifier.verifyOAuthNonce(database); if (request.getMethod() == HttpMethod.GET) { headerVerifier.checkSignature(null, false); final FullHttpResponse response = ((AuthPage) page).onGetRequest(request, database, headerVerifier); HttpHeaders.setContentLength(response, response.content().readableBytes()); HttpHeaders.setHeader(response, CONTENT_TYPE, page.GetContentType()); if (isKeepAlive(request)) { HttpHeaders.setKeepAlive(response, true); chx.write(response); } else chx.write(response).addListener(ChannelFutureListener.CLOSE); } else if (request.getMethod() == HttpMethod.POST) postRequestDecoder = new HttpPostRequestDecoder(request); } catch (ErrorException e) { e.printStackTrace(); final FullHttpResponse response = new DefaultFullHttpResponse(request.getProtocolVersion(), e.getStatus(), Unpooled.copiedBuffer(e.toString(), CharsetUtil.UTF_8)); HttpHeaders.setHeader(response, CONTENT_TYPE, Page.ContentTypes.JSON_TYPE); chx.write(response).addListener(ChannelFutureListener.CLOSE); } catch (Exception e) { e.printStackTrace(); final FullHttpResponse response = new DefaultFullHttpResponse(request.getProtocolVersion(), INTERNAL_SERVER_ERROR); chx.write(response).addListener(ChannelFutureListener.CLOSE); } } } else if (o instanceof HttpContent && request != null && request.getMethod() == HttpMethod.POST) { final HttpContent httpContent = (HttpContent) o; postRequestDecoder.offer(httpContent); if (o instanceof LastHttpContent && page != null) { try { FullHttpResponse response; if (headerVerifier != null && page instanceof AuthPage) { headerVerifier.checkSignature(postRequestDecoder, false); response = ((AuthPage) page).onPostRequest(request, postRequestDecoder, database, headerVerifier); } else response = page.onPostRequest(request, postRequestDecoder, database); HttpHeaders.setContentLength(response, response.content().readableBytes()); HttpHeaders.setHeader(response, CONTENT_TYPE, page.GetContentType()); if (isKeepAlive(request)) { HttpHeaders.setKeepAlive(response, true); chx.write(response); } else chx.write(response).addListener(ChannelFutureListener.CLOSE); } catch (ErrorException e) { e.printStackTrace(); final FullHttpResponse response = new DefaultFullHttpResponse(request.getProtocolVersion(), e.getStatus(), Unpooled.copiedBuffer(e.toString(), CharsetUtil.UTF_8)); HttpHeaders.setHeader(response, CONTENT_TYPE, Page.ContentTypes.JSON_TYPE); chx.write(response).addListener(ChannelFutureListener.CLOSE); } catch (Exception e) { e.printStackTrace(); final FullHttpResponse response = new DefaultFullHttpResponse(request.getProtocolVersion(), INTERNAL_SERVER_ERROR); chx.write(response).addListener(ChannelFutureListener.CLOSE); } } } if (o instanceof LastHttpContent && database != null) database.free(); }
From source file:org.animotron.bridge.http.helper.HttpHelper.java
License:Open Source License
public static void sendFile(final ChannelHandlerContext ctx, final FullHttpRequest request, final File file, String mime, String cache) throws Throwable { final RandomAccessFile raf = new RandomAccessFile(file, "r"); FullHttpResponse response = new DefaultFullHttpResponse(HTTP_1_1, OK); long modified = file.lastModified(); Date since = parseDate(getHeader(request, IF_MODIFIED_SINCE)); if (since != null && since.getTime() >= modified) { sendStatus(ctx, NOT_MODIFIED);//ww w .j a v a 2 s . c om } else { final long length = raf.length(); setDate(response); setLastModified(response, modified); HttpHeaders.setContentLength(response, length); HttpHeaders.setHeader(response, CONTENT_TYPE, MimeHelper.check(mime)); setHeader(response, CACHE_CONTROL, cache); if (isKeepAlive(request)) { setHeader(response, CONNECTION, KEEP_ALIVE); } ctx.write(response); ChannelFuture writeFuture = ctx.write(new ChunkedFile(raf, 0, length, 8192)); if (!isKeepAlive(request)) { writeFuture.addListener(CLOSE); } } }
From source file:org.ebayopensource.scc.cache.CacheResultVerifierTest.java
License:Apache License
@Test public void testFetchResult() { FullHttpResponse cache = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, ByteBufAllocator.DEFAULT.buffer()); FullHttpResponse actual = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, ByteBufAllocator.DEFAULT.buffer()); CacheResultVerifier crv = new CacheResultVerifier("key", null, cache); HttpHeaders.setHeader(cache, "ETag", "etagvalue"); HttpHeaders.setHeader(actual, "ETag", "etagvalue"); CacheVerifiedResult result = crv.fetchResult(actual); Assert.assertTrue(result.result);/*from www . j av a2 s . com*/ HttpHeaders.setHeader(actual, "ETag", "etagvalue2"); result = crv.fetchResult(actual); Assert.assertFalse(result.result); cache = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, ByteBufAllocator.DEFAULT.buffer()); actual = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, ByteBufAllocator.DEFAULT.buffer()); crv = new CacheResultVerifier("key", null, cache); actual.setStatus(HttpResponseStatus.SERVICE_UNAVAILABLE); result = crv.fetchResult(actual); Assert.assertFalse(result.result); actual.setStatus(HttpResponseStatus.OK); HttpHeaders.setHeader(cache, "h1", "value"); HttpHeaders.setHeader(actual, "h1", "value"); result = crv.fetchResult(actual); Assert.assertTrue(result.result); HttpHeaders.setHeader(cache, "h2", "value"); HttpHeaders.setHeader(actual, "h2", "value2"); result = crv.fetchResult(actual); Assert.assertFalse(result.result); HttpHeaders.setHeader(actual, "h2", "value"); ByteBuf cc = cache.content(); ByteBuf ac = actual.content(); cc.writeBytes("abc".getBytes()); result = crv.fetchResult(actual); Assert.assertFalse(result.result); ac.writeBytes("abc".getBytes()); result = crv.fetchResult(actual); Assert.assertTrue(result.result); cc.writeBytes("eft".getBytes()); ac.writeBytes("xyz".getBytes()); result = crv.fetchResult(actual); Assert.assertFalse(result.result); }
From source file:org.ebayopensource.scc.filter.NettyRequestProxyFilter.java
License:Apache License
protected HttpResponse handleNonProxyRequest(FullHttpRequest req) { String uri = req.getUri();// w ww . j av a 2 s . c o m if ("/version".equals(uri)) { if (HttpMethod.GET.equals(req.getMethod())) { JsonObject jsonObj = new JsonObject(); jsonObj.addProperty("name", m_appConfig.getAppName()); jsonObj.addProperty("version", m_appConfig.getAppVersion()); byte[] content = jsonObj.toString().getBytes(CharsetUtil.UTF_8); DefaultFullHttpResponse resp = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, Unpooled.copiedBuffer(content)); HttpHeaders.setKeepAlive(resp, false); HttpHeaders.setHeader(resp, HttpHeaders.Names.CONTENT_TYPE, "application/json"); HttpHeaders.setContentLength(resp, content.length); return resp; } } return RESPONSE_404; }
From source file:org.hawkular.metrics.clients.ptrans.backend.RestForwardingHandler.java
License:Apache License
private void sendToChannel(final Channel ch) { LOG.trace("Sending to channel {}", ch); final List<SingleMetric> metricsToSend = fifo.getList(); String payload = Batcher.metricListToJson(metricsToSend); ByteBuf content = Unpooled.copiedBuffer(payload, CharsetUtil.UTF_8); FullHttpRequest request = new DefaultFullHttpRequest(HTTP_1_1, POST, restPrefix, content); HttpHeaders.setContentLength(request, content.readableBytes()); HttpHeaders.setKeepAlive(request, true); HttpHeaders.setHeader(request, HttpHeaders.Names.CONTENT_TYPE, "application/json;charset=utf-8"); // We need to send the list of metrics we are sending down the pipeline, so the status watcher // can later clean them out of the fifo ch.attr(listKey).set(metricsToSend); ch.writeAndFlush(request).addListener(new ChannelFutureListener() { @Override// www . j a v a 2s . c om public void operationComplete(ChannelFuture future) throws Exception { if (!future.isSuccess()) { // and remove from connection pool if you have one etc... ch.close(); senderChannel = null; LOG.error("Sending to the hawkular-metrics server failed: " + future.cause()); } else { sendCounter++; if (sendCounter >= restCloseAfterRequests) { SingleMetric perfMetric = new SingleMetric(localHostName + ".ptrans.counter", System.currentTimeMillis(), (double) (numberOfMetrics + metricsToSend.size())); fifo.offer(perfMetric); LOG.trace("Doing a periodic close after {} requests and {} items", restCloseAfterRequests, numberOfMetrics); numberOfMetrics = 0; ch.close(); senderChannel = null; sendCounter = 0; } } } }); }
From source file:org.ireland.jnetty.http.HttpServletResponseImpl.java
License:Open Source License
@Override public void setHeader(String name, String value) { if (name == null || name.length() == 0 || value == null) { return;/* w w w .j a v a 2 s . com*/ } if (isCommitted()) { return; } // Ignore any call from an included servlet if (isIncluding()) { return; } char cc = name.charAt(0); if (cc == 'C' || cc == 'c') { if (HttpHeaders.Names.CONTENT_TYPE.equalsIgnoreCase(name)) setContentType(value); else { if (HttpHeaders.Names.CONTENT_LENGTH.equalsIgnoreCase(name)) { if (value == null) _contentLength = -1; else _contentLength = Long.parseLong(value); } } } // what about setCookie? HttpHeaders.setHeader(response, name, value); }
From source file:org.ireland.jnetty.http.HttpServletResponseImpl.java
License:Open Source License
@Override // OK/*w ww .j ava2 s . co m*/ public void setIntHeader(String name, int value) { if (name == null || name.length() == 0) { return; } if (isCommitted()) { return; } // Ignore any call from an included servlet if (isIncluding()) { return; } char cc = name.charAt(0); if (cc == 'C' || cc == 'c') { if (HttpHeaders.Names.CONTENT_LENGTH.equalsIgnoreCase(name)) { if (value < 0) _contentLength = -1l; else _contentLength = value; } } HttpHeaders.setHeader(response, name, value); }
From source file:org.robotbrains.support.web.server.netty.NettyStaticContentHandler.java
License:Apache License
/** * Set the MIME type of the content, if we can. * * @param filepath// w w w .j av a 2s . c o m * the filepath for the content * @param response * the HTTP response */ private void setMimeType(String filepath, HttpResponse response) { if (mimeResolver != null) { String mimeType = mimeResolver.resolve(filepath); if (mimeType != null) { HttpHeaders.setHeader(response, HttpHeaders.Names.CONTENT_TYPE, mimeType); } } }
From source file:org.robotbrains.support.web.server.netty.NettyWebServerHandler.java
License:Apache License
/** * Send an error to the remote machine.//from w w w . j a va 2 s . com * * @param ctx * handler context * @param status * the status to send */ public void sendError(ChannelHandlerContext ctx, HttpResponseStatus status) { FullHttpResponse response = new DefaultFullHttpResponse(HTTP_1_1, status, Unpooled.copiedBuffer("Failure: " + status.toString() + "\r\n", CharsetUtil.UTF_8)); HttpHeaders.setHeader(response, CONTENT_TYPE, "text/plain; charset=UTF-8"); setContentLength(response, response.content().readableBytes()); ctx.channel().write(response).addListener(ChannelFutureListener.CLOSE); }
From source file:snow.http.server.ResourceHttpHandler.java
License:Open Source License
private void sendURL(final ChannelHandlerContext ctx, final FullHttpRequest request, final String uri, final InputStream is) throws Throwable { //final RandomAccessFile raf = new RandomAccessFile(file, "r"); FullHttpResponse response = new DefaultFullHttpResponse(HTTP_1_1, OK); //long modified = file.lastModified(); Date since = HttpHelper.parseDate(getHeader(request, IF_MODIFIED_SINCE)); // if (since != null && since.getTime() >= modified) { // HttpHelper.sendStatus(ctx, NOT_MODIFIED); // } else { byte[] buff = IOUtils.toByteArray(is); final long length = buff.length; HttpHelper.setDate(response);//from www . j a va 2 s . co m // HttpHelper.setLastModified(response, modified); HttpHeaders.setContentLength(response, length); HttpHeaders.setHeader(response, CONTENT_TYPE, mimeType((new File(uri)).toPath())); setHeader(response, CACHE_CONTROL, cache); // boolean isKeep = isKeepAlive(request); // if (isKeep) { // setHeader(response, CONNECTION, KEEP_ALIVE); // } // ChannelFuture writeFuture = ctx.writeAndFlush(new ChunkedFile(raf, 0, length, 8192)); response.content().writeBytes(buff); sendHttpResponse(ctx, request, response); // } // } }