2021-07-16 16:06:33 +00:00
|
|
|
module Card exposing (..)
|
|
|
|
|
|
|
|
import Json.Decode
|
|
|
|
import Json.Decode.Pipeline as JDP
|
|
|
|
|
|
|
|
|
2021-07-17 07:18:49 +00:00
|
|
|
type alias Prices =
|
|
|
|
{ usd : Maybe String
|
|
|
|
, usd_foil : Maybe String
|
|
|
|
, eur : Maybe String
|
|
|
|
, eur_foil : Maybe String
|
|
|
|
, tix : Maybe String
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2021-07-16 16:06:33 +00:00
|
|
|
type alias Card =
|
|
|
|
{ scryfallId : String
|
|
|
|
, name : String
|
|
|
|
, setCode : String
|
|
|
|
, rarity : String
|
2021-07-17 03:18:06 +00:00
|
|
|
, oracleText : String
|
2021-07-17 07:18:49 +00:00
|
|
|
, prices : Prices
|
2022-08-03 04:30:58 +00:00
|
|
|
, collection : String
|
|
|
|
, foil : Bool
|
2021-07-16 16:06:33 +00:00
|
|
|
}
|
|
|
|
|
2022-08-03 04:30:58 +00:00
|
|
|
|
2021-07-16 16:06:33 +00:00
|
|
|
decode : Json.Decode.Decoder Card
|
|
|
|
decode =
|
|
|
|
Json.Decode.succeed Card
|
|
|
|
|> JDP.required "scryfall_id" Json.Decode.string
|
|
|
|
|> JDP.required "name" Json.Decode.string
|
|
|
|
|> JDP.required "set_code" Json.Decode.string
|
|
|
|
|> JDP.required "rarity" Json.Decode.string
|
2021-07-17 03:18:06 +00:00
|
|
|
|> JDP.required "oracle_text"
|
|
|
|
(Json.Decode.nullable Json.Decode.string
|
|
|
|
|> Json.Decode.map (Maybe.withDefault "")
|
|
|
|
)
|
2021-07-17 07:18:49 +00:00
|
|
|
|> JDP.required "prices" decodePrices
|
2022-08-03 04:30:58 +00:00
|
|
|
|> JDP.required "collection" Json.Decode.string
|
|
|
|
|> JDP.required "foil" Json.Decode.bool
|
2021-07-17 07:18:49 +00:00
|
|
|
|
|
|
|
|
|
|
|
decodePrices : Json.Decode.Decoder Prices
|
|
|
|
decodePrices =
|
|
|
|
Json.Decode.succeed Prices
|
|
|
|
|> JDP.required "usd" (Json.Decode.nullable Json.Decode.string)
|
|
|
|
|> JDP.required "usd_foil" (Json.Decode.nullable Json.Decode.string)
|
|
|
|
|> JDP.required "eur" (Json.Decode.nullable Json.Decode.string)
|
|
|
|
|> JDP.required "eur_foil" (Json.Decode.nullable Json.Decode.string)
|
|
|
|
|> JDP.required "tix" (Json.Decode.nullable Json.Decode.string)
|