{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeOperators #-} module PegNet.RPC.Types.RichEntry where import Control.Applicative import Control.Monad (forM_, join, mzero) import Data.Aeson (FromJSON (..), ToJSON (..), Value (..), decode, object, pairs, (.:), (.:?), (.=)) import Data.Aeson.AutoType.Alternative import qualified Data.ByteString.Lazy.Char8 as BSL import Data.Monoid import Data.Text (Text) import qualified GHC.Generics import System.Environment (getArgs) import System.Exit (exitFailure, exitSuccess) import System.IO (hPutStrLn, stderr) -------------------------------------------------------------------------------- data RichEntry = RichEntry { reAmount :: Int , rePusd :: Int , reAddress :: Text } deriving (Show, Eq, GHC.Generics.Generic) instance FromJSON RichEntry where parseJSON (Object v) = RichEntry <$> v .: "amount" <*> v .: "pusd" <*> v .: "address" parseJSON _ = mzero instance ToJSON RichEntry where toJSON (RichEntry {..}) = object [ "amount" .= reAmount , "pusd" .= rePusd , "address" .= reAddress ] toEncoding (RichEntry {..}) = pairs ( "amount" .= reAmount <> "pusd" .= rePusd <> "address" .= reAddress)