File tree Expand file tree Collapse file tree 5 files changed +38
-6
lines changed
src/commonMain/kotlin/com.aallam.openai.client
openai-core/src/commonMain/kotlin/com.aallam.openai.api/http Expand file tree Collapse file tree 5 files changed +38
-6
lines changed Original file line number Diff line number Diff line change 11distributionBase =GRADLE_USER_HOME
22distributionPath =wrapper/dists
3- distributionUrl =https\://services.gradle.org/distributions/gradle-7.6 -bin.zip
3+ distributionUrl =https\://services.gradle.org/distributions/gradle-7.5.1 -bin.zip
44zipStoreBase =GRADLE_USER_HOME
55zipStorePath =wrapper/dists
Original file line number Diff line number Diff line change @@ -20,6 +20,7 @@ kotlin {
2020 optIn(" kotlin.RequiresOptIn" )
2121 optIn(" okio.ExperimentalFileSystem" )
2222 optIn(" kotlinx.coroutines.ExperimentalCoroutinesApi" )
23+ optIn(" com.aallam.openai.api.ExperimentalOpenAI" )
2324 }
2425 }
2526 val commonMain by getting {
Original file line number Diff line number Diff line change 11package com.aallam.openai.client
22
3+ import com.aallam.openai.api.http.Timeout
34import com.aallam.openai.api.logging.LogLevel
45import com.aallam.openai.api.logging.Logger
6+ import kotlin.time.Duration.Companion.seconds
57
68/* *
79 * OpenAI client configuration.
10+ *
11+ * @param token OpenAI Token
12+ * @param logger http client logging level
13+ * @param logLevel http client logger
14+ * @param timeout http client timeout
815 */
916public class OpenAIConfig (
1017 public val token : String ,
1118 public val logLevel : LogLevel = LogLevel .Headers ,
1219 public val logger : Logger = Logger .Simple ,
20+ public val timeout : Timeout = Timeout (socket = 30.seconds),
1321)
Original file line number Diff line number Diff line change @@ -11,14 +11,11 @@ import io.ktor.client.plugins.auth.providers.bearer
1111import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
1212import io.ktor.client.plugins.defaultRequest
1313import io.ktor.client.plugins.logging.Logging
14- import io.ktor.client.request.accept
15- import io.ktor.client.request.header
1614import io.ktor.http.ContentType
17- import io.ktor.http.HttpHeaders
1815import io.ktor.http.URLProtocol
19- import io.ktor.http.contentType
2016import io.ktor.serialization.kotlinx.KotlinxSerializationConverter
2117import kotlinx.serialization.json.Json
18+ import kotlin.time.DurationUnit
2219
2320/* *
2421 * Default Http Client.
@@ -41,7 +38,15 @@ internal fun createHttpClient(config: OpenAIConfig): HttpClient {
4138 }
4239
4340 install(HttpTimeout ) {
44- socketTimeoutMillis = 30000 // 30s
41+ config.timeout.socket?.let { socketTimeout ->
42+ socketTimeoutMillis = socketTimeout.toLong(DurationUnit .MILLISECONDS )
43+ }
44+ config.timeout.connect?.let { connectTimeout ->
45+ connectTimeoutMillis = connectTimeout.toLong(DurationUnit .MILLISECONDS )
46+ }
47+ config.timeout.request?.let { requestTimeout ->
48+ requestTimeoutMillis = requestTimeout.toLong(DurationUnit .MILLISECONDS )
49+ }
4550 }
4651
4752 defaultRequest {
Original file line number Diff line number Diff line change 1+ package com.aallam.openai.api.http
2+
3+ import com.aallam.openai.api.ExperimentalOpenAI
4+ import kotlin.time.Duration
5+
6+ /* *
7+ * Http operations timeouts.
8+ *
9+ * @param request time period required to process an HTTP call: from sending a request to receiving a response
10+ * @param connect time period in which a client should establish a connection with a server
11+ * @param socket maximum time of inactivity between two data packets when exchanging data with a server
12+ */
13+ @ExperimentalOpenAI
14+ public class Timeout (
15+ public val request : Duration ? = null ,
16+ public val connect : Duration ? = null ,
17+ public val socket : Duration ? = null ,
18+ )
You can’t perform that action at this time.
0 commit comments