packages feed

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 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