| Maintainer | Brandon Chinn <[email protected]> |
|---|---|
| Stability | experimental |
| Portability | portable |
| Safe Haskell | None |
| Language | Haskell2010 |
GitHub.REST.Monad.Class
Description
Defines MonadGitHubREST that gives a monad m the capability to query the GitHub REST API.
Synopsis
- class Monad m => MonadGitHubREST (m :: Type -> Type) 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 :: Type -> Type) 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 = [] }Minimal complete definition
Methods
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.