private boolean transferEncodingIsPresent(final HttpResponse response) { final Header hdr = response.getFirstHeader(HttpHeaders.TRANSFER_ENCODING); return hdr != null; }
protected boolean isExplicitlyCacheable(final HttpResponse response) { if (response.getFirstHeader(HeaderConstants.EXPIRES) != null) { return true; } final String[] cacheableParams = { HeaderConstants.CACHE_CONTROL_MAX_AGE, "s-maxage", HeaderConstants.CACHE_CONTROL_MUST_REVALIDATE, HeaderConstants.CACHE_CONTROL_PROXY_REVALIDATE, HeaderConstants.PUBLIC }; return hasCacheControlParameterFrom(response, cacheableParams); }
private void ensure206ContainsDateHeader(final HttpResponse response) { if (response.getFirstHeader(HttpHeaders.DATE) == null) { response.addHeader(HttpHeaders.DATE, DateUtils.formatDate(new Date())); } }
private boolean expiresHeaderLessOrEqualToDateHeaderAndNoCacheControl(final HttpResponse response) { if (response.getFirstHeader(HeaderConstants.CACHE_CONTROL) != null) { return false; } final Header expiresHdr = response.getFirstHeader(HeaderConstants.EXPIRES); final Header dateHdr = response.getFirstHeader(HttpHeaders.DATE); if (expiresHdr == null || dateHdr == null) { return false; } final Date expires = DateUtils.parseDate(expiresHdr.getValue()); final Date date = DateUtils.parseDate(dateHdr.getValue()); if (expires == null || date == null) { return false; } return expires.equals(date) || expires.before(date); }
private void addMissingContentLengthHeader(final HttpResponse response, final byte[] body) { if (transferEncodingIsPresent(response)) { return; } final Header contentLength = response.getFirstHeader(HttpHeaders.CONTENT_LENGTH); if (contentLength == null) { response.setHeader(HttpHeaders.CONTENT_LENGTH, Integer.toString(body.length)); } }
static boolean responseAndEntryEtagsDiffer(final HttpResponse response, final HttpCacheEntry entry) { final Header entryEtag = entry.getFirstHeader(HeaderConstants.ETAG); final Header responseEtag = response.getFirstHeader(HeaderConstants.ETAG); if (entryEtag == null || responseEtag == null) { return false; } return (!entryEtag.getValue().equals(responseEtag.getValue())); }
private void ensure200ForOPTIONSRequestWithNoBodyHasContentLengthZero(final HttpRequest request, final HttpResponse response) { if (!request.getMethod().equalsIgnoreCase(HeaderConstants.OPTIONS_METHOD)) { return; } if (response.getCode() != HttpStatus.SC_OK) { return; } if (response.getFirstHeader(HttpHeaders.CONTENT_LENGTH) == null) { response.addHeader(HttpHeaders.CONTENT_LENGTH, "0"); } }
private static URI getLocationURI(final URI requestUri, final HttpResponse response, final String headerName) { final Header h = response.getFirstHeader(headerName); if (h == null) { return null; } final URI locationUri = HttpCacheSupport.normalizeQuetly(h.getValue()); if (locationUri == null) { return requestUri; } if (locationUri.isAbsolute()) { return locationUri; } else { return URIUtils.resolve(requestUri, locationUri); } }
final Header contentLength = response.getFirstHeader(HttpHeaders.CONTENT_LENGTH); if (contentLength != null) { final long contentLengthValue = Long.parseLong(contentLength.getValue());
private boolean transferEncodingIsPresent(final HttpResponse response) { final Header hdr = response.getFirstHeader(HttpHeaders.TRANSFER_ENCODING); return hdr != null; }
callback = new BackendResponseHandler(target, request, requestDate, responseDate, scope, asyncExecCallback); } else { final Header resultEtagHeader = backendResponse.getFirstHeader(HeaderConstants.ETAG); if (resultEtagHeader == null) { log.warn("304 response did not contain ETag");
protected boolean isExplicitlyCacheable(final HttpResponse response) { if (response.getFirstHeader(HeaderConstants.EXPIRES) != null) { return true; } final String[] cacheableParams = { HeaderConstants.CACHE_CONTROL_MAX_AGE, "s-maxage", HeaderConstants.CACHE_CONTROL_MUST_REVALIDATE, HeaderConstants.CACHE_CONTROL_PROXY_REVALIDATE, HeaderConstants.PUBLIC }; return hasCacheControlParameterFrom(response, cacheableParams); }
private boolean expiresHeaderLessOrEqualToDateHeaderAndNoCacheControl(final HttpResponse response) { if (response.getFirstHeader(HeaderConstants.CACHE_CONTROL) != null) { return false; } final Header expiresHdr = response.getFirstHeader(HeaderConstants.EXPIRES); final Header dateHdr = response.getFirstHeader(HttpHeaders.DATE); if (expiresHdr == null || dateHdr == null) { return false; } final Date expires = DateUtils.parseDate(expiresHdr.getValue()); final Date date = DateUtils.parseDate(dateHdr.getValue()); if (expires == null || date == null) { return false; } return expires.equals(date) || expires.before(date); }
private void addMissingContentLengthHeader(final HttpResponse response, final byte[] body) { if (transferEncodingIsPresent(response)) { return; } final Header contentLength = response.getFirstHeader(HttpHeaders.CONTENT_LENGTH); if (contentLength == null) { response.setHeader(HttpHeaders.CONTENT_LENGTH, Integer.toString(body.length)); } }
private void ensure206ContainsDateHeader(final HttpResponse response) { if (response.getFirstHeader(HttpHeaders.DATE) == null) { response.addHeader(HttpHeaders.DATE, DateUtils.formatDate(new Date())); } }
@Override public long getRetryInterval(final HttpResponse response, final HttpContext context) { final Header header = response.getFirstHeader(HttpHeaders.RETRY_AFTER); if (header != null) { final String value = header.getValue(); try { return Long.parseLong(value) * 1000; } catch (final NumberFormatException ignore) { final Date date = DateUtils.parseDate(value); if (date != null) { final long n = date.getTime() - System.currentTimeMillis(); return n > 0 ? n : 0; } } } return this.defaultRetryInterval; }
private void ensure200ForOPTIONSRequestWithNoBodyHasContentLengthZero(final HttpRequest request, final HttpResponse response) { if (!request.getMethod().equalsIgnoreCase(HeaderConstants.OPTIONS_METHOD)) { return; } if (response.getCode() != HttpStatus.SC_OK) { return; } if (response.getFirstHeader(HttpHeaders.CONTENT_LENGTH) == null) { response.addHeader(HttpHeaders.CONTENT_LENGTH, "0"); } }
static boolean responseAndEntryEtagsDiffer(final HttpResponse response, final HttpCacheEntry entry) { final Header entryEtag = entry.getFirstHeader(HeaderConstants.ETAG); final Header responseEtag = response.getFirstHeader(HeaderConstants.ETAG); if (entryEtag == null || responseEtag == null) { return false; } return (!entryEtag.getValue().equals(responseEtag.getValue())); }
private static URI getLocationURI(final URI requestUri, final HttpResponse response, final String headerName) { final Header h = response.getFirstHeader(headerName); if (h == null) { return null; } final URI locationUri = HttpCacheSupport.normalizeQuetly(h.getValue()); if (locationUri == null) { return requestUri; } if (locationUri.isAbsolute()) { return locationUri; } else { return URIUtils.resolve(requestUri, locationUri); } }
@Override public URI getLocationURI( final HttpRequest request, final HttpResponse response, final HttpContext context) throws HttpException { Args.notNull(request, "HTTP request"); Args.notNull(response, "HTTP response"); Args.notNull(context, "HTTP context"); //get the location header to find out where to redirect to final Header locationHeader = response.getFirstHeader("location"); if (locationHeader == null) { throw new HttpException("Redirect location is missing"); } final String location = locationHeader.getValue(); URI uri = createLocationURI(location); try { if (!uri.isAbsolute()) { // Resolve location URI uri = URIUtils.resolve(request.getUri(), uri); } } catch (final URISyntaxException ex) { throw new ProtocolException(ex.getMessage(), ex); } return uri; }