openai_interface/rest/
post.rs1use 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}