{-# LANGUAGE OverloadedStrings #-}
module GitLab.API.RepositoryFiles where
import Control.Monad.IO.Unlift
import Data.Text (Text)
import qualified Data.Text as T
import qualified Data.Text.Encoding as T
import GitLab.Types
import GitLab.WebRequests.GitLabWebCalls
import Network.HTTP.Types.Status
import Network.HTTP.Types.URI
repositoryFiles ::
(MonadIO m) =>
Project ->
Text ->
Text ->
GitLab m (Either Status (Maybe RepositoryFile))
repositoryFiles project = repositoryFiles' (project_id project)
repositoryFiles' ::
(MonadIO m) =>
Int ->
Text ->
Text ->
GitLab m (Either Status (Maybe RepositoryFile))
repositoryFiles' projectId filePath reference =
gitlabWithAttrsOne addr ("&ref=" <> reference)
where
addr =
"/projects/"
<> T.pack (show projectId)
<> "/repository"
<> "/files"
<> "/"
<> T.decodeUtf8 (urlEncode False (T.encodeUtf8 filePath))
repositoryFileBlob ::
(MonadIO m) =>
Int ->
Text ->
GitLab m (Either Status String)
repositoryFileBlob projectId blobSha =
gitlabReqText addr
where
addr =
"/projects/"
<> T.pack (show projectId)
<> "/repository"
<> "/blobs/"
<> blobSha
<> "/raw"