github-tools-0.1.2: src/GitHub/Types/Base/Changes.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
module GitHub.Types.Base.Changes where
import Data.Aeson (FromJSON (..), ToJSON (..), object)
import Data.Aeson.Types (Value (..), (.:?), (.=))
import Test.QuickCheck.Arbitrary (Arbitrary (..))
import GitHub.Types.Base.Change
------------------------------------------------------------------------------
-- Changes
data Changes = Changes
{ changesTitle :: Maybe Change
, changesBody :: Maybe Change
} deriving (Eq, Show, Read)
instance FromJSON Changes where
parseJSON (Object x) = Changes
<$> x .:? "title"
<*> x .:? "body"
parseJSON _ = fail "Changes"
instance ToJSON Changes where
toJSON Changes{..} = object
[ "title" .= changesTitle
, "body" .= changesBody
]
instance Arbitrary Changes where
arbitrary = Changes
<$> arbitrary
<*> arbitrary