Refine search
@Override public void writeAttribute(final HttpServerExchange exchange, final String newValue) throws ReadOnlyAttributeException { exchange.getResponseHeaders().put(responseHeader, newValue); }
@Override public void beforeCommit(HttpServerExchange exchange) { if(!exchange.getResponseHeaders().contains(Headers.ACCEPT_RANGES)) { if (exchange.getResponseHeaders().contains(Headers.CONTENT_LENGTH)) { exchange.getResponseHeaders().put(Headers.ACCEPT_RANGES, "bytes"); } else { exchange.getResponseHeaders().put(Headers.ACCEPT_RANGES, "none"); } } }
@Override public void setResponseHeader(final String headerName, final String headerValue) { exchange.getResponseHeaders().put(HttpString.tryFromString(headerName), headerValue); }
@Override public void header(final String name, final String value) { if ("Content-Length".equalsIgnoreCase(name)) { exchange.getResponseHeaders().remove(Headers.TRANSFER_ENCODING); } exchange.getResponseHeaders().put(HttpString.tryFromString(name), value); }
@Override public void handleRequest(final HttpServerExchange exchange) throws Exception { // better method is used in DateUtils#addDateHeaderIfRequired long time = System.nanoTime(); if(time < nextUpdateTime) { exchange.getResponseHeaders().put(Headers.DATE, cachedDateString); } else { long realTime = System.currentTimeMillis(); String dateString = DateUtils.toDateString(new Date(realTime)); cachedDateString = dateString; nextUpdateTime = time + 1000000000; exchange.getResponseHeaders().put(Headers.DATE, dateString); } next.handleRequest(exchange); }
@Override public boolean handleDefaultResponse(final HttpServerExchange exchange) { exchange.getResponseHeaders().put(Headers.LOCATION, location); exchange.setStatusCode(StatusCodes.FOUND); exchange.endExchange(); return true; } });
@Override public void serve(Sender sender, HttpServerExchange exchange, IoCallback completionCallback) { exchange.getResponseHeaders().put(Headers.CONTENT_ENCODING, value.getValue()); resource.serve(sender, exchange, completionCallback); }
@Override public void handleRequest(final HttpServerExchange exchange) throws Exception { exchange.getResponseHeaders().put(header, value.readAttribute(exchange)); next.handleRequest(exchange); }
private StreamSinkConduit createNextChannel() { if (deflater.finished() && allAreSet(state, WRITTEN_TRAILER)) { //the deflater was fully flushed before we created the channel. This means that what is in the buffer is //all there is int remaining = currentBuffer.getBuffer().remaining(); if (additionalBuffer != null) { remaining += additionalBuffer.remaining(); } if(!exchange.getResponseHeaders().contains(Headers.TRANSFER_ENCODING)) { exchange.getResponseHeaders().put(Headers.CONTENT_LENGTH, Integer.toString(remaining)); } } else { exchange.getResponseHeaders().remove(Headers.CONTENT_LENGTH); } return conduitFactory.create(); }
static void sendRedirect(final HttpServerExchange exchange, final String location) { // TODO - String concatenation to construct URLS is extremely error prone - switch to a URI which will better handle this. String loc = exchange.getRequestScheme() + "://" + exchange.getHostAndPort() + location; exchange.getResponseHeaders().put(Headers.LOCATION, loc); } }
@Override public void handleRequest(HttpServerExchange exchange) throws Exception { final String redirectToUrl = String.format("%s/%s?%s", exchange.getRequestURL(), OAuthTokenWebListener.ExtractingTokenInterceptor.PATH_PREFIX, exchange.getQueryString()); final URI redirectToUri = URI.create(redirectToUrl).normalize(); logger.log(Level.INFO, "Redirecting to " + redirectToUri); exchange.setResponseCode(StatusCodes.FOUND); exchange.getResponseHeaders().put(Headers.LOCATION, redirectToUri.toString()); exchange.endExchange(); } }
@Override protected void handshake(final Runnable handler) throws Exception { exchange.getResponseHeaders() .put(Headers.CONNECTION, "Close") .put(Headers.CONTENT_TYPE, "text/event-stream; charset=utf-8"); exchange.setStatusCode(200) .setPersistent(false); exchange.dispatch(handler); }
@Override public void handleRequest(final HttpServerExchange exchange) throws Exception { exchange.setStatusCode(StatusCodes.FOUND); exchange.getResponseHeaders().put(Headers.LOCATION, attribute.readAttribute(exchange)); exchange.endExchange(); }
@Override public void handleRequest(HttpServerExchange exchange) throws Exception { exchange.getResponseHeaders().put( Headers.CONTENT_TYPE, "application/json"); Map<String, Object> resMap = new HashMap<>(); resMap.put("access_token", JwtIssuer.getJwt(mockClaims())); resMap.put("token_type", "bearer"); resMap.put("expires_in", 600); exchange.getResponseSender().send(ByteBuffer.wrap( Config.getInstance().getMapper().writeValueAsBytes( resMap))); }
public static void renderDirectoryListing(HttpServerExchange exchange, Resource resource) { String requestPath = exchange.getRequestPath(); if (! requestPath.endsWith("/")) { exchange.setStatusCode(StatusCodes.FOUND); exchange.getResponseHeaders().put(Headers.LOCATION, RedirectBuilder.redirect(exchange, exchange.getRelativePath() + "/", true)); exchange.endExchange(); return; } StringBuilder builder = renderDirectoryListing(requestPath, resource); try { ByteBuffer output = ByteBuffer.wrap(builder.toString().getBytes(StandardCharsets.UTF_8)); exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/html; charset=UTF-8"); exchange.getResponseHeaders().put(Headers.CONTENT_LENGTH, String.valueOf(output.limit())); exchange.getResponseHeaders().put(Headers.LAST_MODIFIED, DateUtils.toDateString(new Date())); exchange.getResponseHeaders().put(Headers.CACHE_CONTROL, "must-revalidate"); Channels.writeBlocking(exchange.getResponseChannel(), output); } catch (UnsupportedEncodingException e) { throw new IllegalStateException(e); } catch (IOException e) { UndertowLogger.REQUEST_IO_LOGGER.ioException(e); exchange.setStatusCode(StatusCodes.INTERNAL_SERVER_ERROR); } exchange.endExchange(); }
@Override public void handleRequest(final HttpServerExchange exchange) throws Exception { String tid = exchange.getRequestHeaders().getFirst(HttpStringConstants.TRACEABILITY_ID); if(tid != null) { exchange.getResponseHeaders().put(HttpStringConstants.TRACEABILITY_ID, tid); } Handler.next(exchange, next); }
private void handleHttp2Upgrade(HttpServerExchange exchange, final String upgrade, String settings, final byte[] data) throws IOException { //required by spec final ByteBuffer settingsFrame = FlexBase64.decodeURL(settings); exchange.getResponseHeaders().put(Headers.UPGRADE, upgrade); exchange.upgradeChannel(new HttpUpgradeListener() { @Override public void handleUpgrade(StreamConnection streamConnection, HttpServerExchange exchange) { OptionMap undertowOptions = exchange.getConnection().getUndertowOptions(); Http2Channel channel = new Http2Channel(streamConnection, upgrade, exchange.getConnection().getByteBufferPool(), null, false, true, true, settingsFrame, undertowOptions); Http2ReceiveListener receiveListener = new Http2ReceiveListener(new HttpHandler() { @Override public void handleRequest(HttpServerExchange exchange) throws Exception { //if this header is present we don't actually process the rest of the handler chain //as the request was only to create the initial request if(exchange.getRequestHeaders().contains("X-HTTP2-connect-only")) { exchange.endExchange(); return; } exchange.setProtocol(Protocols.HTTP_2_0); next.handleRequest(exchange); } }, undertowOptions, exchange.getConnection().getBufferSize(), null); channel.getReceiveSetter().set(receiveListener); receiveListener.handleInitialRequest(exchange, channel, data); channel.resumeReceives(); } }); }
@Override public boolean handleDefaultResponse(final HttpServerExchange exchange) { if (!exchange.isResponseChannelAvailable()) { return false; } Set<Integer> codes = responseCodes; if (codes == null ? exchange.getStatusCode() >= StatusCodes.BAD_REQUEST : codes.contains(Integer.valueOf(exchange.getStatusCode()))) { final String errorPage = "<html><head><title>Error</title></head><body>" + exchange.getStatusCode() + " - " + StatusCodes.getReason(exchange.getStatusCode()) + "</body></html>"; exchange.getResponseHeaders().put(Headers.CONTENT_LENGTH, "" + errorPage.length()); exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/html"); Sender sender = exchange.getResponseSender(); sender.send(errorPage); return true; } return false; } };
@Override public void handleRequest(final HttpServerExchange exchange) throws Exception { if (exchange.getRequestHeaders().contains(Headers.CONTENT_TYPE)) { exchange .getResponseHeaders() .put(Headers.CONTENT_TYPE, exchange.getRequestHeaders().get(Headers.CONTENT_TYPE).element()); } else { exchange .getResponseHeaders() .put(Headers.CONTENT_TYPE, contentType); } Handler.next(exchange, next); } }
@Override protected StreamSinkConduit getSinkConduit(HttpServerExchange exchange, StreamSinkConduit conduit) { if(exchange.getRequestMethod().equals(Methods.CONNECT) && !connectHandled) { //make sure that any unhandled CONNECT requests result in a connection close exchange.setPersistent(false); exchange.getResponseHeaders().put(Headers.CONNECTION, "close"); } return HttpTransferEncoding.createSinkConduit(exchange); }