use std::error::Error;
use std::fmt::{Display, Formatter};
use std::result::Result;
use crate::resources::ResourceKind;
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, PartialEq)]
pub struct ErrorBody {
pub code: String,
pub details: String,
pub error_type: Option<String>,
#[serde(rename = "object")]
pub kind: ResourceKind,
pub status: i16,
pub warnings: Option<Vec<String>>,
}
impl Display for ErrorBody {
fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), std::fmt::Error> {
write!(f, "{}: {}", self.code, self.details)
}
}
impl Error for ErrorBody { }
impl ErrorBody {
pub fn from_reqwest_error(e: reqwest::Error) -> Self {
ErrorBody {
code: "CLIENT_ERR".into(),
details: e.to_string(),
error_type: None,
kind: ResourceKind::Error,
status: 599,
warnings: None,
}
}
}