From 02ae65f9ee9d886176f5ef486df2542b9d21353d Mon Sep 17 00:00:00 2001 From: Sebastian Nagel Date: Mon, 15 Dec 2025 23:30:29 +0100 Subject: [PATCH] NUTCH-3139 protocol-okhttp: add support for zstd content-encoding - upgrade to OkHttp 5.3.2 - enable support for zstd content-encoding --- src/plugin/protocol-okhttp/ivy.xml | 7 ++++--- src/plugin/protocol-okhttp/plugin.xml | 16 +++++++++------- .../org/apache/nutch/protocol/okhttp/OkHttp.java | 13 ++++++++----- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/plugin/protocol-okhttp/ivy.xml b/src/plugin/protocol-okhttp/ivy.xml index 0768def785..28f355d7b9 100644 --- a/src/plugin/protocol-okhttp/ivy.xml +++ b/src/plugin/protocol-okhttp/ivy.xml @@ -37,8 +37,9 @@ - - + + + - + diff --git a/src/plugin/protocol-okhttp/plugin.xml b/src/plugin/protocol-okhttp/plugin.xml index e2183d2b50..51f65f5d25 100755 --- a/src/plugin/protocol-okhttp/plugin.xml +++ b/src/plugin/protocol-okhttp/plugin.xml @@ -28,13 +28,15 @@ - - - - - - - + + + + + + + + + diff --git a/src/plugin/protocol-okhttp/src/java/org/apache/nutch/protocol/okhttp/OkHttp.java b/src/plugin/protocol-okhttp/src/java/org/apache/nutch/protocol/okhttp/OkHttp.java index 954c3f6df1..a9d2b14d42 100644 --- a/src/plugin/protocol-okhttp/src/java/org/apache/nutch/protocol/okhttp/OkHttp.java +++ b/src/plugin/protocol-okhttp/src/java/org/apache/nutch/protocol/okhttp/OkHttp.java @@ -52,15 +52,19 @@ import org.slf4j.LoggerFactory; import okhttp3.Authenticator; +import okhttp3.CompressionInterceptor; import okhttp3.Connection; import okhttp3.ConnectionPool; +import okhttp3.Gzip; import okhttp3.Handshake; import okhttp3.Headers; import okhttp3.Interceptor; import okhttp3.OkHttpClient; import okhttp3.Protocol; import okhttp3.Request; -import okhttp3.brotli.BrotliInterceptor; +import okhttp3.brotli.Brotli; +import okhttp3.zstd.Zstd; + public class OkHttp extends HttpBase { @@ -156,13 +160,11 @@ public boolean verify(String hostname, SSLSession session) { String proxyUsername = conf.get("http.proxy.username"); if (proxyUsername == null) { ProxySelector selector = new ProxySelector() { - @SuppressWarnings("serial") private final List noProxyList = new ArrayList() { { add(Proxy.NO_PROXY); } }; - @SuppressWarnings("serial") private final List proxyList = new ArrayList() { { add(proxy); @@ -224,8 +226,9 @@ public Request authenticate(okhttp3.Route route, builder.addNetworkInterceptor(new HTTPHeadersInterceptor()); } - // enable support for Brotli compression (Content-Encoding) - builder.addInterceptor(BrotliInterceptor.INSTANCE); + // enable support for Zstd, Brotli, Gzip Content-Encoding + builder.addInterceptor(new CompressionInterceptor(Zstd.INSTANCE, + Brotli.INSTANCE, Gzip.INSTANCE)); // instantiate connection pool(s), cf. // https://square.github.io/okhttp/3.x/okhttp/okhttp3/ConnectionPool.html