Skip to content

Commit 5b774cd

Browse files
mssfangRobertCraigie
authored andcommitted
feat(azure): Add HttpRequest.Builder extension methods (#9)
* Added HttpRequest.Builder extension methods * remove unused imports --------- Co-authored-by: Robert Craigie <[email protected]>
1 parent d9f6033 commit 5b774cd

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.JsonValue
79
import com.openai.core.RequestOptions
@@ -41,10 +43,12 @@ constructor(
4143
val request =
4244
HttpRequest.builder()
4345
.method(HttpMethod.POST)
46+
.addPathSegmentsForAzure(clientOptions, params.model().toString())
4447
.addPathSegments("completions")
4548
.putAllQueryParams(clientOptions.queryParams)
4649
.replaceAllQueryParams(params.getQueryParams())
4750
.putAllHeaders(clientOptions.headers)
51+
.replaceBearerTokenForAzure(clientOptions)
4852
.replaceAllHeaders(params.getHeaders())
4953
.body(json(clientOptions.jsonMapper, params.getBody()))
5054
.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.JsonValue
79
import com.openai.core.RequestOptions
@@ -17,9 +19,7 @@ import com.openai.core.http.HttpRequest
1719
import com.openai.core.http.HttpResponse.Handler
1820
import com.openai.core.http.StreamResponse
1921
import com.openai.core.http.toAsync
20-
import com.openai.core.isAzureEndpoint
2122
import com.openai.core.json
22-
import com.openai.credential.BearerTokenCredential
2323
import com.openai.errors.OpenAIError
2424
import com.openai.models.ChatCompletion
2525
import com.openai.models.ChatCompletionChunk
@@ -49,23 +49,12 @@ constructor(
4949
val request =
5050
HttpRequest.builder()
5151
.method(HttpMethod.POST)
52-
.apply {
53-
if (isAzureEndpoint(clientOptions.baseUrl)) {
54-
addPathSegments("openai", "deployments", params.model().toString())
55-
}
56-
}
52+
.addPathSegmentsForAzure(clientOptions, params.model().toString())
5753
.addPathSegments("chat", "completions")
5854
.putAllQueryParams(clientOptions.queryParams)
5955
.replaceAllQueryParams(params.getQueryParams())
6056
.putAllHeaders(clientOptions.headers)
61-
.apply {
62-
if (
63-
isAzureEndpoint(clientOptions.baseUrl) &&
64-
clientOptions.credential is BearerTokenCredential
65-
) {
66-
putHeader("Authorization", "Bearer ${clientOptions.credential.token()}")
67-
}
68-
}
57+
.replaceBearerTokenForAzure(clientOptions)
6958
.replaceAllHeaders(params.getHeaders())
7059
.body(json(clientOptions.jsonMapper, params.getBody()))
7160
.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)