Skip to content

Commit b4acc7c

Browse files
committed
enable openai to use morph
1 parent 31a632c commit b4acc7c

5 files changed

Lines changed: 19 additions & 31 deletions

File tree

src/api/anthropic.rs

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -37,20 +37,6 @@ impl AnthropicClient {
3737
Ok(Self { client })
3838
}
3939

40-
pub(crate) async fn check_response_status(
41-
response: reqwest::Response,
42-
) -> Result<reqwest::Response> {
43-
if !response.status().is_success() {
44-
let status = response.status();
45-
let error_text = response.text().await.unwrap_or_default();
46-
return Err(SofosError::Api(format!(
47-
"API request failed with status {}: {}",
48-
status, error_text
49-
)));
50-
}
51-
Ok(response)
52-
}
53-
5440
/// Check if we can reach the API endpoint
5541
#[allow(dead_code)]
5642
async fn check_connectivity(&self) -> Result<()> {
@@ -115,7 +101,7 @@ impl AnthropicClient {
115101

116102
match self.client.post(&url).json(&request).send().await {
117103
Ok(response) => {
118-
let response = Self::check_response_status(response).await?;
104+
let response = super::utils::check_response_status(response).await?;
119105
let result = response.json::<CreateMessageResponse>().await?;
120106
return Ok(result);
121107
}
@@ -156,7 +142,7 @@ impl AnthropicClient {
156142
request.stream = Some(true);
157143
let url = format!("{}/messages", API_BASE);
158144
let response = self.client.post(&url).json(&request).send().await?;
159-
let response = Self::check_response_status(response).await?;
145+
let response = super::utils::check_response_status(response).await?;
160146

161147
let stream = response
162148
.bytes_stream()

src/api/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ pub mod anthropic;
22
pub mod morph;
33
pub mod openai;
44
pub mod types;
5+
pub mod utils;
56

67
pub use anthropic::AnthropicClient;
78
pub use morph::MorphClient;

src/api/morph.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ impl MorphClient {
8585

8686
let url = format!("{}/chat/completions", MORPH_BASE_URL);
8787
let response = self.client.post(&url).json(&request).send().await?;
88-
let response = crate::api::anthropic::AnthropicClient::check_response_status(response).await?;
88+
let response = super::utils::check_response_status(response).await?;
8989
let result: MorphResponse = response.json().await?;
9090

9191
result

src/api/openai.rs

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ impl OpenAIClient {
163163

164164
let url = format!("{}/chat/completions", OPENAI_API_BASE);
165165
let response = self.client.post(&url).json(&body).send().await?;
166-
let response = check_response_status(response).await?;
166+
let response = super::utils::check_response_status(response).await?;
167167
let parsed: OpenAIChatResponse = response.json().await?;
168168

169169
let choice =
@@ -268,7 +268,7 @@ impl OpenAIClient {
268268
}
269269

270270
let response = self.client.post(&url).json(&body).send().await?;
271-
let response = check_response_status(response).await?;
271+
let response = super::utils::check_response_status(response).await?;
272272

273273
let response_text = response.text().await?;
274274
if std::env::var("SOFOS_DEBUG").is_ok() {
@@ -521,15 +521,3 @@ struct OpenAIResponseUsage {
521521
#[serde(default)]
522522
output_tokens: Option<u32>,
523523
}
524-
525-
async fn check_response_status(response: reqwest::Response) -> Result<reqwest::Response> {
526-
if !response.status().is_success() {
527-
let status = response.status();
528-
let error_text = response.text().await.unwrap_or_default();
529-
return Err(SofosError::Api(format!(
530-
"API request failed with status {}: {}",
531-
status, error_text
532-
)));
533-
}
534-
Ok(response)
535-
}

src/api/utils.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
use crate::error::{Result, SofosError};
2+
3+
pub async fn check_response_status(response: reqwest::Response) -> Result<reqwest::Response> {
4+
if !response.status().is_success() {
5+
let status = response.status();
6+
let error_text = response.text().await.unwrap_or_default();
7+
return Err(SofosError::Api(format!(
8+
"API request failed with status {}: {}",
9+
status, error_text
10+
)));
11+
}
12+
Ok(response)
13+
}

0 commit comments

Comments
 (0)