github: Access to the GitHub API, v3.

[ bsd3, library, network ] [ Propose Tags ] [ Report a vulnerability ]

The GitHub API provides programmatic access to the full GitHub Web site, from Issues to Gists to repos down to the underlying git data like references and trees. This library wraps all of that, exposing a basic but Haskell-friendly set of functions and data structures.

For supported endpoints see GitHub module.

import qualified GitHub as GH

main :: IO ()
main = do
    possibleUser <- GH.github' GH.userInfoForR "phadej"
    print possibleUser

For more of an overview please see the README: https://github.com/haskell-github/github/blob/master/README.md


[Skip to Readme]

Modules

[Index] [Quick Jump]

Flags

Manual Flags

NameDescriptionDefault
openssl

"Use http-client-openssl"

Disabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1, 0.1.1, 0.1.2, 0.2.0, 0.2.1, 0.3.0, 0.4.0, 0.4.1, 0.5.0, 0.6.0, 0.7.0, 0.7.1, 0.7.2, 0.7.3, 0.7.4, 0.8, 0.9, 0.10.0, 0.11.0, 0.11.1, 0.12, 0.13, 0.13.1, 0.13.2, 0.14.0, 0.14.1, 0.15.0, 0.16.0, 0.17.0, 0.18, 0.19, 0.20, 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.28.0.1, 0.29
Change log CHANGELOG.md
Dependencies aeson (>=1.4.0.0 && <1.6 || >=2.0.1.0 && <2.3), base (>=4.7 && <5), base-compat (>=0.11.1 && <1), base16-bytestring (>=0.1.1.6 && <1.1), binary (>=0.7.1.0 && <0.11), binary-instances (>=1 && <1.1), bytestring (>=0.10.4.0 && <0.13), containers (>=0.5.5.1 && <0.8), cryptohash-sha1 (>=0.11.100.1 && <0.12), deepseq (>=1.3.0.2 && <1.6), deepseq-generics (>=0.2.0.0 && <0.3), exceptions (>=0.10.2 && <0.11), hashable (>=1.2.7.0 && <2), http-client (>=0.5.12 && <0.8), http-client-tls (>=0.3.5.3 && <0.4), http-link-header (>=1.0.3.1 && <1.3), http-types (>=0.12.3 && <0.13), iso8601-time (>=0.1.5 && <0.2), mtl (>=2.1.3.1 && <2.2 || >=2.2.1 && <2.4), network-uri (>=2.6.1.0 && <2.7), semigroups (>=0.18.5 && <0.20), tagged (>=0.8.5 && <0.9), text (>=1.2.0.6 && <2.2), time-compat (>=1.9.2.2 && <1.10), tls (>=1.4.1), transformers (>=0.3.0.0 && <0.7), transformers-compat (>=0.6.5 && <0.8), unordered-containers (>=0.2.10.0 && <0.3), vector (>=0.12.0.1 && <0.14) [details]
Tested with ghc ==9.10.1, ghc ==9.8.2, ghc ==9.6.6, ghc ==9.4.8, ghc ==9.2.8, ghc ==9.0.2, ghc ==8.10.7, ghc ==8.8.4, ghc ==8.6.5, ghc ==8.4.4, ghc ==8.2.2
License BSD-3-Clause
Copyright Copyright 2012-2013 Mike Burns, Copyright 2013-2015 John Wiegley, Copyright 2016-2021 Oleg Grenrus
Author Mike Burns, John Wiegley, Oleg Grenrus
Maintainer Andreas Abel
Revised Revision 6 made by AndreasAbel at 2024-10-17T20:15:47Z
Category Network
Home page https://github.com/haskell-github/github
Source repo head: git clone https://github.com/haskell-github/github.git
Uploaded by AndreasAbel at 2023-06-24T05:54:01Z
Distributions Debian:0.23, LTSHaskell:0.29, NixOS:0.29, Stackage:0.29
Reverse Dependencies 11 direct, 0 indirect [details]
Downloads 37021 total (172 in the last 30 days)
Rating 2.0 (votes: 5) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2023-06-24 [all 1 reports]

Readme for github-0.29

[back to package description]

GitHub

Hackage version github on Stackage Nightly Stackage LTS version Haskell-CI

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.

Installation

In your project's cabal file:

Build-depends:       github

Or from the command line:

cabal v1-install github

Example Usage

See the samples in the samples/ directory.

Note: some samples might be outdated.

Documentation

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

Contributions

Please see CONTRIBUTING.md for details on how you can help.

Copyright

Copyright 2011-2012 Mike Burns. Copyright 2013-2015 John Wiegley. Copyright 2016-2019 Oleg Grenrus.

Available under the BSD 3-clause license.

Alternative

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