@Override public AsyncHandler.STATE onHeadersReceived(final HttpResponseHeaders headers) throws Exception { FluentCaseInsensitiveStringsMap h = headers.getHeaders(); assertEquals("close", h.get("Connection").get(0).toLowerCase()); assertEquals("text/event-stream; charset=utf-8", h.get("Content-Type").get(0).toLowerCase()); return AsyncHandler.STATE.CONTINUE; }
for (String name : h.keySet()) { if (!"host".equalsIgnoreCase(name)) { for (String value : h.get(name)) { urlConnection.setRequestProperty(name, value); if (name.equalsIgnoreCase("Expect")) {
@Test public void emptyValueTest() { FluentCaseInsensitiveStringsMap map = new FluentCaseInsensitiveStringsMap(); map.add("foo", ""); assertEquals(map.keySet(), new LinkedHashSet<>(Arrays.asList("foo"))); assertEquals(map.getFirstValue("foo"), ""); assertEquals(map.getJoinedValue("foo", ", "), ""); assertEquals(map.get("foo"), Arrays.asList("")); }
public List<String> get(Object key) { return headers.get(key); }
/** * Returns the value for the given key. If there are multiple values for this key, * then only the first one will be returned. * * @param key The key * @return The first value */ public String getFirstValue(String key) { List<String> values = get(key); if (values.isEmpty()) { return null; } else { return values.get(0); } }
@Override public List<String> put(String key, List<String> value) { if (key == null) { throw new NullPointerException("Null keys are not allowed"); } List<String> oldValue = get(key); replaceWith(key, value); return oldValue; }
@Override public final List<String> getHeaders(String name) { return headers != null ? getHeaders().get(name) : Collections.<String> emptyList(); }
@Override public List<String> remove(Object key) { if (key == null) { return null; } else { List<String> oldValues = get(key.toString()); delete(key.toString()); return oldValues; } }
/** * Returns the values for the given key joined into a single string using the given delimiter. * * @param key The key * @return The value as a single string */ public String getJoinedValue(String key, String delimiter) { List<String> values = get(key); if (values.isEmpty()) { return null; } else if (values.size() == 1) { return values.get(0); } else { StringBuilder result = new StringBuilder(); for (String value : values) { if (result.length() > 0) { result.append(delimiter); } result.append(value); } return result.toString(); } }
/** * Invoke this API if you want to set the Range header on your {@link Request} based on the last valid bytes * position. * * @param request {@link Request} * @return a {@link Request} with the Range header properly set. */ public Request adjustRequestRange(Request request) { Long ri = resumableIndex.get(request.getUrl()); if (ri != null) { byteTransferred.set(ri); } // The Resumbale if (resumableListener != null && resumableListener.length() > 0 && byteTransferred.get() != resumableListener.length()) { byteTransferred.set(resumableListener.length()); } RequestBuilder builder = new RequestBuilder(request); if (request.getHeaders().get("Range").isEmpty() && byteTransferred.get() != 0) { builder.setHeader("Range", "bytes=" + byteTransferred.get() + "-"); } return builder.build(); }
@Override protected List<Cookie> buildCookies() { List<String> values = headers.getHeaders().get("set-cookie"); if (isNonEmpty(values)) { CookiesBuilder.ServerCookiesBuilder builder = new CookiesBuilder.ServerCookiesBuilder(false, true); for (String header : values) { builder.parse(header); } return convertCookies(builder.build()); } else { return Collections.emptyList(); } }
public static String perConnectionProxyAuthorizationHeader( Request request, ProxyServer proxyServer, boolean connect) throws IOException { String proxyAuthorization = null; if (connect) { List<String> auth = request.getHeaders().get(PROXY_AUTH_HEADER); String ntlmHeader = getNTLM(auth); if (ntlmHeader != null) { proxyAuthorization = ntlmHeader; } } else if (proxyServer != null && proxyServer.getPrincipal() != null && isNonEmpty(proxyServer.getNtlmDomain())) { List<String> auth = request.getHeaders().get(PROXY_AUTH_HEADER); if (getNTLM(auth) == null) { String msg = NTLMEngine.INSTANCE.generateType1Msg(); proxyAuthorization = "NTLM " + msg; } } return proxyAuthorization; }
if (response.getHeaders().containsKey(key)) { responseHeaders.put(key.toLowerCase(Locale.ROOT), response.getHeaders().get(key));
public List<String> getHeader(String name) { List<String> hdrs = headers.get(name); if (hdrs == null) return new ArrayList<String>(); return hdrs; }
@Override public List<String> put(String key, List<String> value) { if (key == null) { throw new NullPointerException("Null keys are not allowed"); } List<String> oldValue = get(key); replace(key, value); return oldValue; }
@Override public List<String> put(String key, List<String> value) { if (key == null) { throw new NullPointerException("Null keys are not allowed"); } List<String> oldValue = get(key); replaceWith(key, value); return oldValue; }
@Override public List<String> remove(Object key) { if (key == null) { return null; } else { List<String> oldValues = get(key.toString()); delete(key.toString()); return oldValues; } }
@Override public void store( final HttpResponseHeaders headers ) { final FluentCaseInsensitiveStringsMap fluentHeaders = headers.getHeaders(); final List<String> foundCookies = fluentHeaders.get( "Set-Cookie" ); if ( foundCookies != null ) for ( final String cookie : foundCookies ) cookies.add( CookieDecoder.decode( cookie ) ); }
/** * {@inheritDoc} */ @Override public STATE onHeadersReceived(HttpResponseHeaders headers) throws Exception { List<String> ct = headers.getHeaders().get("Content-Type"); if (ct == null || ct.size() == 0 || !ct.get(0).contains("text/event-stream")) { status = Socket.STATUS.ERROR; throw new TransportNotSupported(500, "Invalid Content-Type" + ct); } return super.onHeadersReceived(headers); }
/** * {@inheritDoc} */ @Override public STATE onHeadersReceived(HttpResponseHeaders headers) throws Exception { List<String> ct = headers.getHeaders().get("Content-Type"); if (ct == null || ct.size() == 0 || !ct.get(0).contains("text/event-stream")) { status = Socket.STATUS.ERROR; throw new TransportNotSupported(500, "Invalid Content-Type" + ct); } return super.onHeadersReceived(headers); }