Half of ScryfallDeser fields added
Very non-atomic - and I'm not even sure if it's half. I think I might stop here and actually try the derserialisation stuff
This commit is contained in:
14
scryfall_deser/.gitignore
vendored
Normal file
14
scryfall_deser/.gitignore
vendored
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# Generated by Cargo
|
||||||
|
# will have compiled files and executables
|
||||||
|
debug/
|
||||||
|
target/
|
||||||
|
|
||||||
|
# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
|
||||||
|
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
|
||||||
|
Cargo.lock
|
||||||
|
|
||||||
|
# These are backup files generated by rustfmt
|
||||||
|
**/*.rs.bk
|
||||||
|
|
||||||
|
# MSVC Windows builds of rustc generate these, which store debugging information
|
||||||
|
*.pdb
|
||||||
9
scryfall_deser/Cargo.toml
Normal file
9
scryfall_deser/Cargo.toml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
[package]
|
||||||
|
name = "scryfall_deser"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
84
scryfall_deser/src/lib.rs
Normal file
84
scryfall_deser/src/lib.rs
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
use serde::Deserialize;
|
||||||
|
|
||||||
|
// Info from here:
|
||||||
|
// https://scryfall.com/docs/api/cards
|
||||||
|
#[derive(Deserialize)]
|
||||||
|
struct ScryfallCard {
|
||||||
|
// Core Card Fields
|
||||||
|
pub arena_id: Option<u64>,
|
||||||
|
pub id: String, // UUID - internal for Scryfall
|
||||||
|
pub lang: String,
|
||||||
|
pub mtgo: Option<u64>,
|
||||||
|
pub mtgo_foil_id: Option<u64>,
|
||||||
|
pub multiverse_ids: Option<Vec<u64>>,
|
||||||
|
pub tcgplayer_id: Option<u64>,
|
||||||
|
pub tcgplayer_etched_id: Option<u64>,
|
||||||
|
pub cardmarket_id: Option<u64>,
|
||||||
|
pub object: String,
|
||||||
|
pub layout: String, // Perhaps some kind of enum of these: https://scryfall.com/docs/api/layouts?
|
||||||
|
pub oracle_id: Option<String>, // UUID
|
||||||
|
pub prints_search_uri: String, // URI
|
||||||
|
pub rulings_uri: String, // URI
|
||||||
|
pub scryfall_uri: String, // URI
|
||||||
|
pub uri: String, //URI
|
||||||
|
|
||||||
|
// Gameplay Fields
|
||||||
|
pub all_parts: Option<Vec<ScryfallRelatedCardObject>>,
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// https://scryfall.com/docs/api/cards#card-face-objects
|
||||||
|
#[derive(Deserialize)]
|
||||||
|
struct ScryfallCardFaceObject {
|
||||||
|
pub artist: Option<String>,
|
||||||
|
pub artist_id: Option<String>, // UUID
|
||||||
|
pub cmc: Option<f64>, // TODO: Make this a proper Decimal - see "Little Girl" card for example of cmc of 0.5
|
||||||
|
pub colour_identity: Vec<Colour>,
|
||||||
|
pub colour_indicator: Option<Vec<Colour>>,
|
||||||
|
pub colours: Option<Vec<Colour>>,
|
||||||
|
pub defence: Option<String>,
|
||||||
|
pub edhrec_rank: Option<u64>,
|
||||||
|
}
|
||||||
|
|
||||||
|
// https://scryfall.com/docs/api/cards#related-card-objects
|
||||||
|
#[derive(Deserialize)]
|
||||||
|
struct ScryfallRelatedCardObject {
|
||||||
|
pub id: String, // UUID
|
||||||
|
pub object: String, // Always "related_card"
|
||||||
|
pub component: String, // One of token, meld_part, meld_result, combo_piece
|
||||||
|
pub name: String,
|
||||||
|
pub type_line: String,
|
||||||
|
pub uri: String // URI
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Deserialize, PartialEq)]
|
||||||
|
enum Colour {
|
||||||
|
White,
|
||||||
|
Blue,
|
||||||
|
Black,
|
||||||
|
Red,
|
||||||
|
Green,
|
||||||
|
Colourless
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn deserialise_card(data: String) -> Card {
|
||||||
|
|
||||||
|
Card
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn add(left: usize, right: usize) -> usize {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user