api-rpc-accumulate-0.1.0.0: src/Accumulate/RPC/Types/ApiDataMetricsResponse.hs
{-# LANGUAGE StrictData #-}
{-# LANGUAGE OverloadedStrings #-}
module Accumulate.RPC.Types.ApiDataMetricsResponse
( APIDataMetricsResponse (..)
, Data (..)
, decodeTopLevel
) where
import Data.Aeson
import Data.Aeson.Types (emptyObject)
import Data.ByteString.Lazy (ByteString)
import Data.HashMap.Strict (HashMap)
import Data.Text (Text)
data APIDataMetricsResponse = APIDataMetricsResponse
{ apiDataMetricsResponseDataAPIDataMetricsResponse :: Data
, sponsorAPIDataMetricsResponse :: Text
, keyPageAPIDataMetricsResponse :: Maybe Text
, apiDataMetricsResponseTypeAPIDataMetricsResponse :: Text
} deriving (Show)
data Data = Data
{ valueData :: Text
} deriving (Show)
decodeTopLevel :: ByteString -> Maybe APIDataMetricsResponse
decodeTopLevel = decode
instance ToJSON APIDataMetricsResponse where
toJSON (APIDataMetricsResponse apiDataMetricsResponseDataAPIDataMetricsResponse sponsorAPIDataMetricsResponse keyPageAPIDataMetricsResponse apiDataMetricsResponseTypeAPIDataMetricsResponse) =
object
[ "data" .= apiDataMetricsResponseDataAPIDataMetricsResponse
, "sponsor" .= sponsorAPIDataMetricsResponse
, "keyPage" .= keyPageAPIDataMetricsResponse
, "type" .= apiDataMetricsResponseTypeAPIDataMetricsResponse
]
instance FromJSON APIDataMetricsResponse where
parseJSON (Object v) = APIDataMetricsResponse
<$> v .: "data"
<*> v .: "sponsor"
<*> v .: "keyPage"
<*> v .: "type"
instance ToJSON Data where
toJSON (Data valueData) =
object
[ "value" .= valueData
]
instance FromJSON Data where
parseJSON (Object v) = Data
<$> v .: "value"