Skip to content

Commit 31e5005

Browse files
committed
feat: la scala
1 parent b4f5e47 commit 31e5005

File tree

4 files changed

+35
-4
lines changed

4 files changed

+35
-4
lines changed

clients/algoliasearch-client-scala/src/main/scala/algoliasearch/ApiClient.scala

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ import scala.util.Try
1919
* the name of the client
2020
* @param defaultHosts
2121
* the default hosts
22+
* @param defaultReadTimeout
23+
* the default read timeout
24+
* @param defaultConnectTimeout
25+
* the default connect timeout
26+
* @param defaultWriteTimeout
27+
* the default write timeout
2228
* @param formats
2329
* the JSON formats
2430
* @param options
@@ -53,13 +59,21 @@ abstract class ApiClient(
5359
apiKey: String,
5460
clientName: String,
5561
options: ClientOptions,
56-
defaultHosts: Seq[Host]
62+
defaultHosts: Seq[Host],
63+
defaultReadTimeout: Duration,
64+
defaultConnectTimeout: Duration,
65+
defaultWriteTimeout: Duration
5766
): Requester = {
5867
val algoliaAgent = AlgoliaAgent(BuildInfo.version)
5968
.addSegment(AgentSegment(clientName, Some(BuildInfo.version)))
6069
.addSegments(options.agentSegments)
6170

6271
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+
6377
val statefulHosts = hosts.map(host => StatefulHost(host)).toList
6478

6579
val builder = HttpRequester

clients/algoliasearch-client-scala/src/main/scala/algoliasearch/config/ClientOptions.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ import scala.concurrent.duration.Duration
3434
case class ClientOptions(
3535
agentSegments: Seq[AgentSegment] = Seq.empty,
3636
hosts: Seq[Host] = Seq.empty,
37-
connectTimeout: Duration = Duration(2, TimeUnit.SECONDS),
38-
writeTimeout: Duration = Duration(30, TimeUnit.SECONDS),
39-
readTimeout: Duration = Duration(5, TimeUnit.SECONDS),
37+
connectTimeout: Option[Duration] = Duration(2, TimeUnit.SECONDS),
38+
writeTimeout: Option[Duration] = Duration(30, TimeUnit.SECONDS),
39+
readTimeout: Option[Duration] = Duration(5, TimeUnit.SECONDS),
4040
defaultHeaders: Map[String, String] = Map.empty,
4141
compressionType: CompressionType = CompressionType.None,
4242
logging: Option[Logging] = None,

generators/src/main/java/com/algolia/codegen/AlgoliaScalaGenerator.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import io.swagger.v3.oas.models.Operation;
88
import io.swagger.v3.oas.models.servers.Server;
99
import java.io.File;
10+
import java.time.temporal.ChronoUnit;
1011
import java.util.List;
1112
import java.util.Map;
1213
import java.util.logging.Logger;
@@ -99,6 +100,7 @@ private String typeToName(String content) {
99100
public void processOpenAPI(OpenAPI openAPI) {
100101
super.processOpenAPI(openAPI);
101102
Helpers.generateServers(super.fromServers(openAPI.getServers()), additionalProperties);
103+
Timeouts.enrichBundle(openAPI, additionalProperties, ChronoUnit.SECONDS);
102104
}
103105

104106
@Override

templates/scala/api.mustache

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,18 @@ object {{classname}} {
4343
clientOptions = clientOptions
4444
)
4545

46+
private def readTimeout(): Duration = {
47+
Duration({{#x-timeouts.server.read}}{{{.}}}{{/x-timeouts.server.read}}, TimeUnit.SECONDS)
48+
}
49+
50+
private def connectTimeout(): Duration = {
51+
Duration({{#x-timeouts.server.connect}}{{{.}}}{{/x-timeouts.server.connect}}, TimeUnit.SECONDS)
52+
}
53+
54+
private def writeTimeout(): Duration = {
55+
Duration({{#x-timeouts.server.write}}{{{.}}}{{/x-timeouts.server.write}}, TimeUnit.SECONDS)
56+
}
57+
4658
{{#hasRegionalHost}}
4759
private def hosts(region: {{#fallbackToAliasHost}}Option[String] = None{{/fallbackToAliasHost}}{{^fallbackToAliasHost}}String{{/fallbackToAliasHost}}): Seq[Host] = {
4860
val allowedRegions = Seq({{#allowedRegions}}"{{.}}"{{^-last}},{{/-last}}{{/allowedRegions}})
@@ -96,6 +108,9 @@ class {{classname}}(
96108
apiKey = apiKey,
97109
clientName = "{{{baseName}}}",
98110
defaultHosts = hosts({{#hostWithAppID}}appId{{/hostWithAppID}}{{#hasRegionalHost}}region{{/hasRegionalHost}}),
111+
defaultReadTimeout = readTimeout(),
112+
defaultWriteTimeout = writeTimeout(),
113+
defaultConnectTimeout = connectTimeout(),
99114
formats = JsonSupport.format,
100115
options = clientOptions
101116
) {

0 commit comments

Comments
 (0)