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 (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 (a, PageLinks) Source #
Query GitHub, returning (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, if GitHub sent back an error message, or if the response
could not be decoded as JSON. Use githubTry
if you wish to handle GitHub errors.
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.