Skip to content

Commit 467147a

Browse files
committed
kt
1 parent 8de134e commit 467147a

File tree

6 files changed

+26
-20
lines changed

6 files changed

+26
-20
lines changed

clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/configuration/ClientOptions.kt

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,11 @@ import io.ktor.client.plugins.logging.*
77
import kotlinx.serialization.json.Json
88
import kotlinx.serialization.json.JsonBuilder
99
import kotlin.time.Duration
10-
import kotlin.time.Duration.Companion.seconds
1110

1211
public expect class ClientOptions(
13-
connectTimeout: Duration = 2.seconds,
14-
writeTimeout: Duration = 30.seconds,
15-
readTimeout: Duration = 5.seconds,
12+
connectTimeout: Duration? = null,
13+
writeTimeout: Duration? = null,
14+
readTimeout: Duration? = null,
1615
logLevel: LogLevel = LogLevel.NONE,
1716
logger: Logger = Logger.DEFAULT,
1817
hosts: List<Host>? = null,
@@ -25,13 +24,13 @@ public expect class ClientOptions(
2524
) {
2625

2726
/** Connect timeout for each request */
28-
public val connectTimeout: Duration
27+
public val connectTimeout: Duration?
2928

3029
/** The timeout for each request when performing write operations. */
31-
public val writeTimeout: Duration
30+
public val writeTimeout: Duration?
3231

3332
/** The timeout for each request when performing read operations. */
34-
public val readTimeout: Duration
33+
public val readTimeout: Duration?
3534

3635
/** [LogLevel] to display in the console. */
3736
public val logLevel: LogLevel

clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/transport/internal/Requester.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import com.algolia.client.transport.RequestConfig
1111
import com.algolia.client.transport.RequestOptions
1212
import com.algolia.client.transport.Requester
1313
import io.ktor.util.reflect.*
14+
import kotlin.time.Duration
1415

1516
/**
1617
* Executes a network request with the specified configuration and options, then returns the
@@ -40,6 +41,9 @@ internal fun requesterOf(
4041
clientName: String,
4142
appId: String,
4243
apiKey: String,
44+
connectTimeout: Duration,
45+
readTimeout: Duration,
46+
writeTimeout: Duration,
4347
options: ClientOptions,
4448
defaultHosts: () -> List<Host>,
4549
) = options.requester ?: KtorRequester(
@@ -52,8 +56,8 @@ internal fun requesterOf(
5256
add(AgentSegment(clientName, BuildConfig.VERSION))
5357
},
5458
),
55-
connectTimeout = options.connectTimeout,
56-
readTimeout = options.readTimeout,
57-
writeTimeout = options.writeTimeout,
59+
connectTimeout = options.connectTimeout ?: connectTimeout,
60+
readTimeout = options.readTimeout ?: readTimeout,
61+
writeTimeout = options.writeTimeout ?: writeTimeout,
5862
hosts = options.hosts ?: defaultHosts(),
5963
)

clients/algoliasearch-client-kotlin/client/src/jvmMain/kotlin/com/algolia/client/configuration/ClientOptions.jvm.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ import kotlin.time.Duration
1111
import kotlin.time.Duration.Companion.seconds
1212

1313
public actual class ClientOptions(
14-
public actual val connectTimeout: Duration = 2.seconds,
15-
public actual val writeTimeout: Duration = 30.seconds,
16-
public actual val readTimeout: Duration = 5.seconds,
14+
public actual val connectTimeout: Duration? = null,
15+
public actual val writeTimeout: Duration? = null,
16+
public actual val readTimeout: Duration? = null,
1717
public actual val logLevel: LogLevel = LogLevel.NONE,
1818
public actual val logger: Logger = Logger.DEFAULT,
1919
public actual val hosts: List<Host>? = null,
@@ -29,9 +29,9 @@ public actual class ClientOptions(
2929
public actual val json: Json = buildJson(jsonConfig)
3030

3131
public actual constructor(
32-
connectTimeout: Duration,
33-
writeTimeout: Duration,
34-
readTimeout: Duration,
32+
connectTimeout: Duration?,
33+
writeTimeout: Duration?,
34+
readTimeout: Duration?,
3535
logLevel: LogLevel,
3636
logger: Logger,
3737
hosts: List<Host>?,

clients/algoliasearch-client-kotlin/client/src/nativeMain/kotlin/com/algolia/client/configuration/ClientOptions.native.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ import kotlinx.serialization.json.JsonBuilder
1010
import kotlin.time.Duration
1111

1212
public actual class ClientOptions actual constructor(
13-
public actual val connectTimeout: Duration,
14-
public actual val writeTimeout: Duration,
15-
public actual val readTimeout: Duration,
13+
public actual val connectTimeout: Duration?,
14+
public actual val writeTimeout: Duration?,
15+
public actual val readTimeout: Duration?,
1616
public actual val logLevel: LogLevel,
1717
public actual val logger: Logger,
1818
public actual val hosts: List<Host>?,

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,8 @@ public void processOpenAPI(OpenAPI openAPI) {
132132
String hostForKotlin = host.replaceAll("\\{([^}]+)}", "\\$$1");
133133
additionalProperties.put("hostForKotlin", hostForKotlin);
134134
}
135+
136+
Timeouts.enrichBundle(openAPI, additionalProperties);
135137
}
136138

137139
@Override

templates/kotlin/api.mustache

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {{modelPackage}}.*
88
import {{packageName}}.transport.*
99
import {{packageName}}.transport.internal.*
1010
import kotlinx.serialization.json.*
11+
import kotlin.time.Duration.Companion.milliseconds
1112

1213
{{#operations}}
1314
public class {{classname}}(
@@ -24,7 +25,7 @@ public class {{classname}}(
2425
require(apiKey.isNotBlank()) { "`apiKey` is missing." }
2526
}
2627

27-
override val requester: Requester = requesterOf(clientName = "{{{baseName}}}", appId = appId, apiKey = apiKey, options = options) {
28+
override val requester: Requester = requesterOf(clientName = "{{{baseName}}}", appId = appId, apiKey = apiKey, connectTimeout = {{x-timeouts.server.connect}}.milliseconds, readTimeout = {{x-timeouts.server.read}}.milliseconds, writeTimeout = {{x-timeouts.server.write}}.milliseconds, options = options) {
2829
{{#hostWithAppID}}
2930
listOf(
3031
Host("$appId-dsn.algolia.net", CallType.Read),

0 commit comments

Comments
 (0)