github-tools-0.1.2: src/GitHub/Types/Base/CommitComment.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
module GitHub.Types.Base.CommitComment where
import Data.Aeson (FromJSON (..), ToJSON (..), object)
import Data.Aeson.Types (Value (..), (.:), (.=))
import Data.Text (Text)
import Test.QuickCheck.Arbitrary (Arbitrary (..))
import GitHub.Types.Base.DateTime
import GitHub.Types.Base.User
------------------------------------------------------------------------------
-- CommitComment
data CommitComment = CommitComment
{ commitCommentUrl :: Text
, commitCommentHtmlUrl :: Text
, commitCommentId :: Int
, commitCommentUser :: User
, commitCommentPosition :: Maybe Int
, commitCommentLine :: Maybe Int
, commitCommentPath :: Maybe Text
, commitCommentCommitId :: Text
, commitCommentCreatedAt :: DateTime
, commitCommentUpdatedAt :: DateTime
, commitCommentBody :: Text
} deriving (Eq, Show, Read)
instance FromJSON CommitComment where
parseJSON (Object x) = CommitComment
<$> x .: "url"
<*> x .: "html_url"
<*> x .: "id"
<*> x .: "user"
<*> x .: "position"
<*> x .: "line"
<*> x .: "path"
<*> x .: "commit_id"
<*> x .: "created_at"
<*> x .: "updated_at"
<*> x .: "body"
parseJSON _ = fail "CommitComment"
instance ToJSON CommitComment where
toJSON CommitComment{..} = object
[ "url" .= commitCommentUrl
, "html_url" .= commitCommentHtmlUrl
, "id" .= commitCommentId
, "user" .= commitCommentUser
, "position" .= commitCommentPosition
, "line" .= commitCommentLine
, "path" .= commitCommentPath
, "commit_id" .= commitCommentCommitId
, "created_at" .= commitCommentCreatedAt
, "updated_at" .= commitCommentUpdatedAt
, "body" .= commitCommentBody
]
instance Arbitrary CommitComment where
arbitrary = CommitComment
<$> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary