Skip to content

Commit 97ffe12

Browse files
committed
Servantify brig internal api: put,get /i/user/:uid/status
1 parent b05b8ea commit 97ffe12

File tree

2 files changed

+30
-20
lines changed

2 files changed

+30
-20
lines changed

libs/wire-api/src/Wire/API/Routes/Internal/Brig.hs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,22 @@ type AccountAPI =
203203
]
204204
DeleteUserResponse
205205
)
206+
:<|> Named
207+
"iPutUserStatus"
208+
( "users"
209+
-- FUTUREWORK: `:> CanThrow ...`
210+
:> Capture "uid" UserId
211+
:> "status"
212+
:> ReqBody '[Servant.JSON] AccountStatusUpdate
213+
:> Put '[Servant.JSON] NoContent
214+
)
215+
:<|> Named
216+
"iGetUserStatus"
217+
( "users"
218+
:> CanThrow 'UserNotFound
219+
:> Capture "uid" UserId
220+
:> Get '[Servant.JSON] AccountStatusResp
221+
)
206222

207223
-- | The missing ref is implicit by the capture
208224
data NewKeyPackageRef = NewKeyPackageRef

services/brig/src/Brig/API/Internal.hs

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,8 @@ accountAPI =
161161
:<|> Named @"createUserNoVerifySpar" (callsFed (exposeAnnotations createUserNoVerifySpar))
162162
:<|> Named @"putSelfEmail" changeSelfEmailMaybeSendH
163163
:<|> Named @"iDeleteUser" deleteUserNoAuthH
164+
:<|> Named @"iPutUserStatus" changeAccountStatusH
165+
:<|> Named @"iGetUserStatus" getAccountStatusH
164166

165167
teamsAPI :: ServerT BrigIRoutes.TeamsAPI (Handler r)
166168
teamsAPI = Named @"updateSearchVisibilityInbound" Index.updateSearchVisibilityInbound
@@ -314,14 +316,6 @@ sitemap = unsafeCallsFed @'Brig @"on-user-deleted-connections" $ do
314316
.&. (param "email" ||| param "phone")
315317
.&. def False (query "includePendingInvitations")
316318

317-
put "/i/users/:uid/status" (continue changeAccountStatusH) $
318-
capture "uid"
319-
.&. jsonRequest @AccountStatusUpdate
320-
321-
get "/i/users/:uid/status" (continue getAccountStatusH) $
322-
accept "application" "json"
323-
.&. capture "uid"
324-
325319
get "/i/users/:uid/contacts" (continue getContactListH) $
326320
accept "application" "json"
327321
.&. capture "uid"
@@ -626,18 +620,18 @@ newtype GetPasswordResetCodeResp = GetPasswordResetCodeResp (PasswordResetKey, P
626620
instance ToJSON GetPasswordResetCodeResp where
627621
toJSON (GetPasswordResetCodeResp (k, c)) = object ["key" .= k, "code" .= c]
628622

629-
changeAccountStatusH :: UserId ::: JsonRequest AccountStatusUpdate -> (Handler r) Response
630-
changeAccountStatusH (usr ::: req) = do
631-
status <- suStatus <$> parseJsonBody req
632-
wrapHttpClientE (API.changeSingleAccountStatus usr status) !>> accountStatusError
633-
pure empty
634-
635-
getAccountStatusH :: JSON ::: UserId -> (Handler r) Response
636-
getAccountStatusH (_ ::: usr) = do
637-
status <- lift $ wrapClient $ API.lookupStatus usr
638-
pure $ case status of
639-
Just s -> json $ AccountStatusResp s
640-
Nothing -> setStatus status404 empty
623+
changeAccountStatusH :: UserId -> AccountStatusUpdate -> (Handler r) NoContent
624+
changeAccountStatusH usr (suStatus -> status) = do
625+
wrapHttpClientE (API.changeSingleAccountStatus usr status) !>> accountStatusError -- FUTUREWORK: use CanThrow and related machinery
626+
pure NoContent
627+
628+
getAccountStatusH :: UserId -> (Handler r) AccountStatusResp
629+
getAccountStatusH uid = do
630+
status <- lift $ wrapClient $ API.lookupStatus uid
631+
maybe
632+
(throwStd (errorToWai @'E.UserNotFound))
633+
(pure . AccountStatusResp)
634+
status
641635

642636
getConnectionsStatusUnqualified :: ConnectionsStatusRequest -> Maybe Relation -> (Handler r) [ConnectionStatus]
643637
getConnectionsStatusUnqualified ConnectionsStatusRequest {csrFrom, csrTo} flt = lift $ do

0 commit comments

Comments
 (0)