public Optional<Tag> getETag() { Optional<String> tag = getFirstHeaderValue(HeaderConstants.ETAG); return tag.flatMap(Tag::parse); }
public Optional<MIMEType> getContentType() { Optional<String> ct = getFirstHeaderValue(HeaderConstants.CONTENT_TYPE); return ct.map(MIMEType::valueOf); }
public Optional<URI> getContentLocation() { return getFirstHeaderValue(HeaderConstants.CONTENT_LOCATION).map(URI::create); }
public Optional<URI> getLocation() { return getFirstHeaderValue(HeaderConstants.LOCATION).map(URI::create); }
public String getFirstHeaderValue(String headerKey) { return headers.getFirstHeaderValue(headerKey).orElse(null); }
public Optional<Long> getContentLength() { return getFirstHeaderValue(HeaderConstants.CONTENT_LENGTH).flatMap(NumberUtils::optToLong); }
public static Conditionals valueOf(Headers headers) { List<Tag> ifMatch = makeTags(headers.getFirstHeaderValue(HeaderConstants.IF_MATCH).orElse(null)); List<Tag> ifNoneMatch = makeTags(headers.getFirstHeaderValue(HeaderConstants.IF_NONE_MATCH).orElse(null)); Optional<LocalDateTime> modifiedSince = headers.getFirstHeader(HeaderConstants.IF_MODIFIED_SINCE).flatMap(HeaderUtils::fromHttpDate); Optional<LocalDateTime> unModifiedSince = headers.getFirstHeader(HeaderConstants.IF_UNMODIFIED_SINCE).flatMap(HeaderUtils::fromHttpDate); return new Conditionals(ifMatch, ifNoneMatch, modifiedSince, unModifiedSince); }
private static Vary determineVariation(Headers responseHeaders, HTTPRequest request) { Headers requestHeaders = request.getAllHeaders(); Optional<String> varyHeader = responseHeaders.getFirstHeaderValue(VARY); Map<String, String> resolvedVaryHeaders = new HashMap<String, String>(); if (varyHeader.isPresent()) { String varyValue = varyHeader.get(); if (varyValue.equals("*")) { return Vary.ALL; } String[] varies = varyValue.split(","); for (String vary : varies) { Optional<String> value = requestHeaders.getFirstHeaderValue(vary); value.ifPresent(s -> resolvedVaryHeaders.put(vary, s)); } } if (request.getChallenge().isPresent() && Boolean.getBoolean("Vary.authorization")) { resolvedVaryHeaders.put(HeaderConstants.AUTHORIZATION, request.getChallenge().get().getIdentifier()); } return new Vary(resolvedVaryHeaders); }
public static HTTPResponse createResponse(final StatusLine line, final Headers responseHeaders, final Optional<InputStream> stream) { Optional<String> contentLengthHeader = responseHeaders.getFirstHeaderValue(HeaderConstants.CONTENT_LENGTH); MIMEType type = responseHeaders.getContentType().orElse(MIMEType.APPLICATION_OCTET_STREAM); Optional<Long> length = responseHeaders.getContentLength(); Optional<Payload> payload = stream. filter(is -> line.getStatus().isBodyContentAllowed()). map(is -> new InputStreamPayload(is, type, length.orElse(-1L))); return new HTTPResponse(payload, line, responseHeaders); } }
Optional<String> header = headers.getFirstHeaderValue(PRAGMA); if (OptionalUtils.exists(header, s -> s.contains(NO_CACHE_HEADER_VALUE))) { return false;