-----------------------------------------------------------------------------
-- |
-- License     :  BSD-3-Clause
-- Maintainer  :  Oleg Grenrus <oleg.grenrus@iki.fi>
--
-- The underlying tree of SHA1s and files that make up a git repo. The API is
-- described on <http://developer.github.com/v3/git/trees/>.
module GitHub.Endpoints.GitData.Trees (
    treeR,
    nestedTreeR,
    module GitHub.Data,
    ) where

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

-- | Query a Tree.
-- See <https://developer.github.com/v3/git/trees/#get-a-tree>
treeR :: Name Owner -> Name Repo -> Name Tree -> Request k Tree
treeR :: forall (k :: RW).
Name Owner -> Name Repo -> Name Tree -> Request k Tree
treeR Name Owner
user Name Repo
repo Name Tree
sha =
    Paths -> QueryString -> Request k Tree
forall (mt :: RW) a. Paths -> QueryString -> Request mt a
query  [Text
"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, Text
"git", Text
"trees", Name Tree -> Text
forall a. IsPathPart a => a -> Text
toPathPart Name Tree
sha] []

-- | Query a Tree Recursively.
-- See <https://developer.github.com/v3/git/trees/#get-a-tree-recursively>
nestedTreeR :: Name Owner -> Name Repo -> Name Tree -> Request k Tree
nestedTreeR :: forall (k :: RW).
Name Owner -> Name Repo -> Name Tree -> Request k Tree
nestedTreeR Name Owner
user Name Repo
repo Name Tree
sha =
    Paths -> QueryString -> Request k Tree
forall (mt :: RW) a. Paths -> QueryString -> Request mt a
query  [Text
"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, Text
"git", Text
"trees", Name Tree -> Text
forall a. IsPathPart a => a -> Text
toPathPart Name Tree
sha] [(ByteString
"recursive", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just ByteString
"1")]