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) {

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.fasterxml.jackson.annotation.JsonCreator
66
import com.openai.core.Enum
77
import com.openai.core.JsonField
88
import com.openai.core.NoAutoDetect
9+
import com.openai.core.Params
910
import com.openai.core.http.Headers
1011
import com.openai.core.http.QueryParams
1112
import com.openai.errors.OpenAIInvalidDataException
@@ -21,7 +22,7 @@ private constructor(
2122
private val order: Order?,
2223
private val additionalHeaders: Headers,
2324
private val additionalQueryParams: QueryParams,
24-
) {
25+
) : Params {
2526

2627
/**
2728
* A cursor for use in pagination. `after` is an object ID that defines your place in the list.
@@ -53,10 +54,9 @@ private constructor(
5354

5455
fun _additionalQueryParams(): QueryParams = additionalQueryParams
5556

56-
@JvmSynthetic internal fun getHeaders(): Headers = additionalHeaders
57+
override fun _headers(): Headers = additionalHeaders
5758

58-
@JvmSynthetic
59-
internal fun getQueryParams(): QueryParams {
59+
override fun _queryParams(): QueryParams {
6060
val queryParams = QueryParams.builder()
6161
this.after?.let { queryParams.put("after", listOf(it.toString())) }
6262
this.before?.let { queryParams.put("before", listOf(it.toString())) }

openai-java-core/src/main/kotlin/com/openai/models/BetaAssistantRetrieveParams.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 assistantId: String,
1516
private val additionalHeaders: Headers,
1617
private val additionalQueryParams: QueryParams,
17-
) {
18+
) : Params {
1819

1920
fun assistantId(): String = assistantId
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/BetaAssistantUpdateParams.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
@@ -26,7 +27,7 @@ private constructor(
2627
private val body: BetaAssistantUpdateBody,
2728
private val additionalHeaders: Headers,
2829
private val additionalQueryParams: QueryParams,
29-
) {
30+
) : Params {
3031

3132
fun assistantId(): String = assistantId
3233

@@ -181,11 +182,11 @@ private constructor(
181182

182183
fun _additionalQueryParams(): QueryParams = additionalQueryParams
183184

184-
@JvmSynthetic internal fun getBody(): BetaAssistantUpdateBody = body
185+
@JvmSynthetic internal fun _body(): BetaAssistantUpdateBody = body
185186

186-
@JvmSynthetic internal fun getHeaders(): Headers = additionalHeaders
187+
override fun _headers(): Headers = additionalHeaders
187188

188-
@JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams
189+
override fun _queryParams(): QueryParams = additionalQueryParams
189190

190191
fun getPathParam(index: Int): String {
191192
return when (index) {

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import com.openai.core.JsonField
2121
import com.openai.core.JsonMissing
2222
import com.openai.core.JsonValue
2323
import com.openai.core.NoAutoDetect
24+
import com.openai.core.Params
2425
import com.openai.core.checkRequired
2526
import com.openai.core.getOrThrow
2627
import com.openai.core.http.Headers
@@ -38,7 +39,7 @@ private constructor(
3839
private val body: BetaThreadCreateAndRunBody,
3940
private val additionalHeaders: Headers,
4041
private val additionalQueryParams: QueryParams,
41-
) {
42+
) : Params {
4243

4344
/**
4445
* The ID of the [assistant](https://platform.openai.com/docs/api-reference/assistants) to use
@@ -275,11 +276,11 @@ private constructor(
275276

276277
fun _additionalQueryParams(): QueryParams = additionalQueryParams
277278

278-
@JvmSynthetic internal fun getBody(): BetaThreadCreateAndRunBody = body
279+
@JvmSynthetic internal fun _body(): BetaThreadCreateAndRunBody = body
279280

280-
@JvmSynthetic internal fun getHeaders(): Headers = additionalHeaders
281+
override fun _headers(): Headers = additionalHeaders
281282

282-
@JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams
283+
override fun _queryParams(): QueryParams = additionalQueryParams
283284

284285
@NoAutoDetect
285286
class BetaThreadCreateAndRunBody

0 commit comments

Comments
 (0)