use serde_json::Value;
use crate::error::ProviderError;
use crate::types::VendorExtensions;
use super::super::ProviderProtocol;
pub(in crate::protocol) fn parse_claude_error(status: Option<u16>, body: &Value) -> ProviderError {
ProviderError {
protocol: ProviderProtocol::ClaudeMessages,
status,
code: body
.get("error")
.and_then(|value| value.get("type"))
.and_then(Value::as_str)
.map(str::to_owned),
message: body
.get("error")
.and_then(|value| value.get("message"))
.and_then(Value::as_str)
.unwrap_or("provider error")
.to_string(),
retry_after: None,
raw_body: Some(body.to_string()),
vendor_extensions: VendorExtensions::new(),
}
}