openai_interface/rest/
post.rs

1use serde::Serialize;
2
3use crate::errors::RequestError;
4
5#[allow(dead_code)]
6pub(crate) trait NoStream: Serialize {
7    async fn get_response(&self, url: &str, key: &str) -> Result<String, RequestError> {
8        let client = reqwest::Client::new();
9        let response = client
10            .post(url)
11            .headers({
12                let mut headers = reqwest::header::HeaderMap::new();
13                headers.insert("Content-Type", "application/json".parse().unwrap());
14                headers.insert("Accept", "application/json".parse().unwrap());
15                headers
16            })
17            .bearer_auth(key)
18            .json(self)
19            .send()
20            .await
21            .map_err(|e| RequestError::SendError(format!("Failed to send request: {:#?}", e)))?;
22
23        if response.status() != reqwest::StatusCode::OK {
24            return Err(
25                crate::errors::RequestError::ResponseStatus(response.status().as_u16()).into(),
26            );
27        }
28
29        let text = response.text().await.map_err(|e| {
30            RequestError::ResponseError(format!("Failed to get response text: {:#?}", e))
31        })?;
32
33        Ok(text)
34    }
35}