Skip to content

Commit d473b00

Browse files
authored
🥅 Handle unsupported media type errors (#386)
* 🥅 Handle unsupported media type errors Signed-off-by: Evaline Ju <69598118+evaline-ju@users.noreply.github.com> * ♻️ Use mutable headers Signed-off-by: Evaline Ju <69598118+evaline-ju@users.noreply.github.com> * ♻️ Use HeaderValue Signed-off-by: Evaline Ju <69598118+evaline-ju@users.noreply.github.com> --------- Signed-off-by: Evaline Ju <69598118+evaline-ju@users.noreply.github.com>
1 parent 063b8d6 commit d473b00

File tree

3 files changed

+12
-7
lines changed

3 files changed

+12
-7
lines changed

src/clients/detector.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ use url::Url;
2525

2626
use super::{
2727
Error,
28-
http::{HttpClientExt, RequestBody, ResponseBody},
28+
http::{HttpClientExt, JSON_CONTENT_TYPE, RequestBody, ResponseBody},
2929
};
3030

3131
pub mod text_contents;
@@ -82,12 +82,11 @@ impl<C: DetectorClient + HttpClientExt> DetectorClientExt for C {
8282
&self,
8383
model_id: &str,
8484
url: Url,
85-
headers: HeaderMap,
85+
mut headers: HeaderMap,
8686
request: impl RequestBody,
8787
) -> Result<U, Error> {
88-
let mut headers = headers;
8988
headers.append(DETECTOR_ID_HEADER_NAME, model_id.parse().unwrap());
90-
headers.append(CONTENT_TYPE, "application/json".parse().unwrap());
89+
headers.append(CONTENT_TYPE, JSON_CONTENT_TYPE);
9190
// Header used by a router component, if available
9291
headers.append(MODEL_HEADER_NAME, model_id.parse().unwrap());
9392

src/clients/http.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
use std::{fmt::Debug, ops::Deref, time::Duration};
1919

20+
use http::header::HeaderValue;
2021
use http_body_util::{BodyExt, Full, combinators::BoxBody};
2122
use hyper::{
2223
HeaderMap, Method, Request, StatusCode,
@@ -46,6 +47,8 @@ use crate::{
4647
utils::{AsUriExt, trace},
4748
};
4849

50+
pub const JSON_CONTENT_TYPE: HeaderValue = HeaderValue::from_static("application/json");
51+
4952
/// Any type that implements Debug and Serialize can be used as a request body
5053
pub trait RequestBody: Debug + Serialize {}
5154

src/orchestrator/common/client.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*/
1717
//! Client helpers
1818
use futures::{StreamExt, TryStreamExt};
19-
use http::HeaderMap;
19+
use http::{HeaderMap, header::CONTENT_TYPE};
2020
use tokio::sync::broadcast;
2121
use tokio_stream::wrappers::{BroadcastStream, ReceiverStream};
2222
use tracing::{debug, instrument};
@@ -30,6 +30,7 @@ use crate::{
3030
GenerationDetectionRequest, TextChatDetectorClient, TextContextDocDetectorClient,
3131
TextGenerationDetectorClient,
3232
},
33+
http::JSON_CONTENT_TYPE,
3334
openai::{self, ChatCompletionsResponse, OpenAiClient},
3435
},
3536
models::{
@@ -246,11 +247,12 @@ pub async fn detect_text_context(
246247
#[instrument(skip_all, fields(model_id))]
247248
pub async fn chat_completion(
248249
client: &OpenAiClient,
249-
headers: HeaderMap,
250+
mut headers: HeaderMap,
250251
request: openai::ChatCompletionsRequest,
251252
) -> Result<openai::ChatCompletionsResponse, Error> {
252253
let model_id = request.model.clone();
253254
debug!(%model_id, ?request, "sending chat completions request");
255+
headers.append(CONTENT_TYPE, JSON_CONTENT_TYPE);
254256
let response = client
255257
.chat_completions(request, headers)
256258
.await
@@ -266,11 +268,12 @@ pub async fn chat_completion(
266268
#[instrument(skip_all, fields(model_id))]
267269
pub async fn chat_completion_stream(
268270
client: &OpenAiClient,
269-
headers: HeaderMap,
271+
mut headers: HeaderMap,
270272
request: openai::ChatCompletionsRequest,
271273
) -> Result<ChatCompletionStream, Error> {
272274
let model_id = request.model.clone();
273275
debug!(%model_id, ?request, "sending chat completions stream request");
276+
headers.append(CONTENT_TYPE, JSON_CONTENT_TYPE);
274277
let response = client
275278
.chat_completions(request, headers)
276279
.await

0 commit comments

Comments
 (0)