packages feed

api-rpc-accumulate-0.1.0.0: src/Accumulate/RPC/Types.hs

{-# LANGUAGE DeriveAnyClass        #-}
{-# LANGUAGE DeriveGeneric         #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE GADTs                 #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings     #-}
{-# LANGUAGE TemplateHaskell       #-}
{-# LANGUAGE TypeSynonymInstances  #-}

module Accumulate.RPC.Types where

import           Data.Aeson
import           Data.Aeson.TH
import           Data.Maybe
import qualified Data.Text        as T
import           Data.Time
import           GHC.Generics


--------------------------------------------------------------------------------

data ApiRequest =
  ApiRequest
    { jsonRpc :: T.Text
    , id      :: Int
    , method  :: T.Text
    , params  :: Maybe Object
    }
  deriving (Eq, Show, Generic, ToJSON)

data ApiResponse a =
  ApiResponse
    { jsonRpc :: T.Text
    , id      :: Int
    , result  :: a
    }
  deriving (Eq, Show, Generic, FromJSON)