/** * Transforms an {@code HttpHeader} to this {@code ModeledCustomHeader} if the name and value are correct. * It may throw in case of malformed headers */ public Optional<H> from(final HttpHeader header) { if (header.lowercaseName().equals(lowercaseName())) { return Optional.of(parse(header.value())); } return Optional.empty(); } }
private static Optional<String> extractUserAgent(final RequestContext requestContext) { final Stream<HttpHeader> headerStream = StreamSupport.stream(requestContext.getRequest().getHeaders().spliterator(), false); // find user-agent: HTTP header names are case-insensitive return headerStream.filter(header -> "user-agent".equalsIgnoreCase(header.name())) .map(HttpHeader::value) .findAny(); }
/** * Extracts the {@link RequestHeaders} of the specified request. * * @param requestContext the RequestContext from which to extract the headers. * @return the extracted headers of {@code requestContext}. * @throws NullPointerException if {@code requestContext} is {@code null}. */ public static RequestHeaders getHeaders(final RequestContext requestContext) { checkNotNull(requestContext, "requestContext"); final Map<String, String> headers = new HashMap<>(); requestContext.getRequest().getHeaders().forEach( header -> headers.put(header.name().toLowerCase(), header.value())); final Iterable<akka.http.javadsl.model.headers.HttpCookiePair> cookies = requestContext.getRequest() .getHeader(Cookie.class) .map(akka.http.javadsl.model.headers.Cookie::getCookies) .orElse(Collections.emptyList()); final Map<String, String> cookieMap = new HashMap<>(); cookies.forEach(cookie -> cookieMap.put(cookie.name(), cookie.value())); return new RequestHeaders(headers, cookieMap); }
private static Optional<String> extractXForwardedProtoHeader(final Uri requestUri, final RequestContext requestContext) { String forwardedProtoHeaderValue; final Optional<akka.http.javadsl.model.HttpHeader> standardForwardedProtoHeader = requestContext.getRequest() .getHeader(X_FORWARDED_PROTO_STANDARD) // .filter(header -> header.value().length() > 0); forwardedProtoHeaderValue = standardForwardedProtoHeader.map(akka.http.javadsl.model.HttpHeader::value) .orElse(null); if (forwardedProtoHeaderValue != null) { LOGGER.debug("Header {} was: '{}' for uri: {}", X_FORWARDED_PROTO_STANDARD, forwardedProtoHeaderValue, requestUri); } else { final Optional<akka.http.javadsl.model.HttpHeader> forwardedProtoHeaderLbaas = requestContext.getRequest() .getHeader(X_FORWARDED_PROTO_LBAAS) // .filter(header -> header.value().length() > 0); forwardedProtoHeaderValue = forwardedProtoHeaderLbaas.map(akka.http.javadsl.model.HttpHeader::value) .orElse(null); if (forwardedProtoHeaderValue != null) { LOGGER.debug("Header {} was: '{}' for uri: {}", X_FORWARDED_PROTO_LBAAS, forwardedProtoHeaderValue, requestUri); } else { LOGGER.debug("Missing header {} for uri: {}", X_FORWARDED_PROTO_STANDARD + " or " + X_FORWARDED_PROTO_LBAAS, requestUri); } } return Optional.ofNullable(forwardedProtoHeaderValue); }
/** * Transforms an {@code HttpHeader} to this {@code ModeledCustomHeader} if the name and value are correct. * It may throw in case of malformed headers */ public Optional<H> from(final HttpHeader header) { if (header.lowercaseName().equals(lowercaseName())) { return Optional.of(parse(header.value())); } return Optional.empty(); } }
/** * Transforms an {@code HttpHeader} to this {@code ModeledCustomHeader} if the name and value are correct. * It may throw in case of malformed headers */ public Optional<H> from(final HttpHeader header) { if (header.lowercaseName().equals(lowercaseName())) { return Optional.of(parse(header.value())); } return Optional.empty(); } }