@@ -6,6 +6,8 @@ import algoliasearch.internal.interceptor.{AuthInterceptor, RetryStrategy, UserA
66import algoliasearch .internal .{AlgoliaAgent , HttpRequester , StatefulHost }
77import org .json4s .Formats
88
9+ import java .util .concurrent .TimeUnit
10+ import scala .concurrent .duration .Duration
911import scala .util .Try
1012
1113/** Base class for all API clients. It provides a mechanism for request serialization and deserialization. It also
@@ -35,6 +37,9 @@ abstract class ApiClient(
3537 apiKey : String ,
3638 clientName : String ,
3739 defaultHosts : Seq [Host ],
40+ defaultReadTimeout : Duration ,
41+ defaultConnectTimeout : Duration ,
42+ defaultWriteTimeout : Duration ,
3843 formats : Formats ,
3944 options : ClientOptions = ClientOptions ()
4045) extends AutoCloseable {
@@ -51,7 +56,16 @@ abstract class ApiClient(
5156 private val requester = options.customRequester match {
5257 case Some (customRequester) => customRequester
5358 case None =>
54- defaultRequester(appId, apiKey, clientName, options, defaultHosts)
59+ defaultRequester(
60+ appId,
61+ apiKey,
62+ clientName,
63+ options,
64+ defaultHosts,
65+ defaultReadTimeout,
66+ defaultConnectTimeout,
67+ defaultWriteTimeout
68+ )
5569 }
5670
5771 private def defaultRequester (
@@ -69,13 +83,10 @@ abstract class ApiClient(
6983 .addSegments(options.agentSegments)
7084
7185 val hosts = if (options.hosts.isEmpty) defaultHosts else options.hosts
72-
73- option.readTimeout = Option (options.readTimeout).getOrElse(defaultReadTimeout)
74- option.writeTimeout = Option (options.writeTimeout).getOrElse(defaultWriteTimeout)
75- option.connectTimeout = Option (options.connectTimeout).getOrElse(defaultConnectTimeout)
76-
7786 val statefulHosts = hosts.map(host => StatefulHost (host)).toList
7887
88+ options.withReadTimeout(Option (options.readTimeout).getOrElse(defaultReadTimeout)).withWriteTimeout(Option (options.writeTimeout).getOrElse(defaultWriteTimeout)).withConnectTimeout(Option (options.connectTimeout).getOrElse(defaultConnectTimeout))
89+
7990 val builder = HttpRequester
8091 .builder(options.customFormats.getOrElse(formats))
8192 .withInterceptor(authInterceptor)
0 commit comments