use reqwest::Response;
use serde_json::Value;
use systemprompt_models::services::WireProtocol;
use super::provider::AnthropicProvider;
use crate::error::Result;
pub(super) async fn post_body(
provider: &AnthropicProvider,
mut body: Value,
upstream_model: &str,
stream: bool,
) -> Result<Response> {
let call = provider.target.call().await?;
call.finish_value(WireProtocol::Anthropic, &mut body);
let mut request =
provider
.client
.post(call.url(WireProtocol::Anthropic, upstream_model, stream));
for (name, value) in call.headers(WireProtocol::Anthropic) {
request = request.header(name, value);
}
let response = request.json(&body).send().await?;
if !response.status().is_success() {
return Err(crate::error::AiError::from_error_response("anthropic", response).await);
}
Ok(response)
}