Skip to content

Commit b5f0576

Browse files
feat(client): add _queryParams and _headers methods (#177)
refactor(internal): extract request preparation logic
1 parent 3f6dedd commit b5f0576

File tree

138 files changed

+1450
-1652
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

138 files changed

+1450
-1652
lines changed

openai-java-core/src/main/kotlin/com/openai/azure/HttpRequestBuilderExtensions.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ import com.openai.credential.BearerTokenCredential
88
@JvmSynthetic
99
internal fun HttpRequest.Builder.addPathSegmentsForAzure(
1010
clientOptions: ClientOptions,
11-
deploymentModel: String
11+
deploymentModel: String?
1212
): HttpRequest.Builder = apply {
13-
if (isAzureEndpoint(clientOptions.baseUrl)) {
13+
if (isAzureEndpoint(clientOptions.baseUrl) && deploymentModel != null) {
1414
addPathSegments("openai", "deployments", deploymentModel)
1515
}
1616
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.openai.core
2+
3+
import com.openai.core.http.Headers
4+
import com.openai.core.http.QueryParams
5+
6+
/** An interface representing parameters passed to a service method. */
7+
interface Params {
8+
/** The full set of headers in the parameters, including both fixed and additional headers. */
9+
fun _headers(): Headers
10+
11+
/**
12+
* The full set of query params in the parameters, including both fixed and additional query
13+
* params.
14+
*/
15+
fun _queryParams(): QueryParams
16+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
@file:JvmName("PrepareRequest")
2+
3+
package com.openai.core
4+
5+
import com.openai.azure.addPathSegmentsForAzure
6+
import com.openai.azure.replaceBearerTokenForAzure
7+
import com.openai.core.http.HttpRequest
8+
import java.util.concurrent.CompletableFuture
9+
10+
@JvmSynthetic
11+
internal fun HttpRequest.prepare(
12+
clientOptions: ClientOptions,
13+
params: Params,
14+
deploymentModel: String?
15+
): HttpRequest =
16+
toBuilder()
17+
// Clear the path segments and add them back below after the Azure path segments.
18+
.pathSegments(listOf())
19+
.addPathSegmentsForAzure(clientOptions, deploymentModel)
20+
.addPathSegments(*pathSegments.toTypedArray())
21+
.putAllQueryParams(clientOptions.queryParams)
22+
.replaceAllQueryParams(params._queryParams())
23+
.putAllHeaders(clientOptions.headers)
24+
.replaceBearerTokenForAzure(clientOptions)
25+
.replaceAllHeaders(params._headers())
26+
.build()
27+
28+
@JvmSynthetic
29+
internal fun HttpRequest.prepareAsync(
30+
clientOptions: ClientOptions,
31+
params: Params,
32+
deploymentModel: String?
33+
): CompletableFuture<HttpRequest> =
34+
// This async version exists to make it easier to add async specific preparation logic in the
35+
// future.
36+
CompletableFuture.completedFuture(prepare(clientOptions, params, deploymentModel))

openai-java-core/src/main/kotlin/com/openai/core/http/HttpRequest.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ private constructor(
4545

4646
fun url(url: String) = apply { this.url = url }
4747

48+
fun pathSegments(pathSegments: List<String>) = apply {
49+
this.pathSegments = pathSegments.toMutableList()
50+
}
51+
4852
fun addPathSegment(pathSegment: String) = apply { pathSegments.add(pathSegment) }
4953

5054
fun addPathSegments(vararg pathSegments: String) = apply {

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ package com.openai.models
44

55
import com.openai.core.JsonValue
66
import com.openai.core.NoAutoDetect
7+
import com.openai.core.Params
78
import com.openai.core.checkRequired
89
import com.openai.core.http.Headers
910
import com.openai.core.http.QueryParams
@@ -22,7 +23,7 @@ private constructor(
2223
private val additionalHeaders: Headers,
2324
private val additionalQueryParams: QueryParams,
2425
private val additionalBodyProperties: Map<String, JsonValue>,
25-
) {
26+
) : Params {
2627

2728
fun batchId(): String = batchId
2829

@@ -33,12 +34,12 @@ private constructor(
3334
fun _additionalBodyProperties(): Map<String, JsonValue> = additionalBodyProperties
3435

3536
@JvmSynthetic
36-
internal fun getBody(): Optional<Map<String, JsonValue>> =
37+
internal fun _body(): Optional<Map<String, JsonValue>> =
3738
Optional.ofNullable(additionalBodyProperties.ifEmpty { null })
3839

39-
@JvmSynthetic internal fun getHeaders(): Headers = additionalHeaders
40+
override fun _headers(): Headers = additionalHeaders
4041

41-
@JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams
42+
override fun _queryParams(): QueryParams = additionalQueryParams
4243

4344
fun getPathParam(index: Int): String {
4445
return when (index) {

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import com.openai.core.JsonField
1212
import com.openai.core.JsonMissing
1313
import com.openai.core.JsonValue
1414
import com.openai.core.NoAutoDetect
15+
import com.openai.core.Params
1516
import com.openai.core.checkRequired
1617
import com.openai.core.http.Headers
1718
import com.openai.core.http.QueryParams
@@ -27,7 +28,7 @@ private constructor(
2728
private val body: BatchCreateBody,
2829
private val additionalHeaders: Headers,
2930
private val additionalQueryParams: QueryParams,
30-
) {
31+
) : Params {
3132

3233
/**
3334
* The time frame within which the batch should be processed. Currently only `24h` is supported.
@@ -91,11 +92,11 @@ private constructor(
9192

9293
fun _additionalQueryParams(): QueryParams = additionalQueryParams
9394

94-
@JvmSynthetic internal fun getBody(): BatchCreateBody = body
95+
@JvmSynthetic internal fun _body(): BatchCreateBody = body
9596

96-
@JvmSynthetic internal fun getHeaders(): Headers = additionalHeaders
97+
override fun _headers(): Headers = additionalHeaders
9798

98-
@JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams
99+
override fun _queryParams(): QueryParams = additionalQueryParams
99100

100101
@NoAutoDetect
101102
class BatchCreateBody

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
package com.openai.models
44

55
import com.openai.core.NoAutoDetect
6+
import com.openai.core.Params
67
import com.openai.core.http.Headers
78
import com.openai.core.http.QueryParams
89
import java.util.Objects
@@ -15,7 +16,7 @@ private constructor(
1516
private val limit: Long?,
1617
private val additionalHeaders: Headers,
1718
private val additionalQueryParams: QueryParams,
18-
) {
19+
) : Params {
1920

2021
/**
2122
* A cursor for use in pagination. `after` is an object ID that defines your place in the list.
@@ -34,10 +35,9 @@ private constructor(
3435

3536
fun _additionalQueryParams(): QueryParams = additionalQueryParams
3637

37-
@JvmSynthetic internal fun getHeaders(): Headers = additionalHeaders
38+
override fun _headers(): Headers = additionalHeaders
3839

39-
@JvmSynthetic
40-
internal fun getQueryParams(): QueryParams {
40+
override fun _queryParams(): QueryParams {
4141
val queryParams = QueryParams.builder()
4242
this.after?.let { queryParams.put("after", listOf(it.toString())) }
4343
this.limit?.let { queryParams.put("limit", listOf(it.toString())) }

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
package com.openai.models
44

55
import com.openai.core.NoAutoDetect
6+
import com.openai.core.Params
67
import com.openai.core.checkRequired
78
import com.openai.core.http.Headers
89
import com.openai.core.http.QueryParams
@@ -14,17 +15,17 @@ private constructor(
1415
private val batchId: String,
1516
private val additionalHeaders: Headers,
1617
private val additionalQueryParams: QueryParams,
17-
) {
18+
) : Params {
1819

1920
fun batchId(): String = batchId
2021

2122
fun _additionalHeaders(): Headers = additionalHeaders
2223

2324
fun _additionalQueryParams(): QueryParams = additionalQueryParams
2425

25-
@JvmSynthetic internal fun getHeaders(): Headers = additionalHeaders
26+
override fun _headers(): Headers = additionalHeaders
2627

27-
@JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams
28+
override fun _queryParams(): QueryParams = additionalQueryParams
2829

2930
fun getPathParam(index: Int): String {
3031
return when (index) {

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import com.openai.core.JsonField
1111
import com.openai.core.JsonMissing
1212
import com.openai.core.JsonValue
1313
import com.openai.core.NoAutoDetect
14+
import com.openai.core.Params
1415
import com.openai.core.checkRequired
1516
import com.openai.core.http.Headers
1617
import com.openai.core.http.QueryParams
@@ -25,7 +26,7 @@ private constructor(
2526
private val body: BetaAssistantCreateBody,
2627
private val additionalHeaders: Headers,
2728
private val additionalQueryParams: QueryParams,
28-
) {
29+
) : Params {
2930

3031
/**
3132
* ID of the model to use. You can use the
@@ -178,11 +179,11 @@ private constructor(
178179

179180
fun _additionalQueryParams(): QueryParams = additionalQueryParams
180181

181-
@JvmSynthetic internal fun getBody(): BetaAssistantCreateBody = body
182+
@JvmSynthetic internal fun _body(): BetaAssistantCreateBody = body
182183

183-
@JvmSynthetic internal fun getHeaders(): Headers = additionalHeaders
184+
override fun _headers(): Headers = additionalHeaders
184185

185-
@JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams
186+
override fun _queryParams(): QueryParams = additionalQueryParams
186187

187188
@NoAutoDetect
188189
class BetaAssistantCreateBody

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ package com.openai.models
44

55
import com.openai.core.JsonValue
66
import com.openai.core.NoAutoDetect
7+
import com.openai.core.Params
78
import com.openai.core.checkRequired
89
import com.openai.core.http.Headers
910
import com.openai.core.http.QueryParams
@@ -18,7 +19,7 @@ private constructor(
1819
private val additionalHeaders: Headers,
1920
private val additionalQueryParams: QueryParams,
2021
private val additionalBodyProperties: Map<String, JsonValue>,
21-
) {
22+
) : Params {
2223

2324
fun assistantId(): String = assistantId
2425

@@ -29,12 +30,12 @@ private constructor(
2930
fun _additionalBodyProperties(): Map<String, JsonValue> = additionalBodyProperties
3031

3132
@JvmSynthetic
32-
internal fun getBody(): Optional<Map<String, JsonValue>> =
33+
internal fun _body(): Optional<Map<String, JsonValue>> =
3334
Optional.ofNullable(additionalBodyProperties.ifEmpty { null })
3435

35-
@JvmSynthetic internal fun getHeaders(): Headers = additionalHeaders
36+
override fun _headers(): Headers = additionalHeaders
3637

37-
@JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams
38+
override fun _queryParams(): QueryParams = additionalQueryParams
3839

3940
fun getPathParam(index: Int): String {
4041
return when (index) {

0 commit comments

Comments
 (0)