diff --git a/src/main/groovy/io/seqera/wave/http/HttpClientFactory.groovy b/src/main/groovy/io/seqera/wave/http/HttpClientFactory.groovy index c393f610a..48937e483 100644 --- a/src/main/groovy/io/seqera/wave/http/HttpClientFactory.groovy +++ b/src/main/groovy/io/seqera/wave/http/HttpClientFactory.groovy @@ -22,7 +22,10 @@ import java.net.http.HttpClient import java.time.Duration import java.util.concurrent.ExecutorService import java.util.concurrent.Executors +import java.util.concurrent.TimeUnit +import com.google.common.cache.Cache +import com.google.common.cache.CacheBuilder import groovy.transform.CompileStatic import groovy.util.logging.Slf4j /** @@ -38,28 +41,36 @@ class HttpClientFactory { static private Duration timeout = Duration.ofSeconds(20) + static private Cache cache = CacheBuilder.newBuilder() + .expireAfterAccess(10, TimeUnit.MINUTES) + .build(); + static HttpClient followRedirectsHttpClient() { - return HttpClient.newBuilder() - .version(HttpClient.Version.HTTP_1_1) - .followRedirects(HttpClient.Redirect.NORMAL) - .connectTimeout(timeout) - .executor(virtualThreadsExecutor) - .build() + cache.get('followRedirectsHttpClient', ()-> followRedirectsHttpClient0()) } static HttpClient neverRedirectsHttpClient() { + cache.get('neverRedirectsHttpClient', ()-> neverRedirectsHttpClient0()) + } + + static HttpClient newHttpClient() { + return followRedirectsHttpClient() + } + + static private HttpClient followRedirectsHttpClient0() { return HttpClient.newBuilder() .version(HttpClient.Version.HTTP_1_1) - .followRedirects(HttpClient.Redirect.NEVER) + .followRedirects(HttpClient.Redirect.NORMAL) .connectTimeout(timeout) .executor(virtualThreadsExecutor) .build() } - static HttpClient newHttpClient() { + static private HttpClient neverRedirectsHttpClient0() { return HttpClient.newBuilder() .version(HttpClient.Version.HTTP_1_1) - .followRedirects(HttpClient.Redirect.NORMAL) + .followRedirects(HttpClient.Redirect.NEVER) + .connectTimeout(timeout) .executor(virtualThreadsExecutor) .build() }