diff options
author | Julien Dessaux | 2023-07-10 00:31:13 +0200 |
---|---|---|
committer | Julien Dessaux | 2023-07-10 00:31:13 +0200 |
commit | 8249bf432abcf4aad261a79ac2d802c0ac3a0391 (patch) | |
tree | d9d89135dcefe6c388b8fa7789288bc431634ecf /haskell/src/SpaceTraders/Model/Contract.hs | |
parent | [haskell] Simplify API Error JSON decoding (diff) | |
download | spacetraders-8249bf432abcf4aad261a79ac2d802c0ac3a0391.tar.gz spacetraders-8249bf432abcf4aad261a79ac2d802c0ac3a0391.tar.bz2 spacetraders-8249bf432abcf4aad261a79ac2d802c0ac3a0391.zip |
[haskell] Refactored JSON parsing code
Diffstat (limited to 'haskell/src/SpaceTraders/Model/Contract.hs')
-rw-r--r-- | haskell/src/SpaceTraders/Model/Contract.hs | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/haskell/src/SpaceTraders/Model/Contract.hs b/haskell/src/SpaceTraders/Model/Contract.hs index fd7a70b..742062e 100644 --- a/haskell/src/SpaceTraders/Model/Contract.hs +++ b/haskell/src/SpaceTraders/Model/Contract.hs @@ -9,7 +9,6 @@ module SpaceTraders.Model.Contract , Terms(..) ) where -import Control.Monad import Data.Aeson import Data.Time import GHC.Generics @@ -25,15 +24,15 @@ data Contract = Contract { accepted :: Bool , terms :: Terms } deriving (Generic, Show) instance FromJSON Contract where - parseJSON (Object o) = Contract <$> o .: "accepted" - <*> o .: "id" - <*> o .: "type" - <*> o .: "expiration" - <*> o .: "deadlineToAccept" - <*> o .: "factionSymbol" - <*> o .: "fulfilled" - <*> o .: "terms" - parseJSON _ = mzero + parseJSON = withObject "Contract" $ \o -> + Contract <$> o .: "accepted" + <*> o .: "id" + <*> o .: "type" + <*> o .: "expiration" + <*> o .: "deadlineToAccept" + <*> o .: "factionSymbol" + <*> o .: "fulfilled" + <*> o .: "terms" instance ToJSON Contract where toEncoding (Contract a i ty e d fa fu te) = pairs ( "accepted" .= a <> "id" .= i |