Skip to content

Commit a761f1d

Browse files
feat(client): allow passing null or optional for nullable fields (#84)
1 parent f764d2e commit a761f1d

38 files changed

+4067
-417
lines changed

openai-java-client-okhttp/src/main/kotlin/com/openai/client/okhttp/OpenAIOkHttpClient.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import com.openai.credential.Credential
1313
import java.net.Proxy
1414
import java.time.Clock
1515
import java.time.Duration
16+
import java.util.Optional
1617

1718
class OpenAIOkHttpClient private constructor() {
1819

@@ -138,9 +139,13 @@ class OpenAIOkHttpClient private constructor() {
138139
clientOptions.azureServiceVersion(azureServiceVersion)
139140
}
140141

141-
fun organization(organization: String) = apply { clientOptions.organization(organization) }
142+
fun organization(organization: String?) = apply { clientOptions.organization(organization) }
142143

143-
fun project(project: String) = apply { clientOptions.project(project) }
144+
fun organization(organization: Optional<String>) = organization(organization.orElse(null))
145+
146+
fun project(project: String?) = apply { clientOptions.project(project) }
147+
148+
fun project(project: Optional<String>) = project(project.orElse(null))
144149

145150
fun fromEnv() = apply { clientOptions.fromEnv() }
146151

openai-java-client-okhttp/src/main/kotlin/com/openai/client/okhttp/OpenAIOkHttpClientAsync.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import com.openai.credential.Credential
1313
import java.net.Proxy
1414
import java.time.Clock
1515
import java.time.Duration
16+
import java.util.Optional
1617

1718
class OpenAIOkHttpClientAsync private constructor() {
1819

@@ -138,9 +139,13 @@ class OpenAIOkHttpClientAsync private constructor() {
138139
clientOptions.azureServiceVersion(azureServiceVersion)
139140
}
140141

141-
fun organization(organization: String) = apply { clientOptions.organization(organization) }
142+
fun organization(organization: String?) = apply { clientOptions.organization(organization) }
142143

143-
fun project(project: String) = apply { clientOptions.project(project) }
144+
fun organization(organization: Optional<String>) = organization(organization.orElse(null))
145+
146+
fun project(project: String?) = apply { clientOptions.project(project) }
147+
148+
fun project(project: Optional<String>) = project(project.orElse(null))
144149

145150
fun fromEnv() = apply { clientOptions.fromEnv() }
146151

openai-java-core/src/main/kotlin/com/openai/core/ClientOptions.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import com.openai.core.http.RetryingHttpClient
1414
import com.openai.credential.BearerTokenCredential
1515
import com.openai.credential.Credential
1616
import java.time.Clock
17+
import java.util.Optional
1718
import java.util.concurrent.Executor
1819
import java.util.concurrent.Executors
1920
import java.util.concurrent.ThreadFactory
@@ -187,9 +188,13 @@ private constructor(
187188
this.azureServiceVersion = azureServiceVersion
188189
}
189190

190-
fun organization(organization: String) = apply { this.organization = organization }
191+
fun organization(organization: String?) = apply { this.organization = organization }
191192

192-
fun project(project: String) = apply { this.project = project }
193+
fun organization(organization: Optional<String>) = organization(organization.orElse(null))
194+
195+
fun project(project: String?) = apply { this.project = project }
196+
197+
fun project(project: Optional<String>) = project(project.orElse(null))
193198

194199
fun fromEnv() = apply {
195200
val openAIKey = System.getenv("OPENAI_API_KEY")

openai-java-core/src/main/kotlin/com/openai/models/BatchCreateParams.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,10 @@ constructor(
167167
fun inputFileId(inputFileId: String) = apply { this.inputFileId = inputFileId }
168168

169169
/** Optional custom metadata for the batch. */
170-
fun metadata(metadata: Metadata) = apply { this.metadata = metadata }
170+
fun metadata(metadata: Metadata?) = apply { this.metadata = metadata }
171+
172+
/** Optional custom metadata for the batch. */
173+
fun metadata(metadata: Optional<Metadata>) = metadata(metadata.orElse(null))
171174

172175
fun additionalProperties(additionalProperties: Map<String, JsonValue>) = apply {
173176
this.additionalProperties.clear()
@@ -269,7 +272,10 @@ constructor(
269272
fun inputFileId(inputFileId: String) = apply { body.inputFileId(inputFileId) }
270273

271274
/** Optional custom metadata for the batch. */
272-
fun metadata(metadata: Metadata) = apply { body.metadata(metadata) }
275+
fun metadata(metadata: Metadata?) = apply { body.metadata(metadata) }
276+
277+
/** Optional custom metadata for the batch. */
278+
fun metadata(metadata: Optional<Metadata>) = metadata(metadata.orElse(null))
273279

274280
fun additionalHeaders(additionalHeaders: Headers) = apply {
275281
this.additionalHeaders.clear()

openai-java-core/src/main/kotlin/com/openai/models/BatchListParams.kt

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,34 @@ constructor(
7373
* obj_foo, your subsequent call can include after=obj_foo in order to fetch the next page
7474
* of the list.
7575
*/
76-
fun after(after: String) = apply { this.after = after }
76+
fun after(after: String?) = apply { this.after = after }
77+
78+
/**
79+
* A cursor for use in pagination. `after` is an object ID that defines your place in the
80+
* list. For instance, if you make a list request and receive 100 objects, ending with
81+
* obj_foo, your subsequent call can include after=obj_foo in order to fetch the next page
82+
* of the list.
83+
*/
84+
fun after(after: Optional<String>) = after(after.orElse(null))
85+
86+
/**
87+
* A limit on the number of objects to be returned. Limit can range between 1 and 100, and
88+
* the default is 20.
89+
*/
90+
fun limit(limit: Long?) = apply { this.limit = limit }
91+
92+
/**
93+
* A limit on the number of objects to be returned. Limit can range between 1 and 100, and
94+
* the default is 20.
95+
*/
96+
fun limit(limit: Long) = limit(limit as Long?)
7797

7898
/**
7999
* A limit on the number of objects to be returned. Limit can range between 1 and 100, and
80100
* the default is 20.
81101
*/
82-
fun limit(limit: Long) = apply { this.limit = limit }
102+
@Suppress("USELESS_CAST") // See https://youtrack.jetbrains.com/issue/KT-74228
103+
fun limit(limit: Optional<Long>) = limit(limit.orElse(null) as Long?)
83104

84105
fun additionalHeaders(additionalHeaders: Headers) = apply {
85106
this.additionalHeaders.clear()

0 commit comments

Comments
 (0)