use serde::{Deserialize, Serialize};
use time::OffsetDateTime;
use time::serde::iso8601;
use url::Url;
use BulkDataResource::*;
use crate::resources::{HttpResource, ResourceKind};
pub enum BulkDataListResource {
All,
}
pub enum BulkDataResource<'a> {
Filter(&'a str),
}
impl HttpResource<BulkDataList> for BulkDataListResource {
fn path(&self) -> String {
format!("bulk-data")
}
}
impl<'a> HttpResource<BulkData> for BulkDataResource<'a> {
fn path(&self) -> String {
match self {
Filter(by) => format!("bulk-data/{}", by),
}
}
}
#[derive(Serialize, Deserialize, Debug, PartialEq)]
pub struct BulkDataList {
#[serde(rename = "object")]
pub kind: ResourceKind,
pub has_more: bool,
pub data: Vec<BulkData>,
}
#[derive(Serialize, Deserialize, Debug, PartialEq)]
pub struct BulkData {
#[serde(rename = "object")]
pub item_kind: ResourceKind,
pub id: String,
#[serde(rename = "type")]
pub kind: BulkDataKind,
#[serde(with = "iso8601")]
pub updated_at: OffsetDateTime,
pub uri: Url,
pub name: String,
pub description: String,
pub compressed_size: i64,
pub download_uri: Url,
pub content_type: String,
pub content_encoding: String,
}
#[derive(Serialize, Deserialize, Debug, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum BulkDataKind {
AllCards,
DefaultCards,
OracleCards,
Rulings,
UniqueArtwork,
}