Skip to content

Commit 0c6a820

Browse files
committed
Added HttpRequest.Builder extension methods
1 parent f4fc7a5 commit 0c6a820

File tree

9 files changed

+59
-30
lines changed

9 files changed

+59
-30
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.openai.azure
2+
3+
import com.openai.core.ClientOptions
4+
import com.openai.core.http.HttpRequest
5+
import com.openai.core.isAzureEndpoint
6+
import com.openai.credential.BearerTokenCredential
7+
8+
@JvmSynthetic
9+
internal fun HttpRequest.Builder.addPathSegmentsForAzure(
10+
clientOptions: ClientOptions,
11+
deploymentModel: String
12+
): HttpRequest.Builder = apply {
13+
if (isAzureEndpoint(clientOptions.baseUrl)) {
14+
addPathSegments("openai", "deployments", deploymentModel)
15+
}
16+
}
17+
18+
@JvmSynthetic
19+
internal fun HttpRequest.Builder.replaceBearerTokenForAzure(
20+
clientOptions: ClientOptions
21+
): HttpRequest.Builder = apply {
22+
if (
23+
isAzureEndpoint(clientOptions.baseUrl) && clientOptions.credential is BearerTokenCredential
24+
) {
25+
replaceHeaders("Authorization", "Bearer ${clientOptions.credential.token()}")
26+
}
27+
}

openai-java-core/src/main/kotlin/com/openai/services/async/CompletionServiceAsyncImpl.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
package com.openai.services.async
44

5+
import com.openai.azure.addPathSegmentsForAzure
6+
import com.openai.azure.replaceBearerTokenForAzure
57
import com.openai.core.ClientOptions
68
import com.openai.core.RequestOptions
79
import com.openai.core.handlers.errorHandler
@@ -34,10 +36,12 @@ constructor(
3436
val request =
3537
HttpRequest.builder()
3638
.method(HttpMethod.POST)
39+
.addPathSegmentsForAzure(clientOptions, params.model().toString())
3740
.addPathSegments("completions")
3841
.putAllQueryParams(clientOptions.queryParams)
3942
.replaceAllQueryParams(params.getQueryParams())
4043
.putAllHeaders(clientOptions.headers)
44+
.replaceBearerTokenForAzure(clientOptions)
4145
.replaceAllHeaders(params.getHeaders())
4246
.body(json(clientOptions.jsonMapper, params.getBody()))
4347
.build()

openai-java-core/src/main/kotlin/com/openai/services/async/EmbeddingServiceAsyncImpl.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
package com.openai.services.async
44

5+
import com.openai.azure.addPathSegmentsForAzure
6+
import com.openai.azure.replaceBearerTokenForAzure
57
import com.openai.core.ClientOptions
68
import com.openai.core.RequestOptions
79
import com.openai.core.handlers.errorHandler
@@ -35,10 +37,12 @@ constructor(
3537
val request =
3638
HttpRequest.builder()
3739
.method(HttpMethod.POST)
40+
.addPathSegmentsForAzure(clientOptions, params.model().toString())
3841
.addPathSegments("embeddings")
3942
.putAllQueryParams(clientOptions.queryParams)
4043
.replaceAllQueryParams(params.getQueryParams())
4144
.putAllHeaders(clientOptions.headers)
45+
.replaceBearerTokenForAzure(clientOptions)
4246
.replaceAllHeaders(params.getHeaders())
4347
.body(json(clientOptions.jsonMapper, params.getBody()))
4448
.build()

openai-java-core/src/main/kotlin/com/openai/services/async/ImageServiceAsyncImpl.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
package com.openai.services.async
44

5+
import com.openai.azure.addPathSegmentsForAzure
6+
import com.openai.azure.replaceBearerTokenForAzure
57
import com.openai.core.ClientOptions
68
import com.openai.core.RequestOptions
79
import com.openai.core.handlers.errorHandler
@@ -34,10 +36,12 @@ constructor(
3436
val request =
3537
HttpRequest.builder()
3638
.method(HttpMethod.POST)
39+
.addPathSegmentsForAzure(clientOptions, params.model().get().toString())
3740
.addPathSegments("images", "generations")
3841
.putAllQueryParams(clientOptions.queryParams)
3942
.replaceAllQueryParams(params.getQueryParams())
4043
.putAllHeaders(clientOptions.headers)
44+
.replaceBearerTokenForAzure(clientOptions)
4145
.replaceAllHeaders(params.getHeaders())
4246
.body(json(clientOptions.jsonMapper, params.getBody()))
4347
.build()

openai-java-core/src/main/kotlin/com/openai/services/async/chat/CompletionServiceAsyncImpl.kt

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
package com.openai.services.async.chat
44

5+
import com.openai.azure.addPathSegmentsForAzure
6+
import com.openai.azure.replaceBearerTokenForAzure
57
import com.openai.core.ClientOptions
68
import com.openai.core.RequestOptions
79
import com.openai.core.handlers.errorHandler
@@ -10,9 +12,7 @@ import com.openai.core.handlers.withErrorHandler
1012
import com.openai.core.http.HttpMethod
1113
import com.openai.core.http.HttpRequest
1214
import com.openai.core.http.HttpResponse.Handler
13-
import com.openai.core.isAzureEndpoint
1415
import com.openai.core.json
15-
import com.openai.credential.BearerTokenCredential
1616
import com.openai.errors.OpenAIError
1717
import com.openai.models.ChatCompletion
1818
import com.openai.models.ChatCompletionCreateParams
@@ -41,23 +41,12 @@ constructor(
4141
val request =
4242
HttpRequest.builder()
4343
.method(HttpMethod.POST)
44-
.apply {
45-
if (isAzureEndpoint(clientOptions.baseUrl)) {
46-
addPathSegments("openai", "deployments", params.model().toString())
47-
}
48-
}
44+
.addPathSegmentsForAzure(clientOptions, params.model().toString())
4945
.addPathSegments("chat", "completions")
5046
.putAllQueryParams(clientOptions.queryParams)
5147
.replaceAllQueryParams(params.getQueryParams())
5248
.putAllHeaders(clientOptions.headers)
53-
.apply {
54-
if (
55-
isAzureEndpoint(clientOptions.baseUrl) &&
56-
clientOptions.credential is BearerTokenCredential
57-
) {
58-
putHeader("Authorization", "Bearer ${clientOptions.credential.token()}")
59-
}
60-
}
49+
.replaceBearerTokenForAzure(clientOptions)
6150
.replaceAllHeaders(params.getHeaders())
6251
.body(json(clientOptions.jsonMapper, params.getBody()))
6352
.build()

openai-java-core/src/main/kotlin/com/openai/services/blocking/CompletionServiceImpl.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
package com.openai.services.blocking
44

5+
import com.openai.azure.addPathSegmentsForAzure
6+
import com.openai.azure.replaceBearerTokenForAzure
57
import com.openai.core.ClientOptions
68
import com.openai.core.JsonValue
79
import com.openai.core.RequestOptions
@@ -38,10 +40,12 @@ constructor(
3840
val request =
3941
HttpRequest.builder()
4042
.method(HttpMethod.POST)
43+
.addPathSegmentsForAzure(clientOptions, params.model().toString())
4144
.addPathSegments("completions")
4245
.putAllQueryParams(clientOptions.queryParams)
4346
.replaceAllQueryParams(params.getQueryParams())
4447
.putAllHeaders(clientOptions.headers)
48+
.replaceBearerTokenForAzure(clientOptions)
4549
.replaceAllHeaders(params.getHeaders())
4650
.body(json(clientOptions.jsonMapper, params.getBody()))
4751
.build()

openai-java-core/src/main/kotlin/com/openai/services/blocking/EmbeddingServiceImpl.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
package com.openai.services.blocking
44

5+
import com.openai.azure.addPathSegmentsForAzure
6+
import com.openai.azure.replaceBearerTokenForAzure
57
import com.openai.core.ClientOptions
68
import com.openai.core.RequestOptions
79
import com.openai.core.handlers.errorHandler
@@ -34,10 +36,12 @@ constructor(
3436
val request =
3537
HttpRequest.builder()
3638
.method(HttpMethod.POST)
39+
.addPathSegmentsForAzure(clientOptions, params.model().toString())
3740
.addPathSegments("embeddings")
3841
.putAllQueryParams(clientOptions.queryParams)
3942
.replaceAllQueryParams(params.getQueryParams())
4043
.putAllHeaders(clientOptions.headers)
44+
.replaceBearerTokenForAzure(clientOptions)
4145
.replaceAllHeaders(params.getHeaders())
4246
.body(json(clientOptions.jsonMapper, params.getBody()))
4347
.build()

openai-java-core/src/main/kotlin/com/openai/services/blocking/ImageServiceImpl.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
package com.openai.services.blocking
44

5+
import com.openai.azure.addPathSegmentsForAzure
6+
import com.openai.azure.replaceBearerTokenForAzure
57
import com.openai.core.ClientOptions
68
import com.openai.core.RequestOptions
79
import com.openai.core.handlers.errorHandler
@@ -33,10 +35,12 @@ constructor(
3335
val request =
3436
HttpRequest.builder()
3537
.method(HttpMethod.POST)
38+
.addPathSegmentsForAzure(clientOptions, params.model().get().toString())
3639
.addPathSegments("images", "generations")
3740
.putAllQueryParams(clientOptions.queryParams)
3841
.replaceAllQueryParams(params.getQueryParams())
3942
.putAllHeaders(clientOptions.headers)
43+
.replaceBearerTokenForAzure(clientOptions)
4044
.replaceAllHeaders(params.getHeaders())
4145
.body(json(clientOptions.jsonMapper, params.getBody()))
4246
.build()

openai-java-core/src/main/kotlin/com/openai/services/blocking/chat/CompletionServiceImpl.kt

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
package com.openai.services.blocking.chat
44

5+
import com.openai.azure.addPathSegmentsForAzure
6+
import com.openai.azure.replaceBearerTokenForAzure
57
import com.openai.core.ClientOptions
68
import com.openai.core.JsonValue
79
import com.openai.core.RequestOptions
@@ -15,9 +17,7 @@ import com.openai.core.http.HttpMethod
1517
import com.openai.core.http.HttpRequest
1618
import com.openai.core.http.HttpResponse.Handler
1719
import com.openai.core.http.StreamResponse
18-
import com.openai.core.isAzureEndpoint
1920
import com.openai.core.json
20-
import com.openai.credential.BearerTokenCredential
2121
import com.openai.errors.OpenAIError
2222
import com.openai.models.ChatCompletion
2323
import com.openai.models.ChatCompletionChunk
@@ -46,23 +46,12 @@ constructor(
4646
val request =
4747
HttpRequest.builder()
4848
.method(HttpMethod.POST)
49-
.apply {
50-
if (isAzureEndpoint(clientOptions.baseUrl)) {
51-
addPathSegments("openai", "deployments", params.model().toString())
52-
}
53-
}
49+
.addPathSegmentsForAzure(clientOptions, params.model().toString())
5450
.addPathSegments("chat", "completions")
5551
.putAllQueryParams(clientOptions.queryParams)
5652
.replaceAllQueryParams(params.getQueryParams())
5753
.putAllHeaders(clientOptions.headers)
58-
.apply {
59-
if (
60-
isAzureEndpoint(clientOptions.baseUrl) &&
61-
clientOptions.credential is BearerTokenCredential
62-
) {
63-
putHeader("Authorization", "Bearer ${clientOptions.credential.token()}")
64-
}
65-
}
54+
.replaceBearerTokenForAzure(clientOptions)
6655
.replaceAllHeaders(params.getHeaders())
6756
.body(json(clientOptions.jsonMapper, params.getBody()))
6857
.build()

0 commit comments

Comments
 (0)