-----------------------------------------------------------------------------
-- |
-- License     :  BSD-3-Clause
-- Maintainer  :  Oleg Grenrus <oleg.grenrus@iki.fi>
--
-- The API for underlying git commits of a Github repo, as described on
-- <http://developer.github.com/v3/git/commits/>.
module GitHub.Endpoints.GitData.Commits (
    commit,
    gitCommitR,
    module GitHub.Data,
) where

import GitHub.Data
import GitHub.Internal.Prelude
import GitHub.Request
import Prelude ()

-- | A single commit, by SHA1.
--
-- > commit "thoughtbot" "paperclip" "bc5c51d1ece1ee45f94b056a0f5a1674d7e8cba9"
commit :: Name Owner -> Name Repo -> Name GitCommit -> IO (Either Error GitCommit)
commit :: Name Owner
-> Name Repo -> Name GitCommit -> IO (Either Error GitCommit)
commit user :: Name Owner
user repo :: Name Repo
repo sha :: Name GitCommit
sha =
    GenRequest 'MtJSON 'RO GitCommit -> IO (Either Error GitCommit)
forall (mt :: MediaType *) a.
ParseResponse mt a =>
GenRequest mt 'RO a -> IO (Either Error a)
executeRequest' (GenRequest 'MtJSON 'RO GitCommit -> IO (Either Error GitCommit))
-> GenRequest 'MtJSON 'RO GitCommit -> IO (Either Error GitCommit)
forall a b. (a -> b) -> a -> b
$ Name Owner
-> Name Repo -> Name GitCommit -> GenRequest 'MtJSON 'RO GitCommit
forall (k :: RW).
Name Owner -> Name Repo -> Name GitCommit -> Request k GitCommit
gitCommitR Name Owner
user Name Repo
repo Name GitCommit
sha

-- | Query a commit.
-- See <https://developer.github.com/v3/git/commits/#get-a-commit>
gitCommitR :: Name Owner -> Name Repo -> Name GitCommit -> Request k GitCommit
gitCommitR :: Name Owner -> Name Repo -> Name GitCommit -> Request k GitCommit
gitCommitR user :: Name Owner
user repo :: Name Repo
repo sha :: Name GitCommit
sha =
    Paths -> QueryString -> Request k GitCommit
forall (mt :: RW) a. Paths -> QueryString -> Request mt a
query ["repos", Name Owner -> Text
forall a. IsPathPart a => a -> Text
toPathPart Name Owner
user, Name Repo -> Text
forall a. IsPathPart a => a -> Text
toPathPart Name Repo
repo, "git", "commits", Name GitCommit -> Text
forall a. IsPathPart a => a -> Text
toPathPart Name GitCommit
sha] []