{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
module GitLab.API.Users where
import Data.List
import Data.Maybe
import Data.Text (Text)
import GitLab.Types
import GitLab.WebRequests.GitLabWebCalls
allUsers :: GitLab [User]
allUsers = do
let path = "/users"
gitlabUnsafe path
searchUser ::
Text ->
GitLab (Maybe User)
searchUser username = do
let path = "/users"
attrs = "&username=" <> username
res <- gitlabWithAttrsUnsafe path attrs
case res of
[] -> return Nothing
(user : _) -> return (Just user)
orderedUsers ::
[Text] ->
GitLab [User]
orderedUsers usernames = do
users <- catMaybes <$> mapM searchUser usernames
return (orderUsersByName users)
where
orderUsersByName :: [User] -> [User]
orderUsersByName =
sortBy (\u1 u2 -> compare (user_name u1) (user_name u2))