github-tools-0.1.2: src/GitHub/Types/Base/Verification.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
module GitHub.Types.Base.Verification where
import Data.Aeson (FromJSON (..), ToJSON (..), object)
import Data.Aeson.Types (Value (..), (.:), (.=))
import Data.Text (Text)
import Data.Text.Arbitrary ()
import Test.QuickCheck.Arbitrary (Arbitrary (..))
------------------------------------------------------------------------------
-- Verification
data Verification = Verification
{ verificationPayload :: Maybe Text
, verificationReason :: Text
, verificationSignature :: Maybe Text
, verificationVerified :: Bool
} deriving (Eq, Show, Read)
instance FromJSON Verification where
parseJSON (Object x) = Verification
<$> x .: "payload"
<*> x .: "reason"
<*> x .: "signature"
<*> x .: "verified"
parseJSON _ = fail "Verification"
instance ToJSON Verification where
toJSON Verification{..} = object
[ "payload" .= verificationPayload
, "reason" .= verificationReason
, "signature" .= verificationSignature
, "verified" .= verificationVerified
]
instance Arbitrary Verification where
arbitrary = Verification
<$> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary