gleam-spacetraders-sdk/src/spacetraders_sdk/models/refinement_produce.gleam

55 lines
1.2 KiB
Gleam

import gleam/dynamic/decode.{type Decoder}
import gleam/json.{type Json}
pub type RefinementProduce {
Iron
Copper
Silver
Gold
Aluminum
Platinum
Uranite
Meritium
Fuel
}
pub fn parse(value: String) -> Result(RefinementProduce, Nil) {
case value {
"IRON" -> Ok(Iron)
"COPPER" -> Ok(Copper)
"SILVER" -> Ok(Silver)
"GOLD" -> Ok(Gold)
"ALUMINUM" -> Ok(Aluminum)
"PLATINUM" -> Ok(Platinum)
"URANITE" -> Ok(Uranite)
"MERITIUM" -> Ok(Meritium)
"FUEL" -> Ok(Fuel)
_ -> Error(Nil)
}
}
pub fn decoder() -> Decoder(RefinementProduce) {
use value <- decode.then(decode.string)
case parse(value) {
Ok(refinement_produce) -> decode.success(refinement_produce)
Error(Nil) -> decode.failure(Iron, "RefinementProduce")
}
}
pub fn to_string(refinement_produce: RefinementProduce) -> String {
case refinement_produce {
Iron -> "IRON"
Copper -> "COPPER"
Silver -> "SILVER"
Gold -> "GOLD"
Aluminum -> "ALUMINUM"
Platinum -> "PLATINUM"
Uranite -> "URANITE"
Meritium -> "MERITIUM"
Fuel -> "FUEL"
}
}
pub fn encode(refinement_produce: RefinementProduce) -> Json {
json.string(to_string(refinement_produce))
}