github 0.20 → 0.21
raw patch · 32 files changed
+687/−441 lines, 32 filesdep +cryptohash-sha1dep +taggeddep −byteabledep −cryptohashdep ~hspecdep ~http-clientPVP ok
version bump matches the API change (PVP)
Dependencies added: cryptohash-sha1, tagged
Dependencies removed: byteable, cryptohash
Dependency ranges changed: hspec, http-client
API changes (from Hackage documentation)
- GitHub.Data.Definitions: instance GHC.Exception.Exception GitHub.Data.Definitions.Error
- GitHub.Data.Issues: [editIssueAssignee] :: EditIssue -> !(Maybe (Name User))
- GitHub.Data.Issues: [newIssueAssignee] :: NewIssue -> !(Maybe Text)
- GitHub.Data.PullRequests: statusMerge :: StatusMap MergeResult
- GitHub.Data.Request: [Delete] :: CommandMethod ()
- GitHub.Data.Request: [HeaderQuery] :: FromJSON a => RequestHeaders -> SimpleRequest k a -> Request k a
- GitHub.Data.Request: [Patch] :: CommandMethod a
- GitHub.Data.Request: [Post] :: CommandMethod a
- GitHub.Data.Request: [Put'] :: CommandMethod ()
- GitHub.Data.Request: [Put] :: CommandMethod a
- GitHub.Data.Request: [RedirectQuery] :: SimpleRequest k () -> Request k URI
- GitHub.Data.Request: [SimpleQuery] :: FromJSON a => SimpleRequest k a -> Request k a
- GitHub.Data.Request: [StatusQuery] :: StatusMap a -> SimpleRequest k () -> Request k a
- GitHub.Data.Request: data Request (k :: RW) a
- GitHub.Data.Request: data SimpleRequest (k :: RW) a
- GitHub.Data.Request: instance Data.Hashable.Class.Hashable (GitHub.Data.Request.CommandMethod a)
- GitHub.Data.Request: instance Data.Hashable.Class.Hashable (GitHub.Data.Request.Request k a)
- GitHub.Data.Request: instance Data.Hashable.Class.Hashable (GitHub.Data.Request.SimpleRequest k a)
- GitHub.Data.Request: instance GHC.Classes.Eq (GitHub.Data.Request.CommandMethod a)
- GitHub.Data.Request: instance GHC.Classes.Eq a => GHC.Classes.Eq (GitHub.Data.Request.Request k a)
- GitHub.Data.Request: instance GHC.Classes.Eq a => GHC.Classes.Eq (GitHub.Data.Request.SimpleRequest k a)
- GitHub.Data.Request: instance GHC.Classes.Ord (GitHub.Data.Request.CommandMethod a)
- GitHub.Data.Request: instance GHC.Classes.Ord a => GHC.Classes.Ord (GitHub.Data.Request.Request k a)
- GitHub.Data.Request: instance GHC.Classes.Ord a => GHC.Classes.Ord (GitHub.Data.Request.SimpleRequest k a)
- GitHub.Data.Request: instance GHC.Show.Show (GitHub.Data.Request.CommandMethod a)
- GitHub.Data.Request: instance GHC.Show.Show (GitHub.Data.Request.Request k a)
- GitHub.Data.Request: instance GHC.Show.Show (GitHub.Data.Request.SimpleRequest k a)
- GitHub.Data.Request: statusOnlyOk :: StatusMap Bool
- GitHub.Data.Request: type StatusMap a = [(Int, a)]
- GitHub.Request: [Delete] :: CommandMethod ()
- GitHub.Request: [HeaderQuery] :: FromJSON a => RequestHeaders -> SimpleRequest k a -> Request k a
- GitHub.Request: [Patch] :: CommandMethod a
- GitHub.Request: [Post] :: CommandMethod a
- GitHub.Request: [Put'] :: CommandMethod ()
- GitHub.Request: [Put] :: CommandMethod a
- GitHub.Request: [RedirectQuery] :: SimpleRequest k () -> Request k URI
- GitHub.Request: [SimpleQuery] :: FromJSON a => SimpleRequest k a -> Request k a
- GitHub.Request: [StatusQuery] :: StatusMap a -> SimpleRequest k () -> Request k a
- GitHub.Request: data Request (k :: RW) a
- GitHub.Request: makeHttpSimpleRequest :: MonadThrow m => Maybe Auth -> SimpleRequest k a -> m Request
+ GitHub: addCollaboratorR :: Name Owner -> Name Repo -> Name User -> GenRequest 'MtUnit 'RW ()
+ GitHub: createMilestone :: Auth -> Name Owner -> Name Repo -> NewMilestone -> IO (Either Error Milestone)
+ GitHub: createMilestoneR :: Name Owner -> Name Repo -> NewMilestone -> Request 'RW Milestone
+ GitHub: createPullCommentR :: Name Owner -> Name Repo -> IssueNumber -> Text -> Text -> Int -> Text -> Request 'RW Comment
+ GitHub: deleteMilestone :: Auth -> Name Owner -> Name Repo -> Id Milestone -> IO (Either Error ())
+ GitHub: deleteMilestoneR :: Name Owner -> Name Repo -> Id Milestone -> Request 'RW ()
+ GitHub: organizationsR :: FetchCount -> Request k (Vector SimpleOrganization)
+ GitHub: pullRequestDiffR :: Name Owner -> Name Repo -> IssueNumber -> GenRequest 'MtDiff rw ByteString
+ GitHub: pullRequestPatchR :: Name Owner -> Name Repo -> IssueNumber -> GenRequest 'MtPatch rw ByteString
+ GitHub: updateMilestone :: Auth -> Name Owner -> Name Repo -> Id Milestone -> UpdateMilestone -> IO (Either Error Milestone)
+ GitHub: updateMilestoneR :: Name Owner -> Name Repo -> Id Milestone -> UpdateMilestone -> Request 'RW Milestone
+ GitHub.Data: IssueNumber :: Int -> IssueNumber
+ GitHub.Data: newtype IssueNumber
+ GitHub.Data.Comments: NewPullComment :: !Text -> !Text -> !Int -> !Text -> NewPullComment
+ GitHub.Data.Comments: [newPullCommentBody] :: NewPullComment -> !Text
+ GitHub.Data.Comments: [newPullCommentCommit] :: NewPullComment -> !Text
+ GitHub.Data.Comments: [newPullCommentPath] :: NewPullComment -> !Text
+ GitHub.Data.Comments: [newPullCommentPosition] :: NewPullComment -> !Int
+ GitHub.Data.Comments: data NewPullComment
+ GitHub.Data.Comments: instance Control.DeepSeq.NFData GitHub.Data.Comments.NewPullComment
+ GitHub.Data.Comments: instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Comments.NewPullComment
+ GitHub.Data.Comments: instance Data.Binary.Class.Binary GitHub.Data.Comments.NewPullComment
+ GitHub.Data.Comments: instance Data.Data.Data GitHub.Data.Comments.NewPullComment
+ GitHub.Data.Comments: instance GHC.Classes.Eq GitHub.Data.Comments.NewPullComment
+ GitHub.Data.Comments: instance GHC.Classes.Ord GitHub.Data.Comments.NewPullComment
+ GitHub.Data.Comments: instance GHC.Generics.Generic GitHub.Data.Comments.NewPullComment
+ GitHub.Data.Comments: instance GHC.Show.Show GitHub.Data.Comments.NewPullComment
+ GitHub.Data.Definitions: IssueNumber :: Int -> IssueNumber
+ GitHub.Data.Definitions: instance Control.DeepSeq.NFData GitHub.Data.Definitions.IssueNumber
+ GitHub.Data.Definitions: instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Definitions.IssueNumber
+ GitHub.Data.Definitions: instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Definitions.IssueNumber
+ GitHub.Data.Definitions: instance Data.Binary.Class.Binary GitHub.Data.Definitions.IssueNumber
+ GitHub.Data.Definitions: instance Data.Data.Data GitHub.Data.Definitions.IssueNumber
+ GitHub.Data.Definitions: instance Data.Hashable.Class.Hashable GitHub.Data.Definitions.IssueNumber
+ GitHub.Data.Definitions: instance GHC.Classes.Eq GitHub.Data.Definitions.IssueNumber
+ GitHub.Data.Definitions: instance GHC.Classes.Ord GitHub.Data.Definitions.IssueNumber
+ GitHub.Data.Definitions: instance GHC.Exception.Type.Exception GitHub.Data.Definitions.Error
+ GitHub.Data.Definitions: instance GHC.Generics.Generic GitHub.Data.Definitions.IssueNumber
+ GitHub.Data.Definitions: instance GHC.Show.Show GitHub.Data.Definitions.IssueNumber
+ GitHub.Data.Definitions: newtype IssueNumber
+ GitHub.Data.Definitions: unIssueNumber :: IssueNumber -> Int
+ GitHub.Data.Issues: [editIssueAssignees] :: EditIssue -> !Maybe (Vector (Name User))
+ GitHub.Data.Issues: [newIssueAssignees] :: NewIssue -> !Vector (Name User)
+ GitHub.Data.Milestone: NewMilestone :: !Text -> !Text -> !Maybe Text -> !Maybe UTCTime -> NewMilestone
+ GitHub.Data.Milestone: UpdateMilestone :: !Maybe Text -> !Maybe Text -> !Maybe Text -> !Maybe UTCTime -> UpdateMilestone
+ GitHub.Data.Milestone: [newMilestoneDescription] :: NewMilestone -> !Maybe Text
+ GitHub.Data.Milestone: [newMilestoneDueOn] :: NewMilestone -> !Maybe UTCTime
+ GitHub.Data.Milestone: [newMilestoneState] :: NewMilestone -> !Text
+ GitHub.Data.Milestone: [newMilestoneTitle] :: NewMilestone -> !Text
+ GitHub.Data.Milestone: [updateMilestoneDescription] :: UpdateMilestone -> !Maybe Text
+ GitHub.Data.Milestone: [updateMilestoneDueOn] :: UpdateMilestone -> !Maybe UTCTime
+ GitHub.Data.Milestone: [updateMilestoneState] :: UpdateMilestone -> !Maybe Text
+ GitHub.Data.Milestone: [updateMilestoneTitle] :: UpdateMilestone -> !Maybe Text
+ GitHub.Data.Milestone: data NewMilestone
+ GitHub.Data.Milestone: data UpdateMilestone
+ GitHub.Data.Milestone: instance Control.DeepSeq.NFData GitHub.Data.Milestone.NewMilestone
+ GitHub.Data.Milestone: instance Control.DeepSeq.NFData GitHub.Data.Milestone.UpdateMilestone
+ GitHub.Data.Milestone: instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Milestone.NewMilestone
+ GitHub.Data.Milestone: instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Milestone.UpdateMilestone
+ GitHub.Data.Milestone: instance Data.Binary.Class.Binary GitHub.Data.Milestone.NewMilestone
+ GitHub.Data.Milestone: instance Data.Binary.Class.Binary GitHub.Data.Milestone.UpdateMilestone
+ GitHub.Data.Milestone: instance Data.Data.Data GitHub.Data.Milestone.NewMilestone
+ GitHub.Data.Milestone: instance Data.Data.Data GitHub.Data.Milestone.UpdateMilestone
+ GitHub.Data.Milestone: instance GHC.Classes.Eq GitHub.Data.Milestone.NewMilestone
+ GitHub.Data.Milestone: instance GHC.Classes.Eq GitHub.Data.Milestone.UpdateMilestone
+ GitHub.Data.Milestone: instance GHC.Classes.Ord GitHub.Data.Milestone.NewMilestone
+ GitHub.Data.Milestone: instance GHC.Classes.Ord GitHub.Data.Milestone.UpdateMilestone
+ GitHub.Data.Milestone: instance GHC.Generics.Generic GitHub.Data.Milestone.NewMilestone
+ GitHub.Data.Milestone: instance GHC.Generics.Generic GitHub.Data.Milestone.UpdateMilestone
+ GitHub.Data.Milestone: instance GHC.Show.Show GitHub.Data.Milestone.NewMilestone
+ GitHub.Data.Milestone: instance GHC.Show.Show GitHub.Data.Milestone.UpdateMilestone
+ GitHub.Data.Request: Delete :: CommandMethod
+ GitHub.Data.Request: MtDiff :: MediaType
+ GitHub.Data.Request: MtJSON :: MediaType
+ GitHub.Data.Request: MtPatch :: MediaType
+ GitHub.Data.Request: MtRaw :: MediaType
+ GitHub.Data.Request: MtRedirect :: MediaType
+ GitHub.Data.Request: MtSha :: MediaType
+ GitHub.Data.Request: MtStar :: MediaType
+ GitHub.Data.Request: MtStatus :: MediaType
+ GitHub.Data.Request: MtUnit :: MediaType
+ GitHub.Data.Request: Patch :: CommandMethod
+ GitHub.Data.Request: Post :: CommandMethod
+ GitHub.Data.Request: Put :: CommandMethod
+ GitHub.Data.Request: data GenRequest (mt :: MediaType) (rw :: RW) a
+ GitHub.Data.Request: data MediaType
+ GitHub.Data.Request: instance Data.Data.Data GitHub.Data.Request.CommandMethod
+ GitHub.Data.Request: instance Data.Data.Data GitHub.Data.Request.MediaType
+ GitHub.Data.Request: instance Data.Hashable.Class.Hashable (GitHub.Data.Request.GenRequest rw mt a)
+ GitHub.Data.Request: instance Data.Hashable.Class.Hashable GitHub.Data.Request.CommandMethod
+ GitHub.Data.Request: instance GHC.Classes.Eq (GitHub.Data.Request.GenRequest rw mt a)
+ GitHub.Data.Request: instance GHC.Classes.Eq GitHub.Data.Request.CommandMethod
+ GitHub.Data.Request: instance GHC.Classes.Eq GitHub.Data.Request.MediaType
+ GitHub.Data.Request: instance GHC.Classes.Ord (GitHub.Data.Request.GenRequest rw mt a)
+ GitHub.Data.Request: instance GHC.Classes.Ord GitHub.Data.Request.CommandMethod
+ GitHub.Data.Request: instance GHC.Classes.Ord GitHub.Data.Request.MediaType
+ GitHub.Data.Request: instance GHC.Enum.Bounded GitHub.Data.Request.CommandMethod
+ GitHub.Data.Request: instance GHC.Enum.Bounded GitHub.Data.Request.MediaType
+ GitHub.Data.Request: instance GHC.Enum.Enum GitHub.Data.Request.CommandMethod
+ GitHub.Data.Request: instance GHC.Enum.Enum GitHub.Data.Request.MediaType
+ GitHub.Data.Request: instance GHC.Generics.Generic GitHub.Data.Request.CommandMethod
+ GitHub.Data.Request: instance GHC.Generics.Generic GitHub.Data.Request.MediaType
+ GitHub.Data.Request: instance GHC.Read.Read GitHub.Data.Request.CommandMethod
+ GitHub.Data.Request: instance GHC.Read.Read GitHub.Data.Request.MediaType
+ GitHub.Data.Request: instance GHC.Show.Show (GitHub.Data.Request.GenRequest rw mt a)
+ GitHub.Data.Request: instance GHC.Show.Show GitHub.Data.Request.CommandMethod
+ GitHub.Data.Request: instance GHC.Show.Show GitHub.Data.Request.MediaType
+ GitHub.Data.Request: instance GitHub.Data.Request.IsPathPart GitHub.Data.Definitions.IssueNumber
+ GitHub.Data.Request: type Request = GenRequest 'MtJSON
+ GitHub.Endpoints.Issues.Milestones: createMilestone :: Auth -> Name Owner -> Name Repo -> NewMilestone -> IO (Either Error Milestone)
+ GitHub.Endpoints.Issues.Milestones: createMilestoneR :: Name Owner -> Name Repo -> NewMilestone -> Request 'RW Milestone
+ GitHub.Endpoints.Issues.Milestones: deleteMilestone :: Auth -> Name Owner -> Name Repo -> Id Milestone -> IO (Either Error ())
+ GitHub.Endpoints.Issues.Milestones: deleteMilestoneR :: Name Owner -> Name Repo -> Id Milestone -> Request 'RW ()
+ GitHub.Endpoints.Issues.Milestones: updateMilestone :: Auth -> Name Owner -> Name Repo -> Id Milestone -> UpdateMilestone -> IO (Either Error Milestone)
+ GitHub.Endpoints.Issues.Milestones: updateMilestoneR :: Name Owner -> Name Repo -> Id Milestone -> UpdateMilestone -> Request 'RW Milestone
+ GitHub.Endpoints.Organizations: organizationsR :: FetchCount -> Request k (Vector SimpleOrganization)
+ GitHub.Endpoints.PullRequests: pullRequestDiff :: Name Owner -> Name Repo -> IssueNumber -> IO (Either Error ByteString)
+ GitHub.Endpoints.PullRequests: pullRequestDiff' :: Maybe Auth -> Name Owner -> Name Repo -> IssueNumber -> IO (Either Error ByteString)
+ GitHub.Endpoints.PullRequests: pullRequestDiffR :: Name Owner -> Name Repo -> IssueNumber -> GenRequest 'MtDiff rw ByteString
+ GitHub.Endpoints.PullRequests: pullRequestPatch :: Name Owner -> Name Repo -> IssueNumber -> IO (Either Error ByteString)
+ GitHub.Endpoints.PullRequests: pullRequestPatch' :: Maybe Auth -> Name Owner -> Name Repo -> IssueNumber -> IO (Either Error ByteString)
+ GitHub.Endpoints.PullRequests: pullRequestPatchR :: Name Owner -> Name Repo -> IssueNumber -> GenRequest 'MtPatch rw ByteString
+ GitHub.Endpoints.PullRequests.Comments: createPullComment :: Auth -> Name Owner -> Name Repo -> IssueNumber -> Text -> Text -> Int -> Text -> IO (Either Error Comment)
+ GitHub.Endpoints.PullRequests.Comments: createPullCommentR :: Name Owner -> Name Repo -> IssueNumber -> Text -> Text -> Int -> Text -> Request 'RW Comment
+ GitHub.Endpoints.Repos: forkExistingRepo' :: Auth -> Name Owner -> Name Repo -> Maybe (Name Owner) -> IO (Either Error Repo)
+ GitHub.Endpoints.Repos.Collaborators: addCollaborator :: Auth -> Name Owner -> Name Repo -> Name User -> IO (Either Error ())
+ GitHub.Endpoints.Repos.Collaborators: addCollaboratorR :: Name Owner -> Name Repo -> Name User -> GenRequest 'MtUnit 'RW ()
+ GitHub.Internal.Prelude: infixl 0 `hashWithSalt`
+ GitHub.Internal.Prelude: infixr 6 <>
+ GitHub.Request: Delete :: CommandMethod
+ GitHub.Request: Patch :: CommandMethod
+ GitHub.Request: Post :: CommandMethod
+ GitHub.Request: Put :: CommandMethod
+ GitHub.Request: [Command] :: CommandMethod -> Paths -> ByteString -> GenRequest mt 'RW a
+ GitHub.Request: [PagedQuery] :: Paths -> QueryString -> FetchCount -> GenRequest mt rw (Vector a)
+ GitHub.Request: [Query] :: Paths -> QueryString -> GenRequest mt rw a
+ GitHub.Request: class Accept (mt :: MediaType)
+ GitHub.Request: class Accept mt => ParseResponse (mt :: MediaType) a
+ GitHub.Request: contentType :: Accept mt => Tagged mt ByteString
+ GitHub.Request: data GenRequest (mt :: MediaType) (rw :: RW) a
+ GitHub.Request: instance (a Data.Type.Equality.~ ()) => GitHub.Request.ParseResponse 'GitHub.Data.Request.MtUnit a
+ GitHub.Request: instance (a Data.Type.Equality.~ Data.ByteString.Lazy.Internal.ByteString) => GitHub.Request.ParseResponse 'GitHub.Data.Request.MtDiff a
+ GitHub.Request: instance (a Data.Type.Equality.~ Data.ByteString.Lazy.Internal.ByteString) => GitHub.Request.ParseResponse 'GitHub.Data.Request.MtPatch a
+ GitHub.Request: instance (a Data.Type.Equality.~ Data.ByteString.Lazy.Internal.ByteString) => GitHub.Request.ParseResponse 'GitHub.Data.Request.MtRaw a
+ GitHub.Request: instance (a Data.Type.Equality.~ Data.ByteString.Lazy.Internal.ByteString) => GitHub.Request.ParseResponse 'GitHub.Data.Request.MtSha a
+ GitHub.Request: instance (b Data.Type.Equality.~ Network.URI.URI) => GitHub.Request.ParseResponse 'GitHub.Data.Request.MtRedirect b
+ GitHub.Request: instance Data.Aeson.Types.FromJSON.FromJSON a => GitHub.Request.ParseResponse 'GitHub.Data.Request.MtJSON a
+ GitHub.Request: instance Data.Aeson.Types.FromJSON.FromJSON a => GitHub.Request.ParseResponse 'GitHub.Data.Request.MtStar a
+ GitHub.Request: instance GitHub.Request.Accept 'GitHub.Data.Request.MtDiff
+ GitHub.Request: instance GitHub.Request.Accept 'GitHub.Data.Request.MtJSON
+ GitHub.Request: instance GitHub.Request.Accept 'GitHub.Data.Request.MtPatch
+ GitHub.Request: instance GitHub.Request.Accept 'GitHub.Data.Request.MtRaw
+ GitHub.Request: instance GitHub.Request.Accept 'GitHub.Data.Request.MtRedirect
+ GitHub.Request: instance GitHub.Request.Accept 'GitHub.Data.Request.MtSha
+ GitHub.Request: instance GitHub.Request.Accept 'GitHub.Data.Request.MtStar
+ GitHub.Request: instance GitHub.Request.Accept 'GitHub.Data.Request.MtStatus
+ GitHub.Request: instance GitHub.Request.Accept 'GitHub.Data.Request.MtUnit
+ GitHub.Request: instance GitHub.Request.HasStatusMap GHC.Types.Bool
+ GitHub.Request: instance GitHub.Request.HasStatusMap GitHub.Data.PullRequests.MergeResult
+ GitHub.Request: instance GitHub.Request.HasStatusMap a => GitHub.Request.ParseResponse 'GitHub.Data.Request.MtStatus a
+ GitHub.Request: modifyRequest :: Accept mt => Tagged mt (Request -> Request)
+ GitHub.Request: type Request = GenRequest 'MtJSON
+ GitHub.Request: type StatusMap a = [(Int, a)]
- GitHub: commentsR :: Name Owner -> Name Repo -> Id Issue -> FetchCount -> Request k (Vector IssueComment)
+ GitHub: commentsR :: Name Owner -> Name Repo -> IssueNumber -> FetchCount -> Request k (Vector IssueComment)
- GitHub: createCommentR :: Name Owner -> Name Repo -> Id Issue -> Text -> Request 'RW Comment
+ GitHub: createCommentR :: Name Owner -> Name Repo -> IssueNumber -> Text -> Request 'RW Comment
- GitHub: isCollaboratorOnR :: Name Owner -> Name Repo -> Name User -> Request k Bool
+ GitHub: isCollaboratorOnR :: Name Owner -> Name Repo -> Name User -> GenRequest 'MtStatus rw Bool
- GitHub: isMemberOfR :: Name User -> Name Organization -> Request k Bool
+ GitHub: isMemberOfR :: Name User -> Name Organization -> GenRequest 'MtStatus rw Bool
- GitHub: isPullRequestMergedR :: Name Owner -> Name Repo -> Id PullRequest -> Request k Bool
+ GitHub: isPullRequestMergedR :: Name Owner -> Name Repo -> IssueNumber -> GenRequest 'MtStatus rw Bool
- GitHub: mergePullRequestR :: Name Owner -> Name Repo -> Id PullRequest -> Maybe Text -> Request 'RW MergeResult
+ GitHub: mergePullRequestR :: Name Owner -> Name Repo -> IssueNumber -> Maybe Text -> GenRequest 'MtStatus 'RW MergeResult
- GitHub: myStarredAcceptStarR :: FetchCount -> Request 'RA (Vector RepoStarred)
+ GitHub: myStarredAcceptStarR :: FetchCount -> GenRequest 'MtStar 'RA (Vector RepoStarred)
- GitHub: pingRepoWebhookR :: Name Owner -> Name Repo -> Id RepoWebhook -> Request 'RW Bool
+ GitHub: pingRepoWebhookR :: Name Owner -> Name Repo -> Id RepoWebhook -> GenRequest 'MtStatus 'RW Bool
- GitHub: pullRequestCommentsR :: Name Owner -> Name Repo -> Id PullRequest -> FetchCount -> Request k (Vector Comment)
+ GitHub: pullRequestCommentsR :: Name Owner -> Name Repo -> IssueNumber -> FetchCount -> Request k (Vector Comment)
- GitHub: pullRequestCommitsR :: Name Owner -> Name Repo -> Id PullRequest -> FetchCount -> Request k (Vector Commit)
+ GitHub: pullRequestCommitsR :: Name Owner -> Name Repo -> IssueNumber -> FetchCount -> Request k (Vector Commit)
- GitHub: pullRequestFilesR :: Name Owner -> Name Repo -> Id PullRequest -> FetchCount -> Request k (Vector File)
+ GitHub: pullRequestFilesR :: Name Owner -> Name Repo -> IssueNumber -> FetchCount -> Request k (Vector File)
- GitHub: pullRequestR :: Name Owner -> Name Repo -> Id PullRequest -> Request k PullRequest
+ GitHub: pullRequestR :: Name Owner -> Name Repo -> IssueNumber -> Request k PullRequest
- GitHub: starGistR :: Name Gist -> Request 'RW ()
+ GitHub: starGistR :: Name Gist -> GenRequest 'MtUnit 'RW ()
- GitHub: starRepoR :: Name Owner -> Name Repo -> Request 'RW ()
+ GitHub: starRepoR :: Name Owner -> Name Repo -> GenRequest 'MtUnit 'RW ()
- GitHub: testPushRepoWebhookR :: Name Owner -> Name Repo -> Id RepoWebhook -> Request 'RW Bool
+ GitHub: testPushRepoWebhookR :: Name Owner -> Name Repo -> Id RepoWebhook -> GenRequest 'MtStatus 'RW Bool
- GitHub: updatePullRequestR :: Name Owner -> Name Repo -> Id PullRequest -> EditPullRequest -> Request 'RW PullRequest
+ GitHub: updatePullRequestR :: Name Owner -> Name Repo -> IssueNumber -> EditPullRequest -> Request 'RW PullRequest
- GitHub.Data.Comments: Comment :: !(Maybe Int) -> !(Maybe Int) -> !Text -> !(Maybe Text) -> !UTCTime -> !(Maybe URL) -> !URL -> !(Maybe UTCTime) -> !(Maybe Text) -> !SimpleUser -> !(Id Comment) -> Comment
+ GitHub.Data.Comments: Comment :: !Maybe Int -> !Maybe Int -> !Text -> !Maybe Text -> !UTCTime -> !Maybe URL -> !URL -> !Maybe UTCTime -> !Maybe Text -> !SimpleUser -> !Id Comment -> Comment
- GitHub.Data.Comments: [commentCommitId] :: Comment -> !(Maybe Text)
+ GitHub.Data.Comments: [commentCommitId] :: Comment -> !Maybe Text
- GitHub.Data.Comments: [commentCreatedAt] :: Comment -> !(Maybe UTCTime)
+ GitHub.Data.Comments: [commentCreatedAt] :: Comment -> !Maybe UTCTime
- GitHub.Data.Comments: [commentHtmlUrl] :: Comment -> !(Maybe URL)
+ GitHub.Data.Comments: [commentHtmlUrl] :: Comment -> !Maybe URL
- GitHub.Data.Comments: [commentId] :: Comment -> !(Id Comment)
+ GitHub.Data.Comments: [commentId] :: Comment -> !Id Comment
- GitHub.Data.Comments: [commentLine] :: Comment -> !(Maybe Int)
+ GitHub.Data.Comments: [commentLine] :: Comment -> !Maybe Int
- GitHub.Data.Comments: [commentPath] :: Comment -> !(Maybe Text)
+ GitHub.Data.Comments: [commentPath] :: Comment -> !Maybe Text
- GitHub.Data.Comments: [commentPosition] :: Comment -> !(Maybe Int)
+ GitHub.Data.Comments: [commentPosition] :: Comment -> !Maybe Int
- GitHub.Data.Content: ContentDirectory :: !(Vector ContentItem) -> Content
+ GitHub.Data.Content: ContentDirectory :: !Vector ContentItem -> Content
- GitHub.Data.Content: CreateFile :: !Text -> !Text -> !Text -> !(Maybe Text) -> !(Maybe Author) -> !(Maybe Author) -> CreateFile
+ GitHub.Data.Content: CreateFile :: !Text -> !Text -> !Text -> !Maybe Text -> !Maybe Author -> !Maybe Author -> CreateFile
- GitHub.Data.Content: DeleteFile :: !Text -> !Text -> !Text -> !(Maybe Text) -> !(Maybe Author) -> !(Maybe Author) -> DeleteFile
+ GitHub.Data.Content: DeleteFile :: !Text -> !Text -> !Text -> !Maybe Text -> !Maybe Author -> !Maybe Author -> DeleteFile
- GitHub.Data.Content: UpdateFile :: !Text -> !Text -> !Text -> !Text -> !(Maybe Text) -> !(Maybe Author) -> !(Maybe Author) -> UpdateFile
+ GitHub.Data.Content: UpdateFile :: !Text -> !Text -> !Text -> !Text -> !Maybe Text -> !Maybe Author -> !Maybe Author -> UpdateFile
- GitHub.Data.Content: [createFileAuthor] :: CreateFile -> !(Maybe Author)
+ GitHub.Data.Content: [createFileAuthor] :: CreateFile -> !Maybe Author
- GitHub.Data.Content: [createFileBranch] :: CreateFile -> !(Maybe Text)
+ GitHub.Data.Content: [createFileBranch] :: CreateFile -> !Maybe Text
- GitHub.Data.Content: [createFileCommitter] :: CreateFile -> !(Maybe Author)
+ GitHub.Data.Content: [createFileCommitter] :: CreateFile -> !Maybe Author
- GitHub.Data.Content: [deleteFileAuthor] :: DeleteFile -> !(Maybe Author)
+ GitHub.Data.Content: [deleteFileAuthor] :: DeleteFile -> !Maybe Author
- GitHub.Data.Content: [deleteFileBranch] :: DeleteFile -> !(Maybe Text)
+ GitHub.Data.Content: [deleteFileBranch] :: DeleteFile -> !Maybe Text
- GitHub.Data.Content: [deleteFileCommitter] :: DeleteFile -> !(Maybe Author)
+ GitHub.Data.Content: [deleteFileCommitter] :: DeleteFile -> !Maybe Author
- GitHub.Data.Content: [updateFileAuthor] :: UpdateFile -> !(Maybe Author)
+ GitHub.Data.Content: [updateFileAuthor] :: UpdateFile -> !Maybe Author
- GitHub.Data.Content: [updateFileBranch] :: UpdateFile -> !(Maybe Text)
+ GitHub.Data.Content: [updateFileBranch] :: UpdateFile -> !Maybe Text
- GitHub.Data.Content: [updateFileCommitter] :: UpdateFile -> !(Maybe Author)
+ GitHub.Data.Content: [updateFileCommitter] :: UpdateFile -> !Maybe Author
- GitHub.Data.Definitions: IssueLabel :: !Text -> !URL -> !(Name IssueLabel) -> IssueLabel
+ GitHub.Data.Definitions: IssueLabel :: !Text -> !URL -> !Name IssueLabel -> IssueLabel
- GitHub.Data.Definitions: Organization :: !(Id Organization) -> !(Name Organization) -> !(Maybe Text) -> !OwnerType -> !(Maybe Text) -> !(Maybe Text) -> !Int -> !(Maybe Text) -> !URL -> !Int -> !URL -> !(Maybe Text) -> !Int -> !Int -> !URL -> !UTCTime -> Organization
+ GitHub.Data.Definitions: Organization :: !Id Organization -> !Name Organization -> !Maybe Text -> !OwnerType -> !Maybe Text -> !Maybe Text -> !Int -> !Maybe Text -> !URL -> !Int -> !URL -> !Maybe Text -> !Int -> !Int -> !URL -> !UTCTime -> Organization
- GitHub.Data.Definitions: Owner :: (Either User Organization) -> Owner
+ GitHub.Data.Definitions: Owner :: Either User Organization -> Owner
- GitHub.Data.Definitions: SimpleOrganization :: !(Id Organization) -> !(Name Organization) -> !URL -> !URL -> SimpleOrganization
+ GitHub.Data.Definitions: SimpleOrganization :: !Id Organization -> !Name Organization -> !URL -> !URL -> SimpleOrganization
- GitHub.Data.Definitions: SimpleOwner :: !(Id Owner) -> !(Name Owner) -> !URL -> !URL -> !OwnerType -> SimpleOwner
+ GitHub.Data.Definitions: SimpleOwner :: !Id Owner -> !Name Owner -> !URL -> !URL -> !OwnerType -> SimpleOwner
- GitHub.Data.Definitions: SimpleUser :: !(Id User) -> !(Name User) -> !URL -> !URL -> SimpleUser
+ GitHub.Data.Definitions: SimpleUser :: !Id User -> !Name User -> !URL -> !URL -> SimpleUser
- GitHub.Data.Definitions: User :: !(Id User) -> !(Name User) -> !(Maybe Text) -> !OwnerType -> !UTCTime -> !Int -> !URL -> !Int -> !Int -> !(Maybe Bool) -> !(Maybe Text) -> !(Maybe Text) -> !Int -> !(Maybe Text) -> !(Maybe Text) -> !(Maybe Text) -> !URL -> !URL -> User
+ GitHub.Data.Definitions: User :: !Id User -> !Name User -> !Maybe Text -> !OwnerType -> !UTCTime -> !Int -> !URL -> !Int -> !Int -> !Maybe Bool -> !Maybe Text -> !Maybe Text -> !Int -> !Maybe Text -> !Maybe Text -> !Maybe Text -> !URL -> !URL -> User
- GitHub.Data.Definitions: [labelName] :: IssueLabel -> !(Name IssueLabel)
+ GitHub.Data.Definitions: [labelName] :: IssueLabel -> !Name IssueLabel
- GitHub.Data.Definitions: [organizationBlog] :: Organization -> !(Maybe Text)
+ GitHub.Data.Definitions: [organizationBlog] :: Organization -> !Maybe Text
- GitHub.Data.Definitions: [organizationCompany] :: Organization -> !(Maybe Text)
+ GitHub.Data.Definitions: [organizationCompany] :: Organization -> !Maybe Text
- GitHub.Data.Definitions: [organizationEmail] :: Organization -> !(Maybe Text)
+ GitHub.Data.Definitions: [organizationEmail] :: Organization -> !Maybe Text
- GitHub.Data.Definitions: [organizationId] :: Organization -> !(Id Organization)
+ GitHub.Data.Definitions: [organizationId] :: Organization -> !Id Organization
- GitHub.Data.Definitions: [organizationLocation] :: Organization -> !(Maybe Text)
+ GitHub.Data.Definitions: [organizationLocation] :: Organization -> !Maybe Text
- GitHub.Data.Definitions: [organizationLogin] :: Organization -> !(Name Organization)
+ GitHub.Data.Definitions: [organizationLogin] :: Organization -> !Name Organization
- GitHub.Data.Definitions: [organizationName] :: Organization -> !(Maybe Text)
+ GitHub.Data.Definitions: [organizationName] :: Organization -> !Maybe Text
- GitHub.Data.Definitions: [simpleOrganizationId] :: SimpleOrganization -> !(Id Organization)
+ GitHub.Data.Definitions: [simpleOrganizationId] :: SimpleOrganization -> !Id Organization
- GitHub.Data.Definitions: [simpleOrganizationLogin] :: SimpleOrganization -> !(Name Organization)
+ GitHub.Data.Definitions: [simpleOrganizationLogin] :: SimpleOrganization -> !Name Organization
- GitHub.Data.Definitions: [simpleOwnerId] :: SimpleOwner -> !(Id Owner)
+ GitHub.Data.Definitions: [simpleOwnerId] :: SimpleOwner -> !Id Owner
- GitHub.Data.Definitions: [simpleOwnerLogin] :: SimpleOwner -> !(Name Owner)
+ GitHub.Data.Definitions: [simpleOwnerLogin] :: SimpleOwner -> !Name Owner
- GitHub.Data.Definitions: [simpleUserId] :: SimpleUser -> !(Id User)
+ GitHub.Data.Definitions: [simpleUserId] :: SimpleUser -> !Id User
- GitHub.Data.Definitions: [simpleUserLogin] :: SimpleUser -> !(Name User)
+ GitHub.Data.Definitions: [simpleUserLogin] :: SimpleUser -> !Name User
- GitHub.Data.Definitions: [userBio] :: User -> !(Maybe Text)
+ GitHub.Data.Definitions: [userBio] :: User -> !Maybe Text
- GitHub.Data.Definitions: [userBlog] :: User -> !(Maybe Text)
+ GitHub.Data.Definitions: [userBlog] :: User -> !Maybe Text
- GitHub.Data.Definitions: [userCompany] :: User -> !(Maybe Text)
+ GitHub.Data.Definitions: [userCompany] :: User -> !Maybe Text
- GitHub.Data.Definitions: [userEmail] :: User -> !(Maybe Text)
+ GitHub.Data.Definitions: [userEmail] :: User -> !Maybe Text
- GitHub.Data.Definitions: [userHireable] :: User -> !(Maybe Bool)
+ GitHub.Data.Definitions: [userHireable] :: User -> !Maybe Bool
- GitHub.Data.Definitions: [userId] :: User -> !(Id User)
+ GitHub.Data.Definitions: [userId] :: User -> !Id User
- GitHub.Data.Definitions: [userLocation] :: User -> !(Maybe Text)
+ GitHub.Data.Definitions: [userLocation] :: User -> !Maybe Text
- GitHub.Data.Definitions: [userLogin] :: User -> !(Name User)
+ GitHub.Data.Definitions: [userLogin] :: User -> !Name User
- GitHub.Data.Definitions: [userName] :: User -> !(Maybe Text)
+ GitHub.Data.Definitions: [userName] :: User -> !Maybe Text
- GitHub.Data.DeployKeys: RepoDeployKey :: !(Id RepoDeployKey) -> !Text -> !URL -> !Text -> !Bool -> !UTCTime -> !Bool -> RepoDeployKey
+ GitHub.Data.DeployKeys: RepoDeployKey :: !Id RepoDeployKey -> !Text -> !URL -> !Text -> !Bool -> !UTCTime -> !Bool -> RepoDeployKey
- GitHub.Data.DeployKeys: [repoDeployKeyId] :: RepoDeployKey -> !(Id RepoDeployKey)
+ GitHub.Data.DeployKeys: [repoDeployKeyId] :: RepoDeployKey -> !Id RepoDeployKey
- GitHub.Data.Deployments: CreateDeployment :: !Text -> !(Maybe Text) -> !(Maybe Bool) -> !(Maybe (Vector Text)) -> !(Maybe a) -> !(Maybe Text) -> !(Maybe Text) -> CreateDeployment a
+ GitHub.Data.Deployments: CreateDeployment :: !Text -> !Maybe Text -> !Maybe Bool -> !Maybe (Vector Text) -> !Maybe a -> !Maybe Text -> !Maybe Text -> CreateDeployment a
- GitHub.Data.Deployments: CreateDeploymentStatus :: !DeploymentStatusState -> !(Maybe Text) -> !(Maybe Text) -> CreateDeploymentStatus
+ GitHub.Data.Deployments: CreateDeploymentStatus :: !DeploymentStatusState -> !Maybe Text -> !Maybe Text -> CreateDeploymentStatus
- GitHub.Data.Deployments: Deployment :: !URL -> !(Id (Deployment a)) -> !(Name (Deployment a)) -> !Text -> !Text -> !(Maybe a) -> !Text -> !Text -> !SimpleUser -> !UTCTime -> !UTCTime -> !URL -> !URL -> Deployment a
+ GitHub.Data.Deployments: Deployment :: !URL -> !Id (Deployment a) -> !Name (Deployment a) -> !Text -> !Text -> !Maybe a -> !Text -> !Text -> !SimpleUser -> !UTCTime -> !UTCTime -> !URL -> !URL -> Deployment a
- GitHub.Data.Deployments: DeploymentStatus :: !URL -> !(Id DeploymentStatus) -> !DeploymentStatusState -> !SimpleUser -> !Text -> !URL -> !UTCTime -> !UTCTime -> !URL -> !URL -> DeploymentStatus
+ GitHub.Data.Deployments: DeploymentStatus :: !URL -> !Id DeploymentStatus -> !DeploymentStatusState -> !SimpleUser -> !Text -> !URL -> !UTCTime -> !UTCTime -> !URL -> !URL -> DeploymentStatus
- GitHub.Data.Deployments: [createDeploymentAutoMerge] :: CreateDeployment a -> !(Maybe Bool)
+ GitHub.Data.Deployments: [createDeploymentAutoMerge] :: CreateDeployment a -> !Maybe Bool
- GitHub.Data.Deployments: [createDeploymentDescription] :: CreateDeployment a -> !(Maybe Text)
+ GitHub.Data.Deployments: [createDeploymentDescription] :: CreateDeployment a -> !Maybe Text
- GitHub.Data.Deployments: [createDeploymentEnvironment] :: CreateDeployment a -> !(Maybe Text)
+ GitHub.Data.Deployments: [createDeploymentEnvironment] :: CreateDeployment a -> !Maybe Text
- GitHub.Data.Deployments: [createDeploymentPayload] :: CreateDeployment a -> !(Maybe a)
+ GitHub.Data.Deployments: [createDeploymentPayload] :: CreateDeployment a -> !Maybe a
- GitHub.Data.Deployments: [createDeploymentRequiredContexts] :: CreateDeployment a -> !(Maybe (Vector Text))
+ GitHub.Data.Deployments: [createDeploymentRequiredContexts] :: CreateDeployment a -> !Maybe (Vector Text)
- GitHub.Data.Deployments: [createDeploymentStatusDescription] :: CreateDeploymentStatus -> !(Maybe Text)
+ GitHub.Data.Deployments: [createDeploymentStatusDescription] :: CreateDeploymentStatus -> !Maybe Text
- GitHub.Data.Deployments: [createDeploymentStatusTargetUrl] :: CreateDeploymentStatus -> !(Maybe Text)
+ GitHub.Data.Deployments: [createDeploymentStatusTargetUrl] :: CreateDeploymentStatus -> !Maybe Text
- GitHub.Data.Deployments: [createDeploymentTask] :: CreateDeployment a -> !(Maybe Text)
+ GitHub.Data.Deployments: [createDeploymentTask] :: CreateDeployment a -> !Maybe Text
- GitHub.Data.Deployments: [deploymentId] :: Deployment a -> !(Id (Deployment a))
+ GitHub.Data.Deployments: [deploymentId] :: Deployment a -> !Id (Deployment a)
- GitHub.Data.Deployments: [deploymentPayload] :: Deployment a -> !(Maybe a)
+ GitHub.Data.Deployments: [deploymentPayload] :: Deployment a -> !Maybe a
- GitHub.Data.Deployments: [deploymentSha] :: Deployment a -> !(Name (Deployment a))
+ GitHub.Data.Deployments: [deploymentSha] :: Deployment a -> !Name (Deployment a)
- GitHub.Data.Deployments: [deploymentStatusId] :: DeploymentStatus -> !(Id DeploymentStatus)
+ GitHub.Data.Deployments: [deploymentStatusId] :: DeploymentStatus -> !Id DeploymentStatus
- GitHub.Data.Email: Email :: !Text -> !Bool -> !Bool -> !(Maybe EmailVisibility) -> Email
+ GitHub.Data.Email: Email :: !Text -> !Bool -> !Bool -> !Maybe EmailVisibility -> Email
- GitHub.Data.Email: [emailVisibility] :: Email -> !(Maybe EmailVisibility)
+ GitHub.Data.Email: [emailVisibility] :: Email -> !Maybe EmailVisibility
- GitHub.Data.Gists: Gist :: !SimpleUser -> !URL -> !URL -> !(Maybe Text) -> !UTCTime -> !Bool -> !Int -> !UTCTime -> !URL -> !(Name Gist) -> !(HashMap Text GistFile) -> !URL -> Gist
+ GitHub.Data.Gists: Gist :: !SimpleUser -> !URL -> !URL -> !Maybe Text -> !UTCTime -> !Bool -> !Int -> !UTCTime -> !URL -> !Name Gist -> !HashMap Text GistFile -> !URL -> Gist
- GitHub.Data.Gists: GistComment :: !SimpleUser -> !URL -> !UTCTime -> !Text -> !UTCTime -> !(Id GistComment) -> GistComment
+ GitHub.Data.Gists: GistComment :: !SimpleUser -> !URL -> !UTCTime -> !Text -> !UTCTime -> !Id GistComment -> GistComment
- GitHub.Data.Gists: GistFile :: !Text -> !URL -> !Int -> !(Maybe Language) -> !Text -> !(Maybe Text) -> GistFile
+ GitHub.Data.Gists: GistFile :: !Text -> !URL -> !Int -> !Maybe Language -> !Text -> !Maybe Text -> GistFile
- GitHub.Data.Gists: [gistCommentId] :: GistComment -> !(Id GistComment)
+ GitHub.Data.Gists: [gistCommentId] :: GistComment -> !Id GistComment
- GitHub.Data.Gists: [gistDescription] :: Gist -> !(Maybe Text)
+ GitHub.Data.Gists: [gistDescription] :: Gist -> !Maybe Text
- GitHub.Data.Gists: [gistFileContent] :: GistFile -> !(Maybe Text)
+ GitHub.Data.Gists: [gistFileContent] :: GistFile -> !Maybe Text
- GitHub.Data.Gists: [gistFileLanguage] :: GistFile -> !(Maybe Language)
+ GitHub.Data.Gists: [gistFileLanguage] :: GistFile -> !Maybe Language
- GitHub.Data.Gists: [gistFiles] :: Gist -> !(HashMap Text GistFile)
+ GitHub.Data.Gists: [gistFiles] :: Gist -> !HashMap Text GistFile
- GitHub.Data.Gists: [gistId] :: Gist -> !(Name Gist)
+ GitHub.Data.Gists: [gistId] :: Gist -> !Name Gist
- GitHub.Data.GitData: Blob :: !URL -> !Text -> !Text -> !(Name Blob) -> !Int -> Blob
+ GitHub.Data.GitData: Blob :: !URL -> !Text -> !Text -> !Name Blob -> !Int -> Blob
- GitHub.Data.GitData: Commit :: !(Name Commit) -> !(Vector Tree) -> !URL -> !GitCommit -> !(Maybe SimpleUser) -> !(Maybe SimpleUser) -> !(Vector File) -> !(Maybe Stats) -> Commit
+ GitHub.Data.GitData: Commit :: !Name Commit -> !Vector Tree -> !URL -> !GitCommit -> !Maybe SimpleUser -> !Maybe SimpleUser -> !Vector File -> !Maybe Stats -> Commit
- GitHub.Data.GitData: Diff :: !Text -> !Int -> !URL -> !URL -> !Commit -> !(Vector Commit) -> !Int -> !URL -> !(Vector File) -> !Int -> !URL -> !URL -> Diff
+ GitHub.Data.GitData: Diff :: !Text -> !Int -> !URL -> !URL -> !Commit -> !Vector Commit -> !Int -> !URL -> !Vector File -> !Int -> !URL -> !URL -> Diff
- GitHub.Data.GitData: File :: !URL -> !Text -> !URL -> !Int -> !Text -> !Int -> !(Maybe Text) -> !Text -> !Int -> File
+ GitHub.Data.GitData: File :: !Maybe URL -> !Text -> !Maybe URL -> !Int -> !Text -> !Int -> !Maybe Text -> !Text -> !Int -> File
- GitHub.Data.GitData: GitCommit :: !Text -> !URL -> !GitUser -> !GitUser -> !Tree -> !(Maybe (Name GitCommit)) -> !(Vector Tree) -> GitCommit
+ GitHub.Data.GitData: GitCommit :: !Text -> !URL -> !GitUser -> !GitUser -> !Tree -> !Maybe (Name GitCommit) -> !Vector Tree -> GitCommit
- GitHub.Data.GitData: GitTree :: !Text -> !(Name GitTree) -> !(Maybe URL) -> !(Maybe Int) -> !Text -> !Text -> GitTree
+ GitHub.Data.GitData: GitTree :: !Text -> !Name GitTree -> !Maybe URL -> !Maybe Int -> !Text -> !Text -> GitTree
- GitHub.Data.GitData: Tree :: !(Name Tree) -> !URL -> !(Vector GitTree) -> Tree
+ GitHub.Data.GitData: Tree :: !Name Tree -> !URL -> !Vector GitTree -> Tree
- GitHub.Data.GitData: [blobSha] :: Blob -> !(Name Blob)
+ GitHub.Data.GitData: [blobSha] :: Blob -> !Name Blob
- GitHub.Data.GitData: [commitAuthor] :: Commit -> !(Maybe SimpleUser)
+ GitHub.Data.GitData: [commitAuthor] :: Commit -> !Maybe SimpleUser
- GitHub.Data.GitData: [commitCommitter] :: Commit -> !(Maybe SimpleUser)
+ GitHub.Data.GitData: [commitCommitter] :: Commit -> !Maybe SimpleUser
- GitHub.Data.GitData: [commitFiles] :: Commit -> !(Vector File)
+ GitHub.Data.GitData: [commitFiles] :: Commit -> !Vector File
- GitHub.Data.GitData: [commitParents] :: Commit -> !(Vector Tree)
+ GitHub.Data.GitData: [commitParents] :: Commit -> !Vector Tree
- GitHub.Data.GitData: [commitSha] :: Commit -> !(Name Commit)
+ GitHub.Data.GitData: [commitSha] :: Commit -> !Name Commit
- GitHub.Data.GitData: [commitStats] :: Commit -> !(Maybe Stats)
+ GitHub.Data.GitData: [commitStats] :: Commit -> !Maybe Stats
- GitHub.Data.GitData: [diffCommits] :: Diff -> !(Vector Commit)
+ GitHub.Data.GitData: [diffCommits] :: Diff -> !Vector Commit
- GitHub.Data.GitData: [diffFiles] :: Diff -> !(Vector File)
+ GitHub.Data.GitData: [diffFiles] :: Diff -> !Vector File
- GitHub.Data.GitData: [fileBlobUrl] :: File -> !URL
+ GitHub.Data.GitData: [fileBlobUrl] :: File -> !Maybe URL
- GitHub.Data.GitData: [filePatch] :: File -> !(Maybe Text)
+ GitHub.Data.GitData: [filePatch] :: File -> !Maybe Text
- GitHub.Data.GitData: [fileRawUrl] :: File -> !URL
+ GitHub.Data.GitData: [fileRawUrl] :: File -> !Maybe URL
- GitHub.Data.GitData: [gitCommitParents] :: GitCommit -> !(Vector Tree)
+ GitHub.Data.GitData: [gitCommitParents] :: GitCommit -> !Vector Tree
- GitHub.Data.GitData: [gitCommitSha] :: GitCommit -> !(Maybe (Name GitCommit))
+ GitHub.Data.GitData: [gitCommitSha] :: GitCommit -> !Maybe (Name GitCommit)
- GitHub.Data.GitData: [gitTreeSha] :: GitTree -> !(Name GitTree)
+ GitHub.Data.GitData: [gitTreeSha] :: GitTree -> !Name GitTree
- GitHub.Data.GitData: [gitTreeSize] :: GitTree -> !(Maybe Int)
+ GitHub.Data.GitData: [gitTreeSize] :: GitTree -> !Maybe Int
- GitHub.Data.GitData: [gitTreeUrl] :: GitTree -> !(Maybe URL)
+ GitHub.Data.GitData: [gitTreeUrl] :: GitTree -> !Maybe URL
- GitHub.Data.GitData: [treeGitTrees] :: Tree -> !(Vector GitTree)
+ GitHub.Data.GitData: [treeGitTrees] :: Tree -> !Vector GitTree
- GitHub.Data.GitData: [treeSha] :: Tree -> !(Name Tree)
+ GitHub.Data.GitData: [treeSha] :: Tree -> !Name Tree
- GitHub.Data.Invitation: Invitation :: !(Id Invitation) -> !(Maybe (Name User)) -> !(Maybe Text) -> !InvitationRole -> !UTCTime -> !SimpleUser -> Invitation
+ GitHub.Data.Invitation: Invitation :: !Id Invitation -> !Maybe (Name User) -> !Maybe Text -> !InvitationRole -> !UTCTime -> !SimpleUser -> Invitation
- GitHub.Data.Invitation: [invitationEmail] :: Invitation -> !(Maybe Text)
+ GitHub.Data.Invitation: [invitationEmail] :: Invitation -> !Maybe Text
- GitHub.Data.Invitation: [invitationId] :: Invitation -> !(Id Invitation)
+ GitHub.Data.Invitation: [invitationId] :: Invitation -> !Id Invitation
- GitHub.Data.Invitation: [invitationLogin] :: Invitation -> !(Maybe (Name User))
+ GitHub.Data.Invitation: [invitationLogin] :: Invitation -> !Maybe (Name User)
- GitHub.Data.Issues: EditIssue :: !(Maybe Text) -> !(Maybe Text) -> !(Maybe (Name User)) -> !(Maybe IssueState) -> !(Maybe (Id Milestone)) -> !(Maybe (Vector (Name IssueLabel))) -> EditIssue
+ GitHub.Data.Issues: EditIssue :: !Maybe Text -> !Maybe Text -> !Maybe (Vector (Name User)) -> !Maybe IssueState -> !Maybe (Id Milestone) -> !Maybe (Vector (Name IssueLabel)) -> EditIssue
- GitHub.Data.Issues: Issue :: !(Maybe UTCTime) -> !UTCTime -> !URL -> !(Maybe URL) -> !(Maybe SimpleUser) -> !(Vector IssueLabel) -> !Int -> !(Vector SimpleUser) -> !SimpleUser -> !Text -> !(Maybe PullRequestReference) -> !URL -> !UTCTime -> !(Maybe Text) -> !IssueState -> !(Id Issue) -> !Int -> !(Maybe Milestone) -> Issue
+ GitHub.Data.Issues: Issue :: !Maybe UTCTime -> !UTCTime -> !URL -> !Maybe URL -> !Maybe SimpleUser -> !Vector IssueLabel -> !IssueNumber -> !Vector SimpleUser -> !SimpleUser -> !Text -> !Maybe PullRequestReference -> !URL -> !UTCTime -> !Maybe Text -> !IssueState -> !Id Issue -> !Int -> !Maybe Milestone -> Issue
- GitHub.Data.Issues: IssueEvent :: !SimpleUser -> !EventType -> !(Maybe Text) -> !URL -> !UTCTime -> !Int -> !(Maybe Issue) -> !(Maybe IssueLabel) -> IssueEvent
+ GitHub.Data.Issues: IssueEvent :: !SimpleUser -> !EventType -> !Maybe Text -> !URL -> !UTCTime -> !Int -> !Maybe Issue -> !Maybe IssueLabel -> IssueEvent
- GitHub.Data.Issues: NewIssue :: !Text -> !(Maybe Text) -> !(Maybe Text) -> !(Maybe (Id Milestone)) -> !(Maybe (Vector (Name IssueLabel))) -> NewIssue
+ GitHub.Data.Issues: NewIssue :: !Text -> !Maybe Text -> !Vector (Name User) -> !Maybe (Id Milestone) -> !Maybe (Vector (Name IssueLabel)) -> NewIssue
- GitHub.Data.Issues: [editIssueBody] :: EditIssue -> !(Maybe Text)
+ GitHub.Data.Issues: [editIssueBody] :: EditIssue -> !Maybe Text
- GitHub.Data.Issues: [editIssueLabels] :: EditIssue -> !(Maybe (Vector (Name IssueLabel)))
+ GitHub.Data.Issues: [editIssueLabels] :: EditIssue -> !Maybe (Vector (Name IssueLabel))
- GitHub.Data.Issues: [editIssueMilestone] :: EditIssue -> !(Maybe (Id Milestone))
+ GitHub.Data.Issues: [editIssueMilestone] :: EditIssue -> !Maybe (Id Milestone)
- GitHub.Data.Issues: [editIssueState] :: EditIssue -> !(Maybe IssueState)
+ GitHub.Data.Issues: [editIssueState] :: EditIssue -> !Maybe IssueState
- GitHub.Data.Issues: [editIssueTitle] :: EditIssue -> !(Maybe Text)
+ GitHub.Data.Issues: [editIssueTitle] :: EditIssue -> !Maybe Text
- GitHub.Data.Issues: [issueAssignees] :: Issue -> !(Vector SimpleUser)
+ GitHub.Data.Issues: [issueAssignees] :: Issue -> !Vector SimpleUser
- GitHub.Data.Issues: [issueBody] :: Issue -> !(Maybe Text)
+ GitHub.Data.Issues: [issueBody] :: Issue -> !Maybe Text
- GitHub.Data.Issues: [issueClosedAt] :: Issue -> !(Maybe UTCTime)
+ GitHub.Data.Issues: [issueClosedAt] :: Issue -> !Maybe UTCTime
- GitHub.Data.Issues: [issueClosedBy] :: Issue -> !(Maybe SimpleUser)
+ GitHub.Data.Issues: [issueClosedBy] :: Issue -> !Maybe SimpleUser
- GitHub.Data.Issues: [issueEventCommitId] :: IssueEvent -> !(Maybe Text)
+ GitHub.Data.Issues: [issueEventCommitId] :: IssueEvent -> !Maybe Text
- GitHub.Data.Issues: [issueEventIssue] :: IssueEvent -> !(Maybe Issue)
+ GitHub.Data.Issues: [issueEventIssue] :: IssueEvent -> !Maybe Issue
- GitHub.Data.Issues: [issueEventLabel] :: IssueEvent -> !(Maybe IssueLabel)
+ GitHub.Data.Issues: [issueEventLabel] :: IssueEvent -> !Maybe IssueLabel
- GitHub.Data.Issues: [issueHtmlUrl] :: Issue -> !(Maybe URL)
+ GitHub.Data.Issues: [issueHtmlUrl] :: Issue -> !Maybe URL
- GitHub.Data.Issues: [issueId] :: Issue -> !(Id Issue)
+ GitHub.Data.Issues: [issueId] :: Issue -> !Id Issue
- GitHub.Data.Issues: [issueLabels] :: Issue -> !(Vector IssueLabel)
+ GitHub.Data.Issues: [issueLabels] :: Issue -> !Vector IssueLabel
- GitHub.Data.Issues: [issueMilestone] :: Issue -> !(Maybe Milestone)
+ GitHub.Data.Issues: [issueMilestone] :: Issue -> !Maybe Milestone
- GitHub.Data.Issues: [issueNumber] :: Issue -> !Int
+ GitHub.Data.Issues: [issueNumber] :: Issue -> !IssueNumber
- GitHub.Data.Issues: [issuePullRequest] :: Issue -> !(Maybe PullRequestReference)
+ GitHub.Data.Issues: [issuePullRequest] :: Issue -> !Maybe PullRequestReference
- GitHub.Data.Issues: [newIssueBody] :: NewIssue -> !(Maybe Text)
+ GitHub.Data.Issues: [newIssueBody] :: NewIssue -> !Maybe Text
- GitHub.Data.Issues: [newIssueLabels] :: NewIssue -> !(Maybe (Vector (Name IssueLabel)))
+ GitHub.Data.Issues: [newIssueLabels] :: NewIssue -> !Maybe (Vector (Name IssueLabel))
- GitHub.Data.Issues: [newIssueMilestone] :: NewIssue -> !(Maybe (Id Milestone))
+ GitHub.Data.Issues: [newIssueMilestone] :: NewIssue -> !Maybe (Id Milestone)
- GitHub.Data.Milestone: Milestone :: !SimpleUser -> !(Maybe UTCTime) -> !Int -> !(Id Milestone) -> !Int -> !(Maybe Text) -> !Text -> !URL -> !UTCTime -> !Text -> Milestone
+ GitHub.Data.Milestone: Milestone :: !SimpleUser -> !Maybe UTCTime -> !Int -> !Id Milestone -> !Int -> !Maybe Text -> !Text -> !URL -> !UTCTime -> !Text -> Milestone
- GitHub.Data.Milestone: [milestoneDescription] :: Milestone -> !(Maybe Text)
+ GitHub.Data.Milestone: [milestoneDescription] :: Milestone -> !Maybe Text
- GitHub.Data.Milestone: [milestoneDueOn] :: Milestone -> !(Maybe UTCTime)
+ GitHub.Data.Milestone: [milestoneDueOn] :: Milestone -> !Maybe UTCTime
- GitHub.Data.Milestone: [milestoneNumber] :: Milestone -> !(Id Milestone)
+ GitHub.Data.Milestone: [milestoneNumber] :: Milestone -> !Id Milestone
- GitHub.Data.PullRequests: EditPullRequest :: !(Maybe Text) -> !(Maybe Text) -> !(Maybe IssueState) -> !(Maybe Text) -> !(Maybe Bool) -> EditPullRequest
+ GitHub.Data.PullRequests: EditPullRequest :: !Maybe Text -> !Maybe Text -> !Maybe IssueState -> !Maybe Text -> !Maybe Bool -> EditPullRequest
- GitHub.Data.PullRequests: PullRequest :: !(Maybe UTCTime) -> !UTCTime -> !SimpleUser -> !URL -> !IssueState -> !Int -> !URL -> !UTCTime -> !(Maybe Text) -> (Vector SimpleUser) -> (Vector SimpleUser) -> !URL -> !URL -> !URL -> !PullRequestLinks -> !(Maybe UTCTime) -> !Text -> !(Id PullRequest) -> !(Maybe SimpleUser) -> !Int -> !PullRequestCommit -> !Count -> !Count -> !Count -> !Count -> !PullRequestCommit -> !Count -> !Bool -> !(Maybe Bool) -> !MergeableState -> PullRequest
+ GitHub.Data.PullRequests: PullRequest :: !Maybe UTCTime -> !UTCTime -> !SimpleUser -> !URL -> !IssueState -> !IssueNumber -> !URL -> !UTCTime -> !Maybe Text -> Vector SimpleUser -> Vector SimpleUser -> !URL -> !URL -> !URL -> !PullRequestLinks -> !Maybe UTCTime -> !Text -> !Id PullRequest -> !Maybe SimpleUser -> !Int -> !PullRequestCommit -> !Count -> !Count -> !Count -> !Count -> !PullRequestCommit -> !Count -> !Bool -> !Maybe Bool -> !MergeableState -> PullRequest
- GitHub.Data.PullRequests: PullRequestCommit :: !Text -> !Text -> !Text -> !SimpleUser -> !(Maybe Repo) -> PullRequestCommit
+ GitHub.Data.PullRequests: PullRequestCommit :: !Text -> !Text -> !Text -> !SimpleUser -> !Maybe Repo -> PullRequestCommit
- GitHub.Data.PullRequests: PullRequestReference :: !(Maybe URL) -> !(Maybe URL) -> !(Maybe URL) -> PullRequestReference
+ GitHub.Data.PullRequests: PullRequestReference :: !Maybe URL -> !Maybe URL -> !Maybe URL -> PullRequestReference
- GitHub.Data.PullRequests: SimplePullRequest :: !(Maybe UTCTime) -> !UTCTime -> !SimpleUser -> !URL -> !IssueState -> !Int -> !URL -> !UTCTime -> !(Maybe Text) -> (Vector SimpleUser) -> (Vector SimpleUser) -> !URL -> !URL -> !URL -> !PullRequestLinks -> !(Maybe UTCTime) -> !Text -> !(Id PullRequest) -> SimplePullRequest
+ GitHub.Data.PullRequests: SimplePullRequest :: !Maybe UTCTime -> !UTCTime -> !SimpleUser -> !URL -> !IssueState -> !IssueNumber -> !URL -> !UTCTime -> !Maybe Text -> Vector SimpleUser -> Vector SimpleUser -> !URL -> !URL -> !URL -> !PullRequestLinks -> !Maybe UTCTime -> !Text -> !Id PullRequest -> SimplePullRequest
- GitHub.Data.PullRequests: [editPullRequestBase] :: EditPullRequest -> !(Maybe Text)
+ GitHub.Data.PullRequests: [editPullRequestBase] :: EditPullRequest -> !Maybe Text
- GitHub.Data.PullRequests: [editPullRequestBody] :: EditPullRequest -> !(Maybe Text)
+ GitHub.Data.PullRequests: [editPullRequestBody] :: EditPullRequest -> !Maybe Text
- GitHub.Data.PullRequests: [editPullRequestMaintainerCanModify] :: EditPullRequest -> !(Maybe Bool)
+ GitHub.Data.PullRequests: [editPullRequestMaintainerCanModify] :: EditPullRequest -> !Maybe Bool
- GitHub.Data.PullRequests: [editPullRequestState] :: EditPullRequest -> !(Maybe IssueState)
+ GitHub.Data.PullRequests: [editPullRequestState] :: EditPullRequest -> !Maybe IssueState
- GitHub.Data.PullRequests: [editPullRequestTitle] :: EditPullRequest -> !(Maybe Text)
+ GitHub.Data.PullRequests: [editPullRequestTitle] :: EditPullRequest -> !Maybe Text
- GitHub.Data.PullRequests: [pullRequestAssignees] :: PullRequest -> (Vector SimpleUser)
+ GitHub.Data.PullRequests: [pullRequestAssignees] :: PullRequest -> Vector SimpleUser
- GitHub.Data.PullRequests: [pullRequestBody] :: PullRequest -> !(Maybe Text)
+ GitHub.Data.PullRequests: [pullRequestBody] :: PullRequest -> !Maybe Text
- GitHub.Data.PullRequests: [pullRequestClosedAt] :: PullRequest -> !(Maybe UTCTime)
+ GitHub.Data.PullRequests: [pullRequestClosedAt] :: PullRequest -> !Maybe UTCTime
- GitHub.Data.PullRequests: [pullRequestCommitRepo] :: PullRequestCommit -> !(Maybe Repo)
+ GitHub.Data.PullRequests: [pullRequestCommitRepo] :: PullRequestCommit -> !Maybe Repo
- GitHub.Data.PullRequests: [pullRequestId] :: PullRequest -> !(Id PullRequest)
+ GitHub.Data.PullRequests: [pullRequestId] :: PullRequest -> !Id PullRequest
- GitHub.Data.PullRequests: [pullRequestMergeable] :: PullRequest -> !(Maybe Bool)
+ GitHub.Data.PullRequests: [pullRequestMergeable] :: PullRequest -> !Maybe Bool
- GitHub.Data.PullRequests: [pullRequestMergedAt] :: PullRequest -> !(Maybe UTCTime)
+ GitHub.Data.PullRequests: [pullRequestMergedAt] :: PullRequest -> !Maybe UTCTime
- GitHub.Data.PullRequests: [pullRequestMergedBy] :: PullRequest -> !(Maybe SimpleUser)
+ GitHub.Data.PullRequests: [pullRequestMergedBy] :: PullRequest -> !Maybe SimpleUser
- GitHub.Data.PullRequests: [pullRequestNumber] :: PullRequest -> !Int
+ GitHub.Data.PullRequests: [pullRequestNumber] :: PullRequest -> !IssueNumber
- GitHub.Data.PullRequests: [pullRequestReferenceDiffUrl] :: PullRequestReference -> !(Maybe URL)
+ GitHub.Data.PullRequests: [pullRequestReferenceDiffUrl] :: PullRequestReference -> !Maybe URL
- GitHub.Data.PullRequests: [pullRequestReferenceHtmlUrl] :: PullRequestReference -> !(Maybe URL)
+ GitHub.Data.PullRequests: [pullRequestReferenceHtmlUrl] :: PullRequestReference -> !Maybe URL
- GitHub.Data.PullRequests: [pullRequestReferencePatchUrl] :: PullRequestReference -> !(Maybe URL)
+ GitHub.Data.PullRequests: [pullRequestReferencePatchUrl] :: PullRequestReference -> !Maybe URL
- GitHub.Data.PullRequests: [pullRequestRequestedReviewers] :: PullRequest -> (Vector SimpleUser)
+ GitHub.Data.PullRequests: [pullRequestRequestedReviewers] :: PullRequest -> Vector SimpleUser
- GitHub.Data.PullRequests: [simplePullRequestAssignees] :: SimplePullRequest -> (Vector SimpleUser)
+ GitHub.Data.PullRequests: [simplePullRequestAssignees] :: SimplePullRequest -> Vector SimpleUser
- GitHub.Data.PullRequests: [simplePullRequestBody] :: SimplePullRequest -> !(Maybe Text)
+ GitHub.Data.PullRequests: [simplePullRequestBody] :: SimplePullRequest -> !Maybe Text
- GitHub.Data.PullRequests: [simplePullRequestClosedAt] :: SimplePullRequest -> !(Maybe UTCTime)
+ GitHub.Data.PullRequests: [simplePullRequestClosedAt] :: SimplePullRequest -> !Maybe UTCTime
- GitHub.Data.PullRequests: [simplePullRequestId] :: SimplePullRequest -> !(Id PullRequest)
+ GitHub.Data.PullRequests: [simplePullRequestId] :: SimplePullRequest -> !Id PullRequest
- GitHub.Data.PullRequests: [simplePullRequestMergedAt] :: SimplePullRequest -> !(Maybe UTCTime)
+ GitHub.Data.PullRequests: [simplePullRequestMergedAt] :: SimplePullRequest -> !Maybe UTCTime
- GitHub.Data.PullRequests: [simplePullRequestNumber] :: SimplePullRequest -> !Int
+ GitHub.Data.PullRequests: [simplePullRequestNumber] :: SimplePullRequest -> !IssueNumber
- GitHub.Data.PullRequests: [simplePullRequestRequestedReviewers] :: SimplePullRequest -> (Vector SimpleUser)
+ GitHub.Data.PullRequests: [simplePullRequestRequestedReviewers] :: SimplePullRequest -> Vector SimpleUser
- GitHub.Data.Releases: Release :: !URL -> !URL -> !URL -> !URL -> !URL -> !URL -> !(Id Release) -> !Text -> !Text -> !Text -> !Text -> !Bool -> !Bool -> !UTCTime -> !(Maybe UTCTime) -> !SimpleUser -> !(Vector ReleaseAsset) -> Release
+ GitHub.Data.Releases: Release :: !URL -> !URL -> !URL -> !URL -> !URL -> !URL -> !Id Release -> !Text -> !Text -> !Text -> !Text -> !Bool -> !Bool -> !UTCTime -> !Maybe UTCTime -> !SimpleUser -> !Vector ReleaseAsset -> Release
- GitHub.Data.Releases: ReleaseAsset :: !URL -> !Text -> !(Id ReleaseAsset) -> !Text -> !(Maybe Text) -> !Text -> !Text -> !Int -> !Int -> !UTCTime -> !UTCTime -> !SimpleUser -> ReleaseAsset
+ GitHub.Data.Releases: ReleaseAsset :: !URL -> !Text -> !Id ReleaseAsset -> !Text -> !Maybe Text -> !Text -> !Text -> !Int -> !Int -> !UTCTime -> !UTCTime -> !SimpleUser -> ReleaseAsset
- GitHub.Data.Releases: [releaseAssetId] :: ReleaseAsset -> !(Id ReleaseAsset)
+ GitHub.Data.Releases: [releaseAssetId] :: ReleaseAsset -> !Id ReleaseAsset
- GitHub.Data.Releases: [releaseAssetLabel] :: ReleaseAsset -> !(Maybe Text)
+ GitHub.Data.Releases: [releaseAssetLabel] :: ReleaseAsset -> !Maybe Text
- GitHub.Data.Releases: [releaseAssets] :: Release -> !(Vector ReleaseAsset)
+ GitHub.Data.Releases: [releaseAssets] :: Release -> !Vector ReleaseAsset
- GitHub.Data.Releases: [releaseId] :: Release -> !(Id Release)
+ GitHub.Data.Releases: [releaseId] :: Release -> !Id Release
- GitHub.Data.Releases: [releasePublishedAt] :: Release -> !(Maybe UTCTime)
+ GitHub.Data.Releases: [releasePublishedAt] :: Release -> !Maybe UTCTime
- GitHub.Data.Repos: EditRepo :: !(Maybe (Name Repo)) -> !(Maybe Text) -> !(Maybe Text) -> !(Maybe Bool) -> !(Maybe Bool) -> !(Maybe Bool) -> !(Maybe Bool) -> EditRepo
+ GitHub.Data.Repos: EditRepo :: !Maybe (Name Repo) -> !Maybe Text -> !Maybe Text -> !Maybe Bool -> !Maybe Bool -> !Maybe Bool -> !Maybe Bool -> EditRepo
- GitHub.Data.Repos: KnownContributor :: !Int -> !URL -> !(Name User) -> !URL -> !(Id User) -> !Text -> Contributor
+ GitHub.Data.Repos: KnownContributor :: !Int -> !URL -> !Name User -> !URL -> !Id User -> !Text -> Contributor
- GitHub.Data.Repos: NewRepo :: !(Name Repo) -> !(Maybe Text) -> !(Maybe Text) -> !(Maybe Bool) -> !(Maybe Bool) -> !(Maybe Bool) -> !(Maybe Bool) -> NewRepo
+ GitHub.Data.Repos: NewRepo :: !Name Repo -> !Maybe Text -> !Maybe Text -> !Maybe Bool -> !Maybe Bool -> !Maybe Bool -> !Maybe Bool -> NewRepo
- GitHub.Data.Repos: Repo :: !(Maybe URL) -> !(Maybe Text) -> !(Maybe UTCTime) -> !URL -> !(Maybe URL) -> !(Maybe Int) -> !(Maybe Text) -> !(Maybe Bool) -> !(Maybe URL) -> !Bool -> !Bool -> !(Maybe URL) -> !(Maybe Int) -> !(Maybe UTCTime) -> !(Maybe Int) -> !SimpleOwner -> !(Name Repo) -> !(Maybe Language) -> !(Maybe Text) -> !(Maybe UTCTime) -> !(Id Repo) -> !URL -> !(Maybe Int) -> !(Maybe Bool) -> !(Maybe Bool) -> !(Maybe Bool) -> !(Maybe RepoRef) -> !(Maybe RepoRef) -> !URL -> !Int -> Repo
+ GitHub.Data.Repos: Repo :: !Maybe URL -> !Maybe Text -> !Maybe UTCTime -> !URL -> !Maybe URL -> !Maybe Int -> !Maybe Text -> !Maybe Bool -> !Maybe URL -> !Bool -> !Bool -> !Maybe URL -> !Maybe Int -> !Maybe UTCTime -> !Maybe Int -> !SimpleOwner -> !Name Repo -> !Maybe Language -> !Maybe Text -> !Maybe UTCTime -> !Id Repo -> !URL -> !Maybe Int -> !Maybe Bool -> !Maybe Bool -> !Maybe Bool -> !Maybe RepoRef -> !Maybe RepoRef -> !URL -> !Int -> Repo
- GitHub.Data.Repos: RepoRef :: !SimpleOwner -> !(Name Repo) -> RepoRef
+ GitHub.Data.Repos: RepoRef :: !SimpleOwner -> !Name Repo -> RepoRef
- GitHub.Data.Repos: [editDescription] :: EditRepo -> !(Maybe Text)
+ GitHub.Data.Repos: [editDescription] :: EditRepo -> !Maybe Text
- GitHub.Data.Repos: [editHasDownloads] :: EditRepo -> !(Maybe Bool)
+ GitHub.Data.Repos: [editHasDownloads] :: EditRepo -> !Maybe Bool
- GitHub.Data.Repos: [editHasIssues] :: EditRepo -> !(Maybe Bool)
+ GitHub.Data.Repos: [editHasIssues] :: EditRepo -> !Maybe Bool
- GitHub.Data.Repos: [editHasWiki] :: EditRepo -> !(Maybe Bool)
+ GitHub.Data.Repos: [editHasWiki] :: EditRepo -> !Maybe Bool
- GitHub.Data.Repos: [editHomepage] :: EditRepo -> !(Maybe Text)
+ GitHub.Data.Repos: [editHomepage] :: EditRepo -> !Maybe Text
- GitHub.Data.Repos: [editName] :: EditRepo -> !(Maybe (Name Repo))
+ GitHub.Data.Repos: [editName] :: EditRepo -> !Maybe (Name Repo)
- GitHub.Data.Repos: [editPublic] :: EditRepo -> !(Maybe Bool)
+ GitHub.Data.Repos: [editPublic] :: EditRepo -> !Maybe Bool
- GitHub.Data.Repos: [newRepoAutoInit] :: NewRepo -> !(Maybe Bool)
+ GitHub.Data.Repos: [newRepoAutoInit] :: NewRepo -> !Maybe Bool
- GitHub.Data.Repos: [newRepoDescription] :: NewRepo -> !(Maybe Text)
+ GitHub.Data.Repos: [newRepoDescription] :: NewRepo -> !Maybe Text
- GitHub.Data.Repos: [newRepoHasIssues] :: NewRepo -> !(Maybe Bool)
+ GitHub.Data.Repos: [newRepoHasIssues] :: NewRepo -> !Maybe Bool
- GitHub.Data.Repos: [newRepoHasWiki] :: NewRepo -> !(Maybe Bool)
+ GitHub.Data.Repos: [newRepoHasWiki] :: NewRepo -> !Maybe Bool
- GitHub.Data.Repos: [newRepoHomepage] :: NewRepo -> !(Maybe Text)
+ GitHub.Data.Repos: [newRepoHomepage] :: NewRepo -> !Maybe Text
- GitHub.Data.Repos: [newRepoName] :: NewRepo -> !(Name Repo)
+ GitHub.Data.Repos: [newRepoName] :: NewRepo -> !Name Repo
- GitHub.Data.Repos: [newRepoPrivate] :: NewRepo -> !(Maybe Bool)
+ GitHub.Data.Repos: [newRepoPrivate] :: NewRepo -> !Maybe Bool
- GitHub.Data.Repos: [repoCloneUrl] :: Repo -> !(Maybe URL)
+ GitHub.Data.Repos: [repoCloneUrl] :: Repo -> !Maybe URL
- GitHub.Data.Repos: [repoCreatedAt] :: Repo -> !(Maybe UTCTime)
+ GitHub.Data.Repos: [repoCreatedAt] :: Repo -> !Maybe UTCTime
- GitHub.Data.Repos: [repoDefaultBranch] :: Repo -> !(Maybe Text)
+ GitHub.Data.Repos: [repoDefaultBranch] :: Repo -> !Maybe Text
- GitHub.Data.Repos: [repoDescription] :: Repo -> !(Maybe Text)
+ GitHub.Data.Repos: [repoDescription] :: Repo -> !Maybe Text
- GitHub.Data.Repos: [repoFork] :: Repo -> !(Maybe Bool)
+ GitHub.Data.Repos: [repoFork] :: Repo -> !Maybe Bool
- GitHub.Data.Repos: [repoForks] :: Repo -> !(Maybe Int)
+ GitHub.Data.Repos: [repoForks] :: Repo -> !Maybe Int
- GitHub.Data.Repos: [repoGitUrl] :: Repo -> !(Maybe URL)
+ GitHub.Data.Repos: [repoGitUrl] :: Repo -> !Maybe URL
- GitHub.Data.Repos: [repoHasDownloads] :: Repo -> !(Maybe Bool)
+ GitHub.Data.Repos: [repoHasDownloads] :: Repo -> !Maybe Bool
- GitHub.Data.Repos: [repoHasIssues] :: Repo -> !(Maybe Bool)
+ GitHub.Data.Repos: [repoHasIssues] :: Repo -> !Maybe Bool
- GitHub.Data.Repos: [repoHasWiki] :: Repo -> !(Maybe Bool)
+ GitHub.Data.Repos: [repoHasWiki] :: Repo -> !Maybe Bool
- GitHub.Data.Repos: [repoHomepage] :: Repo -> !(Maybe Text)
+ GitHub.Data.Repos: [repoHomepage] :: Repo -> !Maybe Text
- GitHub.Data.Repos: [repoId] :: Repo -> !(Id Repo)
+ GitHub.Data.Repos: [repoId] :: Repo -> !Id Repo
- GitHub.Data.Repos: [repoLanguage] :: Repo -> !(Maybe Language)
+ GitHub.Data.Repos: [repoLanguage] :: Repo -> !Maybe Language
- GitHub.Data.Repos: [repoName] :: Repo -> !(Name Repo)
+ GitHub.Data.Repos: [repoName] :: Repo -> !Name Repo
- GitHub.Data.Repos: [repoOpenIssues] :: Repo -> !(Maybe Int)
+ GitHub.Data.Repos: [repoOpenIssues] :: Repo -> !Maybe Int
- GitHub.Data.Repos: [repoParent] :: Repo -> !(Maybe RepoRef)
+ GitHub.Data.Repos: [repoParent] :: Repo -> !Maybe RepoRef
- GitHub.Data.Repos: [repoPushedAt] :: Repo -> !(Maybe UTCTime)
+ GitHub.Data.Repos: [repoPushedAt] :: Repo -> !Maybe UTCTime
- GitHub.Data.Repos: [repoRefRepo] :: RepoRef -> !(Name Repo)
+ GitHub.Data.Repos: [repoRefRepo] :: RepoRef -> !Name Repo
- GitHub.Data.Repos: [repoSize] :: Repo -> !(Maybe Int)
+ GitHub.Data.Repos: [repoSize] :: Repo -> !Maybe Int
- GitHub.Data.Repos: [repoSource] :: Repo -> !(Maybe RepoRef)
+ GitHub.Data.Repos: [repoSource] :: Repo -> !Maybe RepoRef
- GitHub.Data.Repos: [repoSshUrl] :: Repo -> !(Maybe URL)
+ GitHub.Data.Repos: [repoSshUrl] :: Repo -> !Maybe URL
- GitHub.Data.Repos: [repoSvnUrl] :: Repo -> !(Maybe URL)
+ GitHub.Data.Repos: [repoSvnUrl] :: Repo -> !Maybe URL
- GitHub.Data.Repos: [repoUpdatedAt] :: Repo -> !(Maybe UTCTime)
+ GitHub.Data.Repos: [repoUpdatedAt] :: Repo -> !Maybe UTCTime
- GitHub.Data.Repos: [repoWatchers] :: Repo -> !(Maybe Int)
+ GitHub.Data.Repos: [repoWatchers] :: Repo -> !Maybe Int
- GitHub.Data.Request: [Command] :: CommandMethod a -> Paths -> ByteString -> SimpleRequest 'RW a
+ GitHub.Data.Request: [Command] :: CommandMethod -> Paths -> ByteString -> GenRequest mt 'RW a
- GitHub.Data.Request: [PagedQuery] :: Paths -> QueryString -> FetchCount -> SimpleRequest k (Vector a)
+ GitHub.Data.Request: [PagedQuery] :: Paths -> QueryString -> FetchCount -> GenRequest mt rw (Vector a)
- GitHub.Data.Request: [Query] :: Paths -> QueryString -> SimpleRequest k a
+ GitHub.Data.Request: [Query] :: Paths -> QueryString -> GenRequest mt rw a
- GitHub.Data.Request: command :: FromJSON a => CommandMethod a -> Paths -> ByteString -> Request 'RW a
+ GitHub.Data.Request: command :: CommandMethod -> Paths -> ByteString -> Request 'RW a
- GitHub.Data.Request: data CommandMethod a
+ GitHub.Data.Request: data CommandMethod
- GitHub.Data.Request: pagedQuery :: FromJSON a => Paths -> QueryString -> FetchCount -> Request k (Vector a)
+ GitHub.Data.Request: pagedQuery :: FromJSON a => Paths -> QueryString -> FetchCount -> Request mt (Vector a)
- GitHub.Data.Request: query :: FromJSON a => Paths -> QueryString -> Request k a
+ GitHub.Data.Request: query :: Paths -> QueryString -> Request mt a
- GitHub.Data.Request: toMethod :: CommandMethod a -> Method
+ GitHub.Data.Request: toMethod :: CommandMethod -> Method
- GitHub.Data.Reviews: Review :: !Text -> !Text -> ReviewState -> !UTCTime -> !URL -> !Text -> !SimpleUser -> !(Id Review) -> Review
+ GitHub.Data.Reviews: Review :: !Text -> !Text -> ReviewState -> !UTCTime -> !URL -> !Text -> !SimpleUser -> !Id Review -> Review
- GitHub.Data.Reviews: ReviewComment :: !(Id ReviewComment) -> !SimpleUser -> !Text -> !URL -> !(Id Review) -> !Text -> !Text -> !Int -> !Int -> !Text -> !Text -> !UTCTime -> !UTCTime -> !URL -> !URL -> ReviewComment
+ GitHub.Data.Reviews: ReviewComment :: !Id ReviewComment -> !SimpleUser -> !Text -> !URL -> !Id Review -> !Text -> !Text -> !Int -> !Int -> !Text -> !Text -> !UTCTime -> !UTCTime -> !URL -> !URL -> ReviewComment
- GitHub.Data.Reviews: [reviewCommentId] :: ReviewComment -> !(Id ReviewComment)
+ GitHub.Data.Reviews: [reviewCommentId] :: ReviewComment -> !Id ReviewComment
- GitHub.Data.Reviews: [reviewCommentPullRequestReviewId] :: ReviewComment -> !(Id Review)
+ GitHub.Data.Reviews: [reviewCommentPullRequestReviewId] :: ReviewComment -> !Id Review
- GitHub.Data.Reviews: [reviewId] :: Review -> !(Id Review)
+ GitHub.Data.Reviews: [reviewId] :: Review -> !Id Review
- GitHub.Data.Search: SearchResult :: !Int -> !(Vector entity) -> SearchResult entity
+ GitHub.Data.Search: SearchResult :: !Int -> !Vector entity -> SearchResult entity
- GitHub.Data.Search: [searchResultResults] :: SearchResult entity -> !(Vector entity)
+ GitHub.Data.Search: [searchResultResults] :: SearchResult entity -> !Vector entity
- GitHub.Data.Statuses: CombinedStatus :: !StatusState -> !(Name Commit) -> !Int -> !(Vector Status) -> !RepoRef -> !URL -> !URL -> CombinedStatus
+ GitHub.Data.Statuses: CombinedStatus :: !StatusState -> !Name Commit -> !Int -> !Vector Status -> !RepoRef -> !URL -> !URL -> CombinedStatus
- GitHub.Data.Statuses: NewStatus :: !StatusState -> !(Maybe URL) -> !(Maybe Text) -> !(Maybe Text) -> NewStatus
+ GitHub.Data.Statuses: NewStatus :: !StatusState -> !Maybe URL -> !Maybe Text -> !Maybe Text -> NewStatus
- GitHub.Data.Statuses: Status :: !UTCTime -> !UTCTime -> !StatusState -> !(Maybe URL) -> !(Maybe Text) -> !(Id Status) -> !URL -> !(Maybe Text) -> !(Maybe SimpleUser) -> Status
+ GitHub.Data.Statuses: Status :: !UTCTime -> !UTCTime -> !StatusState -> !Maybe URL -> !Maybe Text -> !Id Status -> !URL -> !Maybe Text -> !Maybe SimpleUser -> Status
- GitHub.Data.Statuses: [combinedStatusSha] :: CombinedStatus -> !(Name Commit)
+ GitHub.Data.Statuses: [combinedStatusSha] :: CombinedStatus -> !Name Commit
- GitHub.Data.Statuses: [combinedStatusStatuses] :: CombinedStatus -> !(Vector Status)
+ GitHub.Data.Statuses: [combinedStatusStatuses] :: CombinedStatus -> !Vector Status
- GitHub.Data.Statuses: [newStatusContext] :: NewStatus -> !(Maybe Text)
+ GitHub.Data.Statuses: [newStatusContext] :: NewStatus -> !Maybe Text
- GitHub.Data.Statuses: [newStatusDescription] :: NewStatus -> !(Maybe Text)
+ GitHub.Data.Statuses: [newStatusDescription] :: NewStatus -> !Maybe Text
- GitHub.Data.Statuses: [newStatusTargetUrl] :: NewStatus -> !(Maybe URL)
+ GitHub.Data.Statuses: [newStatusTargetUrl] :: NewStatus -> !Maybe URL
- GitHub.Data.Statuses: [statusContext] :: Status -> !(Maybe Text)
+ GitHub.Data.Statuses: [statusContext] :: Status -> !Maybe Text
- GitHub.Data.Statuses: [statusCreator] :: Status -> !(Maybe SimpleUser)
+ GitHub.Data.Statuses: [statusCreator] :: Status -> !Maybe SimpleUser
- GitHub.Data.Statuses: [statusDescription] :: Status -> !(Maybe Text)
+ GitHub.Data.Statuses: [statusDescription] :: Status -> !Maybe Text
- GitHub.Data.Statuses: [statusId] :: Status -> !(Id Status)
+ GitHub.Data.Statuses: [statusId] :: Status -> !Id Status
- GitHub.Data.Statuses: [statusTargetUrl] :: Status -> !(Maybe URL)
+ GitHub.Data.Statuses: [statusTargetUrl] :: Status -> !Maybe URL
- GitHub.Data.Teams: CreateTeam :: !(Name Team) -> !(Maybe Text) -> !(Vector (Name Repo)) -> Permission -> CreateTeam
+ GitHub.Data.Teams: CreateTeam :: !Name Team -> !Maybe Text -> !Vector (Name Repo) -> Permission -> CreateTeam
- GitHub.Data.Teams: EditTeam :: !(Name Team) -> !(Maybe Text) -> !Permission -> EditTeam
+ GitHub.Data.Teams: EditTeam :: !Name Team -> !Maybe Text -> !Permission -> EditTeam
- GitHub.Data.Teams: SimpleTeam :: !(Id Team) -> !URL -> !Text -> !(Name Team) -> !(Maybe Text) -> !(Maybe Privacy) -> !Permission -> !URL -> !URL -> SimpleTeam
+ GitHub.Data.Teams: SimpleTeam :: !Id Team -> !URL -> !Text -> !Name Team -> !Maybe Text -> !Maybe Privacy -> !Permission -> !URL -> !URL -> SimpleTeam
- GitHub.Data.Teams: Team :: !(Id Team) -> !URL -> !Text -> !(Name Team) -> !(Maybe Text) -> !(Maybe Privacy) -> !Permission -> !URL -> !URL -> !Int -> !Int -> !SimpleOrganization -> Team
+ GitHub.Data.Teams: Team :: !Id Team -> !URL -> !Text -> !Name Team -> !Maybe Text -> !Maybe Privacy -> !Permission -> !URL -> !URL -> !Int -> !Int -> !SimpleOrganization -> Team
- GitHub.Data.Teams: [createTeamDescription] :: CreateTeam -> !(Maybe Text)
+ GitHub.Data.Teams: [createTeamDescription] :: CreateTeam -> !Maybe Text
- GitHub.Data.Teams: [createTeamName] :: CreateTeam -> !(Name Team)
+ GitHub.Data.Teams: [createTeamName] :: CreateTeam -> !Name Team
- GitHub.Data.Teams: [createTeamRepoNames] :: CreateTeam -> !(Vector (Name Repo))
+ GitHub.Data.Teams: [createTeamRepoNames] :: CreateTeam -> !Vector (Name Repo)
- GitHub.Data.Teams: [editTeamDescription] :: EditTeam -> !(Maybe Text)
+ GitHub.Data.Teams: [editTeamDescription] :: EditTeam -> !Maybe Text
- GitHub.Data.Teams: [editTeamName] :: EditTeam -> !(Name Team)
+ GitHub.Data.Teams: [editTeamName] :: EditTeam -> !Name Team
- GitHub.Data.Teams: [simpleTeamDescription] :: SimpleTeam -> !(Maybe Text)
+ GitHub.Data.Teams: [simpleTeamDescription] :: SimpleTeam -> !Maybe Text
- GitHub.Data.Teams: [simpleTeamId] :: SimpleTeam -> !(Id Team)
+ GitHub.Data.Teams: [simpleTeamId] :: SimpleTeam -> !Id Team
- GitHub.Data.Teams: [simpleTeamPrivacy] :: SimpleTeam -> !(Maybe Privacy)
+ GitHub.Data.Teams: [simpleTeamPrivacy] :: SimpleTeam -> !Maybe Privacy
- GitHub.Data.Teams: [simpleTeamSlug] :: SimpleTeam -> !(Name Team)
+ GitHub.Data.Teams: [simpleTeamSlug] :: SimpleTeam -> !Name Team
- GitHub.Data.Teams: [teamDescription] :: Team -> !(Maybe Text)
+ GitHub.Data.Teams: [teamDescription] :: Team -> !Maybe Text
- GitHub.Data.Teams: [teamId] :: Team -> !(Id Team)
+ GitHub.Data.Teams: [teamId] :: Team -> !Id Team
- GitHub.Data.Teams: [teamPrivacy] :: Team -> !(Maybe Privacy)
+ GitHub.Data.Teams: [teamPrivacy] :: Team -> !Maybe Privacy
- GitHub.Data.Teams: [teamSlug] :: Team -> !(Name Team)
+ GitHub.Data.Teams: [teamSlug] :: Team -> !Name Team
- GitHub.Data.Webhooks: EditRepoWebhook :: !(Maybe (Map Text Text)) -> !(Maybe (Vector RepoWebhookEvent)) -> !(Maybe (Vector RepoWebhookEvent)) -> !(Maybe (Vector RepoWebhookEvent)) -> !(Maybe Bool) -> EditRepoWebhook
+ GitHub.Data.Webhooks: EditRepoWebhook :: !Maybe (Map Text Text) -> !Maybe (Vector RepoWebhookEvent) -> !Maybe (Vector RepoWebhookEvent) -> !Maybe (Vector RepoWebhookEvent) -> !Maybe Bool -> EditRepoWebhook
- GitHub.Data.Webhooks: NewRepoWebhook :: !Text -> !(Map Text Text) -> !(Maybe (Vector RepoWebhookEvent)) -> !(Maybe Bool) -> NewRepoWebhook
+ GitHub.Data.Webhooks: NewRepoWebhook :: !Text -> !Map Text Text -> !Maybe (Vector RepoWebhookEvent) -> !Maybe Bool -> NewRepoWebhook
- GitHub.Data.Webhooks: PingEvent :: !Text -> !RepoWebhook -> !(Id RepoWebhook) -> PingEvent
+ GitHub.Data.Webhooks: PingEvent :: !Text -> !RepoWebhook -> !Id RepoWebhook -> PingEvent
- GitHub.Data.Webhooks: RepoWebhook :: !URL -> !URL -> !(Id RepoWebhook) -> !Text -> !Bool -> !(Vector RepoWebhookEvent) -> !(Map Text Text) -> !RepoWebhookResponse -> !UTCTime -> !UTCTime -> RepoWebhook
+ GitHub.Data.Webhooks: RepoWebhook :: !URL -> !URL -> !Id RepoWebhook -> !Text -> !Bool -> !Vector RepoWebhookEvent -> !Map Text Text -> !RepoWebhookResponse -> !UTCTime -> !UTCTime -> RepoWebhook
- GitHub.Data.Webhooks: RepoWebhookResponse :: !(Maybe Int) -> !Text -> !(Maybe Text) -> RepoWebhookResponse
+ GitHub.Data.Webhooks: RepoWebhookResponse :: !Maybe Int -> !Text -> !Maybe Text -> RepoWebhookResponse
- GitHub.Data.Webhooks: [editRepoWebhookActive] :: EditRepoWebhook -> !(Maybe Bool)
+ GitHub.Data.Webhooks: [editRepoWebhookActive] :: EditRepoWebhook -> !Maybe Bool
- GitHub.Data.Webhooks: [editRepoWebhookAddEvents] :: EditRepoWebhook -> !(Maybe (Vector RepoWebhookEvent))
+ GitHub.Data.Webhooks: [editRepoWebhookAddEvents] :: EditRepoWebhook -> !Maybe (Vector RepoWebhookEvent)
- GitHub.Data.Webhooks: [editRepoWebhookConfig] :: EditRepoWebhook -> !(Maybe (Map Text Text))
+ GitHub.Data.Webhooks: [editRepoWebhookConfig] :: EditRepoWebhook -> !Maybe (Map Text Text)
- GitHub.Data.Webhooks: [editRepoWebhookEvents] :: EditRepoWebhook -> !(Maybe (Vector RepoWebhookEvent))
+ GitHub.Data.Webhooks: [editRepoWebhookEvents] :: EditRepoWebhook -> !Maybe (Vector RepoWebhookEvent)
- GitHub.Data.Webhooks: [editRepoWebhookRemoveEvents] :: EditRepoWebhook -> !(Maybe (Vector RepoWebhookEvent))
+ GitHub.Data.Webhooks: [editRepoWebhookRemoveEvents] :: EditRepoWebhook -> !Maybe (Vector RepoWebhookEvent)
- GitHub.Data.Webhooks: [newRepoWebhookActive] :: NewRepoWebhook -> !(Maybe Bool)
+ GitHub.Data.Webhooks: [newRepoWebhookActive] :: NewRepoWebhook -> !Maybe Bool
- GitHub.Data.Webhooks: [newRepoWebhookConfig] :: NewRepoWebhook -> !(Map Text Text)
+ GitHub.Data.Webhooks: [newRepoWebhookConfig] :: NewRepoWebhook -> !Map Text Text
- GitHub.Data.Webhooks: [newRepoWebhookEvents] :: NewRepoWebhook -> !(Maybe (Vector RepoWebhookEvent))
+ GitHub.Data.Webhooks: [newRepoWebhookEvents] :: NewRepoWebhook -> !Maybe (Vector RepoWebhookEvent)
- GitHub.Data.Webhooks: [pingEventHookId] :: PingEvent -> !(Id RepoWebhook)
+ GitHub.Data.Webhooks: [pingEventHookId] :: PingEvent -> !Id RepoWebhook
- GitHub.Data.Webhooks: [repoWebhookConfig] :: RepoWebhook -> !(Map Text Text)
+ GitHub.Data.Webhooks: [repoWebhookConfig] :: RepoWebhook -> !Map Text Text
- GitHub.Data.Webhooks: [repoWebhookEvents] :: RepoWebhook -> !(Vector RepoWebhookEvent)
+ GitHub.Data.Webhooks: [repoWebhookEvents] :: RepoWebhook -> !Vector RepoWebhookEvent
- GitHub.Data.Webhooks: [repoWebhookId] :: RepoWebhook -> !(Id RepoWebhook)
+ GitHub.Data.Webhooks: [repoWebhookId] :: RepoWebhook -> !Id RepoWebhook
- GitHub.Data.Webhooks: [repoWebhookResponseCode] :: RepoWebhookResponse -> !(Maybe Int)
+ GitHub.Data.Webhooks: [repoWebhookResponseCode] :: RepoWebhookResponse -> !Maybe Int
- GitHub.Data.Webhooks: [repoWebhookResponseMessage] :: RepoWebhookResponse -> !(Maybe Text)
+ GitHub.Data.Webhooks: [repoWebhookResponseMessage] :: RepoWebhookResponse -> !Maybe Text
- GitHub.Endpoints.Activity.Starring: myStarredAcceptStarR :: FetchCount -> Request 'RA (Vector RepoStarred)
+ GitHub.Endpoints.Activity.Starring: myStarredAcceptStarR :: FetchCount -> GenRequest 'MtStar 'RA (Vector RepoStarred)
- GitHub.Endpoints.Activity.Starring: starRepoR :: Name Owner -> Name Repo -> Request 'RW ()
+ GitHub.Endpoints.Activity.Starring: starRepoR :: Name Owner -> Name Repo -> GenRequest 'MtUnit 'RW ()
- GitHub.Endpoints.Gists: starGistR :: Name Gist -> Request 'RW ()
+ GitHub.Endpoints.Gists: starGistR :: Name Gist -> GenRequest 'MtUnit 'RW ()
- GitHub.Endpoints.Issues.Comments: comments :: Name Owner -> Name Repo -> Id Issue -> IO (Either Error (Vector IssueComment))
+ GitHub.Endpoints.Issues.Comments: comments :: Name Owner -> Name Repo -> IssueNumber -> IO (Either Error (Vector IssueComment))
- GitHub.Endpoints.Issues.Comments: comments' :: Maybe Auth -> Name Owner -> Name Repo -> Id Issue -> IO (Either Error (Vector IssueComment))
+ GitHub.Endpoints.Issues.Comments: comments' :: Maybe Auth -> Name Owner -> Name Repo -> IssueNumber -> IO (Either Error (Vector IssueComment))
- GitHub.Endpoints.Issues.Comments: commentsR :: Name Owner -> Name Repo -> Id Issue -> FetchCount -> Request k (Vector IssueComment)
+ GitHub.Endpoints.Issues.Comments: commentsR :: Name Owner -> Name Repo -> IssueNumber -> FetchCount -> Request k (Vector IssueComment)
- GitHub.Endpoints.Issues.Comments: createComment :: Auth -> Name Owner -> Name Repo -> Id Issue -> Text -> IO (Either Error Comment)
+ GitHub.Endpoints.Issues.Comments: createComment :: Auth -> Name Owner -> Name Repo -> IssueNumber -> Text -> IO (Either Error Comment)
- GitHub.Endpoints.Issues.Comments: createCommentR :: Name Owner -> Name Repo -> Id Issue -> Text -> Request 'RW Comment
+ GitHub.Endpoints.Issues.Comments: createCommentR :: Name Owner -> Name Repo -> IssueNumber -> Text -> Request 'RW Comment
- GitHub.Endpoints.Organizations.Members: isMemberOfR :: Name User -> Name Organization -> Request k Bool
+ GitHub.Endpoints.Organizations.Members: isMemberOfR :: Name User -> Name Organization -> GenRequest 'MtStatus rw Bool
- GitHub.Endpoints.Organizations.Teams: addOrUpdateTeamRepoR :: Id Team -> Name Organization -> Name Repo -> Permission -> Request 'RW ()
+ GitHub.Endpoints.Organizations.Teams: addOrUpdateTeamRepoR :: Id Team -> Name Organization -> Name Repo -> Permission -> GenRequest 'MtUnit 'RW ()
- GitHub.Endpoints.PullRequests: isPullRequestMerged :: Auth -> Name Owner -> Name Repo -> Id PullRequest -> IO (Either Error Bool)
+ GitHub.Endpoints.PullRequests: isPullRequestMerged :: Auth -> Name Owner -> Name Repo -> IssueNumber -> IO (Either Error Bool)
- GitHub.Endpoints.PullRequests: isPullRequestMergedR :: Name Owner -> Name Repo -> Id PullRequest -> Request k Bool
+ GitHub.Endpoints.PullRequests: isPullRequestMergedR :: Name Owner -> Name Repo -> IssueNumber -> GenRequest 'MtStatus rw Bool
- GitHub.Endpoints.PullRequests: mergePullRequest :: Auth -> Name Owner -> Name Repo -> Id PullRequest -> Maybe Text -> IO (Either Error MergeResult)
+ GitHub.Endpoints.PullRequests: mergePullRequest :: Auth -> Name Owner -> Name Repo -> IssueNumber -> Maybe Text -> IO (Either Error MergeResult)
- GitHub.Endpoints.PullRequests: mergePullRequestR :: Name Owner -> Name Repo -> Id PullRequest -> Maybe Text -> Request 'RW MergeResult
+ GitHub.Endpoints.PullRequests: mergePullRequestR :: Name Owner -> Name Repo -> IssueNumber -> Maybe Text -> GenRequest 'MtStatus 'RW MergeResult
- GitHub.Endpoints.PullRequests: pullRequest :: Name Owner -> Name Repo -> Id PullRequest -> IO (Either Error PullRequest)
+ GitHub.Endpoints.PullRequests: pullRequest :: Name Owner -> Name Repo -> IssueNumber -> IO (Either Error PullRequest)
- GitHub.Endpoints.PullRequests: pullRequest' :: Maybe Auth -> Name Owner -> Name Repo -> Id PullRequest -> IO (Either Error PullRequest)
+ GitHub.Endpoints.PullRequests: pullRequest' :: Maybe Auth -> Name Owner -> Name Repo -> IssueNumber -> IO (Either Error PullRequest)
- GitHub.Endpoints.PullRequests: pullRequestCommits' :: Maybe Auth -> Name Owner -> Name Repo -> Id PullRequest -> IO (Either Error (Vector Commit))
+ GitHub.Endpoints.PullRequests: pullRequestCommits' :: Maybe Auth -> Name Owner -> Name Repo -> IssueNumber -> IO (Either Error (Vector Commit))
- GitHub.Endpoints.PullRequests: pullRequestCommitsIO :: Name Owner -> Name Repo -> Id PullRequest -> IO (Either Error (Vector Commit))
+ GitHub.Endpoints.PullRequests: pullRequestCommitsIO :: Name Owner -> Name Repo -> IssueNumber -> IO (Either Error (Vector Commit))
- GitHub.Endpoints.PullRequests: pullRequestCommitsR :: Name Owner -> Name Repo -> Id PullRequest -> FetchCount -> Request k (Vector Commit)
+ GitHub.Endpoints.PullRequests: pullRequestCommitsR :: Name Owner -> Name Repo -> IssueNumber -> FetchCount -> Request k (Vector Commit)
- GitHub.Endpoints.PullRequests: pullRequestFiles :: Name Owner -> Name Repo -> Id PullRequest -> IO (Either Error (Vector File))
+ GitHub.Endpoints.PullRequests: pullRequestFiles :: Name Owner -> Name Repo -> IssueNumber -> IO (Either Error (Vector File))
- GitHub.Endpoints.PullRequests: pullRequestFiles' :: Maybe Auth -> Name Owner -> Name Repo -> Id PullRequest -> IO (Either Error (Vector File))
+ GitHub.Endpoints.PullRequests: pullRequestFiles' :: Maybe Auth -> Name Owner -> Name Repo -> IssueNumber -> IO (Either Error (Vector File))
- GitHub.Endpoints.PullRequests: pullRequestFilesR :: Name Owner -> Name Repo -> Id PullRequest -> FetchCount -> Request k (Vector File)
+ GitHub.Endpoints.PullRequests: pullRequestFilesR :: Name Owner -> Name Repo -> IssueNumber -> FetchCount -> Request k (Vector File)
- GitHub.Endpoints.PullRequests: pullRequestR :: Name Owner -> Name Repo -> Id PullRequest -> Request k PullRequest
+ GitHub.Endpoints.PullRequests: pullRequestR :: Name Owner -> Name Repo -> IssueNumber -> Request k PullRequest
- GitHub.Endpoints.PullRequests: updatePullRequest :: Auth -> Name Owner -> Name Repo -> Id PullRequest -> EditPullRequest -> IO (Either Error PullRequest)
+ GitHub.Endpoints.PullRequests: updatePullRequest :: Auth -> Name Owner -> Name Repo -> IssueNumber -> EditPullRequest -> IO (Either Error PullRequest)
- GitHub.Endpoints.PullRequests: updatePullRequestR :: Name Owner -> Name Repo -> Id PullRequest -> EditPullRequest -> Request 'RW PullRequest
+ GitHub.Endpoints.PullRequests: updatePullRequestR :: Name Owner -> Name Repo -> IssueNumber -> EditPullRequest -> Request 'RW PullRequest
- GitHub.Endpoints.PullRequests.Comments: pullRequestCommentsIO :: Name Owner -> Name Repo -> Id PullRequest -> IO (Either Error (Vector Comment))
+ GitHub.Endpoints.PullRequests.Comments: pullRequestCommentsIO :: Name Owner -> Name Repo -> IssueNumber -> IO (Either Error (Vector Comment))
- GitHub.Endpoints.PullRequests.Comments: pullRequestCommentsR :: Name Owner -> Name Repo -> Id PullRequest -> FetchCount -> Request k (Vector Comment)
+ GitHub.Endpoints.PullRequests.Comments: pullRequestCommentsR :: Name Owner -> Name Repo -> IssueNumber -> FetchCount -> Request k (Vector Comment)
- GitHub.Endpoints.Repos.Collaborators: isCollaboratorOnR :: Name Owner -> Name Repo -> Name User -> Request k Bool
+ GitHub.Endpoints.Repos.Collaborators: isCollaboratorOnR :: Name Owner -> Name Repo -> Name User -> GenRequest 'MtStatus rw Bool
- GitHub.Endpoints.Repos.Contents: archiveForR :: Name Owner -> Name Repo -> ArchiveFormat -> Maybe Text -> Request k URI
+ GitHub.Endpoints.Repos.Contents: archiveForR :: Name Owner -> Name Repo -> ArchiveFormat -> Maybe Text -> GenRequest 'MtRedirect rw URI
- GitHub.Endpoints.Repos.Webhooks: pingRepoWebhookR :: Name Owner -> Name Repo -> Id RepoWebhook -> Request 'RW Bool
+ GitHub.Endpoints.Repos.Webhooks: pingRepoWebhookR :: Name Owner -> Name Repo -> Id RepoWebhook -> GenRequest 'MtStatus 'RW Bool
- GitHub.Endpoints.Repos.Webhooks: testPushRepoWebhookR :: Name Owner -> Name Repo -> Id RepoWebhook -> Request 'RW Bool
+ GitHub.Endpoints.Repos.Webhooks: testPushRepoWebhookR :: Name Owner -> Name Repo -> Id RepoWebhook -> GenRequest 'MtStatus 'RW Bool
- GitHub.Internal.Prelude: (.!=) :: () => Parser Maybe a -> a -> Parser a
+ GitHub.Internal.Prelude: (.!=) :: () => Parser (Maybe a) -> a -> Parser a
- GitHub.Internal.Prelude: (.:?) :: FromJSON a => Object -> Text -> Parser Maybe a
+ GitHub.Internal.Prelude: (.:?) :: FromJSON a => Object -> Text -> Parser (Maybe a)
- GitHub.Internal.Prelude: genericRnf :: (Generic a, GNFData Rep a) => a -> ()
+ GitHub.Internal.Prelude: genericRnf :: (Generic a, GNFData (Rep a)) => a -> ()
- GitHub.Internal.Prelude: withObject :: () => String -> Object -> Parser a -> Value -> Parser a
+ GitHub.Internal.Prelude: withObject :: () => String -> (Object -> Parser a) -> Value -> Parser a
- GitHub.Internal.Prelude: withText :: () => String -> Text -> Parser a -> Value -> Parser a
+ GitHub.Internal.Prelude: withText :: () => String -> (Text -> Parser a) -> Value -> Parser a
- GitHub.Request: data CommandMethod a
+ GitHub.Request: data CommandMethod
- GitHub.Request: executeRequest :: Auth -> Request k a -> IO (Either Error a)
+ GitHub.Request: executeRequest :: ParseResponse mt a => Auth -> GenRequest mt rw a -> IO (Either Error a)
- GitHub.Request: executeRequest' :: Request 'RO a -> IO (Either Error a)
+ GitHub.Request: executeRequest' :: ParseResponse mt a => GenRequest mt 'RO a -> IO (Either Error a)
- GitHub.Request: executeRequestMaybe :: Maybe Auth -> Request 'RO a -> IO (Either Error a)
+ GitHub.Request: executeRequestMaybe :: ParseResponse mt a => Maybe Auth -> GenRequest mt 'RO a -> IO (Either Error a)
- GitHub.Request: executeRequestWithMgr :: Manager -> Auth -> Request k a -> IO (Either Error a)
+ GitHub.Request: executeRequestWithMgr :: ParseResponse mt a => Manager -> Auth -> GenRequest mt rw a -> IO (Either Error a)
- GitHub.Request: executeRequestWithMgr' :: Manager -> Request 'RO a -> IO (Either Error a)
+ GitHub.Request: executeRequestWithMgr' :: ParseResponse mt a => Manager -> GenRequest mt 'RO a -> IO (Either Error a)
- GitHub.Request: makeHttpRequest :: MonadThrow m => Maybe Auth -> Request k a -> m Request
+ GitHub.Request: makeHttpRequest :: forall mt rw a m. (MonadThrow m, Accept mt) => Maybe Auth -> GenRequest mt rw a -> m Request
- GitHub.Request: parseResponse :: (FromJSON a, MonadError Error m) => Response ByteString -> m a
+ GitHub.Request: parseResponse :: (ParseResponse mt a, MonadError Error m) => Request -> Response ByteString -> Tagged mt (m a)
- GitHub.Request: performPagedRequest :: forall a m. (FromJSON a, Semigroup a, MonadCatch m, MonadError Error m) => (Request -> m (Response ByteString)) -> (a -> Bool) -> Request -> m a
+ GitHub.Request: performPagedRequest :: forall a m mt. (ParseResponse mt a, Semigroup a, MonadCatch m, MonadError Error m) => (Request -> m (Response ByteString)) -> (a -> Bool) -> Request -> Tagged mt (m a)
- GitHub.Request: toMethod :: CommandMethod a -> Method
+ GitHub.Request: toMethod :: CommandMethod -> Method
- GitHub.Request: unsafeDropAuthRequirements :: Request k' a -> Request k a
+ GitHub.Request: unsafeDropAuthRequirements :: GenRequest mt rw' a -> GenRequest mt rw a
Files
- CHANGELOG.md +23/−0
- github.cabal +84/−77
- spec/GitHub/CommitsSpec.hs +6/−1
- spec/GitHub/IssuesSpec.hs +11/−4
- spec/GitHub/PullRequestsSpec.hs +8/−3
- spec/GitHub/RateLimitSpec.hs +0/−1
- spec/GitHub/SearchSpec.hs +4/−3
- src/GitHub.hs +11/−6
- src/GitHub/Data.hs +2/−0
- src/GitHub/Data/Comments.hs +19/−0
- src/GitHub/Data/Definitions.hs +22/−0
- src/GitHub/Data/GitData.hs +4/−4
- src/GitHub/Data/Issues.hs +11/−8
- src/GitHub/Data/Milestone.hs +46/−0
- src/GitHub/Data/PullRequests.hs +2/−11
- src/GitHub/Data/Request.hs +69/−122
- src/GitHub/Data/Webhooks/Validate.hs +5/−7
- src/GitHub/Endpoints/Activity/Starring.hs +4/−4
- src/GitHub/Endpoints/Gists.hs +2/−2
- src/GitHub/Endpoints/Issues.hs +1/−1
- src/GitHub/Endpoints/Issues/Comments.hs +5/−5
- src/GitHub/Endpoints/Issues/Milestones.hs +34/−0
- src/GitHub/Endpoints/Organizations.hs +7/−1
- src/GitHub/Endpoints/Organizations/Members.hs +2/−2
- src/GitHub/Endpoints/Organizations/Teams.hs +2/−2
- src/GitHub/Endpoints/PullRequests.hs +59/−17
- src/GitHub/Endpoints/PullRequests/Comments.hs +22/−2
- src/GitHub/Endpoints/Repos.hs +6/−0
- src/GitHub/Endpoints/Repos/Collaborators.hs +23/−2
- src/GitHub/Endpoints/Repos/Contents.hs +4/−3
- src/GitHub/Endpoints/Repos/Webhooks.hs +5/−5
- src/GitHub/Request.hs +184/−148
CHANGELOG.md view
@@ -1,3 +1,26 @@+## Changes for next++## Changes for 0.21++- Refactor `Request` type.+ [#349](https://github.com/phadej/github/pull/349)+- Allow `http-client-0.6`+ [#344](https://github.com/phadej/github/pull/344)+- Change to use `cryptohash-sha1` (`cryptohash` was used before)+- Add Create milestone endponts+ [#337](https://github.com/phadej/github/pull/337)+- Make fileBlobUrl and fileRawUrl are optional+ [#339](https://github.com/phadej/github/issues/339)+ [#340](https://github.com/phadej/github/pull/340)+- Add organizationsR to request user organizations+ [#345](https://github.com/phadej/github/pull/345)+- Add updateMilestoneR, deleteMilestoneR+ [#338](https://github.com/phadej/github/pull/338)+- Allow multiple assignees in NewIssue and EditIssue+ [#336](https://github.com/phadej/github/pull/336)+- Add `pullRequestPatchR` and `pullRequestDiffR`+ [#325](https://github.com/phadej/github/pull/325)+ ## Changes for 0.20 - Add ratelimit endpoint
github.cabal view
@@ -1,6 +1,8 @@-name: github-version: 0.20-synopsis: Access to the GitHub API, v3.+cabal-version: >=1.10+name: github+version: 0.21+synopsis: Access to the GitHub API, v3.+category: Network description: The GitHub API provides programmatic access to the full GitHub Web site, from Issues to Gists to repos down to the underlying git data@@ -17,52 +19,56 @@ > print possibleUser . For more of an overview please see the README: <https://github.com/phadej/github/blob/master/README.md>-license: BSD3-license-file: LICENSE-author: Mike Burns, John Wiegley, Oleg Grenrus-maintainer: Oleg Grenrus <oleg.grenrus@iki.fi>-homepage: https://github.com/phadej/github-copyright: Copyright 2012-2013 Mike Burns, Copyright 2013-2015 John Wiegley, Copyright 2016 Oleg Grenrus-category: Network-build-type: Simple-tested-with: GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.3, GHC==8.6.1-cabal-version: >=1.10++license: BSD3+license-file: LICENSE+author: Mike Burns, John Wiegley, Oleg Grenrus+maintainer: Oleg Grenrus <oleg.grenrus@iki.fi>+homepage: https://github.com/phadej/github+build-type: Simple+copyright:+ Copyright 2012-2013 Mike Burns, Copyright 2013-2015 John Wiegley, Copyright 2016-2019 Oleg Grenrus++tested-with:+ ghc ==7.8.4 || ==7.10.3 || ==8.0.2 || ==8.2.2 || ==8.4.3 || ==8.6.3+ extra-source-files:- README.md,- CHANGELOG.md,- fixtures/issue-search.json,- fixtures/list-teams.json,- fixtures/members-list.json,- fixtures/pull-request-opened.json,- fixtures/pull-request-review-requested.json,- fixtures/user-organizations.json,+ README.md+ CHANGELOG.md+ fixtures/issue-search.json+ fixtures/list-teams.json+ fixtures/members-list.json+ fixtures/pull-request-opened.json+ fixtures/pull-request-review-requested.json+ fixtures/user-organizations.json fixtures/user.json source-repository head- type: git+ type: git location: git://github.com/phadej/github.git -Library- default-language: Haskell2010- ghc-options: -Wall- hs-source-dirs: src+library+ default-language: Haskell2010+ ghc-options: -Wall+ hs-source-dirs: src default-extensions: DataKinds DeriveDataTypeable DeriveGeneric OverloadedStrings ScopedTypeVariables+ other-extensions: CPP FlexibleContexts FlexibleInstances GADTs KindSignatures+ RecordWildCards StandaloneDeriving- RecordWildCards + exposed-modules: GitHub- GitHub.Internal.Prelude GitHub.Auth GitHub.Data GitHub.Data.Activities@@ -111,8 +117,8 @@ GitHub.Endpoints.Organizations.Members GitHub.Endpoints.Organizations.Teams GitHub.Endpoints.PullRequests- GitHub.Endpoints.PullRequests.Reviews GitHub.Endpoints.PullRequests.Comments+ GitHub.Endpoints.PullRequests.Reviews GitHub.Endpoints.RateLimit GitHub.Endpoints.Repos GitHub.Endpoints.Repos.Collaborators@@ -129,51 +135,53 @@ GitHub.Endpoints.Users GitHub.Endpoints.Users.Emails GitHub.Endpoints.Users.Followers+ GitHub.Internal.Prelude GitHub.Request -- Packages bundles with GHC, mtl and text are also here build-depends:- base >=4.7 && <4.13,- binary >=0.7.1.0 && <0.11,- bytestring >=0.10.4.0 && <0.11,- containers >=0.5.5.1 && <0.7,- deepseq >=1.3.0.2 && <1.5,- mtl (>=2.1.3.1 && <2.2) || (>=2.2.1 && <2.3),- text >=1.2.0.6 && <1.3,- time >=1.4 && <1.10,- transformers >=0.3.0.0 && <0.6+ base >=4.7 && <4.13+ , binary >=0.7.1.0 && <0.11+ , bytestring >=0.10.4.0 && <0.11+ , containers >=0.5.5.1 && <0.7+ , deepseq >=1.3.0.2 && <1.5+ , mtl >=2.1.3.1 && <2.2 || >=2.2.1 && <2.3+ , text >=1.2.0.6 && <1.3+ , time >=1.4 && <1.10+ , transformers >=0.3.0.0 && <0.6 -- other packages build-depends:- aeson >=1.4.0.0 && <1.5,- base-compat >=0.10.4 && <0.11,- base16-bytestring >=0.1.1.6 && <0.2,- binary-orphans >=0.1.8.0 && <0.2,- byteable >=0.1.1 && <0.2,- cryptohash >=0.11.9 && <0.12,- deepseq-generics >=0.2.0.0 && <0.3,- exceptions >=0.10.0 && <0.11,- hashable >=1.2.7.0 && <1.3,- http-client >=0.5.12 && <0.6,- http-client-tls >=0.3.5.3 && <0.4,- http-link-header >=1.0.3.1 && <1.1,- http-types >=0.12.1 && <0.13,- iso8601-time >=0.1.5 && <0.2,- network-uri >=2.6.1.0 && <2.7,- semigroups >=0.18.5 && <0.19,- transformers-compat >=0.6 && <0.7,- unordered-containers >=0.2.9.0 && <0.3,- vector >=0.12.0.1 && <0.13,- vector-instances >=3.4 && <3.5,-- tls >=1.4.1+ aeson >=1.4.0.0 && <1.5+ , base-compat >=0.10.4 && <0.11+ , base16-bytestring >=0.1.1.6 && <0.2+ , binary-orphans >=0.1.8.0 && <0.2+ , cryptohash-sha1 >=0.11.100.1 && <0.12+ , deepseq-generics >=0.2.0.0 && <0.3+ , exceptions >=0.10.0 && <0.11+ , hashable >=1.2.7.0 && <1.3+ , http-client >=0.5.12 && <0.7+ , http-client-tls >=0.3.5.3 && <0.4+ , http-link-header >=1.0.3.1 && <1.1+ , http-types >=0.12.1 && <0.13+ , iso8601-time >=0.1.5 && <0.2+ , network-uri >=2.6.1.0 && <2.7+ , semigroups >=0.18.5 && <0.19+ , tagged+ , tls >=1.4.1+ , transformers-compat >=0.6 && <0.7+ , unordered-containers >=0.2.9.0 && <0.3+ , vector >=0.12.0.1 && <0.13+ , vector-instances >=3.4 && <3.5 test-suite github-test- default-language: Haskell2010- type: exitcode-stdio-1.0- hs-source-dirs: spec- other-extensions:- TemplateHaskell+ default-language: Haskell2010+ type: exitcode-stdio-1.0+ hs-source-dirs: spec+ main-is: Spec.hs+ ghc-options: -Wall+ build-tool-depends: hspec-discover:hspec-discover >=2.6.1 && <2.8+ other-extensions: TemplateHaskell other-modules: GitHub.ActivitySpec GitHub.CommitsSpec@@ -187,15 +195,14 @@ GitHub.ReposSpec GitHub.SearchSpec GitHub.UsersSpec- main-is: Spec.hs- ghc-options: -Wall- build-tool-depends: hspec-discover:hspec-discover >=2.5.6 && <2.6- build-depends: base,- base-compat,- aeson,- bytestring,- github,- vector,- unordered-containers,- file-embed,- hspec >= 2.5.6 && <2.6++ build-depends:+ aeson+ , base+ , base-compat+ , bytestring+ , file-embed+ , github+ , hspec >=2.6.1 && <2.8+ , unordered-containers+ , vector
spec/GitHub/CommitsSpec.hs view
@@ -5,7 +5,7 @@ import qualified GitHub import GitHub.Auth (Auth (..))-import GitHub.Endpoints.Repos.Commits (Commit, commitSha, commitsFor',+import GitHub.Endpoints.Repos.Commits (commitSha, commitsFor', commitsForR, diffR, mkCommitName) import GitHub.Request (executeRequest) @@ -59,4 +59,9 @@ it "issue #155" $ withAuth $ \auth -> do d <- executeRequest auth $ diffR "nomeata" "codespeed" (mkCommitName "ghc") (mkCommitName "tobami:master")+ d `shouldSatisfy` isRight++ -- diff that includes a commit where a submodule is removed+ it "issue #339" $ withAuth $ \auth -> do+ d <- executeRequest auth $ diffR "scott-fleischman" "repo-remove-submodule" "d03c152482169d809be9b1eab71dcf64d7405f76" "42cfd732b20cd093534f246e630b309186eb485d" d `shouldSatisfy` isRight
spec/GitHub/IssuesSpec.hs view
@@ -10,7 +10,8 @@ import Data.Foldable (for_) import Data.String (fromString) import System.Environment (lookupEnv)-import Test.Hspec (Spec, describe, it, pendingWith, shouldSatisfy)+import Test.Hspec+ (Spec, describe, expectationFailure, it, pendingWith, shouldSatisfy) fromRightS :: Show a => Either a b -> b fromRightS (Right b) = b@@ -28,11 +29,17 @@ describe "issuesForRepoR" $ do it "works" $ withAuth $ \auth -> for_ repos $ \(owner, repo) -> do cs <- GitHub.executeRequest auth $- GitHub.issuesForRepoR owner repo mempty GitHub.FetchAll - cs `shouldSatisfy` isRight+ GitHub.issuesForRepoR owner repo mempty GitHub.FetchAll+ case cs of+ Left e ->+ expectationFailure . show $ e+ Right cs' -> do+ for_ cs' $ \i -> do+ cms <- GitHub.executeRequest auth $+ GitHub.commentsR owner repo (GitHub.issueNumber i) 1+ cms `shouldSatisfy` isRight where repos = [ ("thoughtbot", "paperclip") , ("phadej", "github")- , ("haskell", "cabal") ]
spec/GitHub/PullRequestsSpec.hs view
@@ -3,7 +3,6 @@ module GitHub.PullRequestsSpec where import qualified GitHub-import GitHub.Data.Id (Id (Id)) import Prelude () import Prelude.Compat@@ -15,6 +14,7 @@ import Data.Foldable (for_) import Data.String (fromString) import qualified Data.Vector as V+import qualified Data.ByteString.Lazy.Char8 as LBS8 import System.Environment (lookupEnv) import Test.Hspec (Spec, describe, it, pendingWith, shouldBe, shouldSatisfy)@@ -38,6 +38,12 @@ GitHub.pullRequestsForR owner repo opts GitHub.FetchAll cs `shouldSatisfy` isRight + describe "pullRequestPatchR" $+ it "works" $ withAuth $ \auth -> do+ Right patch <- GitHub.executeRequest auth $+ GitHub.pullRequestPatchR "phadej" "github" (GitHub.IssueNumber 349)+ head (LBS8.lines patch) `shouldBe` "From c0e4ad33811be82e1f72ee76116345c681703103 Mon Sep 17 00:00:00 2001"+ describe "decoding pull request payloads" $ do it "decodes a pull request 'opened' payload" $ do V.length (GitHub.simplePullRequestRequestedReviewers simplePullRequestOpened)@@ -55,7 +61,7 @@ describe "checking if a pull request is merged" $ do it "works" $ withAuth $ \auth -> do- b <- GitHub.executeRequest auth $ GitHub.isPullRequestMergedR "phadej" "github" (Id 14)+ b <- GitHub.executeRequest auth $ GitHub.isPullRequestMergedR "phadej" "github" (GitHub.IssueNumber 14) b `shouldSatisfy` isRight fromRightS b `shouldBe` True @@ -63,7 +69,6 @@ repos = [ ("thoughtbot", "paperclip") , ("phadej", "github")- , ("haskell", "cabal") ] opts = GitHub.stateClosed
spec/GitHub/RateLimitSpec.hs view
@@ -7,7 +7,6 @@ import Prelude.Compat import Data.Either.Compat (isRight)-import Data.Foldable (for_) import Data.String (fromString) import System.Environment (lookupEnv) import Test.Hspec (Spec, describe, it, pendingWith, shouldSatisfy)
spec/GitHub/SearchSpec.hs view
@@ -14,7 +14,8 @@ import qualified Data.Vector as V -import GitHub.Data (Auth (..), Issue (..), IssueState (..), mkId)+import GitHub.Data+ (Auth (..), Issue (..), IssueNumber (..), IssueState (..), mkId) import GitHub.Endpoints.Search (SearchResult (..), searchIssues') fromRightS :: Show a => Either a b -> b@@ -40,13 +41,13 @@ let issue1 = issues V.! 0 issueId issue1 `shouldBe` mkId (Proxy :: Proxy Issue) 123898390- issueNumber issue1 `shouldBe` 130+ issueNumber issue1 `shouldBe` IssueNumber 130 issueTitle issue1 `shouldBe` "Make test runner more robust" issueState issue1 `shouldBe` StateClosed let issue2 = issues V.! 1 issueId issue2 `shouldBe` mkId (Proxy :: Proxy Issue) 119694665- issueNumber issue2 `shouldBe` 127+ issueNumber issue2 `shouldBe` IssueNumber 127 issueTitle issue2 `shouldBe` "Decouple request creation from execution" issueState issue2 `shouldBe` StateOpen
src/GitHub.hs view
@@ -137,13 +137,14 @@ -- ** Milestone -- | See <https://developer.github.com/v3/issues/milestones/> --- -- Missing endpoints:- --- -- * Create a milestone- -- * Update a milestone- -- * Delete a milestone milestonesR, milestoneR,+ createMilestone,+ createMilestoneR,+ updateMilestone,+ updateMilestoneR,+ deleteMilestone,+ deleteMilestoneR, -- * Organizations -- | See <https://developer.github.com/v3/orgs/>@@ -155,6 +156,7 @@ -- * Edit an organization publicOrganizationsForR, publicOrganizationR,+ organizationsR, -- ** Members -- | See <https://developer.github.com/v3/orgs/members/> --@@ -191,6 +193,8 @@ -- | See <https://developer.github.com/v3/pulls/> pullRequestsForR, pullRequestR,+ pullRequestPatchR,+ pullRequestDiffR, createPullRequestR, updatePullRequestR, pullRequestCommitsR,@@ -204,11 +208,11 @@ -- Missing endpoints: -- -- * List comments in a repository- -- * Create a comment -- * Edit a comment -- * Delete a comment pullRequestCommentsR, pullRequestCommentR,+ createPullCommentR, -- ** Pull request reviews -- | See <https://developer.github.com/v3/pulls/reviews/>@@ -251,6 +255,7 @@ -- | See <https://developer.github.com/v3/repos/collaborators/> collaboratorsOnR, isCollaboratorOnR,+ addCollaboratorR, -- ** Comments -- | See <https://developer.github.com/v3/repos/comments/>
src/GitHub/Data.hs view
@@ -30,6 +30,8 @@ mkRepoId, fromUserId, fromOrganizationId,+ -- * IssueNumber+ IssueNumber (..), -- * Module re-exports module GitHub.Auth, module GitHub.Data.Activities,
src/GitHub/Data/Comments.hs view
@@ -64,3 +64,22 @@ instance ToJSON EditComment where toJSON (EditComment b) = object [ "body" .= b ]++data NewPullComment = NewPullComment+ { newPullCommentCommit :: !Text+ , newPullCommentPath :: !Text+ , newPullCommentPosition :: !Int+ , newPullCommentBody :: !Text+ }+ deriving (Show, Data, Typeable, Eq, Ord, Generic)++instance NFData NewPullComment where rnf = genericRnf+instance Binary NewPullComment++instance ToJSON NewPullComment where+ toJSON (NewPullComment c path pos b) =+ object [ "body" .= b+ , "commit_id" .= c+ , "path" .= path+ , "position" .= pos+ ]
src/GitHub/Data/Definitions.hs view
@@ -238,6 +238,28 @@ type Count = Int -------------------------------------------------------------------------------+-- IssueNumber+-------------------------------------------------------------------------------++newtype IssueNumber = IssueNumber Int+ deriving (Eq, Ord, Show, Generic, Typeable, Data)++unIssueNumber :: IssueNumber -> Int+unIssueNumber (IssueNumber i) = i++instance Hashable IssueNumber+instance Binary IssueNumber++instance NFData IssueNumber where+ rnf (IssueNumber s) = rnf s++instance FromJSON IssueNumber where+ parseJSON = fmap IssueNumber . parseJSON++instance ToJSON IssueNumber where+ toJSON = toJSON . unIssueNumber++------------------------------------------------------------------------------- -- IssueLabel -------------------------------------------------------------------------------
src/GitHub/Data/GitData.hs view
@@ -184,9 +184,9 @@ instance Binary GitUser data File = File- { fileBlobUrl :: !URL+ { fileBlobUrl :: !(Maybe URL) , fileStatus :: !Text- , fileRawUrl :: !URL+ , fileRawUrl :: !(Maybe URL) , fileAdditions :: !Int , fileSha :: !Text , fileChanges :: !Int@@ -251,9 +251,9 @@ instance FromJSON File where parseJSON = withObject "File" $ \o -> File- <$> o .: "blob_url"+ <$> o .:? "blob_url" <*> o .: "status"- <*> o .: "raw_url"+ <*> o .:? "raw_url" <*> o .: "additions" <*> o .: "sha" <*> o .: "changes"
src/GitHub/Data/Issues.hs view
@@ -13,7 +13,7 @@ import GitHub.Data.PullRequests import GitHub.Data.URL (URL) import GitHub.Internal.Prelude-import Prelude ()+import Prelude () data Issue = Issue { issueClosedAt :: !(Maybe UTCTime)@@ -22,7 +22,7 @@ , issueHtmlUrl :: !(Maybe URL) , issueClosedBy :: !(Maybe SimpleUser) , issueLabels :: !(Vector IssueLabel)- , issueNumber :: !Int+ , issueNumber :: !IssueNumber , issueAssignees :: !(Vector SimpleUser) , issueUser :: !SimpleUser , issueTitle :: !Text@@ -43,7 +43,7 @@ data NewIssue = NewIssue { newIssueTitle :: !Text , newIssueBody :: !(Maybe Text)- , newIssueAssignee :: !(Maybe Text)+ , newIssueAssignees :: !(Vector (Name User)) , newIssueMilestone :: !(Maybe (Id Milestone)) , newIssueLabels :: !(Maybe (Vector (Name IssueLabel))) }@@ -55,7 +55,7 @@ data EditIssue = EditIssue { editIssueTitle :: !(Maybe Text) , editIssueBody :: !(Maybe Text)- , editIssueAssignee :: !(Maybe (Name User))+ , editIssueAssignees :: !(Maybe (Vector (Name User))) , editIssueState :: !(Maybe IssueState) , editIssueMilestone :: !(Maybe (Id Milestone)) , editIssueLabels :: !(Maybe (Vector (Name IssueLabel)))@@ -203,19 +203,22 @@ <*> o .:? "milestone" instance ToJSON NewIssue where- toJSON (NewIssue t b a m ls) = object+ toJSON (NewIssue t b a m ls) = object $ filter notNull [ "title" .= t , "body" .= b- , "assignee" .= a+ , "assignees" .= a , "milestone" .= m , "labels" .= ls ]+ where+ notNull (_, Null) = False+ notNull (_, _) = True instance ToJSON EditIssue where- toJSON (EditIssue t b a s m ls) = object $ filter notNull $+ toJSON (EditIssue t b a s m ls) = object $ filter notNull [ "title" .= t , "body" .= b- , "assignee" .= a+ , "assignees" .= a , "state" .= s , "milestone" .= m , "labels" .= ls
src/GitHub/Data/Milestone.hs view
@@ -40,3 +40,49 @@ <*> o .: "url" <*> o .: "created_at" <*> o .: "state"++data NewMilestone = NewMilestone+ { newMilestoneTitle :: !Text+ , newMilestoneState :: !Text+ , newMilestoneDescription :: !(Maybe Text)+ , newMilestoneDueOn :: !(Maybe UTCTime)+ }+ deriving (Show, Data, Typeable, Eq, Ord, Generic)++instance NFData NewMilestone where rnf = genericRnf+instance Binary NewMilestone+++instance ToJSON NewMilestone where+ toJSON (NewMilestone title state desc due) = object $ filter notNull+ [ "title" .= title+ , "state" .= state+ , "description" .= desc+ , "due_on" .= due+ ]+ where+ notNull (_, Null) = False+ notNull (_, _) = True++data UpdateMilestone = UpdateMilestone+ { updateMilestoneTitle :: !(Maybe Text)+ , updateMilestoneState :: !(Maybe Text)+ , updateMilestoneDescription :: !(Maybe Text)+ , updateMilestoneDueOn :: !(Maybe UTCTime)+ }+ deriving (Show, Data, Typeable, Eq, Ord, Generic)++instance NFData UpdateMilestone where rnf = genericRnf+instance Binary UpdateMilestone+++instance ToJSON UpdateMilestone where+ toJSON (UpdateMilestone title state desc due) = object $ filter notNull+ [ "title" .= title+ , "state" .= state+ , "description" .= desc+ , "due_on" .= due+ ]+ where+ notNull (_, Null) = False+ notNull (_, _) = True
src/GitHub/Data/PullRequests.hs view
@@ -14,14 +14,12 @@ PullRequestEventType(..), PullRequestReference(..), MergeResult(..),- statusMerge, ) where import GitHub.Data.Definitions import GitHub.Data.Id (Id) import GitHub.Data.Options (IssueState (..), MergeableState (..)) import GitHub.Data.Repos (Repo)-import GitHub.Data.Request (StatusMap) import GitHub.Data.URL (URL) import GitHub.Internal.Prelude import Prelude ()@@ -34,7 +32,7 @@ , simplePullRequestUser :: !SimpleUser , simplePullRequestPatchUrl :: !URL , simplePullRequestState :: !IssueState- , simplePullRequestNumber :: !Int+ , simplePullRequestNumber :: !IssueNumber , simplePullRequestHtmlUrl :: !URL , simplePullRequestUpdatedAt :: !UTCTime , simplePullRequestBody :: !(Maybe Text)@@ -59,7 +57,7 @@ , pullRequestUser :: !SimpleUser , pullRequestPatchUrl :: !URL , pullRequestState :: !IssueState- , pullRequestNumber :: !Int+ , pullRequestNumber :: !IssueNumber , pullRequestHtmlUrl :: !URL , pullRequestUpdatedAt :: !UTCTime , pullRequestBody :: !(Maybe Text)@@ -319,10 +317,3 @@ | MergeCannotPerform | MergeConflict deriving (Eq, Ord, Read, Show, Enum, Bounded, Generic, Typeable)--statusMerge :: StatusMap MergeResult-statusMerge =- [ (200, MergeSuccessful)- , (405, MergeCannotPerform)- , (409, MergeConflict)- ]
src/GitHub/Data/Request.hs view
@@ -10,36 +10,33 @@ -- module GitHub.Data.Request ( -- * Request- Request (..),- SimpleRequest (..),+ Request,+ GenRequest (..), -- * Smart constructors query, pagedQuery, command, -- * Auxiliary types RW(..),- StatusMap,- statusOnlyOk, CommandMethod(..), toMethod, FetchCount(..),+ MediaType (..), Paths, IsPathPart(..), QueryString, Count, ) where -import GitHub.Data.Definitions (Count, QueryString)+import GitHub.Data.Definitions (Count, QueryString, IssueNumber, unIssueNumber) import GitHub.Data.Id (Id, untagId) import GitHub.Data.Name (Name, untagName) import GitHub.Internal.Prelude import qualified Data.ByteString.Lazy as LBS import qualified Data.Text as T-import qualified Network.HTTP.Types as Types import qualified Network.HTTP.Types.Method as Method-import Network.URI (URI) --------------------------------------------------------------------------------- Auxillary types+-- Path parts ------------------------------------------------------------------------------ type Paths = [Text]@@ -53,39 +50,33 @@ instance IsPathPart (Id a) where toPathPart = T.pack . show . untagId --- | Http method of requests with body.-data CommandMethod a where- Post :: CommandMethod a- Patch :: CommandMethod a- Put :: CommandMethod a- Put' :: CommandMethod ()- Delete :: CommandMethod ()- deriving (Typeable)+instance IsPathPart IssueNumber where+ toPathPart = T.pack . show . unIssueNumber -deriving instance Eq (CommandMethod a)-deriving instance Ord (CommandMethod a)+-------------------------------------------------------------------------------+-- Command Method+------------------------------------------------------------------------------- -instance Show (CommandMethod a) where- showsPrec _ Post = showString "Post"- showsPrec _ Patch = showString "Patch"- showsPrec _ Put = showString "Put"- showsPrec _ Put' = showString "Put'"- showsPrec _ Delete = showString "Delete"+-- | Http method of requests with body.+data CommandMethod+ = Post+ | Patch+ | Put+ | Delete+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Typeable, Data, Generic) -instance Hashable (CommandMethod a) where- hashWithSalt salt Post = hashWithSalt salt (0 :: Int)- hashWithSalt salt Patch = hashWithSalt salt (1 :: Int)- hashWithSalt salt Put = hashWithSalt salt (2 :: Int)- hashWithSalt salt Put' = hashWithSalt salt (3 :: Int)- hashWithSalt salt Delete = hashWithSalt salt (4 :: Int)+instance Hashable CommandMethod -toMethod :: CommandMethod a -> Method.Method+toMethod :: CommandMethod -> Method.Method toMethod Post = Method.methodPost toMethod Patch = Method.methodPatch toMethod Put = Method.methodPut-toMethod Put' = Method.methodPut toMethod Delete = Method.methodDelete +-------------------------------------------------------------------------------+-- Fetch count+-------------------------------------------------------------------------------+ -- | 'PagedQuery' returns just some results, using this data we can specify how -- many pages we want to fetch. data FetchCount = FetchAtLeast !Word | FetchAll@@ -110,15 +101,31 @@ instance Binary FetchCount instance NFData FetchCount where rnf = genericRnf +-------------------------------------------------------------------------------+-- MediaType+-------------------------------------------------------------------------------++data MediaType+ = MtJSON -- ^ @application/vnd.github.v3+json@+ | MtRaw -- ^ @application/vnd.github.v3.raw@ <https://developer.github.com/v3/media/#raw-1>+ | MtDiff -- ^ @application/vnd.github.v3.diff@ <https://developer.github.com/v3/media/#diff>+ | MtPatch -- ^ @application/vnd.github.v3.patch@ <https://developer.github.com/v3/media/#patch>+ | MtSha -- ^ @application/vnd.github.v3.sha@ <https://developer.github.com/v3/media/#sha>+ | MtStar -- ^ @application/vnd.github.v3.star+json@ <https://developer.github.com/v3/activity/starring/#alternative-response-with-star-creation-timestamps-1>+ | MtRedirect -- ^ <https://developer.github.com/v3/repos/contents/#get-archive-link>+ | MtStatus -- ^ Parse status+ | MtUnit -- ^ Always succeeds+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Typeable, Data, Generic)+ --------------------------------------------------------------------------------- Github request+-- RW ------------------------------------------------------------------------------ -- | Type used as with @DataKinds@ to tag whether requests need authentication -- or aren't read-only. data RW = RO -- ^ /Read-only/, doesn't necessarily requires authentication- | RA -- ^ /Read autenticated/+ | RA -- ^ /Read authenticated/ | RW -- ^ /Read-write/, requires authentication deriving (Eq, Ord, Read, Show, Enum, Bounded, Typeable, Data, Generic) @@ -133,100 +140,54 @@ instance IReadOnly 'RA where iro = ROA -} +-------------------------------------------------------------------------------+-- GitHub Request+-------------------------------------------------------------------------------+ -- | Github request data type. ----- * @k@ describes whether authentication is required. It's required for non-@GET@ requests.+-- * @rw@ describes whether authentication is required. It's required for non-@GET@ requests.+-- * @mt@ describes the media type, i.e. how the response should be interpreted. -- * @a@ is the result type -- -- /Note:/ 'Request' is not 'Functor' on purpose.-data Request (k :: RW) a where- SimpleQuery :: FromJSON a => SimpleRequest k a -> Request k a- StatusQuery :: StatusMap a -> SimpleRequest k () -> Request k a- HeaderQuery :: FromJSON a => Types.RequestHeaders -> SimpleRequest k a -> Request k a- RedirectQuery :: SimpleRequest k () -> Request k URI- deriving (Typeable)+data GenRequest (mt :: MediaType) (rw :: RW) a where+ Query :: Paths -> QueryString -> GenRequest mt rw a+ PagedQuery :: Paths -> QueryString -> FetchCount -> GenRequest mt rw (Vector a) -data SimpleRequest (k :: RW) a where- Query :: Paths -> QueryString -> SimpleRequest k a- PagedQuery :: Paths -> QueryString -> FetchCount -> SimpleRequest k (Vector a)- Command :: CommandMethod a -> Paths -> LBS.ByteString -> SimpleRequest 'RW a+ -- | Command+ Command+ :: CommandMethod -- ^ command+ -> Paths -- ^ path+ -> LBS.ByteString -- ^ body+ -> GenRequest mt 'RW a deriving (Typeable) ----------------------------------------------------------------------------------- Status Map------------------------------------------------------------------------------------ TODO: Change to 'Map' ?-type StatusMap a = [(Int, a)]--statusOnlyOk :: StatusMap Bool-statusOnlyOk =- [ (204, True)- , (404, False)- ]+-- | Most requests ask for @JSON@.+type Request = GenRequest 'MtJSON ------------------------------------------------------------------------------- -- Smart constructors ------------------------------------------------------------------------------- -query :: FromJSON a => Paths -> QueryString -> Request k a-query ps qs = SimpleQuery (Query ps qs)+query :: Paths -> QueryString -> Request mt a+query ps qs = Query ps qs -pagedQuery :: FromJSON a => Paths -> QueryString -> FetchCount -> Request k (Vector a)-pagedQuery ps qs fc = SimpleQuery (PagedQuery ps qs fc)+pagedQuery :: FromJSON a => Paths -> QueryString -> FetchCount -> Request mt (Vector a)+pagedQuery ps qs fc = PagedQuery ps qs fc -command :: FromJSON a => CommandMethod a -> Paths -> LBS.ByteString -> Request 'RW a-command m ps body = SimpleQuery (Command m ps body)+command :: CommandMethod -> Paths -> LBS.ByteString -> Request 'RW a+command m ps body = Command m ps body ------------------------------------------------------------------------------- -- Instances ------------------------------------------------------------------------------- -deriving instance Eq a => Eq (Request k a)-deriving instance Eq a => Eq (SimpleRequest k a)--deriving instance Ord a => Ord (Request k a)-deriving instance Ord a => Ord (SimpleRequest k a)--instance Show (SimpleRequest k a) where- showsPrec d r = showParen (d > appPrec) $ case r of- Query ps qs -> showString "Query "- . showsPrec (appPrec + 1) ps- . showString " "- . showsPrec (appPrec + 1) qs- PagedQuery ps qs l -> showString "PagedQuery "- . showsPrec (appPrec + 1) ps- . showString " "- . showsPrec (appPrec + 1) qs- . showString " "- . showsPrec (appPrec + 1) l- Command m ps body -> showString "Command "- . showsPrec (appPrec + 1) m- . showString " "- . showsPrec (appPrec + 1) ps- . showString " "- . showsPrec (appPrec + 1) body- where- appPrec = 10 :: Int--instance Show (Request k a) where- showsPrec d r = showParen (d > appPrec) $ case r of- SimpleQuery req -> showString "SimpleQuery "- . showsPrec (appPrec + 1) req- StatusQuery m req -> showString "Status "- . showsPrec (appPrec + 1) (map fst m) -- !!! printing only keys- . showString " "- . showsPrec (appPrec + 1) req- HeaderQuery m req -> showString "Header "- . showsPrec (appPrec + 1) m- . showString " "- . showsPrec (appPrec + 1) req- RedirectQuery req -> showString "Redirect "- . showsPrec (appPrec + 1) req- where- appPrec = 10 :: Int+deriving instance Eq (GenRequest rw mt a)+deriving instance Ord (GenRequest rw mt a)+deriving instance Show (GenRequest rw mt a) -instance Hashable (SimpleRequest k a) where+instance Hashable (GenRequest rw mt a) where hashWithSalt salt (Query ps qs) = salt `hashWithSalt` (0 :: Int) `hashWithSalt` ps@@ -242,18 +203,4 @@ `hashWithSalt` ps `hashWithSalt` body -instance Hashable (Request k a) where- hashWithSalt salt (SimpleQuery req) =- salt `hashWithSalt` (0 :: Int)- `hashWithSalt` req- hashWithSalt salt (StatusQuery sm req) =- salt `hashWithSalt` (1 :: Int)- `hashWithSalt` map fst sm- `hashWithSalt` req- hashWithSalt salt (HeaderQuery h req) =- salt `hashWithSalt` (2 :: Int)- `hashWithSalt` h- `hashWithSalt` req- hashWithSalt salt (RedirectQuery req) =- salt `hashWithSalt` (3 :: Int)- `hashWithSalt` req+-- TODO: Binary
src/GitHub/Data/Webhooks/Validate.hs view
@@ -12,9 +12,8 @@ import GitHub.Internal.Prelude import Prelude () -import Crypto.Hash (HMAC, SHA1, hmac, hmacGetDigest)-import Data.Byteable (constEqBytes, toBytes)-import Data.ByteString (ByteString)+import Crypto.Hash.SHA1 (hmac)+import Data.ByteString (ByteString) import qualified Data.ByteString.Base16 as Hex import qualified Data.Text.Encoding as TE@@ -30,10 +29,9 @@ -- including the 'sha1=...' prefix -> ByteString -- ^ the body -> Bool-isValidPayload secret shaOpt payload = maybe False (constEqBytes sign) shaOptBS+isValidPayload secret shaOpt payload = maybe False (sign ==) shaOptBS where shaOptBS = TE.encodeUtf8 <$> shaOpt- hexDigest = Hex.encode . toBytes . hmacGetDigest-- hm = hmac (TE.encodeUtf8 secret) payload :: HMAC SHA1+ hexDigest = Hex.encode+ hm = hmac (TE.encodeUtf8 secret) payload sign = "sha1=" <> hexDigest hm
src/GitHub/Endpoints/Activity/Starring.hs view
@@ -71,8 +71,8 @@ -- | All the repos starred by the authenticated user. -- See <https://developer.github.com/v3/activity/starring/#alternative-response-with-star-creation-timestamps-1>-myStarredAcceptStarR :: FetchCount -> Request 'RA (Vector RepoStarred)-myStarredAcceptStarR = HeaderQuery [("Accept", "application/vnd.github.v3.star+json")] . PagedQuery ["user", "starred"] []+myStarredAcceptStarR :: FetchCount -> GenRequest 'MtStar 'RA (Vector RepoStarred)+myStarredAcceptStarR = PagedQuery ["user", "starred"] [] -- | Star a repo by the authenticated user. starRepo :: Auth -> Name Owner -> Name Repo -> IO (Either Error ())@@ -80,8 +80,8 @@ -- | Star a repo by the authenticated user. -- See <https://developer.github.com/v3/activity/starring/#star-a-repository>-starRepoR :: Name Owner -> Name Repo -> Request 'RW ()-starRepoR user repo = command Put' paths mempty+starRepoR :: Name Owner -> Name Repo -> GenRequest 'MtUnit 'RW ()+starRepoR user repo = Command Put paths mempty where paths = ["user", "starred", toPathPart user, toPathPart repo]
src/GitHub/Endpoints/Gists.hs view
@@ -70,8 +70,8 @@ -- | Star a gist by the authenticated user. -- See <https://developer.github.com/v3/gists/#star-a-gist>-starGistR :: Name Gist -> Request 'RW ()-starGistR gid = command Put' ["gists", toPathPart gid, "star"] mempty+starGistR :: Name Gist -> GenRequest 'MtUnit 'RW ()+starGistR gid = Command Put ["gists", toPathPart gid, "star"] mempty -- | Unstar a gist by the authenticated user. --
src/GitHub/Endpoints/Issues.hs view
@@ -85,7 +85,7 @@ -- Creating new issues. newIssue :: Text -> NewIssue-newIssue title = NewIssue title Nothing Nothing Nothing Nothing+newIssue title = NewIssue title Nothing mempty Nothing Nothing -- | Create a new issue.
src/GitHub/Endpoints/Issues/Comments.hs view
@@ -41,19 +41,19 @@ -- | All comments on an issue, by the issue's number. -- -- > comments "thoughtbot" "paperclip" 635-comments :: Name Owner -> Name Repo -> Id Issue -> IO (Either Error (Vector IssueComment))+comments :: Name Owner -> Name Repo -> IssueNumber -> IO (Either Error (Vector IssueComment)) comments = comments' Nothing -- | All comments on an issue, by the issue's number, using authentication. -- -- > comments' (User (user, password)) "thoughtbot" "paperclip" 635-comments' :: Maybe Auth -> Name Owner -> Name Repo -> Id Issue -> IO (Either Error (Vector IssueComment))+comments' :: Maybe Auth -> Name Owner -> Name Repo -> IssueNumber -> IO (Either Error (Vector IssueComment)) comments' auth user repo iid = executeRequestMaybe auth $ commentsR user repo iid FetchAll -- | List comments on an issue. -- See <https://developer.github.com/v3/issues/comments/#list-comments-on-an-issue>-commentsR :: Name Owner -> Name Repo -> Id Issue -> FetchCount -> Request k (Vector IssueComment)+commentsR :: Name Owner -> Name Repo -> IssueNumber -> FetchCount -> Request k (Vector IssueComment) commentsR user repo iid = pagedQuery ["repos", toPathPart user, toPathPart repo, "issues", toPathPart iid, "comments"] [] @@ -61,14 +61,14 @@ -- -- > createComment (User (user, password)) user repo issue -- > "some words"-createComment :: Auth -> Name Owner -> Name Repo -> Id Issue -> Text+createComment :: Auth -> Name Owner -> Name Repo -> IssueNumber -> Text -> IO (Either Error Comment) createComment auth user repo iss body = executeRequest auth $ createCommentR user repo iss body -- | Create a comment. -- See <https://developer.github.com/v3/issues/comments/#create-a-comment>-createCommentR :: Name Owner -> Name Repo -> Id Issue -> Text -> Request 'RW Comment+createCommentR :: Name Owner -> Name Repo -> IssueNumber -> Text -> Request 'RW Comment createCommentR user repo iss body = command Post parts (encode $ NewComment body) where
src/GitHub/Endpoints/Issues/Milestones.hs view
@@ -11,6 +11,12 @@ milestonesR, milestone, milestoneR,+ createMilestone,+ createMilestoneR,+ updateMilestone,+ updateMilestoneR,+ deleteMilestone,+ deleteMilestoneR, module GitHub.Data, ) where @@ -50,3 +56,31 @@ milestoneR :: Name Owner -> Name Repo -> Id Milestone -> Request k Milestone milestoneR user repo mid = query ["repos", toPathPart user, toPathPart repo, "milestones", toPathPart mid] []++createMilestone :: Auth -> Name Owner -> Name Repo -> NewMilestone -> IO (Either Error Milestone)+createMilestone auth user repo mlstn = executeRequest auth $ createMilestoneR user repo mlstn++-- | Create a milestone.+-- See <https://developer.github.com/v3/issues/milestones/#create-a-milestone>+createMilestoneR :: Name Owner -> Name Repo -> NewMilestone -> Request 'RW Milestone+createMilestoneR user repo =+ command Post ["repos", toPathPart user, toPathPart repo, "milestones"] . encode++updateMilestone :: Auth -> Name Owner -> Name Repo -> Id Milestone -> UpdateMilestone -> IO (Either Error Milestone)+updateMilestone auth user repo mid mlstn = executeRequest auth $ updateMilestoneR user repo mid mlstn++-- | Update a milestone.+-- See <https://developer.github.com/v3/issues/milestones/#update-a-milestone>+updateMilestoneR :: Name Owner -> Name Repo -> Id Milestone -> UpdateMilestone -> Request 'RW Milestone+updateMilestoneR user repo mid =+ command Patch ["repos", toPathPart user, toPathPart repo, "milestones", toPathPart mid ] . encode++deleteMilestone :: Auth -> Name Owner -> Name Repo -> Id Milestone -> IO (Either Error ())+deleteMilestone auth user repo mid = executeRequest auth $ deleteMilestoneR user repo mid++-- | Delete a milestone.+-- See <https://developer.github.com/v3/issues/milestones/#delete-a-milestone>+deleteMilestoneR :: Name Owner -> Name Repo -> Id Milestone -> Request 'RW ()+deleteMilestoneR user repo mid =+ command Delete+ ["repos", toPathPart user, toPathPart repo, "milestones", toPathPart mid] mempty
src/GitHub/Endpoints/Organizations.hs view
@@ -11,6 +11,7 @@ publicOrganization, publicOrganization', publicOrganizationR,+ organizationsR, module GitHub.Data, ) where @@ -32,7 +33,12 @@ publicOrganizationsFor :: Name User -> IO (Either Error (Vector SimpleOrganization)) publicOrganizationsFor = publicOrganizationsFor' Nothing --- | List user organizations.+-- | List all user organizations.+-- See <https://developer.github.com/v3/orgs/#list-your-organizations>+organizationsR :: FetchCount -> Request k (Vector SimpleOrganization)+organizationsR = pagedQuery ["user", "orgs"] []++-- | List public user organizations. -- See <https://developer.github.com/v3/orgs/#list-user-organizations> publicOrganizationsForR :: Name User -> FetchCount -> Request k (Vector SimpleOrganization) publicOrganizationsForR user = pagedQuery ["users", toPathPart user, "orgs"] []
src/GitHub/Endpoints/Organizations/Members.hs view
@@ -77,8 +77,8 @@ -- | Check if a user is a member of an organization. -- -- See <https://developer.github.com/v3/orgs/members/#check-membership>-isMemberOfR :: Name User -> Name Organization -> Request k Bool-isMemberOfR user org = StatusQuery statusOnlyOk $+isMemberOfR :: Name User -> Name Organization -> GenRequest 'MtStatus rw Bool+isMemberOfR user org = Query [ "orgs", toPathPart org, "members", toPathPart user ] [] -- | List pending organization invitations
src/GitHub/Endpoints/Organizations/Teams.hs view
@@ -168,9 +168,9 @@ -- | Add or update a team repository. -- See <https://developer.github.com/v3/orgs/teams/#add-or-update-team-repository>-addOrUpdateTeamRepoR :: Id Team -> Name Organization -> Name Repo -> Permission -> Request 'RW ()+addOrUpdateTeamRepoR :: Id Team -> Name Organization -> Name Repo -> Permission -> GenRequest 'MtUnit 'RW () addOrUpdateTeamRepoR tid org repo permission =- command Put' ["teams", toPathPart tid, "repos", toPathPart org, toPathPart repo] (encode $ AddTeamRepoPermission permission)+ Command Put ["teams", toPathPart tid, "repos", toPathPart org, toPathPart repo] (encode $ AddTeamRepoPermission permission) -- | Retrieve team mebership information for a user. -- With authentication
src/GitHub/Endpoints/PullRequests.hs view
@@ -12,6 +12,12 @@ pullRequest', pullRequest, pullRequestR,+ pullRequestDiff',+ pullRequestDiff,+ pullRequestDiffR,+ pullRequestPatch',+ pullRequestPatch,+ pullRequestPatchR, createPullRequest, createPullRequestR, updatePullRequest,@@ -33,6 +39,7 @@ import GitHub.Internal.Prelude import GitHub.Request import Prelude ()+import Data.ByteString.Lazy (ByteString) -- | All open pull requests for the repo, by owner and repo name. --@@ -60,12 +67,47 @@ ["repos", toPathPart user, toPathPart repo, "pulls"] (prModToQueryString opts) +-- | Obtain the diff of a pull request+-- See <https://developer.github.com/v3/pulls/#get-a-single-pull-request>+pullRequestDiff' :: Maybe Auth -> Name Owner -> Name Repo -> IssueNumber -> IO (Either Error ByteString)+pullRequestDiff' auth user repo prid =+ executeRequestMaybe auth $ pullRequestDiffR user repo prid++-- | Obtain the diff of a pull request+-- See <https://developer.github.com/v3/pulls/#get-a-single-pull-request>+pullRequestDiff :: Name Owner -> Name Repo -> IssueNumber -> IO (Either Error ByteString)+pullRequestDiff = pullRequestDiff' Nothing++-- | Query a single pull request to obtain the diff+-- See <https://developer.github.com/v3/pulls/#get-a-single-pull-request>+pullRequestDiffR :: Name Owner -> Name Repo -> IssueNumber -> GenRequest 'MtDiff rw ByteString+pullRequestDiffR user repo prid =+ Query ["repos", toPathPart user, toPathPart repo, "pulls", toPathPart prid] []++-- | Obtain the patch of a pull request+--+-- See <https://developer.github.com/v3/pulls/#get-a-single-pull-request>+pullRequestPatch' :: Maybe Auth -> Name Owner -> Name Repo -> IssueNumber -> IO (Either Error ByteString)+pullRequestPatch' auth user repo prid =+ executeRequestMaybe auth $ pullRequestPatchR user repo prid++-- | Obtain the patch of a pull request+-- See <https://developer.github.com/v3/pulls/#get-a-single-pull-request>+pullRequestPatch :: Name Owner -> Name Repo -> IssueNumber -> IO (Either Error ByteString)+pullRequestPatch = pullRequestPatch' Nothing++-- | Query a single pull request to obtain the patch+-- See <https://developer.github.com/v3/pulls/#get-a-single-pull-request>+pullRequestPatchR :: Name Owner -> Name Repo -> IssueNumber -> GenRequest 'MtPatch rw ByteString+pullRequestPatchR user repo prid =+ Query ["repos", toPathPart user, toPathPart repo, "pulls", toPathPart prid] []+ -- | A detailed pull request, which has much more information. This takes the -- repo owner and name along with the number assigned to the pull request. -- With authentification. -- -- > pullRequest' (Just ("github-username", "github-password")) "thoughtbot" "paperclip" 562-pullRequest' :: Maybe Auth -> Name Owner -> Name Repo -> Id PullRequest -> IO (Either Error PullRequest)+pullRequest' :: Maybe Auth -> Name Owner -> Name Repo -> IssueNumber -> IO (Either Error PullRequest) pullRequest' auth user repo prid = executeRequestMaybe auth $ pullRequestR user repo prid @@ -73,12 +115,12 @@ -- repo owner and name along with the number assigned to the pull request. -- -- > pullRequest "thoughtbot" "paperclip" 562-pullRequest :: Name Owner -> Name Repo -> Id PullRequest -> IO (Either Error PullRequest)+pullRequest :: Name Owner -> Name Repo -> IssueNumber -> IO (Either Error PullRequest) pullRequest = pullRequest' Nothing -- | Query a single pull request. -- See <https://developer.github.com/v3/pulls/#get-a-single-pull-request>-pullRequestR :: Name Owner -> Name Repo -> Id PullRequest -> Request k PullRequest+pullRequestR :: Name Owner -> Name Repo -> IssueNumber -> Request k PullRequest pullRequestR user repo prid = query ["repos", toPathPart user, toPathPart repo, "pulls", toPathPart prid] [] @@ -100,7 +142,7 @@ command Post ["repos", toPathPart user, toPathPart repo, "pulls"] (encode cpr) -- | Update a pull request-updatePullRequest :: Auth -> Name Owner -> Name Repo -> Id PullRequest -> EditPullRequest -> IO (Either Error PullRequest)+updatePullRequest :: Auth -> Name Owner -> Name Repo -> IssueNumber -> EditPullRequest -> IO (Either Error PullRequest) updatePullRequest auth user repo prid epr = executeRequest auth $ updatePullRequestR user repo prid epr @@ -108,7 +150,7 @@ -- See <https://developer.github.com/v3/pulls/#update-a-pull-request> updatePullRequestR :: Name Owner -> Name Repo- -> Id PullRequest+ -> IssueNumber -> EditPullRequest -> Request 'RW PullRequest updatePullRequestR user repo prid epr =@@ -119,7 +161,7 @@ -- With authentification. -- -- > pullRequestCommits' (Just ("github-username", "github-password")) "thoughtbot" "paperclip" 688-pullRequestCommits' :: Maybe Auth -> Name Owner -> Name Repo -> Id PullRequest -> IO (Either Error (Vector Commit))+pullRequestCommits' :: Maybe Auth -> Name Owner -> Name Repo -> IssueNumber -> IO (Either Error (Vector Commit)) pullRequestCommits' auth user repo prid = executeRequestMaybe auth $ pullRequestCommitsR user repo prid FetchAll @@ -127,12 +169,12 @@ -- the number of the pull request. -- -- > pullRequestCommits "thoughtbot" "paperclip" 688-pullRequestCommitsIO :: Name Owner -> Name Repo -> Id PullRequest -> IO (Either Error (Vector Commit))+pullRequestCommitsIO :: Name Owner -> Name Repo -> IssueNumber -> IO (Either Error (Vector Commit)) pullRequestCommitsIO = pullRequestCommits' Nothing -- | List commits on a pull request. -- See <https://developer.github.com/v3/pulls/#list-commits-on-a-pull-request>-pullRequestCommitsR :: Name Owner -> Name Repo -> Id PullRequest -> FetchCount -> Request k (Vector Commit)+pullRequestCommitsR :: Name Owner -> Name Repo -> IssueNumber -> FetchCount -> Request k (Vector Commit) pullRequestCommitsR user repo prid = pagedQuery ["repos", toPathPart user, toPathPart repo, "pulls", toPathPart prid, "commits"] [] @@ -141,7 +183,7 @@ -- With authentification. -- -- > pullRequestFiles' (Just ("github-username", "github-password")) "thoughtbot" "paperclip" 688-pullRequestFiles' :: Maybe Auth -> Name Owner -> Name Repo -> Id PullRequest -> IO (Either Error (Vector File))+pullRequestFiles' :: Maybe Auth -> Name Owner -> Name Repo -> IssueNumber -> IO (Either Error (Vector File)) pullRequestFiles' auth user repo prid = executeRequestMaybe auth $ pullRequestFilesR user repo prid FetchAll @@ -149,35 +191,35 @@ -- name, plus the number assigned to the pull request. -- -- > pullRequestFiles "thoughtbot" "paperclip" 688-pullRequestFiles :: Name Owner -> Name Repo -> Id PullRequest -> IO (Either Error (Vector File))+pullRequestFiles :: Name Owner -> Name Repo -> IssueNumber -> IO (Either Error (Vector File)) pullRequestFiles = pullRequestFiles' Nothing -- | List pull requests files. -- See <https://developer.github.com/v3/pulls/#list-pull-requests-files>-pullRequestFilesR :: Name Owner -> Name Repo -> Id PullRequest -> FetchCount -> Request k (Vector File)+pullRequestFilesR :: Name Owner -> Name Repo -> IssueNumber -> FetchCount -> Request k (Vector File) pullRequestFilesR user repo prid = pagedQuery ["repos", toPathPart user, toPathPart repo, "pulls", toPathPart prid, "files"] [] -- | Check if pull request has been merged.-isPullRequestMerged :: Auth -> Name Owner -> Name Repo -> Id PullRequest -> IO (Either Error Bool)+isPullRequestMerged :: Auth -> Name Owner -> Name Repo -> IssueNumber -> IO (Either Error Bool) isPullRequestMerged auth user repo prid = executeRequest auth $ isPullRequestMergedR user repo prid -- | Query if a pull request has been merged. -- See <https://developer.github.com/v3/pulls/#get-if-a-pull-request-has-been-merged>-isPullRequestMergedR :: Name Owner -> Name Repo -> Id PullRequest -> Request k Bool-isPullRequestMergedR user repo prid = StatusQuery statusOnlyOk $+isPullRequestMergedR :: Name Owner -> Name Repo -> IssueNumber -> GenRequest 'MtStatus rw Bool+isPullRequestMergedR user repo prid = Query ["repos", toPathPart user, toPathPart repo, "pulls", toPathPart prid, "merge"] [] -- | Merge a pull request.-mergePullRequest :: Auth -> Name Owner -> Name Repo -> Id PullRequest -> Maybe Text -> IO (Either Error MergeResult)+mergePullRequest :: Auth -> Name Owner -> Name Repo -> IssueNumber -> Maybe Text -> IO (Either Error MergeResult) mergePullRequest auth user repo prid commitMessage = executeRequest auth $ mergePullRequestR user repo prid commitMessage -- | Merge a pull request (Merge Button). -- https://developer.github.com/v3/pulls/#merge-a-pull-request-merge-button-mergePullRequestR :: Name Owner -> Name Repo -> Id PullRequest -> Maybe Text -> Request 'RW MergeResult-mergePullRequestR user repo prid commitMessage = StatusQuery statusMerge $+mergePullRequestR :: Name Owner -> Name Repo -> IssueNumber -> Maybe Text -> GenRequest 'MtStatus 'RW MergeResult+mergePullRequestR user repo prid commitMessage = Command Put paths (encode $ buildCommitMessageMap commitMessage) where paths = ["repos", toPathPart user, toPathPart repo, "pulls", toPathPart prid, "merge"]
src/GitHub/Endpoints/PullRequests/Comments.hs view
@@ -10,6 +10,8 @@ pullRequestCommentsR, pullRequestComment, pullRequestCommentR,+ createPullComment,+ createPullCommentR, module GitHub.Data, ) where @@ -21,13 +23,13 @@ -- | All the comments on a pull request with the given ID. -- -- > pullRequestComments "thoughtbot" "factory_girl" (Id 256)-pullRequestCommentsIO :: Name Owner -> Name Repo -> Id PullRequest -> IO (Either Error (Vector Comment))+pullRequestCommentsIO :: Name Owner -> Name Repo -> IssueNumber -> IO (Either Error (Vector Comment)) pullRequestCommentsIO user repo prid = executeRequest' $ pullRequestCommentsR user repo prid FetchAll -- | List comments on a pull request. -- See <https://developer.github.com/v3/pulls/comments/#list-comments-on-a-pull-request>-pullRequestCommentsR :: Name Owner -> Name Repo -> Id PullRequest -> FetchCount -> Request k (Vector Comment)+pullRequestCommentsR :: Name Owner -> Name Repo -> IssueNumber -> FetchCount -> Request k (Vector Comment) pullRequestCommentsR user repo prid = pagedQuery ["repos", toPathPart user, toPathPart repo, "pulls", toPathPart prid, "comments"] [] @@ -43,3 +45,21 @@ pullRequestCommentR :: Name Owner -> Name Repo -> Id Comment -> Request k Comment pullRequestCommentR user repo cid = query ["repos", toPathPart user, toPathPart repo, "pulls", "comments", toPathPart cid] []++-- | Create a new comment.+--+-- > createPullComment (User (user, password)) user repo issue commit path position+-- > "some words"+createPullComment :: Auth -> Name Owner -> Name Repo -> IssueNumber -> Text -> Text -> Int -> Text+ -> IO (Either Error Comment)+createPullComment auth user repo iss commit path position body =+ executeRequest auth $ createPullCommentR user repo iss commit path position body++-- | Create a comment.+--+-- See <https://developer.github.com/v3/pulls/comments/#create-a-comment>+createPullCommentR :: Name Owner -> Name Repo -> IssueNumber -> Text -> Text -> Int -> Text -> Request 'RW Comment+createPullCommentR user repo iss commit path position body =+ command Post parts (encode $ NewPullComment commit path position body)+ where+ parts = ["repos", toPathPart user, toPathPart repo, "pulls", toPathPart iss, "comments"]
src/GitHub/Endpoints/Repos.hs view
@@ -38,6 +38,7 @@ createRepoR, createOrganizationRepo', createOrganizationRepoR,+ forkExistingRepo', forkExistingRepoR, -- ** Edit@@ -166,6 +167,11 @@ createRepoR :: NewRepo -> Request 'RW Repo createRepoR nrepo = command Post ["user", "repos"] (encode nrepo)++-- | Fork an existing repository.+forkExistingRepo' :: Auth -> Name Owner -> Name Repo -> Maybe (Name Owner) -> IO (Either Error Repo)+forkExistingRepo' auth owner repo morg =+ executeRequest auth $ forkExistingRepoR owner repo morg -- | Fork an existing repository. -- See <https://developer.github.com/v3/repos/forks/#create-a-fork>
src/GitHub/Endpoints/Repos/Collaborators.hs view
@@ -11,6 +11,8 @@ collaboratorsOnR, isCollaboratorOn, isCollaboratorOnR,+ addCollaborator,+ addCollaboratorR, module GitHub.Data, ) where @@ -57,6 +59,25 @@ :: Name Owner -- ^ Repository owner -> Name Repo -- ^ Repository name -> Name User -- ^ Collaborator?- -> Request k Bool-isCollaboratorOnR user repo coll = StatusQuery statusOnlyOk $+ -> GenRequest 'MtStatus rw Bool+isCollaboratorOnR user repo coll = Query ["repos", toPathPart user, toPathPart repo, "collaborators", toPathPart coll] []++addCollaborator+ :: Auth+ -> Name Owner -- ^ Repository owner+ -> Name Repo -- ^ Repository name+ -> Name User -- ^ Collaborator to add+ -> IO (Either Error ())+addCollaborator auth owner repo coll =+ executeRequest auth $ addCollaboratorR owner repo coll++-- | Invite a user as a collaborator.+-- See <https://developer.github.com/v3/repos/collaborators/#add-user-as-a-collaborator>+addCollaboratorR+ :: Name Owner -- ^ Repository owner+ -> Name Repo -- ^ Repository name+ -> Name User -- ^ Collaborator to add+ -> GenRequest 'MtUnit 'RW ()+addCollaboratorR owner repo coll =+ Command Put ["repos", toPathPart owner, toPathPart repo, "collaborators", toPathPart coll] mempty
src/GitHub/Endpoints/Repos/Contents.hs view
@@ -98,14 +98,15 @@ archiveFor' auth user repo path ref = executeRequestMaybe auth $ archiveForR user repo path ref +-- | Get archive link.+-- See <https://developer.github.com/v3/repos/contents/#get-archive-link> archiveForR :: Name Owner -> Name Repo -> ArchiveFormat -- ^ The type of archive to retrieve -> Maybe Text -- ^ Git commit- -> Request k URI-archiveForR user repo format ref =- RedirectQuery $ Query path []+ -> GenRequest 'MtRedirect rw URI+archiveForR user repo format ref = Query path [] where path = ["repos", toPathPart user, toPathPart repo, toPathPart format] <> maybeToList ref
src/GitHub/Endpoints/Repos/Webhooks.hs view
@@ -1,4 +1,4 @@------------------------------------------------------------------------------+ ----------------------------------------------------------------------------- -- | -- License : BSD-3-Clause -- Maintainer : Oleg Grenrus <oleg.grenrus@iki.fi>@@ -83,8 +83,8 @@ -- | Test a push hook. -- See <https://developer.github.com/v3/repos/hooks/#test-a-push-hook>-testPushRepoWebhookR :: Name Owner -> Name Repo -> Id RepoWebhook -> Request 'RW Bool-testPushRepoWebhookR user repo hookId = StatusQuery statusOnlyOk $+testPushRepoWebhookR :: Name Owner -> Name Repo -> Id RepoWebhook -> GenRequest 'MtStatus 'RW Bool+testPushRepoWebhookR user repo hookId = Command Post (createWebhookOpPath user repo hookId $ Just "tests") (encode ()) pingRepoWebhook' :: Auth -> Name Owner -> Name Repo -> Id RepoWebhook -> IO (Either Error Bool)@@ -93,8 +93,8 @@ -- | Ping a hook. -- See <https://developer.github.com/v3/repos/hooks/#ping-a-hook>-pingRepoWebhookR :: Name Owner -> Name Repo -> Id RepoWebhook -> Request 'RW Bool-pingRepoWebhookR user repo hookId = StatusQuery statusOnlyOk $+pingRepoWebhookR :: Name Owner -> Name Repo -> Id RepoWebhook -> GenRequest 'MtStatus 'RW Bool+pingRepoWebhookR user repo hookId = Command Post (createWebhookOpPath user repo hookId $ Just "pings") (encode ()) deleteRepoWebhook' :: Auth -> Name Owner -> Name Repo -> Id RepoWebhook -> IO (Either Error ())
src/GitHub/Request.hs view
@@ -1,6 +1,9 @@-{-# LANGUAGE CPP #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE GADTs #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE MultiParamTypeClasses #-} ----------------------------------------------------------------------------- -- | -- License : BSD-3-Clause@@ -27,7 +30,8 @@ -- > githubRequest = singleton module GitHub.Request ( -- * Types- Request(..),+ Request,+ GenRequest (..), CommandMethod(..), toMethod, Paths,@@ -40,10 +44,11 @@ executeRequestMaybe, unsafeDropAuthRequirements, -- * Helpers+ Accept (..),+ ParseResponse (..), makeHttpRequest,- makeHttpSimpleRequest,- parseResponse, parseStatus,+ StatusMap, getNextUrl, performPagedRequest, ) where@@ -59,6 +64,7 @@ import Control.Monad.Trans.Except (ExceptT (..), runExceptT) import Data.Aeson (eitherDecode) import Data.List (find)+import Data.Tagged (Tagged (..)) import Network.HTTP.Client (HttpException (..), Manager, RequestBody (..), Response (..),@@ -70,6 +76,7 @@ import Network.HTTP.Types (Method, RequestHeaders, Status (..)) import Network.URI (URI, parseURIReference, relativeTo) +import qualified Data.ByteString as BS import qualified Data.ByteString.Lazy as LBS import qualified Data.Text as T import qualified Data.Text.Encoding as TE@@ -77,12 +84,13 @@ import qualified Network.HTTP.Client as HTTP import qualified Network.HTTP.Client.Internal as HTTP -import GitHub.Auth (Auth (..))-import GitHub.Data (Error (..))+import GitHub.Auth (Auth (..))+import GitHub.Data (Error (..))+import GitHub.Data.PullRequests (MergeResult (..)) import GitHub.Data.Request -- | Execute 'Request' in 'IO'-executeRequest :: Auth -> Request k a -> IO (Either Error a)+executeRequest :: ParseResponse mt a => Auth -> GenRequest mt rw a -> IO (Either Error a) executeRequest auth req = do manager <- newManager tlsManagerSettings executeRequestWithMgr manager auth req@@ -93,9 +101,10 @@ -- | Like 'executeRequest' but with provided 'Manager'. executeRequestWithMgr- :: Manager+ :: ParseResponse mt a+ => Manager -> Auth- -> Request k a+ -> GenRequest mt rw a -> IO (Either Error a) executeRequestWithMgr mgr auth req = runExceptT $ do httpReq <- makeHttpRequest (Just auth) req@@ -104,44 +113,31 @@ httpLbs' :: HTTP.Request -> ExceptT Error IO (Response LBS.ByteString) httpLbs' req' = lift (httpLbs req' mgr) `catch` onHttpException - performHttpReq :: HTTP.Request -> Request k b -> ExceptT Error IO b- performHttpReq httpReq (SimpleQuery sreq) =- performHttpReq' httpReq sreq- performHttpReq httpReq (HeaderQuery _ sreq) =- performHttpReq' httpReq sreq- performHttpReq httpReq (StatusQuery sm _) = do- res <- httpLbs' httpReq- parseStatus sm . responseStatus $ res- performHttpReq httpReq (RedirectQuery _) = do+ performHttpReq :: forall rw mt b. ParseResponse mt b => HTTP.Request -> GenRequest mt rw b -> ExceptT Error IO b+ performHttpReq httpReq Query {} = do res <- httpLbs' httpReq- parseRedirect (getUri httpReq) res+ unTagged (parseResponse httpReq res :: Tagged mt (ExceptT Error IO b)) - performHttpReq' :: FromJSON b => HTTP.Request -> SimpleRequest k b -> ExceptT Error IO b- performHttpReq' httpReq Query {} = do- res <- httpLbs' httpReq- parseResponse res- performHttpReq' httpReq (PagedQuery _ _ l) =- performPagedRequest httpLbs' predicate httpReq+ performHttpReq httpReq (PagedQuery _ _ l) =+ unTagged (performPagedRequest httpLbs' predicate httpReq :: Tagged mt (ExceptT Error IO b)) where predicate v = lessFetchCount (V.length v) l- performHttpReq' httpReq (Command m _ _) = do- res <- httpLbs' httpReq- case m of- Delete -> pure ()- Put' -> pure ()- _ -> parseResponse res + performHttpReq httpReq (Command _ _ _) = do+ res <- httpLbs' httpReq+ unTagged (parseResponse httpReq res :: Tagged mt (ExceptT Error IO b)) -- | Like 'executeRequest' but without authentication.-executeRequest' ::Request 'RO a -> IO (Either Error a)+executeRequest' :: ParseResponse mt a => GenRequest mt 'RO a -> IO (Either Error a) executeRequest' req = do manager <- newManager tlsManagerSettings executeRequestWithMgr' manager req -- | Like 'executeRequestWithMgr' but without authentication. executeRequestWithMgr'- :: Manager- -> Request 'RO a+ :: ParseResponse mt a+ => Manager+ -> GenRequest mt 'RO a -> IO (Either Error a) executeRequestWithMgr' mgr req = runExceptT $ do httpReq <- makeHttpRequest Nothing req@@ -150,40 +146,157 @@ httpLbs' :: HTTP.Request -> ExceptT Error IO (Response LBS.ByteString) httpLbs' req' = lift (httpLbs req' mgr) `catch` onHttpException - performHttpReq :: HTTP.Request -> Request 'RO b -> ExceptT Error IO b- performHttpReq httpReq (SimpleQuery sreq) =- performHttpReq' httpReq sreq- performHttpReq httpReq (HeaderQuery _ sreq) =- performHttpReq' httpReq sreq- performHttpReq httpReq (StatusQuery sm _) = do- res <- httpLbs' httpReq- parseStatus sm . responseStatus $ res- performHttpReq httpReq (RedirectQuery _) = do- res <- httpLbs' httpReq- parseRedirect (getUri httpReq) res-- performHttpReq' :: FromJSON b => HTTP.Request -> SimpleRequest 'RO b -> ExceptT Error IO b- performHttpReq' httpReq Query {} = do+ performHttpReq :: forall mt b. ParseResponse mt b => HTTP.Request -> GenRequest mt 'RO b -> ExceptT Error IO b+ performHttpReq httpReq Query {} = do res <- httpLbs' httpReq- parseResponse res- performHttpReq' httpReq (PagedQuery _ _ l) =- performPagedRequest httpLbs' predicate httpReq+ unTagged (parseResponse httpReq res :: Tagged mt (ExceptT Error IO b))+ performHttpReq httpReq (PagedQuery _ _ l) =+ unTagged (performPagedRequest httpLbs' predicate httpReq :: Tagged mt (ExceptT Error IO b)) where predicate v = lessFetchCount (V.length v) l -- | Helper for picking between 'executeRequest' and 'executeRequest''. -- -- The use is discouraged.-executeRequestMaybe :: Maybe Auth -> Request 'RO a -> IO (Either Error a)+executeRequestMaybe :: ParseResponse mt a => Maybe Auth -> GenRequest mt 'RO a -> IO (Either Error a) executeRequestMaybe = maybe executeRequest' executeRequest -- | Partial function to drop authentication need.-unsafeDropAuthRequirements :: Request k' a -> Request k a-unsafeDropAuthRequirements (SimpleQuery (Query ps qs)) =- SimpleQuery (Query ps qs)-unsafeDropAuthRequirements r =+unsafeDropAuthRequirements :: GenRequest mt rw' a -> GenRequest mt rw a+unsafeDropAuthRequirements (Query ps qs) = Query ps qs+unsafeDropAuthRequirements r = error $ "Trying to drop authenatication from" ++ show r +-------------------------------------------------------------------------------+-- Parse response+-------------------------------------------------------------------------------++class Accept (mt :: MediaType) where+ contentType :: Tagged mt BS.ByteString+ contentType = Tagged "application/json" -- default is JSON++ modifyRequest :: Tagged mt (HTTP.Request -> HTTP.Request)+ modifyRequest = Tagged id++class Accept mt => ParseResponse (mt :: MediaType) a where+ parseResponse :: MonadError Error m => HTTP.Request -> HTTP.Response LBS.ByteString -> Tagged mt (m a)++-------------------------------------------------------------------------------+-- JSON (+ star)+-------------------------------------------------------------------------------++-- | Parse API response.+--+-- @+-- parseResponse :: 'FromJSON' a => 'Response' 'LBS.ByteString' -> 'Either' 'Error' a+-- @+parseResponseJSON :: (FromJSON a, MonadError Error m) => Response LBS.ByteString -> m a+parseResponseJSON res = case eitherDecode (responseBody res) of+ Right x -> return x+ Left err -> throwError . ParseError . T.pack $ err++instance Accept 'MtJSON where+ contentType = Tagged "application/vnd.github.v3+json"++instance FromJSON a => ParseResponse 'MtJSON a where+ parseResponse _ res = Tagged (parseResponseJSON res)++instance Accept 'MtStar where+ contentType = Tagged "application/vnd.github.v3.star+json"++instance FromJSON a => ParseResponse 'MtStar a where+ parseResponse _ res = Tagged (parseResponseJSON res)++-------------------------------------------------------------------------------+-- Raw / Diff / Patch / Sha +-------------------------------------------------------------------------------++instance Accept 'MtRaw where contentType = Tagged "application/vnd.github.v3.raw"+instance Accept 'MtDiff where contentType = Tagged "application/vnd.github.v3.diff"+instance Accept 'MtPatch where contentType = Tagged "application/vnd.github.v3.patch"+instance Accept 'MtSha where contentType = Tagged "application/vnd.github.v3.sha"++instance a ~ LBS.ByteString => ParseResponse 'MtRaw a where parseResponse _ = Tagged . return . responseBody+instance a ~ LBS.ByteString => ParseResponse 'MtDiff a where parseResponse _ = Tagged . return . responseBody+instance a ~ LBS.ByteString => ParseResponse 'MtPatch a where parseResponse _ = Tagged . return . responseBody+instance a ~ LBS.ByteString => ParseResponse 'MtSha a where parseResponse _ = Tagged . return . responseBody++-------------------------------------------------------------------------------+-- Redirect+-------------------------------------------------------------------------------++instance Accept 'MtRedirect where+ modifyRequest = Tagged $ \req ->+ setRequestIgnoreStatus $ req { redirectCount = 0 }++instance b ~ URI => ParseResponse 'MtRedirect b where+ parseResponse req = Tagged . parseRedirect (getUri req)++-- | Helper for handling of 'RequestRedirect'.+--+-- @+-- parseRedirect :: 'Response' 'LBS.ByteString' -> 'Either' 'Error' a+-- @+parseRedirect :: MonadError Error m => URI -> Response LBS.ByteString -> m URI+parseRedirect originalUri rsp = do+ let status = responseStatus rsp+ when (statusCode status /= 302) $+ throwError $ ParseError $ "invalid status: " <> T.pack (show status)+ loc <- maybe noLocation return $ lookup "Location" $ responseHeaders rsp+ case parseURIReference $ T.unpack $ TE.decodeUtf8 loc of+ Nothing -> throwError $ ParseError $+ "location header does not contain a URI: " <> T.pack (show loc)+ Just uri -> return $ uri `relativeTo` originalUri+ where+ noLocation = throwError $ ParseError "no location header in response"++-------------------------------------------------------------------------------+-- Status+-------------------------------------------------------------------------------++instance Accept 'MtStatus where+ modifyRequest = Tagged setRequestIgnoreStatus++instance HasStatusMap a => ParseResponse 'MtStatus a where+ parseResponse _ = Tagged . parseStatus statusMap . responseStatus++type StatusMap a = [(Int, a)]++class HasStatusMap a where+ statusMap :: StatusMap a++instance HasStatusMap Bool where+ statusMap =+ [ (204, True)+ , (404, False)+ ]++instance HasStatusMap MergeResult where+ statusMap =+ [ (200, MergeSuccessful)+ , (405, MergeCannotPerform)+ , (409, MergeConflict)+ ]++-- | Helper for handling of 'RequestStatus'.+--+-- @+-- parseStatus :: 'StatusMap' a -> 'Status' -> 'Either' 'Error' a+-- @+parseStatus :: MonadError Error m => StatusMap a -> Status -> m a+parseStatus m (Status sci _) =+ maybe err return $ lookup sci m+ where+ err = throwError $ JsonError $ "invalid status: " <> T.pack (show sci)++-------------------------------------------------------------------------------+-- Unit+-------------------------------------------------------------------------------++instance Accept 'MtUnit+instance a ~ () => ParseResponse 'MtUnit a where+ parseResponse _ _ = Tagged (return ())+ ------------------------------------------------------------------------------ -- Tools ------------------------------------------------------------------------------@@ -194,38 +307,17 @@ -- * for 'Status', the 'Request' for underlying 'Request' is created, -- status checking is modifying accordingly. ----- @--- parseResponse :: 'Maybe' 'Auth' -> 'Request' k a -> 'Maybe' 'Request'--- @ makeHttpRequest- :: MonadThrow m+ :: forall mt rw a m. (MonadThrow m, Accept mt) => Maybe Auth- -> Request k a+ -> GenRequest mt rw a -> m HTTP.Request makeHttpRequest auth r = case r of- SimpleQuery req ->- makeHttpSimpleRequest auth req- StatusQuery sm req -> do- req' <- makeHttpSimpleRequest auth req- return $ setCheckStatus (Just sm) req'- HeaderQuery h req -> do- req' <- makeHttpSimpleRequest auth req- return $ req' { requestHeaders = h <> requestHeaders req' }- RedirectQuery req -> do- req' <- makeHttpSimpleRequest auth req- return $ setRequestIgnoreStatus $ req' { redirectCount = 0 }--makeHttpSimpleRequest- :: MonadThrow m- => Maybe Auth- -> SimpleRequest k a- -> m HTTP.Request-makeHttpSimpleRequest auth r = case r of Query paths qs -> do req <- parseUrl' $ url paths return $ setReqHeaders- . setCheckStatus Nothing+ . unTagged (modifyRequest :: Tagged mt (HTTP.Request -> HTTP.Request)) . setAuthRequest auth . setQueryString qs $ req@@ -233,7 +325,7 @@ req <- parseUrl' $ url paths return $ setReqHeaders- . setCheckStatus Nothing+ . unTagged (modifyRequest :: Tagged mt (HTTP.Request -> HTTP.Request)) . setAuthRequest auth . setQueryString qs $ req@@ -241,7 +333,7 @@ req <- parseUrl' $ url paths return $ setReqHeaders- . setCheckStatus Nothing+ . unTagged (modifyRequest :: Tagged mt (HTTP.Request -> HTTP.Request)) . setAuthRequest auth . setBody body . setMethod (toMethod m)@@ -266,15 +358,15 @@ reqHeaders :: RequestHeaders reqHeaders = maybe [] getOAuthHeader auth- <> [("User-Agent", "github.hs/0.7.4")]- <> [("Accept", "application/vnd.github.preview")]+ <> [("User-Agent", "github.hs/0.21")] -- Version+ <> [("Accept", unTagged (contentType :: Tagged mt BS.ByteString))] setBody :: LBS.ByteString -> HTTP.Request -> HTTP.Request setBody body req = req { requestBody = RequestBodyLBS body } setAuthRequest :: Maybe Auth -> HTTP.Request -> HTTP.Request setAuthRequest (Just (BasicAuth user pass)) = applyBasicAuth user pass- setAuthRequest _ = id+ setAuthRequest _ = id getOAuthHeader :: Auth -> RequestHeaders getOAuthHeader (OAuth token) = [("Authorization", "token " <> token)]@@ -295,45 +387,6 @@ relNextLinkParam :: (LinkParam, Text) relNextLinkParam = (Rel, "next") --- | Parse API response.------ @--- parseResponse :: 'FromJSON' a => 'Response' 'LBS.ByteString' -> 'Either' 'Error' a--- @-parseResponse :: (FromJSON a, MonadError Error m) => Response LBS.ByteString -> m a-parseResponse res = case eitherDecode (responseBody res) of- Right x -> return x- Left err -> throwError . ParseError . T.pack $ err---- | Helper for handling of 'RequestStatus'.------ @--- parseStatus :: 'StatusMap' a -> 'Status' -> 'Either' 'Error' a--- @-parseStatus :: MonadError Error m => StatusMap a -> Status -> m a-parseStatus m (Status sci _) =- maybe err return $ lookup sci m- where- err = throwError $ JsonError $ "invalid status: " <> T.pack (show sci)---- | Helper for handling of 'RequestRedirect'.------ @--- parseRedirect :: 'Response' 'LBS.ByteString' -> 'Either' 'Error' a--- @-parseRedirect :: MonadError Error m => URI -> Response LBS.ByteString -> m URI-parseRedirect originalUri rsp = do- let status = responseStatus rsp- when (statusCode status /= 302) $- throwError $ ParseError $ "invalid status: " <> T.pack (show status)- loc <- maybe noLocation return $ lookup "Location" $ responseHeaders rsp- case parseURIReference $ T.unpack $ TE.decodeUtf8 loc of- Nothing -> throwError $ ParseError $- "location header does not contain a URI: " <> T.pack (show loc)- Just uri -> return $ uri `relativeTo` originalUri- where- noLocation = throwError $ ParseError "no location header in response"- -- | Helper for making paginated requests. Responses, @a@ are combined monoidally. -- -- @@@ -344,14 +397,14 @@ -- -> 'ExceptT' 'Error' 'IO' a -- @ performPagedRequest- :: forall a m. (FromJSON a, Semigroup a, MonadCatch m, MonadError Error m)+ :: forall a m mt. (ParseResponse mt a, Semigroup a, MonadCatch m, MonadError Error m) => (HTTP.Request -> m (Response LBS.ByteString)) -- ^ `httpLbs` analogue -> (a -> Bool) -- ^ predicate to continue iteration -> HTTP.Request -- ^ initial request- -> m a-performPagedRequest httpLbs' predicate initReq = do+ -> Tagged mt (m a)+performPagedRequest httpLbs' predicate initReq = Tagged $ do res <- httpLbs' initReq- m <- parseResponse res+ m <- unTagged (parseResponse initReq res :: Tagged mt (m a)) go m res initReq where go :: a -> Response LBS.ByteString -> HTTP.Request -> m a@@ -360,30 +413,13 @@ (True, Just uri) -> do req' <- HTTP.setUri req uri res' <- httpLbs' req'- m <- parseResponse res'+ m <- unTagged (parseResponse req' res' :: Tagged mt (m a)) go (acc <> m) res' req' (_, _) -> return acc ------------------------------------------------------------------------------- -- Internal ----------------------------------------------------------------------------------setCheckStatus :: Maybe (StatusMap a) -> HTTP.Request -> HTTP.Request-setCheckStatus sm req = req { HTTP.checkResponse = successOrMissing sm }--successOrMissing :: Maybe (StatusMap a) -> HTTP.Request -> HTTP.Response HTTP.BodyReader -> IO ()-successOrMissing sm _req res- | check = pure ()- | otherwise = do- chunk <- HTTP.brReadSome (HTTP.responseBody res) 1024- let res' = fmap (const ()) res- HTTP.throwHttp $ HTTP.StatusCodeException res' (LBS.toStrict chunk)- where- Status sci _ = HTTP.responseStatus res- check = case sm of- Nothing -> 200 <= sci && sci < 300- Just sm' -> sci `elem` map fst sm' onHttpException :: MonadError Error m => HttpException -> m a onHttpException = throwError . HTTPError