@@ -6,6 +6,8 @@ import algoliasearch.internal.interceptor.{AuthInterceptor, RetryStrategy, UserA
6
6
import algoliasearch .internal .{AlgoliaAgent , HttpRequester , StatefulHost }
7
7
import org .json4s .Formats
8
8
9
+ import java .util .concurrent .TimeUnit
10
+ import scala .concurrent .duration .Duration
9
11
import scala .util .Try
10
12
11
13
/** Base class for all API clients. It provides a mechanism for request serialization and deserialization. It also
@@ -35,6 +37,9 @@ abstract class ApiClient(
35
37
apiKey : String ,
36
38
clientName : String ,
37
39
defaultHosts : Seq [Host ],
40
+ defaultReadTimeout : Duration ,
41
+ defaultConnectTimeout : Duration ,
42
+ defaultWriteTimeout : Duration ,
38
43
formats : Formats ,
39
44
options : ClientOptions = ClientOptions ()
40
45
) extends AutoCloseable {
@@ -51,7 +56,16 @@ abstract class ApiClient(
51
56
private val requester = options.customRequester match {
52
57
case Some (customRequester) => customRequester
53
58
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
+ )
55
69
}
56
70
57
71
private def defaultRequester (
@@ -69,13 +83,10 @@ abstract class ApiClient(
69
83
.addSegments(options.agentSegments)
70
84
71
85
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
-
77
86
val statefulHosts = hosts.map(host => StatefulHost (host)).toList
78
87
88
+ options.withReadTimeout(Option (options.readTimeout).getOrElse(defaultReadTimeout)).withWriteTimeout(Option (options.writeTimeout).getOrElse(defaultWriteTimeout)).withConnectTimeout(Option (options.connectTimeout).getOrElse(defaultConnectTimeout))
89
+
79
90
val builder = HttpRequester
80
91
.builder(options.customFormats.getOrElse(formats))
81
92
.withInterceptor(authInterceptor)
0 commit comments