diff --git a/src/spacetraders_models/ship_component_condition.gleam b/src/spacetraders_models/ship_component_condition.gleam index 2e88624..425f168 100644 --- a/src/spacetraders_models/ship_component_condition.gleam +++ b/src/spacetraders_models/ship_component_condition.gleam @@ -1,4 +1,5 @@ import gleam/dynamic/decode.{type Decoder} +import gleam/int import gleam/json.{type Json} pub opaque type ShipComponentCondition { @@ -17,7 +18,11 @@ pub fn parse(value: Float) -> Result(ShipComponentCondition, Nil) { } pub fn decoder() -> Decoder(ShipComponentCondition) { - use value <- decode.then(decode.float) + use value <- decode.then( + decode.one_of(decode.float, [ + decode.then(decode.int, fn(i) { decode.success(int.to_float(i)) }), + ]), + ) case parse(value) { Ok(ship_component_condition) -> decode.success(ship_component_condition) Error(Nil) -> diff --git a/src/spacetraders_models/ship_component_integrity.gleam b/src/spacetraders_models/ship_component_integrity.gleam index e56efb6..6a325f7 100644 --- a/src/spacetraders_models/ship_component_integrity.gleam +++ b/src/spacetraders_models/ship_component_integrity.gleam @@ -1,4 +1,5 @@ import gleam/dynamic/decode.{type Decoder} +import gleam/int import gleam/json.{type Json} pub opaque type ShipComponentIntegrity { @@ -17,7 +18,11 @@ pub fn parse(value: Float) -> Result(ShipComponentIntegrity, Nil) { } pub fn decoder() -> Decoder(ShipComponentIntegrity) { - use value <- decode.then(decode.float) + use value <- decode.then( + decode.one_of(decode.float, [ + decode.then(decode.int, fn(i) { decode.success(int.to_float(i)) }), + ]), + ) case parse(value) { Ok(ship_component_integrity) -> decode.success(ship_component_integrity) Error(Nil) ->