tutor/www/src/Card.elm

47 lines
1.3 KiB
Elm
Raw Normal View History

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
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
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)