diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/client/claude.rs | 12 | ||||
| -rw-r--r-- | src/client/openai.rs | 14 |
2 files changed, 19 insertions, 7 deletions
diff --git a/src/client/claude.rs b/src/client/claude.rs index 91ed163..7a4dd36 100644 --- a/src/client/claude.rs +++ b/src/client/claude.rs @@ -118,13 +118,19 @@ async fn send_message_streaming(builder: RequestBuilder, handler: &mut ReplyHand match err { EventSourceError::StreamEnded => {} EventSourceError::InvalidStatusCode(code, res) => { - let data: Value = res.json().await?; + let text = res.text().await?; + let data: Value = match text.parse() { + Ok(data) => data, + Err(_) => { + bail!("Request failed, {code}, {text}"); + } + }; check_error(&data)?; - bail!("Invalid status code: {code}"); + bail!("Request failed, {code}, {text}"); } EventSourceError::InvalidContentType(_, res) => { let text = res.text().await?; - bail!("The endpoint is invalid as the response content-type is not 'text/event-stream', {text}"); + bail!("The API server should return data as 'text/event-stream', but it isn't. Check the client config. {text}"); } _ => { bail!("{}", err); diff --git a/src/client/openai.rs b/src/client/openai.rs index 7a923a2..24c72cc 100644 --- a/src/client/openai.rs +++ b/src/client/openai.rs @@ -106,20 +106,26 @@ pub async fn openai_send_message_streaming( } Err(err) => { match err { - EventSourceError::InvalidStatusCode(_, res) => { - let data: Value = res.json().await?; + EventSourceError::InvalidStatusCode(code, res) => { + let text = res.text().await?; + let data: Value = match text.parse() { + Ok(data) => data, + Err(_) => { + bail!("Request failed, {code}, {text}"); + } + }; if let Some(err_msg) = data["error"]["message"].as_str() { bail!("{err_msg}"); } else if let Some(err_msg) = data["message"].as_str() { bail!("{err_msg}"); } else { - bail!("Request failed, {data}"); + bail!("Request failed, {code}, {text}"); } } EventSourceError::StreamEnded => {} EventSourceError::InvalidContentType(_, res) => { let text = res.text().await?; - bail!("The endpoint is invalid as the response content-type is not 'text/event-stream', {text}"); + bail!("The API server should return data as 'text/event-stream', but it isn't. Check the client config. {text}"); } _ => { bail!("{}", err); |
