private String determineScheme(Request request) { Headers headers = request.getHeaders(); String forwardedSsl = headers.get(X_FORWARDED_SSL.toString()); String forwardedProto = headers.get(X_FORWARDED_PROTO.toString()); if (ON.toString().equalsIgnoreCase(forwardedSsl)) { return HTTPS_SCHEME; } return forwardedProto != null ? forwardedProto : defaultScheme; } }
.append( ncsaLogFormat( request.getRemoteAddress(), "-", request.maybeGet(UserId.class).map(Types::cast), request.getTimestamp(), request.getMethod(), request.getRawUri(), request.getProtocol(), outcome.getResponse().getStatus(), responseSize)); request.maybeGet(RequestId.class).ifPresent(id1 -> { logLine.append(" id="); logLine.append(id1);
@Override public String getFullRequestURL() { return getAddress().toString() + request.getUri(); }
private String getMsg(Class<?> handlerClass, String type, Context context) { return "Default production error handler used to render " + type + ", please add a " + handlerClass.getName() + " instance to your application " + "(method: " + context.getRequest().getMethod() + ", uri: " + context.getRequest().getRawUri() + ")"; }
Response response = ctx.getResponse(); Optional<String> oXsrfValue = csrfService.lookupValueFromCookie(request.getCookies()); if (HttpMethod.GET.equals(request.getMethod())) { if (!oXsrfValue.isPresent()) { Cookie cookie = response.cookie(config.getCookieName(), randomString(64)); if (csrfService.hasValidHeader(request.getHeaders(), expectedValue)) { ctx.next(); } else if (request.getContentType().isForm()) { ctx.parse(Form.class) .then(form -> {
@SuppressWarnings("deprecation") public static <T> void connect(final Context context, String path, int maxLength, final WebSocketHandler<T> handler) { PublicAddress publicAddress = context.get(PublicAddress.class); URI address = publicAddress.get(context); URI httpPath = address.resolve(path); URI wsPath; try { wsPath = new URI("ws", httpPath.getUserInfo(), httpPath.getHost(), httpPath.getPort(), httpPath.getPath(), httpPath.getQuery(), httpPath.getFragment()); } catch (URISyntaxException e) { throw uncheck(e); } WebSocketServerHandshakerFactory factory = new WebSocketServerHandshakerFactory(wsPath.toString(), null, false, maxLength); Request request = context.getRequest(); HttpMethod method = valueOf(request.getMethod().getName()); FullHttpRequest nettyRequest = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, method, request.getUri()); nettyRequest.headers().add(SEC_WEBSOCKET_VERSION, request.getHeaders().get(SEC_WEBSOCKET_VERSION)); nettyRequest.headers().add(SEC_WEBSOCKET_KEY, request.getHeaders().get(SEC_WEBSOCKET_KEY)); final WebSocketServerHandshaker handshaker = factory.newHandshaker(nettyRequest); final DirectChannelAccess directChannelAccess = context.getDirectChannelAccess(); final Channel channel = directChannelAccess.getChannel(); if (!channel.config().isAutoRead()) { channel.config().setAutoRead(true); } handshaker.handshake(channel, nettyRequest).addListener(new HandshakeFutureListener<>(context, handshaker, handler)); }
@Override public String getRequestMethod() { return request.getMethod().getName(); }
@SuppressWarnings("deprecation") public static Form parseForm(Context context, TypedData body, MultiValueMap<String, String> base) throws RuntimeException { Request request = context.getRequest(); HttpMethod method = io.netty.handler.codec.http.HttpMethod.valueOf(request.getMethod().getName()); HttpRequest nettyRequest = new DefaultHttpRequest(HttpVersion.HTTP_1_1, method, request.getUri()); nettyRequest.headers().add(HttpHeaderNames.CONTENT_TYPE, body.getContentType().toString()); HttpPostRequestDecoder decoder = new HttpPostRequestDecoder(nettyRequest);
@Override public <T, O> Promise<T> parse(Parse<T, O> parse) { return getRequest().getBody() .map(b -> { try { return parse(b, parse); } finally { b.getBuffer().release(); } }); }
public void error(Throwable throwable) { if (throwable instanceof ClientErrorException) { clientError(((ClientErrorException) throwable).getClientErrorCode()); return; } ServerErrorHandler serverErrorHandler = get(ServerErrorHandler.TYPE); throwable = unpackThrowable(throwable); ThrowableHolder throwableHolder = getRequest().maybeGet(ThrowableHolder.TYPE).orElse(null); if (throwableHolder == null) { getRequest().add(ThrowableHolder.TYPE, new ThrowableHolder(throwable)); try { if (throwable instanceof InvalidPathEncodingException) { serverErrorHandler.error(this, (InvalidPathEncodingException) throwable); } else { serverErrorHandler.error(this, throwable); } } catch (Throwable errorHandlerThrowable) { onErrorHandlerError(serverErrorHandler, throwable, errorHandlerThrowable); } } else { onErrorHandlerError(serverErrorHandler, throwableHolder.getThrowable(), throwable); } }
@Override public String getRequestParameter(String name) { return Optional.ofNullable(request.getQueryParams().get(name)) .orElseGet(() -> form.get(name)); }
private RequestAttributes addEmptyRequestAttributes() { RequestAttributes attributes = new RequestAttributes(); request.add(attributes); return attributes; }
@Override public String getPath() { return request.getPath(); }
@Override public String getRemoteAddr() { return request.getRemoteAddress().getHost(); }
@Override public void handle(Context context) throws Exception { boolean accepted = false; String requestType = context.getRequest().getContentType().getType(); if (requestType != null) { for (String contentType : contentTypes) { if (requestType.equals(contentType)) { accepted = true; break; } } } if (accepted) { context.next(); } else { context.clientError(HttpResponseStatus.UNSUPPORTED_MEDIA_TYPE.code()); } } }
@Override public Collection<Cookie> getRequestCookies() { final List<Cookie> newCookies = new ArrayList<>(); final Set<io.netty.handler.codec.http.cookie.Cookie> cookies = request.getCookies(); for (final io.netty.handler.codec.http.cookie.Cookie cookie : cookies) { final Cookie newCookie = new Cookie(cookie.name(), cookie.value()); newCookie.setDomain(cookie.domain()); newCookie.setPath(cookie.path()); newCookie.setMaxAge((int) cookie.maxAge()); newCookie.setSecure(cookie.isSecure()); newCookie.setHttpOnly(cookie.isHttpOnly()); newCookies.add(newCookie); } return newCookies; }
@Override public void handle(Context context) throws Exception { HttpMethod method = context.getRequest().getMethod(); if (method.isOptions() && !handlers.containsKey(HttpMethod.OPTIONS)) { List<String> parts = new ArrayList<>(Collections2.transform(handlers.keySet(), HttpMethod::getName)); Collections.sort(parts); String methods = JOINER.join(parts); context.getResponse().getHeaders().add(HttpHeaderConstants.ALLOW, methods); context.getResponse().status(200).send(); } else { Handler handler = handlers.get(method); if (handler != null) { context.insert(handler); return; } if (method.isHead()) { Handler getHandler = handlers.get(HttpMethod.GET); if (getHandler != null) { context.insert(getHandler); return; } } NO_METHOD_HANDLER.handle(context); } }
@Override public void handle(Context context) throws Exception { final Registry commandRegistry = context.join(registry); final RegistryBuilder registryBuilder = Registry.builder(); Receiver receiver = new RatpackReceiver(chain -> new DelegatingCommandDelegate(registryBuilder, commandRegistry) { @Override public void clearRegistry() { registryReference.set(null); } }); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); context.getRequest().getBody() .blockingOp(body -> receiver.execute(body.getInputStream(), outputStream)) .then(body -> { if (registryBuilder.size() > 0) { Registry newRegistry = registryBuilder.build(); registryReference.set(newRegistry); } context.getResponse().send(ContentType.RESULT.getValue(), outputStream.toByteArray()); }); } }
@Override public Map<String, String[]> getRequestParameters() { return flattenMap(combineMaps(request.getQueryParams(), form)); }