module Galley.Intra.Spar
( deleteTeam,
lookupScimUserInfos,
)
where
import Bilge
import Data.ByteString.Conversion
import Data.Id
import Data.Set qualified as Set
import Galley.Intra.Util
import Galley.Monad
import Imports
import Network.HTTP.Types.Method
import Wire.API.User (ScimUserInfo, UserSet (..), scimUserInfos)
deleteTeam :: TeamId -> App ()
deleteTeam :: TeamId -> App ()
deleteTeam TeamId
tid = do
App (Response (Maybe ByteString)) -> App ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (App (Response (Maybe ByteString)) -> App ())
-> ((Request -> Request) -> App (Response (Maybe ByteString)))
-> (Request -> Request)
-> App ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. IntraComponent
-> (Request -> Request) -> App (Response (Maybe ByteString))
call IntraComponent
Spar ((Request -> Request) -> App ()) -> (Request -> Request) -> App ()
forall a b. (a -> b) -> a -> b
$
StdMethod -> Request -> Request
method StdMethod
DELETE
(Request -> Request) -> (Request -> Request) -> Request -> Request
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [ByteString] -> Request -> Request
paths [ByteString
"i", ByteString
"teams", TeamId -> ByteString
forall a. ToByteString a => a -> ByteString
toByteString' TeamId
tid]
(Request -> Request) -> (Request -> Request) -> Request -> Request
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Request -> Request
expect2xx
lookupScimUserInfos :: [UserId] -> App [ScimUserInfo]
lookupScimUserInfos :: [UserId] -> App [ScimUserInfo]
lookupScimUserInfos [UserId]
uids = do
Response (Maybe ByteString)
response <-
IntraComponent
-> (Request -> Request) -> App (Response (Maybe ByteString))
call IntraComponent
Spar ((Request -> Request) -> App (Response (Maybe ByteString)))
-> (Request -> Request) -> App (Response (Maybe ByteString))
forall a b. (a -> b) -> a -> b
$
StdMethod -> Request -> Request
method StdMethod
POST
(Request -> Request) -> (Request -> Request) -> Request -> Request
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [ByteString] -> Request -> Request
paths [ByteString
"i", ByteString
"scim", ByteString
"userinfos"]
(Request -> Request) -> (Request -> Request) -> Request -> Request
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UserSet -> Request -> Request
forall a. ToJSON a => a -> Request -> Request
json (Set UserId -> UserSet
UserSet (Set UserId -> UserSet) -> Set UserId -> UserSet
forall a b. (a -> b) -> a -> b
$ [UserId] -> Set UserId
forall a. Ord a => [a] -> Set a
Set.fromList [UserId]
uids)
[ScimUserInfo] -> App [ScimUserInfo]
forall a. a -> App a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ([ScimUserInfo] -> App [ScimUserInfo])
-> [ScimUserInfo] -> App [ScimUserInfo]
forall a b. (a -> b) -> a -> b
$ (ScimUserInfos -> [ScimUserInfo])
-> Maybe ScimUserInfos -> [ScimUserInfo]
forall m a. Monoid m => (a -> m) -> Maybe a -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap ScimUserInfos -> [ScimUserInfo]
scimUserInfos (Maybe ScimUserInfos -> [ScimUserInfo])
-> Maybe ScimUserInfos -> [ScimUserInfo]
forall a b. (a -> b) -> a -> b
$ Response (Maybe ByteString) -> Maybe ScimUserInfos
forall a.
(HasCallStack, Typeable a, FromJSON a) =>
Response (Maybe ByteString) -> Maybe a
responseJsonMaybe Response (Maybe ByteString)
response