{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
module GitLab.API.Members
( AccessLevel (..),
memberOfProject,
membersOfProject,
memberOfProjectWithInherited,
membersOfProjectWithInherited,
addMemberToProject,
addMembersToProject,
editMemberOfProject,
removeUserFromProject,
memberOfGroup,
membersOfGroup,
memberOfGroupWithInherited,
membersOfGroupWithInherited,
addAllUsersToGroup,
addUserToGroup,
addUsersToGroup,
editMemberOfGroup,
removeUserFromGroup,
approvePendingMember,
approveAllPendingMembers,
pendingMembers,
)
where
import qualified Data.ByteString.Lazy as BSL
import Data.Either
import qualified Data.Text as T
import qualified Data.Text.Encoding as T
import GitLab.API.Users
import GitLab.Types
import GitLab.WebRequests.GitLabWebCalls
import Network.HTTP.Client
import Network.HTTP.Types.URI
membersOfProject :: Project -> GitLab [Member]
membersOfProject :: Project -> GitLab [Member]
membersOfProject Project
prj =
[Member] -> Either (Response ByteString) [Member] -> [Member]
forall b a. b -> Either a b -> b
fromRight ([Char] -> [Member]
forall a. HasCallStack => [Char] -> a
error [Char]
"membersOfProject error")
(Either (Response ByteString) [Member] -> [Member])
-> GitLabT IO (Either (Response ByteString) [Member])
-> GitLab [Member]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text
-> [GitLabParam]
-> GitLabT IO (Either (Response ByteString) [Member])
forall a.
FromJSON a =>
Text -> [GitLabParam] -> GitLab (Either (Response ByteString) [a])
gitlabGetMany Text
addr []
where
addr :: Text
addr =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Project -> Int
project_id Project
prj))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/members"
membersOfProjectWithInherited :: Project -> GitLab (Either (Response BSL.ByteString) [Member])
membersOfProjectWithInherited :: Project -> GitLabT IO (Either (Response ByteString) [Member])
membersOfProjectWithInherited Project
prj =
Text
-> [GitLabParam]
-> GitLabT IO (Either (Response ByteString) [Member])
forall a.
FromJSON a =>
Text -> [GitLabParam] -> GitLab (Either (Response ByteString) [a])
gitlabGetMany Text
addr []
where
addr :: Text
addr =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Project -> Int
project_id Project
prj))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/members"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/all"
memberOfProject ::
Project ->
Int ->
GitLab (Either (Response BSL.ByteString) (Maybe Member))
memberOfProject :: Project
-> Int -> GitLab (Either (Response ByteString) (Maybe Member))
memberOfProject Project
prj Int
usrId =
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Member))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabGetOne Text
addr []
where
addr :: Text
addr =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Project -> Int
project_id Project
prj))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/members/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show Int
usrId)
memberOfProjectWithInherited ::
Project ->
Int ->
GitLab (Either (Response BSL.ByteString) (Maybe Member))
memberOfProjectWithInherited :: Project
-> Int -> GitLab (Either (Response ByteString) (Maybe Member))
memberOfProjectWithInherited Project
prj Int
usrId =
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Member))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabGetOne Text
addr []
where
addr :: Text
addr =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Project -> Int
project_id Project
prj))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/members"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/all/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show Int
usrId)
addMemberToProject ::
Project ->
AccessLevel ->
User ->
GitLab (Either (Response BSL.ByteString) (Maybe Member))
addMemberToProject :: Project
-> AccessLevel
-> User
-> GitLab (Either (Response ByteString) (Maybe Member))
addMemberToProject Project
prj AccessLevel
access User
usr =
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Member))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabPost Text
addr [GitLabParam]
params
where
params :: [GitLabParam]
params :: [GitLabParam]
params =
[ (ByteString
"user_id", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (Text -> ByteString
T.encodeUtf8 ([Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (User -> Int
user_id User
usr))))),
(ByteString
"access_level", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (Text -> ByteString
T.encodeUtf8 ([Char] -> Text
T.pack (AccessLevel -> [Char]
forall a. Show a => a -> [Char]
show AccessLevel
access))))
]
addr :: Text
addr =
Text
"/projects/" Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Project -> Int
project_id Project
prj)) Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/members"
addMembersToProject ::
Project ->
AccessLevel ->
[User] ->
GitLab [Either (Response BSL.ByteString) (Maybe Member)]
addMembersToProject :: Project
-> AccessLevel
-> [User]
-> GitLab [Either (Response ByteString) (Maybe Member)]
addMembersToProject Project
project AccessLevel
access =
(User -> GitLab (Either (Response ByteString) (Maybe Member)))
-> [User] -> GitLab [Either (Response ByteString) (Maybe Member)]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> [a] -> m [b]
mapM (Project
-> AccessLevel
-> User
-> GitLab (Either (Response ByteString) (Maybe Member))
addMemberToProject Project
project AccessLevel
access)
editMemberOfProject ::
Project ->
AccessLevel ->
User ->
GitLab (Either (Response BSL.ByteString) (Maybe Member))
editMemberOfProject :: Project
-> AccessLevel
-> User
-> GitLab (Either (Response ByteString) (Maybe Member))
editMemberOfProject Project
prj AccessLevel
access User
usr =
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Member))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabPut Text
addr [GitLabParam]
params
where
params :: [GitLabParam]
params :: [GitLabParam]
params =
[ (ByteString
"access_level", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (Text -> ByteString
T.encodeUtf8 ([Char] -> Text
T.pack (AccessLevel -> [Char]
forall a. Show a => a -> [Char]
show AccessLevel
access))))
]
addr :: Text
addr =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Project -> Int
project_id Project
prj))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/members/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (User -> Int
user_id User
usr))
membersOfGroup :: Group -> GitLab (Either (Response BSL.ByteString) [Member])
membersOfGroup :: Group -> GitLabT IO (Either (Response ByteString) [Member])
membersOfGroup Group
grp =
Text
-> [GitLabParam]
-> GitLabT IO (Either (Response ByteString) [Member])
forall a.
FromJSON a =>
Text -> [GitLabParam] -> GitLab (Either (Response ByteString) [a])
gitlabGetMany Text
addr []
where
addr :: Text
addr =
Text
"/groups/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Group -> Int
group_id Group
grp))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/members"
memberOfGroup ::
Group ->
Int ->
GitLab (Either (Response BSL.ByteString) (Maybe Member))
memberOfGroup :: Group
-> Int -> GitLab (Either (Response ByteString) (Maybe Member))
memberOfGroup Group
grp Int
usrId =
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Member))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabGetOne Text
addr []
where
addr :: Text
addr =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Group -> Int
group_id Group
grp))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/members/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show Int
usrId)
memberOfGroupWithInherited ::
Group ->
Int ->
GitLab (Either (Response BSL.ByteString) (Maybe Member))
memberOfGroupWithInherited :: Group
-> Int -> GitLab (Either (Response ByteString) (Maybe Member))
memberOfGroupWithInherited Group
prj Int
usrId =
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Member))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabGetOne Text
addr []
where
addr :: Text
addr =
Text
"/groups/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Group -> Int
group_id Group
prj))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/members"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/all/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show Int
usrId)
membersOfGroupWithInherited :: Group -> GitLab (Either (Response BSL.ByteString) [Member])
membersOfGroupWithInherited :: Group -> GitLabT IO (Either (Response ByteString) [Member])
membersOfGroupWithInherited Group
prj =
Text
-> [GitLabParam]
-> GitLabT IO (Either (Response ByteString) [Member])
forall a.
FromJSON a =>
Text -> [GitLabParam] -> GitLab (Either (Response ByteString) [a])
gitlabGetMany Text
addr []
where
addr :: Text
addr =
Text
"/groups/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Group -> Int
group_id Group
prj))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/members"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/all"
addAllUsersToGroup ::
Group ->
AccessLevel ->
GitLab [Either (Response BSL.ByteString) (Maybe Member)]
addAllUsersToGroup :: Group
-> AccessLevel
-> GitLab [Either (Response ByteString) (Maybe Member)]
addAllUsersToGroup Group
grp AccessLevel
access = do
[User]
allRegisteredUsers <- GitLab [User]
users
Group
-> AccessLevel
-> [User]
-> GitLab [Either (Response ByteString) (Maybe Member)]
addUsersToGroup Group
grp AccessLevel
access [User]
allRegisteredUsers
addUserToGroup ::
Group ->
AccessLevel ->
User ->
GitLab (Either (Response BSL.ByteString) (Maybe Member))
addUserToGroup :: Group
-> AccessLevel
-> User
-> GitLab (Either (Response ByteString) (Maybe Member))
addUserToGroup Group
grp AccessLevel
access User
usr = do
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Member))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabPost Text
addr [GitLabParam]
params
where
params :: [GitLabParam]
params :: [GitLabParam]
params =
[ (ByteString
"user_id", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (Text -> ByteString
T.encodeUtf8 ([Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (User -> Int
user_id User
usr))))),
(ByteString
"access_level", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (Text -> ByteString
T.encodeUtf8 ([Char] -> Text
T.pack (AccessLevel -> [Char]
forall a. Show a => a -> [Char]
show AccessLevel
access))))
]
addr :: Text
addr =
Text
"/groups/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> ByteString -> Text
T.decodeUtf8 (Bool -> ByteString -> ByteString
urlEncode Bool
False (Text -> ByteString
T.encodeUtf8 ([Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Group -> Int
group_id Group
grp)))))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/members"
addUsersToGroup ::
Group ->
AccessLevel ->
[User] ->
GitLab [Either (Response BSL.ByteString) (Maybe Member)]
addUsersToGroup :: Group
-> AccessLevel
-> [User]
-> GitLab [Either (Response ByteString) (Maybe Member)]
addUsersToGroup Group
grp AccessLevel
access =
(User -> GitLab (Either (Response ByteString) (Maybe Member)))
-> [User] -> GitLab [Either (Response ByteString) (Maybe Member)]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> [a] -> m [b]
mapM (Group
-> AccessLevel
-> User
-> GitLab (Either (Response ByteString) (Maybe Member))
addUserToGroup Group
grp AccessLevel
access)
editMemberOfGroup ::
Group ->
AccessLevel ->
User ->
GitLab (Either (Response BSL.ByteString) (Maybe Member))
editMemberOfGroup :: Group
-> AccessLevel
-> User
-> GitLab (Either (Response ByteString) (Maybe Member))
editMemberOfGroup Group
grp AccessLevel
access User
usr =
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Member))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabPut Text
addr [GitLabParam]
params
where
params :: [GitLabParam]
params :: [GitLabParam]
params =
[ (ByteString
"access_level", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (Text -> ByteString
T.encodeUtf8 ([Char] -> Text
T.pack (AccessLevel -> [Char]
forall a. Show a => a -> [Char]
show AccessLevel
access))))
]
addr :: Text
addr =
Text
"/groups/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Group -> Int
group_id Group
grp))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/members/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (User -> Int
user_id User
usr))
removeUserFromProject ::
Project ->
User ->
GitLab (Either (Response BSL.ByteString) (Maybe ()))
removeUserFromProject :: Project -> User -> GitLab (Either (Response ByteString) (Maybe ()))
removeUserFromProject Project
prj User
usr = do
Either (Response ByteString) (Maybe Version)
result <- Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Version))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabDelete Text
addr []
case Either (Response ByteString) (Maybe Version)
result of
Left Response ByteString
err -> Either (Response ByteString) (Maybe ())
-> GitLab (Either (Response ByteString) (Maybe ()))
forall a. a -> GitLabT IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Response ByteString -> Either (Response ByteString) (Maybe ())
forall a b. a -> Either a b
Left Response ByteString
err)
Right (Just (Version {})) -> Either (Response ByteString) (Maybe ())
-> GitLab (Either (Response ByteString) (Maybe ()))
forall a. a -> GitLabT IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Maybe () -> Either (Response ByteString) (Maybe ())
forall a b. b -> Either a b
Right (() -> Maybe ()
forall a. a -> Maybe a
Just ()))
Right Maybe Version
Nothing -> Either (Response ByteString) (Maybe ())
-> GitLab (Either (Response ByteString) (Maybe ()))
forall a. a -> GitLabT IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Maybe () -> Either (Response ByteString) (Maybe ())
forall a b. b -> Either a b
Right (() -> Maybe ()
forall a. a -> Maybe a
Just ()))
where
addr :: Text
addr =
Text
"/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"projects"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> ByteString -> Text
T.decodeUtf8 (Bool -> ByteString -> ByteString
urlEncode Bool
False (Text -> ByteString
T.encodeUtf8 ([Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Project -> Int
project_id Project
prj)))))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/members/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> ByteString -> Text
T.decodeUtf8 (Bool -> ByteString -> ByteString
urlEncode Bool
False (Text -> ByteString
T.encodeUtf8 ([Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (User -> Int
user_id User
usr)))))
removeUserFromGroup ::
Group ->
User ->
GitLab (Either (Response BSL.ByteString) (Maybe ()))
removeUserFromGroup :: Group -> User -> GitLab (Either (Response ByteString) (Maybe ()))
removeUserFromGroup Group
grp User
usr = do
Either (Response ByteString) (Maybe Version)
result <- Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Version))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabDelete Text
addr []
case Either (Response ByteString) (Maybe Version)
result of
Left Response ByteString
err -> Either (Response ByteString) (Maybe ())
-> GitLab (Either (Response ByteString) (Maybe ()))
forall a. a -> GitLabT IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Response ByteString -> Either (Response ByteString) (Maybe ())
forall a b. a -> Either a b
Left Response ByteString
err)
Right (Just (Version {})) -> Either (Response ByteString) (Maybe ())
-> GitLab (Either (Response ByteString) (Maybe ()))
forall a. a -> GitLabT IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Maybe () -> Either (Response ByteString) (Maybe ())
forall a b. b -> Either a b
Right (() -> Maybe ()
forall a. a -> Maybe a
Just ()))
Right Maybe Version
Nothing -> Either (Response ByteString) (Maybe ())
-> GitLab (Either (Response ByteString) (Maybe ()))
forall a. a -> GitLabT IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Maybe () -> Either (Response ByteString) (Maybe ())
forall a b. b -> Either a b
Right (() -> Maybe ()
forall a. a -> Maybe a
Just ()))
where
addr :: Text
addr =
Text
"/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"groups"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> ByteString -> Text
T.decodeUtf8 (Bool -> ByteString -> ByteString
urlEncode Bool
False (Text -> ByteString
T.encodeUtf8 ([Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Group -> Int
group_id Group
grp)))))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/members/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> ByteString -> Text
T.decodeUtf8 (Bool -> ByteString -> ByteString
urlEncode Bool
False (Text -> ByteString
T.encodeUtf8 ([Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (User -> Int
user_id User
usr)))))
approvePendingMember ::
Group ->
User ->
GitLab (Either (Response BSL.ByteString) (Maybe Member))
approvePendingMember :: Group
-> User -> GitLab (Either (Response ByteString) (Maybe Member))
approvePendingMember Group
grp User
usr =
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Member))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabPut Text
addr []
where
addr :: Text
addr =
Text
"/groups/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Group -> Int
group_id Group
grp))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/members/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (User -> Int
user_id User
usr))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/approve"
approveAllPendingMembers ::
Group ->
GitLab (Either (Response BSL.ByteString) (Maybe Member))
approveAllPendingMembers :: Group -> GitLab (Either (Response ByteString) (Maybe Member))
approveAllPendingMembers Group
grp =
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Member))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabPut Text
addr []
where
addr :: Text
addr =
Text
"/groups/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Group -> Int
group_id Group
grp))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/members/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/approve_all"
pendingMembers ::
Group ->
GitLab (Either (Response BSL.ByteString) [Member])
pendingMembers :: Group -> GitLabT IO (Either (Response ByteString) [Member])
pendingMembers Group
grp =
Text
-> [GitLabParam]
-> GitLabT IO (Either (Response ByteString) [Member])
forall a.
FromJSON a =>
Text -> [GitLabParam] -> GitLab (Either (Response ByteString) [a])
gitlabGetMany Text
addr []
where
addr :: Text
addr =
Text
"/groups/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Group -> Int
group_id Group
grp))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/pending_members"