35public record
HttpClientConfig(Duration connectTimeout, Duration requestTimeout, HttpClient.Redirect redirectPolicy,
36 String userAgent, Map<String, List<String>> defaultHeaders) {
38 public static Builder builder() {
43 return builder().build();
46 public Map<String, List<String>> defaultHeaders() {
47 return Map.copyOf(defaultHeaders);
50 public static final class Builder {
51 private Duration connectTimeout = Duration.ofSeconds(10);
52 private Duration requestTimeout = Duration.ofSeconds(30);
53 private HttpClient.Redirect redirectPolicy = HttpClient.Redirect.NORMAL;
54 private String userAgent =
"ether-http-client/1.0";
55 private final Map<String, List<String>> defaultHeaders =
new LinkedHashMap<>();
57 public Builder connectTimeout(
final Duration connectTimeout) {
58 this.connectTimeout = connectTimeout;
62 public Builder requestTimeout(
final Duration requestTimeout) {
63 this.requestTimeout = requestTimeout;
67 public Builder redirectPolicy(
final HttpClient.Redirect redirectPolicy) {
68 this.redirectPolicy = redirectPolicy;
72 public Builder userAgent(
final String userAgent) {
73 this.userAgent = userAgent;
77 public Builder defaultHeader(
final String name,
final String value) {
78 defaultHeaders.computeIfAbsent(name, key ->
new java.util.ArrayList<>()).add(value);
83 return new HttpClientConfig(connectTimeout, requestTimeout, redirectPolicy, userAgent,
84 defaultHeaders.entrySet().stream().collect(java.util.stream.Collectors.toMap(Map.Entry::getKey,
85 entry -> List.copyOf(entry.getValue()), (left, right) -> left, LinkedHashMap::new)));