use crate::resources::errors::ErrorBody;
use reqwest::Method;
use serde::{Deserialize, Serialize};
pub mod bulk_data;
pub mod card_sets;
pub mod card_symbols;
pub mod cards;
pub mod catalog;
pub mod errors;
pub mod rulings;
pub trait HttpResource<R: for<'de> Deserialize<'de>> {
fn method(&self) -> Method {
Method::GET
}
fn path(&self) -> String;
fn json(&self) -> Option<String> {
None
}
fn path_without_query(&self) -> String {
self.path()
.chars()
.take(self
.path()
.find("?")
.unwrap_or(self.path().len())
)
.collect()
}
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(untagged)]
pub enum Response<M>{
Ok(M),
Err(ErrorBody),
}
#[derive(Serialize, Deserialize, Debug, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum ResourceKind {
BulkData,
Card,
CardFace,
CardSymbol,
Catalog,
Error,
List,
ManaCost,
#[serde(rename = "related_card")]
Related,
Ruling,
Set,
}