module GitHub.Data.PullRequests (
    SimplePullRequest(..),
    PullRequest(..),
    EditPullRequest(..),
    CreatePullRequest(..),
    PullRequestLinks(..),
    PullRequestCommit(..),
    PullRequestEvent(..),
    PullRequestEventType(..),
    PullRequestReference(..),
    MergeResult(..),
    ) where

import GitHub.Data.Definitions
import GitHub.Data.Id          (Id)
import GitHub.Data.Options     (IssueState (..), MergeableState (..))
import GitHub.Data.Repos       (Repo)
import GitHub.Data.URL         (URL)
import GitHub.Data.Teams       (SimpleTeam)
import GitHub.Internal.Prelude
import Prelude ()

import qualified Data.Text as T

data SimplePullRequest = SimplePullRequest
    { SimplePullRequest -> Maybe UTCTime
simplePullRequestClosedAt           :: !(Maybe UTCTime)
    , SimplePullRequest -> UTCTime
simplePullRequestCreatedAt          :: !UTCTime
    , SimplePullRequest -> SimpleUser
simplePullRequestUser               :: !SimpleUser
    , SimplePullRequest -> URL
simplePullRequestPatchUrl           :: !URL
    , SimplePullRequest -> IssueState
simplePullRequestState              :: !IssueState
    , SimplePullRequest -> IssueNumber
simplePullRequestNumber             :: !IssueNumber
    , SimplePullRequest -> URL
simplePullRequestHtmlUrl            :: !URL
    , SimplePullRequest -> UTCTime
simplePullRequestUpdatedAt          :: !UTCTime
    , SimplePullRequest -> Maybe Text
simplePullRequestBody               :: !(Maybe Text)
    , SimplePullRequest -> Vector SimpleUser
simplePullRequestAssignees          :: (Vector SimpleUser)
    , SimplePullRequest -> Vector SimpleUser
simplePullRequestRequestedReviewers :: (Vector SimpleUser)
    , SimplePullRequest -> Vector SimpleTeam
simplePullRequestRequestedTeamReviewers:: (Vector SimpleTeam)
    , SimplePullRequest -> URL
simplePullRequestIssueUrl           :: !URL
    , SimplePullRequest -> URL
simplePullRequestDiffUrl            :: !URL
    , SimplePullRequest -> URL
simplePullRequestUrl                :: !URL
    , SimplePullRequest -> PullRequestLinks
simplePullRequestLinks              :: !PullRequestLinks
    , SimplePullRequest -> Maybe UTCTime
simplePullRequestMergedAt           :: !(Maybe UTCTime)
    , SimplePullRequest -> Text
simplePullRequestTitle              :: !Text
    , SimplePullRequest -> Id PullRequest
simplePullRequestId                 :: !(Id PullRequest)
    }
  deriving (Int -> SimplePullRequest -> ShowS
[SimplePullRequest] -> ShowS
SimplePullRequest -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SimplePullRequest] -> ShowS
$cshowList :: [SimplePullRequest] -> ShowS
show :: SimplePullRequest -> String
$cshow :: SimplePullRequest -> String
showsPrec :: Int -> SimplePullRequest -> ShowS
$cshowsPrec :: Int -> SimplePullRequest -> ShowS
Show, Typeable SimplePullRequest
SimplePullRequest -> DataType
SimplePullRequest -> Constr
(forall b. Data b => b -> b)
-> SimplePullRequest -> SimplePullRequest
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u.
Int -> (forall d. Data d => d -> u) -> SimplePullRequest -> u
forall u. (forall d. Data d => d -> u) -> SimplePullRequest -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> SimplePullRequest -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> SimplePullRequest -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> SimplePullRequest -> m SimplePullRequest
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> SimplePullRequest -> m SimplePullRequest
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c SimplePullRequest
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> SimplePullRequest -> c SimplePullRequest
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c SimplePullRequest)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c SimplePullRequest)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> SimplePullRequest -> m SimplePullRequest
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> SimplePullRequest -> m SimplePullRequest
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> SimplePullRequest -> m SimplePullRequest
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> SimplePullRequest -> m SimplePullRequest
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> SimplePullRequest -> m SimplePullRequest
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> SimplePullRequest -> m SimplePullRequest
gmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> SimplePullRequest -> u
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> SimplePullRequest -> u
gmapQ :: forall u. (forall d. Data d => d -> u) -> SimplePullRequest -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> SimplePullRequest -> [u]
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> SimplePullRequest -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> SimplePullRequest -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> SimplePullRequest -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> SimplePullRequest -> r
gmapT :: (forall b. Data b => b -> b)
-> SimplePullRequest -> SimplePullRequest
$cgmapT :: (forall b. Data b => b -> b)
-> SimplePullRequest -> SimplePullRequest
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c SimplePullRequest)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c SimplePullRequest)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c SimplePullRequest)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c SimplePullRequest)
dataTypeOf :: SimplePullRequest -> DataType
$cdataTypeOf :: SimplePullRequest -> DataType
toConstr :: SimplePullRequest -> Constr
$ctoConstr :: SimplePullRequest -> Constr
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c SimplePullRequest
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c SimplePullRequest
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> SimplePullRequest -> c SimplePullRequest
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> SimplePullRequest -> c SimplePullRequest
Data, Typeable, SimplePullRequest -> SimplePullRequest -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SimplePullRequest -> SimplePullRequest -> Bool
$c/= :: SimplePullRequest -> SimplePullRequest -> Bool
== :: SimplePullRequest -> SimplePullRequest -> Bool
$c== :: SimplePullRequest -> SimplePullRequest -> Bool
Eq, Eq SimplePullRequest
SimplePullRequest -> SimplePullRequest -> Bool
SimplePullRequest -> SimplePullRequest -> Ordering
SimplePullRequest -> SimplePullRequest -> SimplePullRequest
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: SimplePullRequest -> SimplePullRequest -> SimplePullRequest
$cmin :: SimplePullRequest -> SimplePullRequest -> SimplePullRequest
max :: SimplePullRequest -> SimplePullRequest -> SimplePullRequest
$cmax :: SimplePullRequest -> SimplePullRequest -> SimplePullRequest
>= :: SimplePullRequest -> SimplePullRequest -> Bool
$c>= :: SimplePullRequest -> SimplePullRequest -> Bool
> :: SimplePullRequest -> SimplePullRequest -> Bool
$c> :: SimplePullRequest -> SimplePullRequest -> Bool
<= :: SimplePullRequest -> SimplePullRequest -> Bool
$c<= :: SimplePullRequest -> SimplePullRequest -> Bool
< :: SimplePullRequest -> SimplePullRequest -> Bool
$c< :: SimplePullRequest -> SimplePullRequest -> Bool
compare :: SimplePullRequest -> SimplePullRequest -> Ordering
$ccompare :: SimplePullRequest -> SimplePullRequest -> Ordering
Ord, forall x. Rep SimplePullRequest x -> SimplePullRequest
forall x. SimplePullRequest -> Rep SimplePullRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep SimplePullRequest x -> SimplePullRequest
$cfrom :: forall x. SimplePullRequest -> Rep SimplePullRequest x
Generic)

instance NFData SimplePullRequest where rnf :: SimplePullRequest -> ()
rnf = forall a. (Generic a, GNFData (Rep a)) => a -> ()
genericRnf
instance Binary SimplePullRequest

data PullRequest = PullRequest
    { PullRequest -> Maybe UTCTime
pullRequestClosedAt             :: !(Maybe UTCTime)
    , PullRequest -> UTCTime
pullRequestCreatedAt            :: !UTCTime
    , PullRequest -> SimpleUser
pullRequestUser                 :: !SimpleUser
    , PullRequest -> URL
pullRequestPatchUrl             :: !URL
    , PullRequest -> IssueState
pullRequestState                :: !IssueState
    , PullRequest -> IssueNumber
pullRequestNumber               :: !IssueNumber
    , PullRequest -> URL
pullRequestHtmlUrl              :: !URL
    , PullRequest -> UTCTime
pullRequestUpdatedAt            :: !UTCTime
    , PullRequest -> Maybe Text
pullRequestBody                 :: !(Maybe Text)
    , PullRequest -> Vector SimpleUser
pullRequestAssignees            :: (Vector SimpleUser)
    , PullRequest -> Vector SimpleUser
pullRequestRequestedReviewers   :: (Vector SimpleUser)
    , PullRequest -> Vector SimpleTeam
pullRequestRequestedTeamReviewers :: (Vector SimpleTeam)
    , PullRequest -> URL
pullRequestIssueUrl             :: !URL
    , PullRequest -> URL
pullRequestDiffUrl              :: !URL
    , PullRequest -> URL
pullRequestUrl                  :: !URL
    , PullRequest -> PullRequestLinks
pullRequestLinks                :: !PullRequestLinks
    , PullRequest -> Maybe UTCTime
pullRequestMergedAt             :: !(Maybe UTCTime)
    , PullRequest -> Text
pullRequestTitle                :: !Text
    , PullRequest -> Id PullRequest
pullRequestId                   :: !(Id PullRequest)
    , PullRequest -> Maybe SimpleUser
pullRequestMergedBy             :: !(Maybe SimpleUser)
    , PullRequest -> Int
pullRequestChangedFiles         :: !Int
    , PullRequest -> PullRequestCommit
pullRequestHead                 :: !PullRequestCommit
    , PullRequest -> Int
pullRequestComments             :: !Count
    , PullRequest -> Int
pullRequestDeletions            :: !Count
    , PullRequest -> Int
pullRequestAdditions            :: !Count
    , PullRequest -> Int
pullRequestReviewComments       :: !Count
    , PullRequest -> PullRequestCommit
pullRequestBase                 :: !PullRequestCommit
    , PullRequest -> Int
pullRequestCommits              :: !Count
    , PullRequest -> Bool
pullRequestMerged               :: !Bool
    , PullRequest -> Maybe Bool
pullRequestMergeable            :: !(Maybe Bool)
    , PullRequest -> MergeableState
pullRequestMergeableState       :: !MergeableState
    }
  deriving (Int -> PullRequest -> ShowS
[PullRequest] -> ShowS
PullRequest -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PullRequest] -> ShowS
$cshowList :: [PullRequest] -> ShowS
show :: PullRequest -> String
$cshow :: PullRequest -> String
showsPrec :: Int -> PullRequest -> ShowS
$cshowsPrec :: Int -> PullRequest -> ShowS
Show, Typeable PullRequest
PullRequest -> DataType
PullRequest -> Constr
(forall b. Data b => b -> b) -> PullRequest -> PullRequest
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> PullRequest -> u
forall u. (forall d. Data d => d -> u) -> PullRequest -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequest -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequest -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> PullRequest -> m PullRequest
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> PullRequest -> m PullRequest
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PullRequest
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PullRequest -> c PullRequest
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PullRequest)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c PullRequest)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> PullRequest -> m PullRequest
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> PullRequest -> m PullRequest
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> PullRequest -> m PullRequest
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> PullRequest -> m PullRequest
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> PullRequest -> m PullRequest
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> PullRequest -> m PullRequest
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> PullRequest -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> PullRequest -> u
gmapQ :: forall u. (forall d. Data d => d -> u) -> PullRequest -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> PullRequest -> [u]
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequest -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequest -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequest -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequest -> r
gmapT :: (forall b. Data b => b -> b) -> PullRequest -> PullRequest
$cgmapT :: (forall b. Data b => b -> b) -> PullRequest -> PullRequest
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c PullRequest)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c PullRequest)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PullRequest)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PullRequest)
dataTypeOf :: PullRequest -> DataType
$cdataTypeOf :: PullRequest -> DataType
toConstr :: PullRequest -> Constr
$ctoConstr :: PullRequest -> Constr
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PullRequest
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PullRequest
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PullRequest -> c PullRequest
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PullRequest -> c PullRequest
Data, Typeable, PullRequest -> PullRequest -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PullRequest -> PullRequest -> Bool
$c/= :: PullRequest -> PullRequest -> Bool
== :: PullRequest -> PullRequest -> Bool
$c== :: PullRequest -> PullRequest -> Bool
Eq, Eq PullRequest
PullRequest -> PullRequest -> Bool
PullRequest -> PullRequest -> Ordering
PullRequest -> PullRequest -> PullRequest
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: PullRequest -> PullRequest -> PullRequest
$cmin :: PullRequest -> PullRequest -> PullRequest
max :: PullRequest -> PullRequest -> PullRequest
$cmax :: PullRequest -> PullRequest -> PullRequest
>= :: PullRequest -> PullRequest -> Bool
$c>= :: PullRequest -> PullRequest -> Bool
> :: PullRequest -> PullRequest -> Bool
$c> :: PullRequest -> PullRequest -> Bool
<= :: PullRequest -> PullRequest -> Bool
$c<= :: PullRequest -> PullRequest -> Bool
< :: PullRequest -> PullRequest -> Bool
$c< :: PullRequest -> PullRequest -> Bool
compare :: PullRequest -> PullRequest -> Ordering
$ccompare :: PullRequest -> PullRequest -> Ordering
Ord, forall x. Rep PullRequest x -> PullRequest
forall x. PullRequest -> Rep PullRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep PullRequest x -> PullRequest
$cfrom :: forall x. PullRequest -> Rep PullRequest x
Generic)

instance NFData PullRequest where rnf :: PullRequest -> ()
rnf = forall a. (Generic a, GNFData (Rep a)) => a -> ()
genericRnf
instance Binary PullRequest

data EditPullRequest = EditPullRequest
    { EditPullRequest -> Maybe Text
editPullRequestTitle :: !(Maybe Text)
    , EditPullRequest -> Maybe Text
editPullRequestBody  :: !(Maybe Text)
    , EditPullRequest -> Maybe IssueState
editPullRequestState :: !(Maybe IssueState)
    , EditPullRequest -> Maybe Text
editPullRequestBase  :: !(Maybe Text)
    , EditPullRequest -> Maybe Bool
editPullRequestMaintainerCanModify
                           :: !(Maybe Bool)
    }
  deriving (Int -> EditPullRequest -> ShowS
[EditPullRequest] -> ShowS
EditPullRequest -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [EditPullRequest] -> ShowS
$cshowList :: [EditPullRequest] -> ShowS
show :: EditPullRequest -> String
$cshow :: EditPullRequest -> String
showsPrec :: Int -> EditPullRequest -> ShowS
$cshowsPrec :: Int -> EditPullRequest -> ShowS
Show, forall x. Rep EditPullRequest x -> EditPullRequest
forall x. EditPullRequest -> Rep EditPullRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep EditPullRequest x -> EditPullRequest
$cfrom :: forall x. EditPullRequest -> Rep EditPullRequest x
Generic)

instance NFData EditPullRequest where rnf :: EditPullRequest -> ()
rnf = forall a. (Generic a, GNFData (Rep a)) => a -> ()
genericRnf
instance Binary EditPullRequest

data CreatePullRequest
    = CreatePullRequest
      { CreatePullRequest -> Text
createPullRequestTitle :: !Text
      , CreatePullRequest -> Text
createPullRequestBody  :: !Text
      , CreatePullRequest -> Text
createPullRequestHead  :: !Text
      , CreatePullRequest -> Text
createPullRequestBase  :: !Text
      }
    | CreatePullRequestIssue
      { CreatePullRequest -> Int
createPullRequestIssueNum :: !Int
      , createPullRequestHead     :: !Text
      , createPullRequestBase     :: !Text
      }
  deriving (Int -> CreatePullRequest -> ShowS
[CreatePullRequest] -> ShowS
CreatePullRequest -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreatePullRequest] -> ShowS
$cshowList :: [CreatePullRequest] -> ShowS
show :: CreatePullRequest -> String
$cshow :: CreatePullRequest -> String
showsPrec :: Int -> CreatePullRequest -> ShowS
$cshowsPrec :: Int -> CreatePullRequest -> ShowS
Show, forall x. Rep CreatePullRequest x -> CreatePullRequest
forall x. CreatePullRequest -> Rep CreatePullRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreatePullRequest x -> CreatePullRequest
$cfrom :: forall x. CreatePullRequest -> Rep CreatePullRequest x
Generic)

instance NFData CreatePullRequest where rnf :: CreatePullRequest -> ()
rnf = forall a. (Generic a, GNFData (Rep a)) => a -> ()
genericRnf
instance Binary CreatePullRequest

data PullRequestLinks = PullRequestLinks
    { PullRequestLinks -> URL
pullRequestLinksReviewComments :: !URL
    , PullRequestLinks -> URL
pullRequestLinksComments       :: !URL
    , PullRequestLinks -> URL
pullRequestLinksHtml           :: !URL
    , PullRequestLinks -> URL
pullRequestLinksSelf           :: !URL
    }
  deriving (Int -> PullRequestLinks -> ShowS
[PullRequestLinks] -> ShowS
PullRequestLinks -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PullRequestLinks] -> ShowS
$cshowList :: [PullRequestLinks] -> ShowS
show :: PullRequestLinks -> String
$cshow :: PullRequestLinks -> String
showsPrec :: Int -> PullRequestLinks -> ShowS
$cshowsPrec :: Int -> PullRequestLinks -> ShowS
Show, Typeable PullRequestLinks
PullRequestLinks -> DataType
PullRequestLinks -> Constr
(forall b. Data b => b -> b)
-> PullRequestLinks -> PullRequestLinks
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u.
Int -> (forall d. Data d => d -> u) -> PullRequestLinks -> u
forall u. (forall d. Data d => d -> u) -> PullRequestLinks -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestLinks -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestLinks -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> PullRequestLinks -> m PullRequestLinks
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PullRequestLinks -> m PullRequestLinks
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PullRequestLinks
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PullRequestLinks -> c PullRequestLinks
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PullRequestLinks)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c PullRequestLinks)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PullRequestLinks -> m PullRequestLinks
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PullRequestLinks -> m PullRequestLinks
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PullRequestLinks -> m PullRequestLinks
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PullRequestLinks -> m PullRequestLinks
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> PullRequestLinks -> m PullRequestLinks
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> PullRequestLinks -> m PullRequestLinks
gmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> PullRequestLinks -> u
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> PullRequestLinks -> u
gmapQ :: forall u. (forall d. Data d => d -> u) -> PullRequestLinks -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> PullRequestLinks -> [u]
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestLinks -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestLinks -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestLinks -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestLinks -> r
gmapT :: (forall b. Data b => b -> b)
-> PullRequestLinks -> PullRequestLinks
$cgmapT :: (forall b. Data b => b -> b)
-> PullRequestLinks -> PullRequestLinks
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c PullRequestLinks)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c PullRequestLinks)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PullRequestLinks)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PullRequestLinks)
dataTypeOf :: PullRequestLinks -> DataType
$cdataTypeOf :: PullRequestLinks -> DataType
toConstr :: PullRequestLinks -> Constr
$ctoConstr :: PullRequestLinks -> Constr
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PullRequestLinks
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PullRequestLinks
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PullRequestLinks -> c PullRequestLinks
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PullRequestLinks -> c PullRequestLinks
Data, Typeable, PullRequestLinks -> PullRequestLinks -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PullRequestLinks -> PullRequestLinks -> Bool
$c/= :: PullRequestLinks -> PullRequestLinks -> Bool
== :: PullRequestLinks -> PullRequestLinks -> Bool
$c== :: PullRequestLinks -> PullRequestLinks -> Bool
Eq, Eq PullRequestLinks
PullRequestLinks -> PullRequestLinks -> Bool
PullRequestLinks -> PullRequestLinks -> Ordering
PullRequestLinks -> PullRequestLinks -> PullRequestLinks
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: PullRequestLinks -> PullRequestLinks -> PullRequestLinks
$cmin :: PullRequestLinks -> PullRequestLinks -> PullRequestLinks
max :: PullRequestLinks -> PullRequestLinks -> PullRequestLinks
$cmax :: PullRequestLinks -> PullRequestLinks -> PullRequestLinks
>= :: PullRequestLinks -> PullRequestLinks -> Bool
$c>= :: PullRequestLinks -> PullRequestLinks -> Bool
> :: PullRequestLinks -> PullRequestLinks -> Bool
$c> :: PullRequestLinks -> PullRequestLinks -> Bool
<= :: PullRequestLinks -> PullRequestLinks -> Bool
$c<= :: PullRequestLinks -> PullRequestLinks -> Bool
< :: PullRequestLinks -> PullRequestLinks -> Bool
$c< :: PullRequestLinks -> PullRequestLinks -> Bool
compare :: PullRequestLinks -> PullRequestLinks -> Ordering
$ccompare :: PullRequestLinks -> PullRequestLinks -> Ordering
Ord, forall x. Rep PullRequestLinks x -> PullRequestLinks
forall x. PullRequestLinks -> Rep PullRequestLinks x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep PullRequestLinks x -> PullRequestLinks
$cfrom :: forall x. PullRequestLinks -> Rep PullRequestLinks x
Generic)

instance NFData PullRequestLinks where rnf :: PullRequestLinks -> ()
rnf = forall a. (Generic a, GNFData (Rep a)) => a -> ()
genericRnf
instance Binary PullRequestLinks

data PullRequestCommit = PullRequestCommit
    { PullRequestCommit -> Text
pullRequestCommitLabel :: !Text
    , PullRequestCommit -> Text
pullRequestCommitRef   :: !Text
    , PullRequestCommit -> Text
pullRequestCommitSha   :: !Text
    , PullRequestCommit -> SimpleUser
pullRequestCommitUser  :: !SimpleUser
    , PullRequestCommit -> Maybe Repo
pullRequestCommitRepo  :: !(Maybe Repo)
    }
  deriving (Int -> PullRequestCommit -> ShowS
[PullRequestCommit] -> ShowS
PullRequestCommit -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PullRequestCommit] -> ShowS
$cshowList :: [PullRequestCommit] -> ShowS
show :: PullRequestCommit -> String
$cshow :: PullRequestCommit -> String
showsPrec :: Int -> PullRequestCommit -> ShowS
$cshowsPrec :: Int -> PullRequestCommit -> ShowS
Show, Typeable PullRequestCommit
PullRequestCommit -> DataType
PullRequestCommit -> Constr
(forall b. Data b => b -> b)
-> PullRequestCommit -> PullRequestCommit
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u.
Int -> (forall d. Data d => d -> u) -> PullRequestCommit -> u
forall u. (forall d. Data d => d -> u) -> PullRequestCommit -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestCommit -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestCommit -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> PullRequestCommit -> m PullRequestCommit
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PullRequestCommit -> m PullRequestCommit
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PullRequestCommit
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PullRequestCommit -> c PullRequestCommit
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PullRequestCommit)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c PullRequestCommit)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PullRequestCommit -> m PullRequestCommit
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PullRequestCommit -> m PullRequestCommit
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PullRequestCommit -> m PullRequestCommit
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PullRequestCommit -> m PullRequestCommit
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> PullRequestCommit -> m PullRequestCommit
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> PullRequestCommit -> m PullRequestCommit
gmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> PullRequestCommit -> u
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> PullRequestCommit -> u
gmapQ :: forall u. (forall d. Data d => d -> u) -> PullRequestCommit -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> PullRequestCommit -> [u]
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestCommit -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestCommit -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestCommit -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestCommit -> r
gmapT :: (forall b. Data b => b -> b)
-> PullRequestCommit -> PullRequestCommit
$cgmapT :: (forall b. Data b => b -> b)
-> PullRequestCommit -> PullRequestCommit
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c PullRequestCommit)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c PullRequestCommit)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PullRequestCommit)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PullRequestCommit)
dataTypeOf :: PullRequestCommit -> DataType
$cdataTypeOf :: PullRequestCommit -> DataType
toConstr :: PullRequestCommit -> Constr
$ctoConstr :: PullRequestCommit -> Constr
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PullRequestCommit
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PullRequestCommit
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PullRequestCommit -> c PullRequestCommit
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PullRequestCommit -> c PullRequestCommit
Data, Typeable, PullRequestCommit -> PullRequestCommit -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PullRequestCommit -> PullRequestCommit -> Bool
$c/= :: PullRequestCommit -> PullRequestCommit -> Bool
== :: PullRequestCommit -> PullRequestCommit -> Bool
$c== :: PullRequestCommit -> PullRequestCommit -> Bool
Eq, Eq PullRequestCommit
PullRequestCommit -> PullRequestCommit -> Bool
PullRequestCommit -> PullRequestCommit -> Ordering
PullRequestCommit -> PullRequestCommit -> PullRequestCommit
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: PullRequestCommit -> PullRequestCommit -> PullRequestCommit
$cmin :: PullRequestCommit -> PullRequestCommit -> PullRequestCommit
max :: PullRequestCommit -> PullRequestCommit -> PullRequestCommit
$cmax :: PullRequestCommit -> PullRequestCommit -> PullRequestCommit
>= :: PullRequestCommit -> PullRequestCommit -> Bool
$c>= :: PullRequestCommit -> PullRequestCommit -> Bool
> :: PullRequestCommit -> PullRequestCommit -> Bool
$c> :: PullRequestCommit -> PullRequestCommit -> Bool
<= :: PullRequestCommit -> PullRequestCommit -> Bool
$c<= :: PullRequestCommit -> PullRequestCommit -> Bool
< :: PullRequestCommit -> PullRequestCommit -> Bool
$c< :: PullRequestCommit -> PullRequestCommit -> Bool
compare :: PullRequestCommit -> PullRequestCommit -> Ordering
$ccompare :: PullRequestCommit -> PullRequestCommit -> Ordering
Ord, forall x. Rep PullRequestCommit x -> PullRequestCommit
forall x. PullRequestCommit -> Rep PullRequestCommit x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep PullRequestCommit x -> PullRequestCommit
$cfrom :: forall x. PullRequestCommit -> Rep PullRequestCommit x
Generic)

instance NFData PullRequestCommit where rnf :: PullRequestCommit -> ()
rnf = forall a. (Generic a, GNFData (Rep a)) => a -> ()
genericRnf
instance Binary PullRequestCommit

data PullRequestEvent = PullRequestEvent
    { PullRequestEvent -> PullRequestEventType
pullRequestEventAction      :: !PullRequestEventType
    , PullRequestEvent -> Int
pullRequestEventNumber      :: !Int
    , PullRequestEvent -> PullRequest
pullRequestEventPullRequest :: !PullRequest
    , PullRequestEvent -> Repo
pullRequestRepository       :: !Repo
    , PullRequestEvent -> SimpleUser
pullRequestSender           :: !SimpleUser
    }
    deriving (Int -> PullRequestEvent -> ShowS
[PullRequestEvent] -> ShowS
PullRequestEvent -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PullRequestEvent] -> ShowS
$cshowList :: [PullRequestEvent] -> ShowS
show :: PullRequestEvent -> String
$cshow :: PullRequestEvent -> String
showsPrec :: Int -> PullRequestEvent -> ShowS
$cshowsPrec :: Int -> PullRequestEvent -> ShowS
Show, Typeable PullRequestEvent
PullRequestEvent -> DataType
PullRequestEvent -> Constr
(forall b. Data b => b -> b)
-> PullRequestEvent -> PullRequestEvent
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u.
Int -> (forall d. Data d => d -> u) -> PullRequestEvent -> u
forall u. (forall d. Data d => d -> u) -> PullRequestEvent -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestEvent -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestEvent -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> PullRequestEvent -> m PullRequestEvent
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PullRequestEvent -> m PullRequestEvent
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PullRequestEvent
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PullRequestEvent -> c PullRequestEvent
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PullRequestEvent)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c PullRequestEvent)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PullRequestEvent -> m PullRequestEvent
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PullRequestEvent -> m PullRequestEvent
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PullRequestEvent -> m PullRequestEvent
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PullRequestEvent -> m PullRequestEvent
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> PullRequestEvent -> m PullRequestEvent
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> PullRequestEvent -> m PullRequestEvent
gmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> PullRequestEvent -> u
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> PullRequestEvent -> u
gmapQ :: forall u. (forall d. Data d => d -> u) -> PullRequestEvent -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> PullRequestEvent -> [u]
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestEvent -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestEvent -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestEvent -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestEvent -> r
gmapT :: (forall b. Data b => b -> b)
-> PullRequestEvent -> PullRequestEvent
$cgmapT :: (forall b. Data b => b -> b)
-> PullRequestEvent -> PullRequestEvent
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c PullRequestEvent)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c PullRequestEvent)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PullRequestEvent)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PullRequestEvent)
dataTypeOf :: PullRequestEvent -> DataType
$cdataTypeOf :: PullRequestEvent -> DataType
toConstr :: PullRequestEvent -> Constr
$ctoConstr :: PullRequestEvent -> Constr
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PullRequestEvent
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PullRequestEvent
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PullRequestEvent -> c PullRequestEvent
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PullRequestEvent -> c PullRequestEvent
Data, Typeable, PullRequestEvent -> PullRequestEvent -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PullRequestEvent -> PullRequestEvent -> Bool
$c/= :: PullRequestEvent -> PullRequestEvent -> Bool
== :: PullRequestEvent -> PullRequestEvent -> Bool
$c== :: PullRequestEvent -> PullRequestEvent -> Bool
Eq, Eq PullRequestEvent
PullRequestEvent -> PullRequestEvent -> Bool
PullRequestEvent -> PullRequestEvent -> Ordering
PullRequestEvent -> PullRequestEvent -> PullRequestEvent
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: PullRequestEvent -> PullRequestEvent -> PullRequestEvent
$cmin :: PullRequestEvent -> PullRequestEvent -> PullRequestEvent
max :: PullRequestEvent -> PullRequestEvent -> PullRequestEvent
$cmax :: PullRequestEvent -> PullRequestEvent -> PullRequestEvent
>= :: PullRequestEvent -> PullRequestEvent -> Bool
$c>= :: PullRequestEvent -> PullRequestEvent -> Bool
> :: PullRequestEvent -> PullRequestEvent -> Bool
$c> :: PullRequestEvent -> PullRequestEvent -> Bool
<= :: PullRequestEvent -> PullRequestEvent -> Bool
$c<= :: PullRequestEvent -> PullRequestEvent -> Bool
< :: PullRequestEvent -> PullRequestEvent -> Bool
$c< :: PullRequestEvent -> PullRequestEvent -> Bool
compare :: PullRequestEvent -> PullRequestEvent -> Ordering
$ccompare :: PullRequestEvent -> PullRequestEvent -> Ordering
Ord, forall x. Rep PullRequestEvent x -> PullRequestEvent
forall x. PullRequestEvent -> Rep PullRequestEvent x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep PullRequestEvent x -> PullRequestEvent
$cfrom :: forall x. PullRequestEvent -> Rep PullRequestEvent x
Generic)

instance NFData PullRequestEvent where rnf :: PullRequestEvent -> ()
rnf = forall a. (Generic a, GNFData (Rep a)) => a -> ()
genericRnf
instance Binary PullRequestEvent

data PullRequestEventType
    = PullRequestOpened
    | PullRequestClosed
    | PullRequestSynchronized
    | PullRequestReopened
    | PullRequestAssigned
    | PullRequestUnassigned
    | PullRequestLabeled
    | PullRequestUnlabeled
    | PullRequestReviewRequested
    | PullRequestReviewRequestRemoved
    | PullRequestEdited
    deriving (Int -> PullRequestEventType -> ShowS
[PullRequestEventType] -> ShowS
PullRequestEventType -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PullRequestEventType] -> ShowS
$cshowList :: [PullRequestEventType] -> ShowS
show :: PullRequestEventType -> String
$cshow :: PullRequestEventType -> String
showsPrec :: Int -> PullRequestEventType -> ShowS
$cshowsPrec :: Int -> PullRequestEventType -> ShowS
Show, Typeable PullRequestEventType
PullRequestEventType -> DataType
PullRequestEventType -> Constr
(forall b. Data b => b -> b)
-> PullRequestEventType -> PullRequestEventType
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u.
Int -> (forall d. Data d => d -> u) -> PullRequestEventType -> u
forall u.
(forall d. Data d => d -> u) -> PullRequestEventType -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestEventType -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestEventType -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> PullRequestEventType -> m PullRequestEventType
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PullRequestEventType -> m PullRequestEventType
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PullRequestEventType
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> PullRequestEventType
-> c PullRequestEventType
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PullRequestEventType)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c PullRequestEventType)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PullRequestEventType -> m PullRequestEventType
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PullRequestEventType -> m PullRequestEventType
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PullRequestEventType -> m PullRequestEventType
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PullRequestEventType -> m PullRequestEventType
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> PullRequestEventType -> m PullRequestEventType
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> PullRequestEventType -> m PullRequestEventType
gmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> PullRequestEventType -> u
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> PullRequestEventType -> u
gmapQ :: forall u.
(forall d. Data d => d -> u) -> PullRequestEventType -> [u]
$cgmapQ :: forall u.
(forall d. Data d => d -> u) -> PullRequestEventType -> [u]
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestEventType -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestEventType -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestEventType -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestEventType -> r
gmapT :: (forall b. Data b => b -> b)
-> PullRequestEventType -> PullRequestEventType
$cgmapT :: (forall b. Data b => b -> b)
-> PullRequestEventType -> PullRequestEventType
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c PullRequestEventType)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c PullRequestEventType)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PullRequestEventType)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PullRequestEventType)
dataTypeOf :: PullRequestEventType -> DataType
$cdataTypeOf :: PullRequestEventType -> DataType
toConstr :: PullRequestEventType -> Constr
$ctoConstr :: PullRequestEventType -> Constr
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PullRequestEventType
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PullRequestEventType
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> PullRequestEventType
-> c PullRequestEventType
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> PullRequestEventType
-> c PullRequestEventType
Data, Typeable, PullRequestEventType -> PullRequestEventType -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PullRequestEventType -> PullRequestEventType -> Bool
$c/= :: PullRequestEventType -> PullRequestEventType -> Bool
== :: PullRequestEventType -> PullRequestEventType -> Bool
$c== :: PullRequestEventType -> PullRequestEventType -> Bool
Eq, Eq PullRequestEventType
PullRequestEventType -> PullRequestEventType -> Bool
PullRequestEventType -> PullRequestEventType -> Ordering
PullRequestEventType
-> PullRequestEventType -> PullRequestEventType
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: PullRequestEventType
-> PullRequestEventType -> PullRequestEventType
$cmin :: PullRequestEventType
-> PullRequestEventType -> PullRequestEventType
max :: PullRequestEventType
-> PullRequestEventType -> PullRequestEventType
$cmax :: PullRequestEventType
-> PullRequestEventType -> PullRequestEventType
>= :: PullRequestEventType -> PullRequestEventType -> Bool
$c>= :: PullRequestEventType -> PullRequestEventType -> Bool
> :: PullRequestEventType -> PullRequestEventType -> Bool
$c> :: PullRequestEventType -> PullRequestEventType -> Bool
<= :: PullRequestEventType -> PullRequestEventType -> Bool
$c<= :: PullRequestEventType -> PullRequestEventType -> Bool
< :: PullRequestEventType -> PullRequestEventType -> Bool
$c< :: PullRequestEventType -> PullRequestEventType -> Bool
compare :: PullRequestEventType -> PullRequestEventType -> Ordering
$ccompare :: PullRequestEventType -> PullRequestEventType -> Ordering
Ord, forall x. Rep PullRequestEventType x -> PullRequestEventType
forall x. PullRequestEventType -> Rep PullRequestEventType x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep PullRequestEventType x -> PullRequestEventType
$cfrom :: forall x. PullRequestEventType -> Rep PullRequestEventType x
Generic)

instance NFData PullRequestEventType where rnf :: PullRequestEventType -> ()
rnf = forall a. (Generic a, GNFData (Rep a)) => a -> ()
genericRnf
instance Binary PullRequestEventType

data PullRequestReference = PullRequestReference
    { PullRequestReference -> Maybe URL
pullRequestReferenceHtmlUrl  :: !(Maybe URL)
    , PullRequestReference -> Maybe URL
pullRequestReferencePatchUrl :: !(Maybe URL)
    , PullRequestReference -> Maybe URL
pullRequestReferenceDiffUrl  :: !(Maybe URL)
    }
    deriving (PullRequestReference -> PullRequestReference -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PullRequestReference -> PullRequestReference -> Bool
$c/= :: PullRequestReference -> PullRequestReference -> Bool
== :: PullRequestReference -> PullRequestReference -> Bool
$c== :: PullRequestReference -> PullRequestReference -> Bool
Eq, Eq PullRequestReference
PullRequestReference -> PullRequestReference -> Bool
PullRequestReference -> PullRequestReference -> Ordering
PullRequestReference
-> PullRequestReference -> PullRequestReference
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: PullRequestReference
-> PullRequestReference -> PullRequestReference
$cmin :: PullRequestReference
-> PullRequestReference -> PullRequestReference
max :: PullRequestReference
-> PullRequestReference -> PullRequestReference
$cmax :: PullRequestReference
-> PullRequestReference -> PullRequestReference
>= :: PullRequestReference -> PullRequestReference -> Bool
$c>= :: PullRequestReference -> PullRequestReference -> Bool
> :: PullRequestReference -> PullRequestReference -> Bool
$c> :: PullRequestReference -> PullRequestReference -> Bool
<= :: PullRequestReference -> PullRequestReference -> Bool
$c<= :: PullRequestReference -> PullRequestReference -> Bool
< :: PullRequestReference -> PullRequestReference -> Bool
$c< :: PullRequestReference -> PullRequestReference -> Bool
compare :: PullRequestReference -> PullRequestReference -> Ordering
$ccompare :: PullRequestReference -> PullRequestReference -> Ordering
Ord, Int -> PullRequestReference -> ShowS
[PullRequestReference] -> ShowS
PullRequestReference -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PullRequestReference] -> ShowS
$cshowList :: [PullRequestReference] -> ShowS
show :: PullRequestReference -> String
$cshow :: PullRequestReference -> String
showsPrec :: Int -> PullRequestReference -> ShowS
$cshowsPrec :: Int -> PullRequestReference -> ShowS
Show, forall x. Rep PullRequestReference x -> PullRequestReference
forall x. PullRequestReference -> Rep PullRequestReference x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep PullRequestReference x -> PullRequestReference
$cfrom :: forall x. PullRequestReference -> Rep PullRequestReference x
Generic, Typeable, Typeable PullRequestReference
PullRequestReference -> DataType
PullRequestReference -> Constr
(forall b. Data b => b -> b)
-> PullRequestReference -> PullRequestReference
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u.
Int -> (forall d. Data d => d -> u) -> PullRequestReference -> u
forall u.
(forall d. Data d => d -> u) -> PullRequestReference -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestReference -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestReference -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> PullRequestReference -> m PullRequestReference
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PullRequestReference -> m PullRequestReference
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PullRequestReference
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> PullRequestReference
-> c PullRequestReference
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PullRequestReference)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c PullRequestReference)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PullRequestReference -> m PullRequestReference
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PullRequestReference -> m PullRequestReference
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PullRequestReference -> m PullRequestReference
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PullRequestReference -> m PullRequestReference
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> PullRequestReference -> m PullRequestReference
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> PullRequestReference -> m PullRequestReference
gmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> PullRequestReference -> u
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> PullRequestReference -> u
gmapQ :: forall u.
(forall d. Data d => d -> u) -> PullRequestReference -> [u]
$cgmapQ :: forall u.
(forall d. Data d => d -> u) -> PullRequestReference -> [u]
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestReference -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestReference -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestReference -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PullRequestReference -> r
gmapT :: (forall b. Data b => b -> b)
-> PullRequestReference -> PullRequestReference
$cgmapT :: (forall b. Data b => b -> b)
-> PullRequestReference -> PullRequestReference
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c PullRequestReference)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c PullRequestReference)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PullRequestReference)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PullRequestReference)
dataTypeOf :: PullRequestReference -> DataType
$cdataTypeOf :: PullRequestReference -> DataType
toConstr :: PullRequestReference -> Constr
$ctoConstr :: PullRequestReference -> Constr
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PullRequestReference
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PullRequestReference
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> PullRequestReference
-> c PullRequestReference
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> PullRequestReference
-> c PullRequestReference
Data)

instance NFData PullRequestReference where rnf :: PullRequestReference -> ()
rnf = forall a. (Generic a, GNFData (Rep a)) => a -> ()
genericRnf
instance Binary PullRequestReference


-------------------------------------------------------------------------------
-- JSON instances
-------------------------------------------------------------------------------

instance FromJSON SimplePullRequest where
    parseJSON :: Value -> Parser SimplePullRequest
parseJSON = forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"SimplePullRequest" forall a b. (a -> b) -> a -> b
$ \Object
o -> Maybe UTCTime
-> UTCTime
-> SimpleUser
-> URL
-> IssueState
-> IssueNumber
-> URL
-> UTCTime
-> Maybe Text
-> Vector SimpleUser
-> Vector SimpleUser
-> Vector SimpleTeam
-> URL
-> URL
-> URL
-> PullRequestLinks
-> Maybe UTCTime
-> Text
-> Id PullRequest
-> SimplePullRequest
SimplePullRequest
        forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"closed_at"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"created_at"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"user"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"patch_url"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"state"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"number"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"html_url"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"updated_at"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"body"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"assignees"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"requested_reviewers" forall a. Parser (Maybe a) -> a -> Parser a
.!= forall a. Monoid a => a
mempty
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"requested_teams" forall a. Parser (Maybe a) -> a -> Parser a
.!= forall a. Monoid a => a
mempty
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"issue_url"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"diff_url"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"url"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"_links"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"merged_at"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"title"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"

instance ToJSON EditPullRequest where
    toJSON :: EditPullRequest -> Value
toJSON (EditPullRequest Maybe Text
t Maybe Text
b Maybe IssueState
s Maybe Text
base Maybe Bool
mcm) =
        [Pair] -> Value
object forall a b. (a -> b) -> a -> b
$ forall a. (a -> Bool) -> [a] -> [a]
filter forall {a}. (a, Value) -> Bool
notNull
            [ Key
"title" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Maybe Text
t
            , Key
"body"  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Maybe Text
b
            , Key
"state" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Maybe IssueState
s
            , Key
"base"  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Maybe Text
base
            , Key
"maintainer_can_modify"
                      forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Maybe Bool
mcm
            ]
      where
        notNull :: (a, Value) -> Bool
notNull (a
_, Value
Null) = Bool
False
        notNull (a
_, Value
_) = Bool
True

instance ToJSON CreatePullRequest where
    toJSON :: CreatePullRequest -> Value
toJSON (CreatePullRequest Text
t Text
b Text
headPR Text
basePR) =
        [Pair] -> Value
object [ Key
"title" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text
t, Key
"body" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text
b, Key
"head" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text
headPR, Key
"base" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text
basePR ]
    toJSON (CreatePullRequestIssue Int
issueNum Text
headPR Text
basePR) =
        [Pair] -> Value
object [ Key
"issue" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Int
issueNum, Key
"head" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text
headPR, Key
"base" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text
basePR]

instance FromJSON PullRequest where
    parseJSON :: Value -> Parser PullRequest
parseJSON = forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"PullRequest" forall a b. (a -> b) -> a -> b
$ \Object
o -> Maybe UTCTime
-> UTCTime
-> SimpleUser
-> URL
-> IssueState
-> IssueNumber
-> URL
-> UTCTime
-> Maybe Text
-> Vector SimpleUser
-> Vector SimpleUser
-> Vector SimpleTeam
-> URL
-> URL
-> URL
-> PullRequestLinks
-> Maybe UTCTime
-> Text
-> Id PullRequest
-> Maybe SimpleUser
-> Int
-> PullRequestCommit
-> Int
-> Int
-> Int
-> Int
-> PullRequestCommit
-> Int
-> Bool
-> Maybe Bool
-> MergeableState
-> PullRequest
PullRequest
        forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"closed_at"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"created_at"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"user"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"patch_url"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"state"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"number"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"html_url"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"updated_at"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"body"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"assignees"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"requested_reviewers" forall a. Parser (Maybe a) -> a -> Parser a
.!= forall a. Monoid a => a
mempty
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"requested_teams" forall a. Parser (Maybe a) -> a -> Parser a
.!= forall a. Monoid a => a
mempty
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"issue_url"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"diff_url"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"url"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"_links"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"merged_at"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"title"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"merged_by"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"changed_files"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"head"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"comments"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"deletions"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"additions"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"review_comments"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"base"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"commits"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"merged"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"mergeable"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"mergeable_state"

instance FromJSON PullRequestLinks where
    parseJSON :: Value -> Parser PullRequestLinks
parseJSON = forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"PullRequestLinks" forall a b. (a -> b) -> a -> b
$ \Object
o -> URL -> URL -> URL -> URL -> PullRequestLinks
PullRequestLinks
        forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a. Href a -> a
getHref (Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"review_comments")
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a. Href a -> a
getHref (Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"comments")
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a. Href a -> a
getHref (Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"html")
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a. Href a -> a
getHref (Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"self")

instance FromJSON PullRequestCommit where
    parseJSON :: Value -> Parser PullRequestCommit
parseJSON = forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"PullRequestCommit" forall a b. (a -> b) -> a -> b
$ \Object
o -> Text
-> Text -> Text -> SimpleUser -> Maybe Repo -> PullRequestCommit
PullRequestCommit
        forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"label"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"ref"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"sha"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"user"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"repo"

instance FromJSON PullRequestEvent where
    parseJSON :: Value -> Parser PullRequestEvent
parseJSON = forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"PullRequestEvent" forall a b. (a -> b) -> a -> b
$ \Object
o -> PullRequestEventType
-> Int -> PullRequest -> Repo -> SimpleUser -> PullRequestEvent
PullRequestEvent
        forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"action"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"number"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"pull_request"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"repository"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"sender"

instance FromJSON PullRequestEventType where
    parseJSON :: Value -> Parser PullRequestEventType
parseJSON = forall a. String -> (Text -> Parser a) -> Value -> Parser a
withText String
"PullRequestEventType" forall a b. (a -> b) -> a -> b
$ \Text
t -> case Text -> Text
T.toLower Text
t of
        Text
"opened"                 -> forall (f :: * -> *) a. Applicative f => a -> f a
pure PullRequestEventType
PullRequestOpened
        Text
"closed"                 -> forall (f :: * -> *) a. Applicative f => a -> f a
pure PullRequestEventType
PullRequestClosed
        Text
"synchronize"            -> forall (f :: * -> *) a. Applicative f => a -> f a
pure PullRequestEventType
PullRequestSynchronized
        Text
"reopened"               -> forall (f :: * -> *) a. Applicative f => a -> f a
pure PullRequestEventType
PullRequestReopened
        Text
"assigned"               -> forall (f :: * -> *) a. Applicative f => a -> f a
pure PullRequestEventType
PullRequestAssigned
        Text
"unassigned"             -> forall (f :: * -> *) a. Applicative f => a -> f a
pure PullRequestEventType
PullRequestUnassigned
        Text
"labeled"                -> forall (f :: * -> *) a. Applicative f => a -> f a
pure PullRequestEventType
PullRequestLabeled
        Text
"unlabeled"              -> forall (f :: * -> *) a. Applicative f => a -> f a
pure PullRequestEventType
PullRequestUnlabeled
        Text
"review_requested"       -> forall (f :: * -> *) a. Applicative f => a -> f a
pure PullRequestEventType
PullRequestReviewRequested
        Text
"review_request_removed" -> forall (f :: * -> *) a. Applicative f => a -> f a
pure PullRequestEventType
PullRequestReviewRequestRemoved
        Text
"edited"                 -> forall (f :: * -> *) a. Applicative f => a -> f a
pure PullRequestEventType
PullRequestEdited
        Text
_                        -> forall (m :: * -> *) a. MonadFail m => String -> m a
fail forall a b. (a -> b) -> a -> b
$ String
"Unknown PullRequestEventType: " forall a. Semigroup a => a -> a -> a
<> Text -> String
T.unpack Text
t

instance FromJSON PullRequestReference where
    parseJSON :: Value -> Parser PullRequestReference
parseJSON = forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"PullRequestReference" forall a b. (a -> b) -> a -> b
$ \Object
o -> Maybe URL -> Maybe URL -> Maybe URL -> PullRequestReference
PullRequestReference
        forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"html_url"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"patch_url"
        forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"diff_url"

-- Helpers

newtype Href a = Href { forall a. Href a -> a
getHref :: a }

instance FromJSON a => FromJSON (Href a) where
    parseJSON :: Value -> Parser (Href a)
parseJSON = forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"href object" forall a b. (a -> b) -> a -> b
$
        \Object
obj -> forall a. a -> Href a
Href forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
obj forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"href"

-- | Pull request merge results
data MergeResult
    = MergeSuccessful
    | MergeCannotPerform
    | MergeConflict
  deriving (MergeResult -> MergeResult -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MergeResult -> MergeResult -> Bool
$c/= :: MergeResult -> MergeResult -> Bool
== :: MergeResult -> MergeResult -> Bool
$c== :: MergeResult -> MergeResult -> Bool
Eq, Eq MergeResult
MergeResult -> MergeResult -> Bool
MergeResult -> MergeResult -> Ordering
MergeResult -> MergeResult -> MergeResult
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: MergeResult -> MergeResult -> MergeResult
$cmin :: MergeResult -> MergeResult -> MergeResult
max :: MergeResult -> MergeResult -> MergeResult
$cmax :: MergeResult -> MergeResult -> MergeResult
>= :: MergeResult -> MergeResult -> Bool
$c>= :: MergeResult -> MergeResult -> Bool
> :: MergeResult -> MergeResult -> Bool
$c> :: MergeResult -> MergeResult -> Bool
<= :: MergeResult -> MergeResult -> Bool
$c<= :: MergeResult -> MergeResult -> Bool
< :: MergeResult -> MergeResult -> Bool
$c< :: MergeResult -> MergeResult -> Bool
compare :: MergeResult -> MergeResult -> Ordering
$ccompare :: MergeResult -> MergeResult -> Ordering
Ord, ReadPrec [MergeResult]
ReadPrec MergeResult
Int -> ReadS MergeResult
ReadS [MergeResult]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MergeResult]
$creadListPrec :: ReadPrec [MergeResult]
readPrec :: ReadPrec MergeResult
$creadPrec :: ReadPrec MergeResult
readList :: ReadS [MergeResult]
$creadList :: ReadS [MergeResult]
readsPrec :: Int -> ReadS MergeResult
$creadsPrec :: Int -> ReadS MergeResult
Read, Int -> MergeResult -> ShowS
[MergeResult] -> ShowS
MergeResult -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MergeResult] -> ShowS
$cshowList :: [MergeResult] -> ShowS
show :: MergeResult -> String
$cshow :: MergeResult -> String
showsPrec :: Int -> MergeResult -> ShowS
$cshowsPrec :: Int -> MergeResult -> ShowS
Show, Int -> MergeResult
MergeResult -> Int
MergeResult -> [MergeResult]
MergeResult -> MergeResult
MergeResult -> MergeResult -> [MergeResult]
MergeResult -> MergeResult -> MergeResult -> [MergeResult]
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: MergeResult -> MergeResult -> MergeResult -> [MergeResult]
$cenumFromThenTo :: MergeResult -> MergeResult -> MergeResult -> [MergeResult]
enumFromTo :: MergeResult -> MergeResult -> [MergeResult]
$cenumFromTo :: MergeResult -> MergeResult -> [MergeResult]
enumFromThen :: MergeResult -> MergeResult -> [MergeResult]
$cenumFromThen :: MergeResult -> MergeResult -> [MergeResult]
enumFrom :: MergeResult -> [MergeResult]
$cenumFrom :: MergeResult -> [MergeResult]
fromEnum :: MergeResult -> Int
$cfromEnum :: MergeResult -> Int
toEnum :: Int -> MergeResult
$ctoEnum :: Int -> MergeResult
pred :: MergeResult -> MergeResult
$cpred :: MergeResult -> MergeResult
succ :: MergeResult -> MergeResult
$csucc :: MergeResult -> MergeResult
Enum, MergeResult
forall a. a -> a -> Bounded a
maxBound :: MergeResult
$cmaxBound :: MergeResult
minBound :: MergeResult
$cminBound :: MergeResult
Bounded, forall x. Rep MergeResult x -> MergeResult
forall x. MergeResult -> Rep MergeResult x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep MergeResult x -> MergeResult
$cfrom :: forall x. MergeResult -> Rep MergeResult x
Generic, Typeable)