{-# LANGUAGE DeriveGeneric #-}

module Network.Colchis.Protocol.JSONRPC20.Response 
    (
       Response(..)
    ,  ErrorObject(..)
    ) where

import Data.Aeson
import Data.Aeson.Types
import Data.Text
import GHC.Generics

data ErrorObject = ErrorObject
        {  _code :: Int
        ,  _message :: Text
        ,  _data :: Maybe Value
        } deriving (Generic,Show)

data Response = Response 
        {  _jsonrpc :: Text
        ,  _result  :: Maybe Value
        ,  _error :: Maybe ErrorObject
        ,  _id :: Value
        } deriving (Generic,Show)

options = defaultOptions { fieldLabelModifier = Prelude.tail , omitNothingFields = True }

instance FromJSON Response where
    parseJSON = genericParseJSON options

instance FromJSON ErrorObject where
    parseJSON = genericParseJSON options