Maintainer | Brandon Chinn <brandon@leapyear.io> |
---|---|
Stability | experimental |
Portability | portable |
Safe Haskell | None |
Language | Haskell2010 |
Defines MonadGitHubREST
that gives a monad m
the capability to query the GitHub REST API.
Synopsis
- class Monad m => MonadGitHubREST m where
- queryGitHubPage' :: FromJSON a => GHEndpoint -> m (Either (Text, Text) (a, PageLinks))
- queryGitHubPage :: FromJSON a => GHEndpoint -> m (a, PageLinks)
- queryGitHub :: FromJSON a => GHEndpoint -> m a
- queryGitHubAll :: (FromJSON a, Monoid a) => GHEndpoint -> m a
- queryGitHub_ :: GHEndpoint -> m ()
Documentation
class Monad m => MonadGitHubREST m where Source #
A type class for monads that can query the GitHub REST API.
Example:
-- create the "foo" branch queryGitHub GHEndpoint { method = POST , endpoint = "/repos/:owner/:repo/git/refs" , endpointVals = [ "owner" := "alice" , "repo" := "my-project" ] , ghData = [ "ref" := "refs/heads/foo" , "sha" := "1234567890abcdef" ] }
It's recommended that you create functions for the API endpoints you're using:
deleteBranch branch = queryGitHub GHEndpoint { method = DELETE , endpoint = "/repos/:owner/:repo/git/refs/:ref" , endpointVals = [ "owner" := "alice" , "repo" := "my-project" , "ref" := "heads/" <> branch ] , ghData = [] }
queryGitHubPage' :: FromJSON a => GHEndpoint -> m (Either (Text, Text) (a, PageLinks)) Source #
Query GitHub, returning Right (payload, links)
if successful, where payload
is the
response that GitHub sent back and links
containing any pagination links GitHub may have
sent back. If the response could not be decoded as JSON, returns
Left (error message, response from server)
.
Errors on network connection failures or if GitHub sent back an error message. Use githubTry
if you wish to handle GitHub errors.
queryGitHubPage :: FromJSON a => GHEndpoint -> m (a, PageLinks) Source #
queryGitHubPage'
, except calls fail
if JSON decoding fails.
queryGitHub :: FromJSON a => GHEndpoint -> m a Source #
queryGitHubPage
, except ignoring pagination links.
queryGitHubAll :: (FromJSON a, Monoid a) => GHEndpoint -> m a Source #
Repeatedly calls queryGitHubPage
for each page returned by GitHub and concatenates the
results.
queryGitHub_ :: GHEndpoint -> m () Source #
queryGitHub
, except ignores the result.