{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeOperators #-}
module PegNet.RPC.Types.Balances 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)
o .:?? val = fmap join (o .:? val)
data NetBalances = NetBalances {
topLevelPBRL :: Double,
topLevelPRVN :: Double,
topLevelPEUR :: Double,
topLevelPUSD :: Double,
topLevelPEG :: Double,
topLevelPCHF :: Double,
topLevelPDCR :: Double,
topLevelPLTC :: Double,
topLevelPMXN :: Double,
topLevelPKRW :: Double,
topLevelPXBT :: Double,
topLevelPBNB :: Double,
topLevelPCAD :: Double,
topLevelPZEC :: Double,
topLevelPXAU :: Double,
topLevelPADA :: Double,
topLevelPCNY :: Double,
topLevelPXMR :: Double,
topLevelPHKD :: Double,
topLevelPINR :: Double,
topLevelPGBP :: Double,
topLevelPSGD :: Double,
topLevelPPHP :: Double,
topLevelPJPY :: Double,
topLevelPDASH :: Double,
topLevelPXAG :: Double,
topLevelPXBC :: Double,
topLevelPFCT :: Double,
topLevelPXLM :: Double,
topLevelPETH :: Double
} deriving (Show,Eq,GHC.Generics.Generic)
instance FromJSON NetBalances where
parseJSON (Object v) =
NetBalances
<$> v
.: "pBRL"
<*> v
.: "pRVN"
<*> v
.: "pEUR"
<*> v
.: "pUSD"
<*> v
.: "PEG"
<*> v
.: "pCHF"
<*> v
.: "pDCR"
<*> v
.: "pLTC"
<*> v
.: "pMXN"
<*> v
.: "pKRW"
<*> v
.: "pXBT"
<*> v
.: "pBNB"
<*> v
.: "pCAD"
<*> v
.: "pZEC"
<*> v
.: "pXAU"
<*> v
.: "pADA"
<*> v
.: "pCNY"
<*> v
.: "pXMR"
<*> v
.: "pHKD"
<*> v
.: "pINR"
<*> v
.: "pGBP"
<*> v
.: "pSGD"
<*> v
.: "pPHP"
<*> v
.: "pJPY"
<*> v
.: "pDASH"
<*> v
.: "pXAG"
<*> v
.: "pXBC"
<*> v
.: "pFCT"
<*> v
.: "pXLM"
<*> v
.: "pETH"
parseJSON _ = mzero
instance ToJSON NetBalances where
toJSON (NetBalances {..}) = object
[ "pBRL" .= topLevelPBRL
, "pRVN" .= topLevelPRVN
, "pEUR" .= topLevelPEUR
, "pUSD" .= topLevelPUSD
, "PEG" .= topLevelPEG
, "pCHF" .= topLevelPCHF
, "pDCR" .= topLevelPDCR
, "pLTC" .= topLevelPLTC
, "pMXN" .= topLevelPMXN
, "pKRW" .= topLevelPKRW
, "pXBT" .= topLevelPXBT
, "pBNB" .= topLevelPBNB
, "pCAD" .= topLevelPCAD
, "pZEC" .= topLevelPZEC
, "pXAU" .= topLevelPXAU
, "pADA" .= topLevelPADA
, "pCNY" .= topLevelPCNY
, "pXMR" .= topLevelPXMR
, "pHKD" .= topLevelPHKD
, "pINR" .= topLevelPINR
, "pGBP" .= topLevelPGBP
, "pSGD" .= topLevelPSGD
, "pPHP" .= topLevelPPHP
, "pJPY" .= topLevelPJPY
, "pDASH" .= topLevelPDASH
, "pXAG" .= topLevelPXAG
, "pXBC" .= topLevelPXBC
, "pFCT" .= topLevelPFCT
, "pXLM" .= topLevelPXLM
, "pETH" .= topLevelPETH
]
toEncoding (NetBalances {..}) = pairs
( "pBRL"
.= topLevelPBRL
<> "pRVN"
.= topLevelPRVN
<> "pEUR"
.= topLevelPEUR
<> "pUSD"
.= topLevelPUSD
<> "PEG"
.= topLevelPEG
<> "pCHF"
.= topLevelPCHF
<> "pDCR"
.= topLevelPDCR
<> "pLTC"
.= topLevelPLTC
<> "pMXN"
.= topLevelPMXN
<> "pKRW"
.= topLevelPKRW
<> "pXBT"
.= topLevelPXBT
<> "pBNB"
.= topLevelPBNB
<> "pCAD"
.= topLevelPCAD
<> "pZEC"
.= topLevelPZEC
<> "pXAU"
.= topLevelPXAU
<> "pADA"
.= topLevelPADA
<> "pCNY"
.= topLevelPCNY
<> "pXMR"
.= topLevelPXMR
<> "pHKD"
.= topLevelPHKD
<> "pINR"
.= topLevelPINR
<> "pGBP"
.= topLevelPGBP
<> "pSGD"
.= topLevelPSGD
<> "pPHP"
.= topLevelPPHP
<> "pJPY"
.= topLevelPJPY
<> "pDASH"
.= topLevelPDASH
<> "pXAG"
.= topLevelPXAG
<> "pXBC"
.= topLevelPXBC
<> "pFCT"
.= topLevelPFCT
<> "pXLM"
.= topLevelPXLM
<> "pETH"
.= topLevelPETH
)