The GitHub API v3 for Haskell.
Some functions are missing; these are functions where the GitHub API did not work as expected. The full GitHub API is in beta and constantly improving.
In your project's cabal file:
Build-depends: github
Or from the command line:
cabal v1-install github
See the samples in the samples/ directory.
Note: some samples might be outdated.
For details see the reference documentation on Hackage.
Each module lines up with the hierarchy of documentation from the GitHub API.
Request functions (ending with R
) construct a data type which can be executed
in IO
by executeRequest
functions. They are all listed in the root GitHub
module.
IO functions produce an IO (Either Error a)
, where a
is the actual thing
you want. You must call the function using IO goodness, then dispatch on the
possible error message. Here's an example from the samples:
Many function have samples under
samples/
directory.
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
import Prelude.Compat
import Data.Text (Text, pack)
import Data.Text.IO as T (putStrLn)
import Data.Monoid ((<>))
import GitHub (github')
import qualified GitHub
main :: IO ()
main = do
possibleUsers <- github' GitHub.usersFollowingR "phadej"
T.putStrLn $ either (("Error: " <>) . pack . show)
(foldMap ((<> "\n") . formatUser))
possibleUsers
formatUser :: GitHub.SimpleUser -> Text
formatUser = GitHub.untagName . GitHub.simpleUserLogin
Please see CONTRIBUTING.md for details on how you can help.
Copyright 2011-2012 Mike Burns. Copyright 2013-2015 John Wiegley. Copyright 2016-2019 Oleg Grenrus.
Available under the BSD 3-clause license.
Library github-rest
also provides an interface to the GitHub API.
It compares itself to github
here:
https://github.com/LeapYear/github-rest#comparison-to-other-libraries