@Override public final String toString() { return getName() + ": " + getValue(); }
private String normalizeValue(String name, String value) { if (name.toLowerCase().startsWith("accept")) { List<Preference> parse = Preference.parse(new Header(name, value)); value = Preference.toHeader(name, parse).getValue(); } return value; }
private String normalizeValue(String name, String value) { if (name.toLowerCase().startsWith("accept")) { List<Preference> parse = Preference.parse(new Header(name, value)); value = Preference.toHeader(name, parse).getValue(); } return value; }
public Vary(Headers headers) { Map<String, String> h = new TreeMap<String, String>(new VaryComparator()); for (Header header : headers) { String value = normalizeValue(header.getName(), header.getValue()); h.put(header.getName(), value); } varyHeaders = Collections.unmodifiableMap(h); }
public Properties toProperties() { Properties object = new Properties(); object.setProperty("cache-time", HeaderUtils.toHttpDate("cache-time", item.getCachedTime()).getValue()); HTTPResponse response = item.getResponse(); object.setProperty("status", String.valueOf(response.getStatus().getCode())); if (response.hasPayload()) { FilePayload payload = (FilePayload) response.getPayload().get(); object.setProperty("file", payload.getFile().getAbsolutePath()); } object.setProperty("headers", response.getHeaders().toString()); return object; }
/** * 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()); }
private static HeaderHashMap toMap(Iterable<Header> headers) { HeaderHashMap map = new HeaderHashMap(); for (Header h : headers) { List<String> list = map.getOrDefault(h.getName(), new ArrayList<>()); list.add(h.getValue()); map.put(h.getName(), list); } return map; }
private void doRequest(HTTPRequest request, HttpURLConnection connection) throws IOException { configureConnection(connection); connection.setRequestMethod(request.getMethod().getMethod()); Headers requestHeaders = request.getAllHeaders(); connection.addRequestProperty(HeaderConstants.USER_AGENT, getConfiguration().getUserAgent()); for (Header header : requestHeaders) { connection.addRequestProperty(header.getName(), header.getValue()); } connection.connect(); writeRequest(request, connection); }
public Headers set(Header header) { HeaderHashMap headers = copyMap(); String normalized = normalizeValue(header.getName(), header.getValue()); headers.put(header.getName(), new ArrayList<>(Arrays.asList(normalized))); return new Headers(headers); }
public Headers add(Iterable<Header> headers) { HeaderHashMap map = copyMap(); for (Header header : headers) { List<String> list = new ArrayList<>(map.get(header.getName())); String value = normalizeValue(header.getName(), header.getValue()); if (!list.contains(value)) { list.add(value); } map.put(header.getName(), list); } return new Headers(map); }