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