github 0.15.0 → 0.16.0
raw patch · 13 files changed
+356/−14 lines, 13 filesdep ~basedep ~binarydep ~timePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base, binary, time
API changes (from Hackage documentation)
+ GitHub: latestReleaseR :: Name Owner -> Name Repo -> Request k Release
+ GitHub: releaseByTagNameR :: Name Owner -> Name Repo -> Text -> Request k Release
+ GitHub: releaseR :: Name Owner -> Name Repo -> Id Release -> Request k Release
+ GitHub: releasesR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector Release)
+ GitHub: userEventsR :: Name User -> FetchCount -> Request RO (Vector Event)
+ GitHub.Data.Options: StateBlocked :: MergeableState
+ GitHub.Data.PullRequests: [editPullRequestBase] :: EditPullRequest -> !(Maybe Text)
+ GitHub.Data.PullRequests: [editPullRequestMaintainerCanModify] :: EditPullRequest -> !(Maybe Bool)
+ 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: [releaseAssetBrowserDownloadUrl] :: ReleaseAsset -> !Text
+ GitHub.Data.Releases: [releaseAssetContentType] :: ReleaseAsset -> !Text
+ GitHub.Data.Releases: [releaseAssetCreatedAt] :: ReleaseAsset -> !UTCTime
+ GitHub.Data.Releases: [releaseAssetDownloadCount] :: ReleaseAsset -> !Int
+ GitHub.Data.Releases: [releaseAssetId] :: ReleaseAsset -> !(Id ReleaseAsset)
+ GitHub.Data.Releases: [releaseAssetLabel] :: ReleaseAsset -> !(Maybe Text)
+ GitHub.Data.Releases: [releaseAssetName] :: ReleaseAsset -> !Text
+ GitHub.Data.Releases: [releaseAssetSize] :: ReleaseAsset -> !Int
+ GitHub.Data.Releases: [releaseAssetState] :: ReleaseAsset -> !Text
+ GitHub.Data.Releases: [releaseAssetUpdatedAt] :: ReleaseAsset -> !UTCTime
+ GitHub.Data.Releases: [releaseAssetUploader] :: ReleaseAsset -> !SimpleUser
+ GitHub.Data.Releases: [releaseAssetUrl] :: ReleaseAsset -> !URL
+ GitHub.Data.Releases: [releaseAssets] :: Release -> !(Vector ReleaseAsset)
+ GitHub.Data.Releases: [releaseAssetsurl] :: Release -> !URL
+ GitHub.Data.Releases: [releaseAuthor] :: Release -> !SimpleUser
+ GitHub.Data.Releases: [releaseBody] :: Release -> !Text
+ GitHub.Data.Releases: [releaseCreatedAt] :: Release -> !UTCTime
+ GitHub.Data.Releases: [releaseDraft] :: Release -> !Bool
+ GitHub.Data.Releases: [releaseHtmlUrl] :: Release -> !URL
+ GitHub.Data.Releases: [releaseId] :: Release -> !(Id Release)
+ GitHub.Data.Releases: [releaseName] :: Release -> !Text
+ GitHub.Data.Releases: [releasePrerelease] :: Release -> !Bool
+ GitHub.Data.Releases: [releasePublishedAt] :: Release -> !(Maybe UTCTime)
+ GitHub.Data.Releases: [releaseTagName] :: Release -> !Text
+ GitHub.Data.Releases: [releaseTarballUrl] :: Release -> !URL
+ GitHub.Data.Releases: [releaseTargetCommitish] :: Release -> !Text
+ GitHub.Data.Releases: [releaseUploadUrl] :: Release -> !URL
+ GitHub.Data.Releases: [releaseUrl] :: Release -> !URL
+ GitHub.Data.Releases: [releaseZipballUrl] :: Release -> !URL
+ GitHub.Data.Releases: data Release
+ GitHub.Data.Releases: data ReleaseAsset
+ GitHub.Data.Releases: instance Control.DeepSeq.NFData GitHub.Data.Releases.Release
+ GitHub.Data.Releases: instance Control.DeepSeq.NFData GitHub.Data.Releases.ReleaseAsset
+ GitHub.Data.Releases: instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Releases.Release
+ GitHub.Data.Releases: instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Releases.ReleaseAsset
+ GitHub.Data.Releases: instance Data.Binary.Class.Binary GitHub.Data.Releases.Release
+ GitHub.Data.Releases: instance Data.Binary.Class.Binary GitHub.Data.Releases.ReleaseAsset
+ GitHub.Data.Releases: instance Data.Data.Data GitHub.Data.Releases.Release
+ GitHub.Data.Releases: instance Data.Data.Data GitHub.Data.Releases.ReleaseAsset
+ GitHub.Data.Releases: instance GHC.Classes.Eq GitHub.Data.Releases.Release
+ GitHub.Data.Releases: instance GHC.Classes.Eq GitHub.Data.Releases.ReleaseAsset
+ GitHub.Data.Releases: instance GHC.Classes.Ord GitHub.Data.Releases.Release
+ GitHub.Data.Releases: instance GHC.Classes.Ord GitHub.Data.Releases.ReleaseAsset
+ GitHub.Data.Releases: instance GHC.Generics.Generic GitHub.Data.Releases.Release
+ GitHub.Data.Releases: instance GHC.Generics.Generic GitHub.Data.Releases.ReleaseAsset
+ GitHub.Data.Releases: instance GHC.Show.Show GitHub.Data.Releases.Release
+ GitHub.Data.Releases: instance GHC.Show.Show GitHub.Data.Releases.ReleaseAsset
+ GitHub.Endpoints.Activity.Events: userEventsR :: Name User -> FetchCount -> Request RO (Vector Event)
+ GitHub.Endpoints.PullRequests: pullRequestsFor' :: Maybe Auth -> Name Owner -> Name Repo -> IO (Either Error (Vector SimplePullRequest))
+ GitHub.Endpoints.Repos: forkExistingRepoR :: Name Owner -> Name Repo -> Maybe (Name Owner) -> Request RW Repo
+ GitHub.Endpoints.Repos.Releases: latestRelease :: Name Owner -> Name Repo -> IO (Either Error Release)
+ GitHub.Endpoints.Repos.Releases: latestRelease' :: Maybe Auth -> Name Owner -> Name Repo -> IO (Either Error Release)
+ GitHub.Endpoints.Repos.Releases: latestReleaseR :: Name Owner -> Name Repo -> Request k Release
+ GitHub.Endpoints.Repos.Releases: release :: Name Owner -> Name Repo -> Id Release -> IO (Either Error Release)
+ GitHub.Endpoints.Repos.Releases: release' :: Maybe Auth -> Name Owner -> Name Repo -> Id Release -> IO (Either Error Release)
+ GitHub.Endpoints.Repos.Releases: releaseByTagName :: Name Owner -> Name Repo -> Text -> IO (Either Error Release)
+ GitHub.Endpoints.Repos.Releases: releaseByTagName' :: Maybe Auth -> Name Owner -> Name Repo -> Text -> IO (Either Error Release)
+ GitHub.Endpoints.Repos.Releases: releaseByTagNameR :: Name Owner -> Name Repo -> Text -> Request k Release
+ GitHub.Endpoints.Repos.Releases: releaseR :: Name Owner -> Name Repo -> Id Release -> Request k Release
+ GitHub.Endpoints.Repos.Releases: releases :: Name Owner -> Name Repo -> IO (Either Error (Vector Release))
+ GitHub.Endpoints.Repos.Releases: releases' :: Maybe Auth -> Name Owner -> Name Repo -> IO (Either Error (Vector Release))
+ GitHub.Endpoints.Repos.Releases: releasesR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector Release)
- GitHub.Data.PullRequests: EditPullRequest :: !(Maybe Text) -> !(Maybe Text) -> !(Maybe IssueState) -> EditPullRequest
+ GitHub.Data.PullRequests: EditPullRequest :: !(Maybe Text) -> !(Maybe Text) -> !(Maybe IssueState) -> !(Maybe Text) -> !(Maybe Bool) -> EditPullRequest
Files
- CHANGELOG.md +8/−0
- github.cabal +13/−9
- spec/GitHub/EventsSpec.hs +36/−0
- spec/GitHub/ReleasesSpec.hs +54/−0
- src/GitHub.hs +8/−1
- src/GitHub/Data.hs +2/−0
- src/GitHub/Data/Options.hs +4/−1
- src/GitHub/Data/PullRequests.hs +13/−3
- src/GitHub/Data/Releases.hs +85/−0
- src/GitHub/Endpoints/Activity/Events.hs +7/−0
- src/GitHub/Endpoints/PullRequests.hs +8/−0
- src/GitHub/Endpoints/Repos.hs +8/−0
- src/GitHub/Endpoints/Repos/Releases.hs +110/−0
CHANGELOG.md view
@@ -1,3 +1,11 @@+Changes for 0.16.0+- Add support for `mergeable_state = "blocked".`+- Fix HTTP status code of merge PR+- Supports newest versions of dependencies+- user events+- release endpoints+- forkExistingRepo+ Changes for 0.15.0 - Reworked `PullRequest` (notably `pullRequestsFor`)
github.cabal view
@@ -1,5 +1,5 @@ name: github-version: 0.15.0+version: 0.16.0 synopsis: Access to the GitHub API, v3. description: The GitHub API provides programmatic access to the full@@ -25,7 +25,7 @@ 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.1+tested-with: GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.1 cabal-version: >=1.10 extra-source-files: README.md,@@ -81,6 +81,7 @@ GitHub.Data.Name GitHub.Data.Options GitHub.Data.PullRequests+ GitHub.Data.Releases GitHub.Data.Repos GitHub.Data.Request GitHub.Data.Search@@ -111,20 +112,21 @@ GitHub.Endpoints.Repos.Collaborators GitHub.Endpoints.Repos.Comments GitHub.Endpoints.Repos.Commits+ GitHub.Endpoints.Repos.DeployKeys GitHub.Endpoints.Repos.Forks+ GitHub.Endpoints.Repos.Releases GitHub.Endpoints.Repos.Webhooks- GitHub.Endpoints.Repos.DeployKeys GitHub.Endpoints.Search GitHub.Endpoints.Users GitHub.Endpoints.Users.Followers GitHub.Request -- Packages needed in order to build this package.- build-depends: base >=4.7 && <4.10,- aeson >=0.7.0.6 && <1.1,+ build-depends: base >=4.7 && <4.11,+ aeson >=0.7.0.6 && <1.3, base-compat >=0.9.1 && <0.10, base16-bytestring >=0.1.1.6 && <0.2,- binary >=0.7.1.0 && <0.9,+ binary >=0.7.1.0 && <0.10, binary-orphans >=0.1.0.0 && <0.2, byteable >=0.1.1 && <0.2, bytestring >=0.10.4.0 && <0.11,@@ -143,12 +145,12 @@ network-uri >=2.6.0.3 && <2.7, semigroups >=0.16.2.2 && <0.19, text >=1.2.0.6 && <1.3,- time >=1.4 && <1.7,+ time >=1.4 && <1.9, transformers >=0.3.0.0 && <0.6, transformers-compat >=0.4.0.3 && <0.6, unordered-containers >=0.2 && <0.3,- vector >=0.10.12.3 && <0.12,- vector-instances >=3.3.0.1 && <3.4,+ vector >=0.10.12.3 && <0.13,+ vector-instances >=3.3.0.1 && <3.5, tls >=1.3.5 @@ -169,9 +171,11 @@ GitHub.OrganizationsSpec GitHub.IssuesSpec GitHub.PullRequestsSpec+ GitHub.ReleasesSpec GitHub.ReposSpec GitHub.SearchSpec GitHub.UsersSpec+ GitHub.EventsSpec main-is: Spec.hs ghc-options: -Wall build-depends: base,
+ spec/GitHub/EventsSpec.hs view
@@ -0,0 +1,36 @@+{-# LANGUAGE OverloadedStrings #-}+module GitHub.EventsSpec where++import Data.Either (isRight)+import Data.String (fromString)+import Prelude ()+import Prelude.Compat+import System.Environment (lookupEnv)+import Test.Hspec (Spec, describe, it, shouldSatisfy,+ pendingWith)++import qualified GitHub+import GitHub.Data (Auth(..))++fromRightS :: Show a => Either a b -> b+fromRightS (Left xs) = error $ "Should be Right" ++ show xs+fromRightS (Right xs) = xs++withAuth :: (Auth -> IO ()) -> IO ()+withAuth action = do+ mtoken <- lookupEnv "GITHUB_TOKEN"+ case mtoken of+ Nothing -> pendingWith "no GITHUB_TOKEN"+ Just token -> action (OAuth $ fromString token)++spec :: Spec+spec = do+ describe "repositoryEventsR" $ do+ it "returns non empty list of events" $ shouldSucceed $+ GitHub.repositoryEventsR "phadej" "github" 1+ describe "userEventsR" $ do+ it "returns non empty list of events" $ shouldSucceed $ GitHub.userEventsR "phadej" 1 + where shouldSucceed f = withAuth $ \auth -> do+ cs <- GitHub.executeRequest auth $ f+ cs `shouldSatisfy` isRight+ length (fromRightS cs) `shouldSatisfy` (> 1)
+ spec/GitHub/ReleasesSpec.hs view
@@ -0,0 +1,54 @@+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TemplateHaskell #-}+module GitHub.ReleasesSpec where++import qualified GitHub++import GitHub.Auth (Auth (..))+import GitHub.Endpoints.Repos.Releases+ (Release (..), latestReleaseR, releaseByTagNameR, releaseR, releasesR)+import GitHub.Request (executeRequest)++import Data.Either.Compat (isRight)+import Data.Proxy (Proxy (..))+import Data.String (fromString)+import System.Environment (lookupEnv)+import Test.Hspec+ (Spec, describe, it, pendingWith, shouldBe, shouldSatisfy)++import qualified Data.Vector as V++fromRightS :: Show a => Either a b -> b+fromRightS (Right b) = b+fromRightS (Left a) = error $ "Expected a Right and got a Left" ++ show a++withAuth :: (Auth -> IO ()) -> IO ()+withAuth action = do+ mtoken <- lookupEnv "GITHUB_TOKEN"+ case mtoken of+ Nothing -> pendingWith "no GITHUB_TOKEN"+ Just token -> action (OAuth $ fromString token)++spec :: Spec+spec = do+ let v154Id = GitHub.mkId (Proxy :: Proxy Release) 5254449+ v154Text = "v1.5.4"+ describe "releasesR" $ do+ it "works" $ withAuth $ \auth -> do+ rs <- executeRequest auth $ releasesR "calleerlandsson" "pick" GitHub.FetchAll+ rs `shouldSatisfy` isRight+ V.length (fromRightS rs) `shouldSatisfy` (> 14)+ describe "releaseR" $ do+ it "works" $ withAuth $ \auth -> do+ rs <- executeRequest auth $ releaseR "calleerlandsson" "pick" v154Id+ rs `shouldSatisfy` isRight+ releaseTagName (fromRightS rs)`shouldBe` v154Text+ describe "latestReleaseR" $ do+ it "works" $ withAuth $ \auth -> do+ rs <- executeRequest auth $ latestReleaseR "calleerlandsson" "pick"+ rs `shouldSatisfy` isRight+ describe "releaseByTagNameR" $ do+ it "works" $ withAuth $ \auth -> do+ rs <- executeRequest auth $ releaseByTagNameR "calleerlandsson" "pick" v154Text+ rs `shouldSatisfy` isRight+ releaseId (fromRightS rs)`shouldBe` v154Id
src/GitHub.hs view
@@ -18,7 +18,7 @@ -- ** Events -- | See https://developer.github.com/v3/activity/events/#events repositoryEventsR,-+ userEventsR, -- ** Starring -- | See <https://developer.github.com/v3/activity/starring/> --@@ -270,6 +270,12 @@ pingRepoWebhookR, deleteRepoWebhookR, + -- * Releases+ releasesR,+ releaseR,+ latestReleaseR,+ releaseByTagNameR,+ -- * Search -- | See <https://developer.github.com/v3/search/> --@@ -334,6 +340,7 @@ import GitHub.Endpoints.Repos.Comments import GitHub.Endpoints.Repos.Commits import GitHub.Endpoints.Repos.Forks+import GitHub.Endpoints.Repos.Releases import GitHub.Endpoints.Repos.Webhooks import GitHub.Endpoints.Search import GitHub.Endpoints.Users
src/GitHub/Data.hs view
@@ -43,6 +43,7 @@ module GitHub.Data.Milestone, module GitHub.Data.Options, module GitHub.Data.PullRequests,+ module GitHub.Data.Releases, module GitHub.Data.Repos, module GitHub.Data.Request, module GitHub.Data.Search,@@ -69,6 +70,7 @@ import GitHub.Data.Name import GitHub.Data.Options import GitHub.Data.PullRequests+import GitHub.Data.Releases import GitHub.Data.Repos import GitHub.Data.Request import GitHub.Data.Search
src/GitHub/Data/Options.hs view
@@ -95,6 +95,7 @@ | StateClean | StateDirty | StateUnstable+ | StateBlocked deriving (Eq, Ord, Show, Enum, Bounded, Generic, Typeable, Data) @@ -103,13 +104,15 @@ toJSON StateClean = String "clean" toJSON StateDirty = String "dirty" toJSON StateUnstable = String "unstable"+ toJSON StateBlocked = String "blocked" instance FromJSON MergeableState where parseJSON (String "unknown") = pure StateUnknown parseJSON (String "clean") = pure StateClean parseJSON (String "dirty") = pure StateDirty parseJSON (String "unstable") = pure StateUnstable- parseJSON v = typeMismatch "MergeableState" v+ parseJSON (String "blocked") = pure StateBlocked+ parseJSON v = typeMismatch "MergeableState" v instance NFData MergeableState where rnf = genericRnf instance Binary MergeableState
src/GitHub/Data/PullRequests.hs view
@@ -90,6 +90,9 @@ { editPullRequestTitle :: !(Maybe Text) , editPullRequestBody :: !(Maybe Text) , editPullRequestState :: !(Maybe IssueState)+ , editPullRequestBase :: !(Maybe Text)+ , editPullRequestMaintainerCanModify+ :: !(Maybe Bool) } deriving (Show, Generic) @@ -198,8 +201,15 @@ <*> o .: "id" instance ToJSON EditPullRequest where- toJSON (EditPullRequest t b s) =- object $ filter notNull [ "title" .= t, "body" .= b, "state" .= s ]+ toJSON (EditPullRequest t b s base mcm) =+ object $ filter notNull+ [ "title" .= t+ , "body" .= b+ , "state" .= s+ , "base" .= base+ , "maintainer_can_modify"+ .= mcm+ ] where notNull (_, Null) = False notNull (_, _) = True@@ -299,7 +309,7 @@ statusMerge :: StatusMap MergeResult statusMerge =- [ (204, MergeSuccessful)+ [ (200, MergeSuccessful) , (405, MergeCannotPerform) , (409, MergeConflict) ]
+ src/GitHub/Data/Releases.hs view
@@ -0,0 +1,85 @@+module GitHub.Data.Releases where++import GitHub.Data.Definitions+import GitHub.Data.Id (Id)+import GitHub.Data.URL (URL)+import GitHub.Internal.Prelude+import Prelude ()++data Release = Release+ { releaseUrl :: !URL+ , releaseHtmlUrl :: !URL+ , releaseAssetsurl :: !URL+ , releaseUploadUrl :: !URL+ , releaseTarballUrl :: !URL+ , releaseZipballUrl :: !URL+ , releaseId :: !(Id Release)+ , releaseTagName :: !Text+ , releaseTargetCommitish :: !Text+ , releaseName :: !Text+ , releaseBody :: !Text+ , releaseDraft :: !Bool+ , releasePrerelease :: !Bool+ , releaseCreatedAt :: !UTCTime+ , releasePublishedAt :: !(Maybe UTCTime)+ , releaseAuthor :: !SimpleUser+ , releaseAssets :: !(Vector ReleaseAsset)+ }+ deriving (Show, Data, Typeable, Eq, Ord, Generic)++instance FromJSON Release where+ parseJSON = withObject "Event" $ \o -> Release+ <$> o .: "url"+ <*> o .: "html_url"+ <*> o .: "assets_url"+ <*> o .: "upload_url"+ <*> o .: "tarball_url"+ <*> o .: "zipball_url"+ <*> o .: "id"+ <*> o .: "tag_name"+ <*> o .: "target_commitish"+ <*> o .: "name"+ <*> o .: "body"+ <*> o .: "draft"+ <*> o .: "prerelease"+ <*> o .: "created_at"+ <*> o .:? "published_at"+ <*> o .: "author"+ <*> o .: "assets"++instance NFData Release where rnf = genericRnf+instance Binary Release++data ReleaseAsset = ReleaseAsset+ { releaseAssetUrl :: !URL+ , releaseAssetBrowserDownloadUrl :: !Text+ , releaseAssetId :: !(Id ReleaseAsset)+ , releaseAssetName :: !Text+ , releaseAssetLabel :: !(Maybe Text)+ , releaseAssetState :: !Text+ , releaseAssetContentType :: !Text+ , releaseAssetSize :: !Int+ , releaseAssetDownloadCount :: !Int+ , releaseAssetCreatedAt :: !UTCTime+ , releaseAssetUpdatedAt :: !UTCTime+ , releaseAssetUploader :: !SimpleUser+ }+ deriving (Show, Data, Typeable, Eq, Ord, Generic)++instance FromJSON ReleaseAsset where+ parseJSON = withObject "Event" $ \o -> ReleaseAsset+ <$> o .: "url"+ <*> o .: "browser_download_url"+ <*> o .: "id"+ <*> o .: "name"+ <*> o .:? "label"+ <*> o .: "state"+ <*> o .: "content_type"+ <*> o .: "size"+ <*> o .: "download_count"+ <*> o .: "created_at"+ <*> o .: "updated_at"+ <*> o .: "uploader"++instance NFData ReleaseAsset where rnf = genericRnf+instance Binary ReleaseAsset
src/GitHub/Endpoints/Activity/Events.hs view
@@ -7,6 +7,7 @@ module GitHub.Endpoints.Activity.Events ( -- * Events repositoryEventsR,+ userEventsR, module GitHub.Data, ) where @@ -19,3 +20,9 @@ repositoryEventsR :: Name Owner -> Name Repo -> FetchCount -> Request 'RO (Vector Event) repositoryEventsR user repo = pagedQuery ["repos", toPathPart user, toPathPart repo, "events"] []++-- | List user public events.+-- See <https://developer.github.com/v3/activity/events/#list-public-events-performed-by-a-user>+userEventsR :: Name User -> FetchCount -> Request 'RO (Vector Event)+userEventsR user =+ pagedQuery ["users", toPathPart user, "events", "public"] []
src/GitHub/Endpoints/PullRequests.hs view
@@ -7,6 +7,7 @@ -- <http://developer.github.com/v3/pulls/>. module GitHub.Endpoints.PullRequests ( pullRequestsFor,+ pullRequestsFor', pullRequestsForR, pullRequest', pullRequest,@@ -39,6 +40,13 @@ pullRequestsFor :: Name Owner -> Name Repo -> IO (Either Error (Vector SimplePullRequest)) pullRequestsFor user repo = executeRequest' $ pullRequestsForR user repo mempty FetchAll++-- | All open pull requests for the repo, by owner and repo name.+--+-- > pullRequestsFor "rails" "rails"+pullRequestsFor' :: Maybe Auth -> Name Owner -> Name Repo -> IO (Either Error (Vector SimplePullRequest))+pullRequestsFor' auth user repo =+ executeRequestMaybe auth $ pullRequestsForR user repo mempty FetchAll -- | List pull requests. -- See <https://developer.github.com/v3/pulls/#list-pull-requests>
src/GitHub/Endpoints/Repos.hs view
@@ -42,6 +42,7 @@ createRepoR, createOrganizationRepo', createOrganizationRepoR,+ forkExistingRepoR, -- ** Edit editRepo,@@ -171,6 +172,13 @@ createRepoR :: NewRepo -> Request 'RW Repo createRepoR nrepo = command Post ["user", "repos"] (encode nrepo)++-- | Fork an existing repository.+-- See <https://developer.github.com/v3/repos/forks/#create-a-fork>+-- TODO: The third paramater (an optional Organisation) is not used yet.+forkExistingRepoR :: Name Owner -> Name Repo -> Maybe (Name Owner) -> Request 'RW Repo+forkExistingRepoR owner repo _morg =+ command Post ["repos", toPathPart owner, toPathPart repo, "forks" ] mempty -- | Create a new repository for an organization. --
+ src/GitHub/Endpoints/Repos/Releases.hs view
@@ -0,0 +1,110 @@+-- The Release API, as described at+-- <https://developer.github.com/v3/repos/releases/>.+module GitHub.Endpoints.Repos.Releases (+ releases,+ releases',+ releasesR,+ release,+ release',+ releaseR,+ latestRelease,+ latestRelease',+ latestReleaseR,+ releaseByTagName,+ releaseByTagName',+ releaseByTagNameR,+ module GitHub.Data,+ ) where++import GitHub.Data+import GitHub.Internal.Prelude+import GitHub.Request+import Prelude ()++-- | All releases for the given repo.+--+-- > releases "calleerlandsson" "pick"+releases :: Name Owner -> Name Repo -> IO (Either Error (Vector Release))+releases = releases' Nothing++-- | All releases for the given repo with authentication.+--+-- > releases' (Just (User (user, password))) "calleerlandsson" "pick"+releases' :: Maybe Auth -> Name Owner -> Name Repo -> IO (Either Error (Vector Release))+releases' auth user repo =+ executeRequestMaybe auth $ releasesR user repo FetchAll++-- | List releases for a repository.+-- See <https://developer.github.com/v3/repos/releases/#list-releases-for-a-repository>+releasesR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector Release)+releasesR user repo =+ pagedQuery ["repos", toPathPart user, toPathPart repo, "releases"] []++-- | Query a single release.+--+-- > release "calleerlandsson" "pick"+release :: Name Owner -> Name Repo -> Id Release -> IO (Either Error Release)+release = release' Nothing++-- | Query a single release with authentication.+--+-- > release' (Just (User (user, password))) "calleerlandsson" "pick"+release' :: Maybe Auth -> Name Owner -> Name Repo -> Id Release -> IO (Either Error Release)+release' auth user repo reqReleaseId =+ executeRequestMaybe auth $ releaseR user repo reqReleaseId++-- | Get a single release.+-- See <https://developer.github.com/v3/repos/releases/#get-a-single-release>+releaseR :: Name Owner -> Name Repo -> Id Release -> Request k Release+releaseR user repo reqReleaseId =+ query ["repos", toPathPart user, toPathPart repo, "releases", toPathPart reqReleaseId ] []++-- | Query latest release.+--+-- > latestRelease "calleerlandsson" "pick"+latestRelease :: Name Owner -> Name Repo -> IO (Either Error Release)+latestRelease = latestRelease' Nothing++-- | Query latest release with authentication.+--+-- > latestRelease' (Just (User (user, password))) "calleerlandsson" "pick"+latestRelease' :: Maybe Auth -> Name Owner -> Name Repo -> IO (Either Error Release)+latestRelease' auth user repo =+ executeRequestMaybe auth $ latestReleaseR user repo++-- | Get the latest release.+-- See <https://developer.github.com/v3/repos/releases/#get-the-latest-release>+latestReleaseR :: Name Owner -> Name Repo -> Request k Release+latestReleaseR user repo =+ query ["repos", toPathPart user, toPathPart repo, "releases", "latest" ] []++-- | Query release by tag name.+--+-- > releaseByTagName "calleerlandsson" "pick"+releaseByTagName :: Name Owner -> Name Repo -> Text -> IO (Either Error Release)+releaseByTagName = releaseByTagName' Nothing++-- | Query release by tag name with authentication.+--+-- > releaseByTagName' (Just (User (user, password))) "calleerlandsson" "pick"+releaseByTagName' :: Maybe Auth -> Name Owner -> Name Repo -> Text -> IO (Either Error Release)+releaseByTagName' auth user repo reqTagName =+ executeRequestMaybe auth $ releaseByTagNameR user repo reqTagName++-- | Get a release by tag name+-- See <https://developer.github.com/v3/repos/releases/#get-a-release-by-tag-name>+releaseByTagNameR :: Name Owner -> Name Repo -> Text -> Request k Release+releaseByTagNameR user repo reqTagName =+ query ["repos", toPathPart user, toPathPart repo, "releases", "tags" , reqTagName ] []++{-+-- TODO: implement the following:+ https://developer.github.com/v3/repos/releases/#create-a-release+ https://developer.github.com/v3/repos/releases/#edit-a-release+ https://developer.github.com/v3/repos/releases/#delete-a-release+ https://developer.github.com/v3/repos/releases/#list-assets-for-a-release+ https://developer.github.com/v3/repos/releases/#upload-a-release-asset+ https://developer.github.com/v3/repos/releases/#get-a-single-release-asset+ https://developer.github.com/v3/repos/releases/#edit-a-release-asset+ https://developer.github.com/v3/repos/releases/#delete-a-release-asset+-}