{-# LANGUAGE OverloadedStrings #-}
module GitLab.API.Notes
(
issueNotes,
issueNote,
newIssueNote,
modifyIssueNote,
deleteIssueNote,
snippetNotes,
snippetNote,
newSnippetNote,
modifySnippetNote,
deleteSnippetNote,
mergeRequestNotes,
mergeRequestNote,
newMergeRequestNote,
modifyMergeRequestNote,
deleteMergeRequestNote,
)
where
import qualified Data.ByteString as BS
import qualified Data.ByteString.Lazy as BSL
import Data.Maybe
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.Client
issueNotes ::
Project ->
Int ->
Maybe SortBy ->
Maybe OrderBy ->
GitLab (Either (Response BSL.ByteString) [Note])
issueNotes :: Project
-> Int
-> Maybe SortBy
-> Maybe OrderBy
-> GitLab (Either (Response ByteString) [Note])
issueNotes Project
prj Int
issueIid Maybe SortBy
sort Maybe OrderBy
order =
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) [Note])
forall a.
FromJSON a =>
Text -> [GitLabParam] -> GitLab (Either (Response ByteString) [a])
gitlabGetMany Text
addr [GitLabParam]
params
where
params :: [GitLabParam]
params :: [GitLabParam]
params =
[Maybe GitLabParam] -> [GitLabParam]
forall a. [Maybe a] -> [a]
catMaybes
[ (\SortBy
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"sort", SortBy -> Maybe ByteString
forall a. Show a => a -> Maybe ByteString
showAttr SortBy
x)) (SortBy -> Maybe GitLabParam) -> Maybe SortBy -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Maybe SortBy
sort,
(\OrderBy
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"order_by", OrderBy -> Maybe ByteString
forall a. Show a => a -> Maybe ByteString
showAttr OrderBy
x)) (OrderBy -> Maybe GitLabParam)
-> Maybe OrderBy -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Maybe OrderBy
order
]
addr :: Text
addr =
String -> Text
T.pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$
String
"/projects/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show (Project -> Int
project_id Project
prj)
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"/issues/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show Int
issueIid
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"/notes"
showAttr :: (Show a) => a -> Maybe BS.ByteString
showAttr :: a -> Maybe ByteString
showAttr = ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (ByteString -> Maybe ByteString)
-> (a -> ByteString) -> a -> Maybe ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> ByteString
T.encodeUtf8 (Text -> ByteString) -> (a -> Text) -> a -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Text
T.pack (String -> Text) -> (a -> String) -> a -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> String
forall a. Show a => a -> String
show
issueNote ::
Project ->
Int ->
Int ->
GitLab (Either (Response BSL.ByteString) (Maybe Note))
issueNote :: Project
-> Int -> Int -> GitLab (Either (Response ByteString) (Maybe Note))
issueNote Project
prj Int
issueIid Int
noteId =
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Note))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabGetOne Text
addr [GitLabParam]
params
where
params :: [GitLabParam]
params :: [GitLabParam]
params = []
addr :: Text
addr =
String -> Text
T.pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$
String
"/projects/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show (Project -> Int
project_id Project
prj)
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"/issues/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show Int
issueIid
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"/notes/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show Int
noteId
newIssueNote ::
Project ->
Int ->
Text ->
Maybe Bool ->
GitLab (Either (Response BSL.ByteString) (Maybe ()))
newIssueNote :: Project
-> Int
-> Text
-> Maybe Bool
-> GitLab (Either (Response ByteString) (Maybe ()))
newIssueNote Project
prj Int
issueIid Text
theNote Maybe Bool
isConfidential =
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe ()))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabPost Text
addr [GitLabParam]
params
where
params :: [GitLabParam]
params :: [GitLabParam]
params =
[Maybe GitLabParam] -> [GitLabParam]
forall a. [Maybe a] -> [a]
catMaybes
[ GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"body", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (Text -> ByteString
T.encodeUtf8 Text
theNote)),
(\Bool
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"confidential", Bool -> Maybe ByteString
forall a. Show a => a -> Maybe ByteString
showAttr Bool
x)) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Maybe Bool
isConfidential
]
addr :: Text
addr =
String -> Text
T.pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$
String
"/projects/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show (Project -> Int
project_id Project
prj)
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"/issues/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show Int
issueIid
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"/notes"
showAttr :: (Show a) => a -> Maybe BS.ByteString
showAttr :: a -> Maybe ByteString
showAttr = ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (ByteString -> Maybe ByteString)
-> (a -> ByteString) -> a -> Maybe ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> ByteString
T.encodeUtf8 (Text -> ByteString) -> (a -> Text) -> a -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Text
T.pack (String -> Text) -> (a -> String) -> a -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> String
forall a. Show a => a -> String
show
modifyIssueNote ::
Project ->
Int ->
Int ->
Maybe Text ->
GitLab (Either (Response BSL.ByteString) (Maybe Note))
modifyIssueNote :: Project
-> Int
-> Int
-> Maybe Text
-> GitLab (Either (Response ByteString) (Maybe Note))
modifyIssueNote Project
prj Int
issueIid Int
noteId Maybe Text
theNote = do
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Note))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabPut Text
urlPath [GitLabParam]
params
where
urlPath :: Text
urlPath =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> String -> Text
T.pack (Int -> String
forall a. Show a => a -> String
show (Project -> Int
project_id Project
prj))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/issues/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> String -> Text
T.pack (Int -> String
forall a. Show a => a -> String
show Int
issueIid)
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/notes/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> String -> Text
T.pack
(Int -> String
forall a. Show a => a -> String
show Int
noteId)
params ::
[GitLabParam]
params :: [GitLabParam]
params =
[Maybe GitLabParam] -> [GitLabParam]
forall a. [Maybe a] -> [a]
catMaybes
[ (\Text
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"body", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (Text -> ByteString
T.encodeUtf8 Text
x))) (Text -> Maybe GitLabParam) -> Maybe Text -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Maybe Text
theNote
]
deleteIssueNote ::
Project ->
Int ->
Int ->
GitLab (Either (Response BSL.ByteString) (Maybe ()))
deleteIssueNote :: Project
-> Int -> Int -> GitLab (Either (Response ByteString) (Maybe ()))
deleteIssueNote Project
prj Int
issueIid Int
noteId = do
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe ()))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabDelete Text
addr []
where
addr :: Text
addr =
String -> Text
T.pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$
String
"/projects/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show (Project -> Int
project_id Project
prj)
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"/issues/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show Int
issueIid
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"/notes/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show Int
noteId
snippetNotes ::
Project ->
Int ->
Maybe SortBy ->
Maybe OrderBy ->
GitLab (Either (Response BSL.ByteString) [Note])
snippetNotes :: Project
-> Int
-> Maybe SortBy
-> Maybe OrderBy
-> GitLab (Either (Response ByteString) [Note])
snippetNotes Project
prj Int
snippetIid Maybe SortBy
sort Maybe OrderBy
order =
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) [Note])
forall a.
FromJSON a =>
Text -> [GitLabParam] -> GitLab (Either (Response ByteString) [a])
gitlabGetMany Text
addr [GitLabParam]
params
where
params :: [GitLabParam]
params :: [GitLabParam]
params =
[Maybe GitLabParam] -> [GitLabParam]
forall a. [Maybe a] -> [a]
catMaybes
[ (\SortBy
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"sort", SortBy -> Maybe ByteString
forall a. Show a => a -> Maybe ByteString
showAttr SortBy
x)) (SortBy -> Maybe GitLabParam) -> Maybe SortBy -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Maybe SortBy
sort,
(\OrderBy
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"order_by", OrderBy -> Maybe ByteString
forall a. Show a => a -> Maybe ByteString
showAttr OrderBy
x)) (OrderBy -> Maybe GitLabParam)
-> Maybe OrderBy -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Maybe OrderBy
order
]
addr :: Text
addr =
String -> Text
T.pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$
String
"/projects/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show (Project -> Int
project_id Project
prj)
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"/snippets/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show Int
snippetIid
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"/notes"
showAttr :: (Show a) => a -> Maybe BS.ByteString
showAttr :: a -> Maybe ByteString
showAttr = ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (ByteString -> Maybe ByteString)
-> (a -> ByteString) -> a -> Maybe ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> ByteString
T.encodeUtf8 (Text -> ByteString) -> (a -> Text) -> a -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Text
T.pack (String -> Text) -> (a -> String) -> a -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> String
forall a. Show a => a -> String
show
snippetNote ::
Project ->
Int ->
Int ->
GitLab (Either (Response BSL.ByteString) (Maybe Note))
snippetNote :: Project
-> Int -> Int -> GitLab (Either (Response ByteString) (Maybe Note))
snippetNote Project
prj Int
snippetIid Int
noteId =
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Note))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabGetOne Text
addr [GitLabParam]
params
where
params :: [GitLabParam]
params :: [GitLabParam]
params = []
addr :: Text
addr =
String -> Text
T.pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$
String
"/projects/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show (Project -> Int
project_id Project
prj)
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"/snippets/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show Int
snippetIid
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"/notes/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show Int
noteId
newSnippetNote ::
Project ->
Int ->
Text ->
Maybe Bool ->
GitLab (Either (Response BSL.ByteString) (Maybe ()))
newSnippetNote :: Project
-> Int
-> Text
-> Maybe Bool
-> GitLab (Either (Response ByteString) (Maybe ()))
newSnippetNote Project
prj Int
snippetIid Text
theNote Maybe Bool
isConfidential =
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe ()))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabPost Text
addr [GitLabParam]
params
where
params :: [GitLabParam]
params :: [GitLabParam]
params =
[Maybe GitLabParam] -> [GitLabParam]
forall a. [Maybe a] -> [a]
catMaybes
[ GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"body", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (Text -> ByteString
T.encodeUtf8 Text
theNote)),
(\Bool
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"confidential", Bool -> Maybe ByteString
forall a. Show a => a -> Maybe ByteString
showAttr Bool
x)) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Maybe Bool
isConfidential
]
addr :: Text
addr =
String -> Text
T.pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$
String
"/projects/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show (Project -> Int
project_id Project
prj)
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"/snippets/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show Int
snippetIid
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"/notes"
showAttr :: (Show a) => a -> Maybe BS.ByteString
showAttr :: a -> Maybe ByteString
showAttr = ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (ByteString -> Maybe ByteString)
-> (a -> ByteString) -> a -> Maybe ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> ByteString
T.encodeUtf8 (Text -> ByteString) -> (a -> Text) -> a -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Text
T.pack (String -> Text) -> (a -> String) -> a -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> String
forall a. Show a => a -> String
show
modifySnippetNote ::
Project ->
Int ->
Int ->
Maybe Text ->
GitLab (Either (Response BSL.ByteString) (Maybe Note))
modifySnippetNote :: Project
-> Int
-> Int
-> Maybe Text
-> GitLab (Either (Response ByteString) (Maybe Note))
modifySnippetNote Project
prj Int
snippetIid Int
noteId Maybe Text
theNote = do
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Note))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabPut Text
urlPath [GitLabParam]
params
where
urlPath :: Text
urlPath =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> String -> Text
T.pack (Int -> String
forall a. Show a => a -> String
show (Project -> Int
project_id Project
prj))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/snippets/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> String -> Text
T.pack (Int -> String
forall a. Show a => a -> String
show Int
snippetIid)
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/notes/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> String -> Text
T.pack
(Int -> String
forall a. Show a => a -> String
show Int
noteId)
params ::
[GitLabParam]
params :: [GitLabParam]
params =
[Maybe GitLabParam] -> [GitLabParam]
forall a. [Maybe a] -> [a]
catMaybes
[ (\Text
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"body", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (Text -> ByteString
T.encodeUtf8 Text
x))) (Text -> Maybe GitLabParam) -> Maybe Text -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Maybe Text
theNote
]
deleteSnippetNote ::
Project ->
Int ->
Int ->
GitLab (Either (Response BSL.ByteString) (Maybe ()))
deleteSnippetNote :: Project
-> Int -> Int -> GitLab (Either (Response ByteString) (Maybe ()))
deleteSnippetNote Project
prj Int
snippetIid Int
noteId = do
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe ()))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabDelete Text
addr []
where
addr :: Text
addr =
String -> Text
T.pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$
String
"/projects/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show (Project -> Int
project_id Project
prj)
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"/snippets/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show Int
snippetIid
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"/notes/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show Int
noteId
mergeRequestNotes ::
Project ->
Int ->
Maybe SortBy ->
Maybe OrderBy ->
GitLab (Either (Response BSL.ByteString) [Note])
mergeRequestNotes :: Project
-> Int
-> Maybe SortBy
-> Maybe OrderBy
-> GitLab (Either (Response ByteString) [Note])
mergeRequestNotes Project
prj Int
mergeRequestIid Maybe SortBy
sort Maybe OrderBy
order =
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) [Note])
forall a.
FromJSON a =>
Text -> [GitLabParam] -> GitLab (Either (Response ByteString) [a])
gitlabGetMany Text
addr [GitLabParam]
params
where
params :: [GitLabParam]
params :: [GitLabParam]
params =
[Maybe GitLabParam] -> [GitLabParam]
forall a. [Maybe a] -> [a]
catMaybes
[ (\SortBy
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"sort", SortBy -> Maybe ByteString
forall a. Show a => a -> Maybe ByteString
showAttr SortBy
x)) (SortBy -> Maybe GitLabParam) -> Maybe SortBy -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Maybe SortBy
sort,
(\OrderBy
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"order_by", OrderBy -> Maybe ByteString
forall a. Show a => a -> Maybe ByteString
showAttr OrderBy
x)) (OrderBy -> Maybe GitLabParam)
-> Maybe OrderBy -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Maybe OrderBy
order
]
addr :: Text
addr =
String -> Text
T.pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$
String
"/projects/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show (Project -> Int
project_id Project
prj)
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"/merge_requests/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show Int
mergeRequestIid
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"/notes"
showAttr :: (Show a) => a -> Maybe BS.ByteString
showAttr :: a -> Maybe ByteString
showAttr = ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (ByteString -> Maybe ByteString)
-> (a -> ByteString) -> a -> Maybe ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> ByteString
T.encodeUtf8 (Text -> ByteString) -> (a -> Text) -> a -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Text
T.pack (String -> Text) -> (a -> String) -> a -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> String
forall a. Show a => a -> String
show
mergeRequestNote ::
Project ->
Int ->
Int ->
GitLab (Either (Response BSL.ByteString) (Maybe Note))
mergeRequestNote :: Project
-> Int -> Int -> GitLab (Either (Response ByteString) (Maybe Note))
mergeRequestNote Project
prj Int
mergeRequestIid Int
noteId =
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Note))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabGetOne Text
addr [GitLabParam]
params
where
params :: [GitLabParam]
params :: [GitLabParam]
params = []
addr :: Text
addr =
String -> Text
T.pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$
String
"/projects/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show (Project -> Int
project_id Project
prj)
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"/merge_requests/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show Int
mergeRequestIid
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"/notes/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show Int
noteId
newMergeRequestNote ::
Project ->
Int ->
Text ->
Maybe Bool ->
GitLab (Either (Response BSL.ByteString) (Maybe ()))
newMergeRequestNote :: Project
-> Int
-> Text
-> Maybe Bool
-> GitLab (Either (Response ByteString) (Maybe ()))
newMergeRequestNote Project
prj Int
mergeRequestIid Text
theNote Maybe Bool
isConfidential =
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe ()))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabPost Text
addr [GitLabParam]
params
where
params :: [GitLabParam]
params :: [GitLabParam]
params =
[Maybe GitLabParam] -> [GitLabParam]
forall a. [Maybe a] -> [a]
catMaybes
[ GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"body", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (Text -> ByteString
T.encodeUtf8 Text
theNote)),
(\Bool
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"confidential", Bool -> Maybe ByteString
forall a. Show a => a -> Maybe ByteString
showAttr Bool
x)) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Maybe Bool
isConfidential
]
addr :: Text
addr =
String -> Text
T.pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$
String
"/projects/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show (Project -> Int
project_id Project
prj)
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"/merge_requests/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show Int
mergeRequestIid
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"/notes"
showAttr :: (Show a) => a -> Maybe BS.ByteString
showAttr :: a -> Maybe ByteString
showAttr = ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (ByteString -> Maybe ByteString)
-> (a -> ByteString) -> a -> Maybe ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> ByteString
T.encodeUtf8 (Text -> ByteString) -> (a -> Text) -> a -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Text
T.pack (String -> Text) -> (a -> String) -> a -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> String
forall a. Show a => a -> String
show
modifyMergeRequestNote ::
Project ->
Int ->
Int ->
Maybe Text ->
GitLab (Either (Response BSL.ByteString) (Maybe Note))
modifyMergeRequestNote :: Project
-> Int
-> Int
-> Maybe Text
-> GitLab (Either (Response ByteString) (Maybe Note))
modifyMergeRequestNote Project
prj Int
mergeRequestIid Int
noteId Maybe Text
theNote = do
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Note))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabPut Text
urlPath [GitLabParam]
params
where
urlPath :: Text
urlPath =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> String -> Text
T.pack (Int -> String
forall a. Show a => a -> String
show (Project -> Int
project_id Project
prj))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/merge_requests/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> String -> Text
T.pack (Int -> String
forall a. Show a => a -> String
show Int
mergeRequestIid)
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/notes/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> String -> Text
T.pack
(Int -> String
forall a. Show a => a -> String
show Int
noteId)
params ::
[GitLabParam]
params :: [GitLabParam]
params =
[Maybe GitLabParam] -> [GitLabParam]
forall a. [Maybe a] -> [a]
catMaybes
[ (\Text
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"body", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (Text -> ByteString
T.encodeUtf8 Text
x))) (Text -> Maybe GitLabParam) -> Maybe Text -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Maybe Text
theNote
]
deleteMergeRequestNote ::
Project ->
Int ->
Int ->
GitLab (Either (Response BSL.ByteString) (Maybe ()))
deleteMergeRequestNote :: Project
-> Int -> Int -> GitLab (Either (Response ByteString) (Maybe ()))
deleteMergeRequestNote Project
prj Int
mergeRequestIid Int
noteId = do
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe ()))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabDelete Text
addr []
where
addr :: Text
addr =
String -> Text
T.pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$
String
"/projects/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show (Project -> Int
project_id Project
prj)
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"/merge_requests/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show Int
mergeRequestIid
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"/notes/"
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show Int
noteId