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); }