public List<Header> getHeaders(String headerKey) { return headers.getHeaders(headerKey); }
public Optional<Header> getFirstHeader(String headerKey) { List<Header> headerList = getHeaders(headerKey); return headerList.stream().findFirst(); }
public List<Directives> getDirectives(String name) { return getHeaders(name).stream().map(Header::getDirectives).collect(Collectors.toList()); }
public boolean contains(Header header) { List<Header> values = getHeaders(header.getName()); return values.contains(header); }
protected List<AuthScheme> toAuthSchemes(HTTPResponse response, String name) { List<Header> authenticateHeader = response.getHeaders().getHeaders(name); return authenticateHeader.stream(). flatMap( h -> h.getDirectives().stream()). map(AuthScheme::new). collect(Collectors.toList()); } }
public HTTPResponse(Optional<Payload> payload, StatusLine statusLine, Headers headers) { this.statusLine = Objects.requireNonNull(statusLine, "You must supply a Status"); this.payload = Objects.requireNonNull(payload, "We need an optional payload, not null"); this.headers = Objects.requireNonNull(headers, "You must supply some Headers"); if (headers.contains(X_CACHE)) { Header cacheHeader = CacheHeaderBuilder.getBuilder().createHITXCacheHeader(); List<Header> xcacheHeaders = headers.getHeaders(X_CACHE); cached = xcacheHeaders.contains(cacheHeader); } else { cached = false; } }
/** * Analyses the headers in the given request to figure out if this {@link Vary variation} matches. * * @param request the request to analyse * @return {@code true} if the request matches the variance. {@code false} if not. */ //todo: cleanup this public boolean matches(final HTTPRequest request) { if (varyHeaders.containsKey("ALL")) return false; Headers headers = request.getAllHeaders(); for (Map.Entry<String, String> varyEntry : varyHeaders.entrySet()) { if (request.getChallenge().isPresent() && varyEntry.getKey().equals(HeaderConstants.AUTHORIZATION)) { if (!request.getChallenge().get().getIdentifier().equals(varyEntry.getValue())) { return false; } } else { List<Header> requestHeaderValue = headers.getHeaders(varyEntry.getKey()); boolean valid = requestHeaderValue.isEmpty() ? varyEntry.getValue() == null : headers.getFirstHeader(varyEntry.getKey()).get().getValue().equals(varyEntry.getValue()); if (!valid) { return false; } } } List<Preference> preferences = new ArrayList<>(); preferences.addAll(headers.getAccept()); preferences.addAll(headers.getAcceptCharset()); preferences.addAll(headers.getAcceptLanguage()); return !(varyHeaders.isEmpty() && !preferences.isEmpty()); }