{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeOperators #-}
module PegNet.RPC.Types.TransactionStatus 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 TransactionStatus =
TransactionStatus {
txHeight :: Int,
txExecuted :: Int
} deriving (Show,Eq,GHC.Generics.Generic)
instance FromJSON TransactionStatus where
parseJSON (Object v) =
TransactionStatus
<$> v .: "height"
<*> v .: "executed"
parseJSON _ = mzero
instance ToJSON TransactionStatus where
toJSON (TransactionStatus {..}) =
object [ "height" .= txHeight
, "executed" .= txExecuted
]
toEncoding (TransactionStatus {..}) =
pairs ( "height" .= txHeight
<> "executed" .= txExecuted
)