Skip to content

Commit c04eb50

Browse files
algolia-botshortcutsmillotpFluf22
committed
feat(generators): allow per-spec timeouts [skip-bc] (generated)
algolia/api-clients-automation#4173 Co-authored-by: algolia-bot <[email protected]> Co-authored-by: Clément Vannicatte <[email protected]> Co-authored-by: Pierre Millot <[email protected]> Co-authored-by: Thomas Raffray <[email protected]>
1 parent 675c65e commit c04eb50

File tree

13 files changed

+40
-29
lines changed

13 files changed

+40
-29
lines changed

client/src/commonMain/kotlin/com/algolia/client/api/AbtestingClient.kt

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

1213
public class AbtestingClient(
1314
override val appId: String,
@@ -21,7 +22,7 @@ public class AbtestingClient(
2122
require(apiKey.isNotBlank()) { "`apiKey` is missing." }
2223
}
2324

24-
override val requester: Requester = requesterOf(clientName = "Abtesting", appId = appId, apiKey = apiKey, options = options) {
25+
override val requester: Requester = requesterOf(clientName = "Abtesting", appId = appId, apiKey = apiKey, connectTimeout = 2000.milliseconds, readTimeout = 5000.milliseconds, writeTimeout = 30000.milliseconds, options = options) {
2526
val allowedRegions = listOf("de", "us")
2627
require(region == null || region in allowedRegions) { "`region` must be one of the following: ${allowedRegions.joinToString()}" }
2728
val url = if (region == null) "analytics.algolia.com" else "analytics.$region.algolia.com"

client/src/commonMain/kotlin/com/algolia/client/api/AnalyticsClient.kt

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

1213
public class AnalyticsClient(
1314
override val appId: String,
@@ -21,7 +22,7 @@ public class AnalyticsClient(
2122
require(apiKey.isNotBlank()) { "`apiKey` is missing." }
2223
}
2324

24-
override val requester: Requester = requesterOf(clientName = "Analytics", appId = appId, apiKey = apiKey, options = options) {
25+
override val requester: Requester = requesterOf(clientName = "Analytics", appId = appId, apiKey = apiKey, connectTimeout = 2000.milliseconds, readTimeout = 5000.milliseconds, writeTimeout = 30000.milliseconds, options = options) {
2526
val allowedRegions = listOf("de", "us")
2627
require(region == null || region in allowedRegions) { "`region` must be one of the following: ${allowedRegions.joinToString()}" }
2728
val url = if (region == null) "analytics.algolia.com" else "analytics.$region.algolia.com"

client/src/commonMain/kotlin/com/algolia/client/api/IngestionClient.kt

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

1213
public class IngestionClient(
1314
override val appId: String,
@@ -21,7 +22,7 @@ public class IngestionClient(
2122
require(apiKey.isNotBlank()) { "`apiKey` is missing." }
2223
}
2324

24-
override val requester: Requester = requesterOf(clientName = "Ingestion", appId = appId, apiKey = apiKey, options = options) {
25+
override val requester: Requester = requesterOf(clientName = "Ingestion", appId = appId, apiKey = apiKey, connectTimeout = 25000.milliseconds, readTimeout = 25000.milliseconds, writeTimeout = 25000.milliseconds, options = options) {
2526
val allowedRegions = listOf("eu", "us")
2627
require(region in allowedRegions) { "`region` is required and must be one of the following: ${allowedRegions.joinToString()}" }
2728
val url = "data.$region.algolia.com"

client/src/commonMain/kotlin/com/algolia/client/api/InsightsClient.kt

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

1213
public class InsightsClient(
1314
override val appId: String,
@@ -21,7 +22,7 @@ public class InsightsClient(
2122
require(apiKey.isNotBlank()) { "`apiKey` is missing." }
2223
}
2324

24-
override val requester: Requester = requesterOf(clientName = "Insights", appId = appId, apiKey = apiKey, options = options) {
25+
override val requester: Requester = requesterOf(clientName = "Insights", appId = appId, apiKey = apiKey, connectTimeout = 2000.milliseconds, readTimeout = 5000.milliseconds, writeTimeout = 30000.milliseconds, options = options) {
2526
val allowedRegions = listOf("de", "us")
2627
require(region == null || region in allowedRegions) { "`region` must be one of the following: ${allowedRegions.joinToString()}" }
2728
val url = if (region == null) "insights.algolia.io" else "insights.$region.algolia.io"

client/src/commonMain/kotlin/com/algolia/client/api/MonitoringClient.kt

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

1213
public class MonitoringClient(
1314
override val appId: String,
@@ -20,7 +21,7 @@ public class MonitoringClient(
2021
require(apiKey.isNotBlank()) { "`apiKey` is missing." }
2122
}
2223

23-
override val requester: Requester = requesterOf(clientName = "Monitoring", appId = appId, apiKey = apiKey, options = options) {
24+
override val requester: Requester = requesterOf(clientName = "Monitoring", appId = appId, apiKey = apiKey, connectTimeout = 2000.milliseconds, readTimeout = 5000.milliseconds, writeTimeout = 30000.milliseconds, options = options) {
2425
listOf(
2526
Host("status.algolia.com"),
2627
)

client/src/commonMain/kotlin/com/algolia/client/api/PersonalizationClient.kt

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

1213
public class PersonalizationClient(
1314
override val appId: String,
@@ -21,7 +22,7 @@ public class PersonalizationClient(
2122
require(apiKey.isNotBlank()) { "`apiKey` is missing." }
2223
}
2324

24-
override val requester: Requester = requesterOf(clientName = "Personalization", appId = appId, apiKey = apiKey, options = options) {
25+
override val requester: Requester = requesterOf(clientName = "Personalization", appId = appId, apiKey = apiKey, connectTimeout = 2000.milliseconds, readTimeout = 5000.milliseconds, writeTimeout = 30000.milliseconds, options = options) {
2526
val allowedRegions = listOf("eu", "us")
2627
require(region in allowedRegions) { "`region` is required and must be one of the following: ${allowedRegions.joinToString()}" }
2728
val url = "personalization.$region.algolia.com"

client/src/commonMain/kotlin/com/algolia/client/api/QuerySuggestionsClient.kt

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

1213
public class QuerySuggestionsClient(
1314
override val appId: String,
@@ -21,7 +22,7 @@ public class QuerySuggestionsClient(
2122
require(apiKey.isNotBlank()) { "`apiKey` is missing." }
2223
}
2324

24-
override val requester: Requester = requesterOf(clientName = "QuerySuggestions", appId = appId, apiKey = apiKey, options = options) {
25+
override val requester: Requester = requesterOf(clientName = "QuerySuggestions", appId = appId, apiKey = apiKey, connectTimeout = 2000.milliseconds, readTimeout = 5000.milliseconds, writeTimeout = 30000.milliseconds, options = options) {
2526
val allowedRegions = listOf("eu", "us")
2627
require(region in allowedRegions) { "`region` is required and must be one of the following: ${allowedRegions.joinToString()}" }
2728
val url = "query-suggestions.$region.algolia.com"

client/src/commonMain/kotlin/com/algolia/client/api/RecommendClient.kt

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

1213
public class RecommendClient(
1314
override val appId: String,
@@ -20,7 +21,7 @@ public class RecommendClient(
2021
require(apiKey.isNotBlank()) { "`apiKey` is missing." }
2122
}
2223

23-
override val requester: Requester = requesterOf(clientName = "Recommend", appId = appId, apiKey = apiKey, options = options) {
24+
override val requester: Requester = requesterOf(clientName = "Recommend", appId = appId, apiKey = apiKey, connectTimeout = 2000.milliseconds, readTimeout = 5000.milliseconds, writeTimeout = 30000.milliseconds, options = options) {
2425
listOf(
2526
Host("$appId-dsn.algolia.net", CallType.Read),
2627
Host("$appId.algolia.net", CallType.Write),

client/src/commonMain/kotlin/com/algolia/client/api/SearchClient.kt

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

1213
public class SearchClient(
1314
override val appId: String,
@@ -20,7 +21,7 @@ public class SearchClient(
2021
require(apiKey.isNotBlank()) { "`apiKey` is missing." }
2122
}
2223

23-
override val requester: Requester = requesterOf(clientName = "Search", appId = appId, apiKey = apiKey, options = options) {
24+
override val requester: Requester = requesterOf(clientName = "Search", appId = appId, apiKey = apiKey, connectTimeout = 2000.milliseconds, readTimeout = 5000.milliseconds, writeTimeout = 30000.milliseconds, options = options) {
2425
listOf(
2526
Host("$appId-dsn.algolia.net", CallType.Read),
2627
Host("$appId.algolia.net", CallType.Write),

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

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
)

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

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

1312
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,
13+
public actual val connectTimeout: Duration? = null,
14+
public actual val writeTimeout: Duration? = null,
15+
public actual val readTimeout: Duration? = null,
1716
public actual val logLevel: LogLevel = LogLevel.NONE,
1817
public actual val logger: Logger = Logger.DEFAULT,
1918
public actual val hosts: List<Host>? = null,
@@ -29,9 +28,9 @@ public actual class ClientOptions(
2928
public actual val json: Json = buildJson(jsonConfig)
3029

3130
public actual constructor(
32-
connectTimeout: Duration,
33-
writeTimeout: Duration,
34-
readTimeout: Duration,
31+
connectTimeout: Duration?,
32+
writeTimeout: Duration?,
33+
readTimeout: Duration?,
3534
logLevel: LogLevel,
3635
logger: Logger,
3736
hosts: List<Host>?,

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>?,

0 commit comments

Comments
 (0)