private static Charset extractCharset(RawHttpHeaders extensions) { String charset = extensions.getFirst("Charset").orElse("UTF-8"); try { return Charset.forName(charset); } catch (Exception e) { return StandardCharsets.UTF_8; } }
private static Charset getCharset(RawHttpHeaders extensions) { String charsetValue = extensions.getFirst("Charset").orElse("UTF-8"); Charset charset; if (Charset.isSupported(charsetValue)) { charset = Charset.forName(charsetValue); } else { System.err.println("Received text message with unsupported charset: " + charsetValue + ". Will try to use UTF-8 instead."); charset = StandardCharsets.UTF_8; } return charset; }
private static RawHttpHeaders withPlainTextExtension(RawHttpHeaders extensions) { RawHttpHeaders result = extensions.and(PLAIN_TEXT_HEADER); Optional<String> charset = result.getFirst("Charset"); if (!charset.isPresent() || !Charset.isSupported(charset.get())) { result = result.and(UTF8_HEADER); } return result; }
@Override public RawHttpResponse<Void> onResponse(Socket socket, URI uri, RawHttpResponse<Void> httpResponse) throws IOException { if (httpResponse.getHeaders() .getFirst("Connection") .orElse("") .equalsIgnoreCase("close") || httpResponse.getStartLine().getHttpVersion().isOlderThan(HttpVersion.HTTP_1_1)) { socketByHost.remove(uri.getHost()); // resolve the full response before closing the socket return httpResponse.eagerly(false); } return httpResponse; }
@Override public RawHttpResponse<Void> onResponse(Socket socket, URI uri, RawHttpResponse<Void> httpResponse) throws IOException { if (httpResponse.getHeaders() .getFirst("Connection") .orElse("") .equalsIgnoreCase("close") || httpResponse.getStartLine().getHttpVersion().isOlderThan(HttpVersion.HTTP_1_1)) { socketByHost.remove(uri.getHost()); // resolve the full response before closing the socket return httpResponse.eagerly(false); } return httpResponse; }
((InetSocketAddress) client.getRemoteSocketAddress()).getAddress()); HttpVersion httpVersion = request.getStartLine().getHttpVersion(); Optional<String> connectionOption = request.getHeaders().getFirst("Connection");
((InetSocketAddress) client.getRemoteSocketAddress()).getAddress()); HttpVersion httpVersion = request.getStartLine().getHttpVersion(); Optional<String> connectionOption = request.getHeaders().getFirst("Connection");
final String contentType = extensions.getFirst("Content-Type").orElse(""); if (contentType.equalsIgnoreCase("text/plain")) { Charset charset = getCharset(extensions);
EagerHttpResponse<?> rawResponse = client.send(request).eagerly(); rawHttpStatusCode = rawResponse.getStatusCode(); rawHttpContentType = rawResponse.getHeaders().getFirst(HttpHeaders.CONTENT_TYPE).orElse(""); rawHttpResponseBody = rawResponse.getBody().map(EagerBodyReader::toString) .orElseThrow(() -> new RuntimeException("No body"));