From dac14af1ae134eda8de06189b8e6549409cf141a Mon Sep 17 00:00:00 2001 From: Stein Desmet Date: Mon, 7 Oct 2024 11:14:16 +0200 Subject: [PATCH] Make call timeout configurable --- .../api/WhatsappApiServiceGenerator.java | 8 ++++++++ .../api/WhatsappApiServiceGeneratorTest.java | 18 ++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/main/java/com/whatsapp/api/WhatsappApiServiceGenerator.java b/src/main/java/com/whatsapp/api/WhatsappApiServiceGenerator.java index aea47236d..6042fae6f 100644 --- a/src/main/java/com/whatsapp/api/WhatsappApiServiceGenerator.java +++ b/src/main/java/com/whatsapp/api/WhatsappApiServiceGenerator.java @@ -20,6 +20,7 @@ import java.io.IOException; import java.lang.annotation.Annotation; +import java.time.Duration; import java.util.Objects; import java.util.concurrent.TimeUnit; @@ -96,6 +97,13 @@ public static void setHttpProxy(String host, int port, String username, String p .build(); } + public static void setTimeout(final Duration duration) { + + Objects.requireNonNull(duration, "Duration cannot be null"); + sharedClient = sharedClient.newBuilder() + .callTimeout( duration ) + .build(); + } /** * Create service s. diff --git a/src/test/java/com/whatsapp/api/WhatsappApiServiceGeneratorTest.java b/src/test/java/com/whatsapp/api/WhatsappApiServiceGeneratorTest.java index b3e0a1291..e9c653702 100644 --- a/src/test/java/com/whatsapp/api/WhatsappApiServiceGeneratorTest.java +++ b/src/test/java/com/whatsapp/api/WhatsappApiServiceGeneratorTest.java @@ -15,6 +15,7 @@ import java.io.IOException; import java.net.ProxySelector; import java.net.URISyntaxException; +import java.time.Duration; import static org.junit.jupiter.api.Assertions.*; @@ -116,4 +117,21 @@ void testSetHttpProxy_WithAuthentication() { assertEquals(CustomProxyAuthenticator.class, WhatsappApiServiceGenerator.getSharedClient().proxyAuthenticator().getClass(), "Authenticator should be CustomProxyAuthenticator"); } + + /** + * Method under test: + * {@link WhatsappApiServiceGenerator#setTimeout(Duration)} + */ + @Test + void testSetTimeout() { + + assertEquals( 20 * 1000, WhatsappApiServiceGenerator.getSharedClient().callTimeoutMillis() ); + + // Set timeout in shared client + WhatsappApiServiceGenerator.setTimeout( Duration.ofMinutes( 1L ) ); + + // Check if timeout is set + assertEquals( 60 * 1000, WhatsappApiServiceGenerator.getSharedClient().callTimeoutMillis() ); + } + }