use ferrin_provider_util::http::JsonErrorResponseHandler;
use ferrin_provider_util::http::json_error_response_handler;
use ferrin_spec::JsonValue;
use serde::Deserialize;
#[derive(Debug, Clone, Deserialize)]
pub struct GoogleErrorData {
pub error: GoogleErrorDetail,
}
#[derive(Debug, Clone, Deserialize)]
pub struct GoogleErrorDetail {
#[serde(default)]
pub code: Option<i64>,
#[serde(default)]
pub message: Option<String>,
#[serde(default)]
pub status: Option<String>,
#[serde(default)]
pub details: Option<Vec<JsonValue>>,
}
#[must_use]
pub fn error_message(data: &GoogleErrorData) -> String {
data.error
.message
.clone()
.unwrap_or_else(|| "Google Generative AI request failed".to_owned())
}
#[must_use]
pub fn failed_response_handler() -> JsonErrorResponseHandler<GoogleErrorData> {
json_error_response_handler::<GoogleErrorData>(error_message)
}