From 4a6579a0a20d8d82cba7733f77d26c8d1dc51ef9 Mon Sep 17 00:00:00 2001 From: The Magician Date: Tue, 23 Apr 2024 21:45:28 +0100 Subject: [PATCH] Add Card-related objects to Scryfall API package --- sevenkeys/scryfall/card.go | 130 +++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 sevenkeys/scryfall/card.go diff --git a/sevenkeys/scryfall/card.go b/sevenkeys/scryfall/card.go new file mode 100644 index 0000000..2b3410e --- /dev/null +++ b/sevenkeys/scryfall/card.go @@ -0,0 +1,130 @@ +package scryfall + +type Colors []rune + +type RelatedCard struct { + Id string `json:"id"` + Object string `json:"object"` + Component string `json:"component"` + Name string `json:"name"` + TypeLine string `json:"type_line"` + ApiUri string `json:"uri"` +} + +type CardFace struct { + Artist string `json:"artist"` + ArtistId string `json:"artist_id"` + ManaValue float32 `json:"cmc"` + ColorIndicator Colors `json:"color_indicator"` + Colors Colors `json:"colors"` + Defense string `json:"defense"` + FlavorText string `json:"flavor_text"` + IllustrationId string `json:"illustration_id"` + ImageUris interface{} `json:"image_uris"` // TODO: Find out the structure of this object + Layout string `json:"layout"` + Loyalty string `json:"loyalty"` + ManaCost string `json:"mana_cost"` + Name string `json:"name"` + Object string `json:"object"` + OracleId string `json:"oracle_id"` + Power string `json:"power"` + PrintedName string `json:"printed_name"` + PrintedText string `json:"printed_text"` + PrintedTypeLine string `json:"printed_type_line"` + Toughness string `json:"toughness"` + TypeLine string `json:"type_line"` + Watermark string `json:"watermark"` +} + +type Card struct { + // Core fields + ArenaId int `json:"arena_id"` + Id string `json:"id"` + Language string `json:"lang"` + MtgoId int `json:"mtgo_id"` + MtgoFoilid int `json:"mtgo_foil_id"` + MultiverseIds []int `json:"multiverse_ids"` + TcgplayerId int `json:"tcgplayer_id"` + TcgplayerEtchedId int `json:"tcgplayer_etched_id"` + Object string `json:"object"` + Layout string `json:"layout"` + OracleId string `json:"oracle_id"` + PrintsSearchUri string `json:"prints_search_uri"` + RulingsUri string `json:"rulings_uri"` + ScryfallUri string `json:"scryfall_uri"` + ApiUri string `json:"uri"` + + // Gameplay fields + AllParts []RelatedCard `json:"all_parts"` + CardFaces []CardFace `json:"card_faces"` + ManaValue float32 `json:"cmc"` + ColorIdentity Colors `json:"color_identity"` + ColorIndicator Colors `json:"color_indicator"` + Colors Colors `json:"colors"` + Defense string `json:"defense"` + EdhrecRank int `json:"edhrec_rank"` + HandModifier string `json:"hand_modifier"` + Keywords []string `json:"keywords"` + Legalities map[string]string `json:"legalities"` + LifeModifier string `json:"life_modifier"` + Loyalty string `json:"loyalty"` + ManaCost string `json:"mana_cost"` + Name string `json:"name"` + OracleText string `json:"oracle_text"` + PennyDreadfulRank int `json:"penny_rank"` + Power string `json:"power"` + ProducedMana Colors `json:"produced_mana"` + ReserveList bool `json:"reserved"` + Toughness string `json:"toughness"` + TypeLine string `json:"type_line"` + + // Printing fields + Artist string `json:"artist"` + ArtistIds []string `json:"artist_ids"` + AttractionLights []interface{} `json:"attraction_lights"` // TODO: Figure out schema + Booster bool `json:"booster"` + BorderColor string `json:"border_color"` + CardBackId string `json:"card_back_id"` + CollectorNumber string `json:"collector_number"` + ContentWarning bool `json:"content_warning"` + Digital bool `json:"digital"` + Finishes []interface{} `json:"finishes"` // TODO: Find out how flags are formatted + FlavorName string `json:"flavor_name"` + FlavorText string `json:"flavor_text"` + FrameEffects []string `json:"frame_effects"` + Frame []string `json:"frame"` + FullArt bool `json:"full_art"` + Games []string `json:"games"` + HighresImage bool `json:"highres_image"` + IllustrationId string `json:"illustration_id"` + ImageStatus string `json:"image_status"` + ImageUris interface{} `json:"image_uris"` // TODO: Find out shape of object + Oversized bool `json:"oversized"` + Prices map[string]string `json:"prices"` + PrintedName string `json:"printed_name"` + PrintedText string `json:"printed_text"` + PrintedTypeLine string `json:"printed_type_line"` + Promo bool `json:"promo"` + PromoTypes bool `json:"promo_types"` + PurchaseUris interface{} `json:"purchase_uris"` // TODO: Find out shape of object + Rarity string `json:"rarity"` + RelatedUris interface{} `json:"related_uris"` // TODO: Find out shape of object + ReleasedAt string `json:"released_at"` // TODO: Datetime type? + Reprint bool `json:"reprint"` + ScryfallSetUri string `json:"scryfall_set_uri"` + SetName string `json:"set_name"` + SetSearchUri string `json:"set_search_uri"` + SetType string `json:"set_type"` + SetUri string `json:"set_uri"` + Set string `json:"set"` + SetId string `json:"set_id"` + StorySpotlight string `json:"story_spotlight"` + Textless bool `json:"textless"` + Variation bool `json:"variation"` + VariationOf string `json:"variation_of"` + SecurityStamp string `json:"security_stamp"` + Watermark string `json:"watermark"` + PreviewedAt string `json:"preview.previewed_at"` + PreviewSourceUri string `json:"preview.source_uri"` + PreviewSource string `json:"preview.source"` +}