private String getFullHeaderValue(final Header[] headers) { if (headers == null) { return ""; } final StringBuilder buf = new StringBuilder(""); for (int i = 0; i < headers.length; i++) { final Header hdr = headers[i]; if (i > 0) { buf.append(", "); } buf.append(hdr.getValue().trim()); } return buf.toString(); }
private void debugRequest(HttpUriRequestBase httpRequest, String content) { if (log.isDebugEnabled()) { log.debug(httpRequest.getMethod() + " " + httpRequest.getPath()); Header[] headers = httpRequest.getHeaders(); for (Header header : headers) { log.debug(header.getName() + ": " + header.getValue()); } if (content != null) { log.debug(content); } } }
public void encodeHeader( final ByteArrayBuffer dst, final Header header) throws CharacterCodingException { Args.notNull(dst, "ByteArrayBuffer"); Args.notNull(header, "Header"); encodeHeader(dst, header.getName(), header.getValue(), header.isSensitive()); }
/** * Returns all the headers that were on the origin response. */ @Override public Header[] getHeaders() { final HeaderGroup filteredHeaders = new HeaderGroup(); for (final Iterator<Header> iterator = responseHeaders.headerIterator(); iterator.hasNext();) { final Header header = iterator.next(); if (!REQUEST_METHOD_HEADER_NAME.equals(header.getName())) { filteredHeaders.addHeader(header); } } return filteredHeaders.getHeaders(); }
public static boolean isEndToEndHeaderSubset(final HttpMessage r1, final HttpMessage r2) { for (final Header h : r1.getHeaders()) { if (!isHopByHopHeader(h.getName())) { final String r1val = getCanonicalHeaderValue(r1, h.getName()); final String r2val = getCanonicalHeaderValue(r2, h.getName()); if (!r1val.equals(r2val)) { return false; } } } return true; }
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 headersNotContain(final Header[] headers, final String name, final String value) { for (final Header header : headers) { if (header.getName().equals(name)) { if (header.getValue().equals(value)) { fail("Header [" + name + ": " + value + "] found in headers where it should not be"); } } } } }
@Override public Set<String> getTrailerNames() { final Set<String> names = new LinkedHashSet<>(); for (final Header trailer: trailers) { names.add(trailer.getName()); } return names; }
/** * Returns the HTTP request method that was used to create the cached * response entry. * * @since 4.4 */ public String getRequestMethod() { final Header requestMethodHeader = responseHeaders.getFirstHeader(REQUEST_METHOD_HEADER_NAME); if (requestMethodHeader != null) { return requestMethodHeader.getValue(); } return HeaderConstants.GET_METHOD; }
@Override public Set<String> getTrailerNames() { final Set<String> names = new LinkedHashSet<>(); for (final Header trailer: trailers) { names.add(trailer.getName()); } return names; }
protected long getAgeValue(final HttpCacheEntry entry) { long ageValue = 0; for (final Header hdr : entry.getHeaders(HeaderConstants.AGE)) { long hdrAge; try { hdrAge = Long.parseLong(hdr.getValue()); if (hdrAge < 0) { hdrAge = MAX_AGE; } } catch (final NumberFormatException nfe) { hdrAge = MAX_AGE; } ageValue = (hdrAge > ageValue) ? hdrAge : ageValue; } return ageValue; }
final Header responseHeader = it.next(); if (HttpHeaders.CONTENT_ENCODING.equals(responseHeader.getName())) { continue; headerGroup.removeHeaders(responseHeader.getName()); if (HeaderConstants.WARNING.equalsIgnoreCase(cacheHeader.getName())) { final String warningValue = cacheHeader.getValue(); if (warningValue != null && warningValue.startsWith("1")) { it.remove(); final Header responseHeader = it.next(); if (HttpHeaders.CONTENT_ENCODING.equals(responseHeader.getName())) { continue;
public AsyncRequestBuilder removeHeaders(final String name) { if (name == null || headergroup == null) { return this; } for (final Iterator<Header> i = headergroup.headerIterator(); i.hasNext(); ) { final Header header = i.next(); if (name.equalsIgnoreCase(header.getName())) { i.remove(); } } return this; }
/** * Determines if the given response is generated from a stale cache entry. * @param httpResponse the response to be checked * @return whether the response is stale or not */ boolean isStale(final HttpResponse httpResponse) { for (final Iterator<Header> it = httpResponse.headerIterator(HeaderConstants.WARNING); it.hasNext(); ) { /* * warn-codes * 110 = Response is stale * 111 = Revalidation failed */ final Header warning = it.next(); final String warningValue = warning.getValue(); if (warningValue.startsWith("110") || warningValue.startsWith("111")) { return true; } } return false; }
@Override public boolean matches(final Object item) { if (item instanceof MessageHeaders) { final MessageHeaders messageHeaders = (MessageHeaders) item; for (final Iterator<Header> it = messageHeaders.headerIterator(); it.hasNext(); ) { final Header header = it.next(); if (headerName.equalsIgnoreCase(header.getName()) && LangUtils.equals(headerValue, header.getValue())) { return true; } } } return false; }
public RequestBuilder removeHeaders(final String name) { if (name == null || headerGroup == null) { return this; } for (final Iterator<Header> i = headerGroup.headerIterator(); i.hasNext(); ) { final Header header = i.next(); if (name.equalsIgnoreCase(header.getName())) { i.remove(); } } return this; }
/** * Check entry against If-None-Match * @param request The current httpRequest being made * @param entry the cache entry * @return boolean does the etag validator match */ private boolean etagValidatorMatches(final HttpRequest request, final HttpCacheEntry entry) { final Header etagHeader = entry.getFirstHeader(HeaderConstants.ETAG); final String etag = (etagHeader != null) ? etagHeader.getValue() : null; final Iterator<HeaderElement> it = MessageSupport.iterate(request, HeaderConstants.IF_NONE_MATCH); while (it.hasNext()) { final HeaderElement elt = it.next(); final String reqEtag = elt.toString(); if (("*".equals(reqEtag) && etag != null) || reqEtag.equals(etag)) { return true; } } return false; }
/** Returns an array of the parseable warning values contained * in the given header value, which is assumed to be a * Warning header. Improperly formatted warning values will be * skipped, in keeping with the philosophy of "ignore what you * cannot understand." * @param h Warning {@link Header} to parse * @return array of {@code WarnValue} objects */ public static WarningValue[] getWarningValues(final Header h) { final List<WarningValue> out = new ArrayList<>(); final String src = h.getValue(); int offs = 0; while(offs < src.length()) { try { final WarningValue wv = new WarningValue(src, offs); out.add(wv); offs = wv.offs; } catch (final IllegalArgumentException e) { final int nextComma = src.indexOf(',', offs); if (nextComma == -1) { break; } offs = nextComma + 1; } } final WarningValue[] wvs = {}; return out.toArray(wvs); }