From 44c6adbfd79bde182e0d629a7586dabdf9214a3f Mon Sep 17 00:00:00 2001 From: mikemirzayanov Date: Mon, 25 Aug 2025 19:21:52 +0300 Subject: [PATCH] HttpRequest#putThreadLocalSetting --- .../codeforces/commons/io/http/HttpRequest.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/code/src/main/java/com/codeforces/commons/io/http/HttpRequest.java b/code/src/main/java/com/codeforces/commons/io/http/HttpRequest.java index 50f1e066..236964a9 100644 --- a/code/src/main/java/com/codeforces/commons/io/http/HttpRequest.java +++ b/code/src/main/java/com/codeforces/commons/io/http/HttpRequest.java @@ -63,6 +63,9 @@ public final class HttpRequest { private long maxSizeBytes = FileUtil.BYTES_PER_GB; + private static final ThreadLocal> threadLocalSettings + = ThreadLocal.withInitial(HashMap::new); + @Nonnull public static HttpRequest create(String url, Object... parameters) { return new HttpRequest(url, parameters); @@ -546,8 +549,11 @@ private String appendGetParametersToUrl(String url) { } @SuppressWarnings("OverlyComplexMethod") - private static String[] validateAndEncodeParameters(String url, Object... parameters) { - if (!UrlUtil.isValidUrl(url)) { + private String[] validateAndEncodeParameters(String url, Object... parameters) { + boolean skipIsValidUrlCheck = Boolean.TRUE.equals( + threadLocalSettings.get().get("skipIsValidUrlCheck")); + + if (!skipIsValidUrlCheck && !UrlUtil.isValidUrl(url)) { throw new IllegalArgumentException('\'' + url + "' is not a valid URL."); } @@ -831,6 +837,11 @@ static Map> getDeepUnmodifiableMap(Map> map) { return Collections.unmodifiableMap(copy); } + @SuppressWarnings("unused") + public static void putThreadLocalSetting(String key, Object value) { + threadLocalSettings.get().put(key, value); + } + static { System.setProperty("http.keepAlive", "true"); }