-----------------------------------------------------------------------------
-- |
-- License     :  BSD-3-Clause
-- Maintainer  :  Oleg Grenrus <oleg.grenrus@iki.fi>
--
-- The API for dealing with git blobs from Github repos, as described in
-- <http://developer.github.com/v3/git/blobs/>.
module GitHub.Endpoints.GitData.Blobs (
    blob,
    blob',
    blobR,
    module GitHub.Data,
    ) where

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

-- | Query a blob by SHA1.
--
-- > blob' (Just $ BasicAuth "github-username" "github-password") "thoughtbot" "paperclip" "bc5c51d1ece1ee45f94b056a0f5a1674d7e8cba9"
blob' :: Maybe Auth -> Name Owner -> Name Repo -> Name Blob -> IO (Either Error Blob)
blob' :: Maybe Auth
-> Name Owner -> Name Repo -> Name Blob -> IO (Either Error Blob)
blob' auth :: Maybe Auth
auth user :: Name Owner
user repo :: Name Repo
repo sha :: Name Blob
sha =
    Maybe Auth -> GenRequest 'MtJSON 'RO Blob -> IO (Either Error Blob)
forall am (mt :: MediaType *) a.
(AuthMethod am, ParseResponse mt a) =>
Maybe am -> GenRequest mt 'RO a -> IO (Either Error a)
executeRequestMaybe Maybe Auth
auth (GenRequest 'MtJSON 'RO Blob -> IO (Either Error Blob))
-> GenRequest 'MtJSON 'RO Blob -> IO (Either Error Blob)
forall a b. (a -> b) -> a -> b
$ Name Owner -> Name Repo -> Name Blob -> GenRequest 'MtJSON 'RO Blob
forall (k :: RW).
Name Owner -> Name Repo -> Name Blob -> Request k Blob
blobR Name Owner
user Name Repo
repo Name Blob
sha

-- | Query a blob by SHA1.
--
-- > blob "thoughtbot" "paperclip" "bc5c51d1ece1ee45f94b056a0f5a1674d7e8cba9"
blob :: Name Owner -> Name Repo -> Name Blob -> IO (Either Error Blob)
blob :: Name Owner -> Name Repo -> Name Blob -> IO (Either Error Blob)
blob = Maybe Auth
-> Name Owner -> Name Repo -> Name Blob -> IO (Either Error Blob)
blob' Maybe Auth
forall a. Maybe a
Nothing

-- | Query a blob.
-- See <https://developer.github.com/v3/git/blobs/#get-a-blob>
blobR :: Name Owner -> Name Repo -> Name Blob -> Request k Blob
blobR :: Name Owner -> Name Repo -> Name Blob -> Request k Blob
blobR user :: Name Owner
user repo :: Name Repo
repo sha :: Name Blob
sha =
    Paths -> QueryString -> Request k Blob
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", "blobs", Name Blob -> Text
forall a. IsPathPart a => a -> Text
toPathPart Name Blob
sha] []