scryfall_sdk_rust 0.1.1

A light wrapper (SDK) for Scryfall API (https://scryfall.com/docs/api)
Documentation
//! Module containing definitions for error object(s)

use std::error::Error;
use std::fmt::{Display, Formatter};
use std::result::Result;
use crate::resources::ResourceKind;
use serde::{Deserialize, Serialize};

/// Error response body.
/// 
/// See more info in [Scryfall API official documentation](https://scryfall.com/docs/api/errors) 
/// about the error object.
#[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 {
    /// Transforms an reqwest::Error to ErrorBody
    /// 
    /// These errors will include for example connection errors,
    /// or json decoding errors.
    /// 
    /// A default specific error body is defined for these kind of errors:
    /// 
    /// ```json
    /// {
    ///     "code": "CLIENT_ERR",
    ///     "details": Actual description from reqwest error,
    ///     "kind": "error",
    ///     "status": 599
    /// }
    /// ```
    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,
        }
    }
}