./ct_report/coverage/mongoose_graphql_session_admin_mutation.COVER.html

1 -module(mongoose_graphql_session_admin_mutation).
2
3 -export([execute/4]).
4
5 -ignore_xref([execute/4]).
6
7 -include("../mongoose_graphql_types.hrl").
8
9 -import(mongoose_graphql_helper, [make_error/2]).
10
11 execute(_Ctx, _Obj, <<"kickUser">>, Args) ->
12 4 kick_user(Args);
13 execute(_Ctx, _Obj, <<"setPresence">>, Args) ->
14 4 set_presence(Args).
15
16 -spec kick_user(map()) -> {ok, map()} | {error, resolver_error()}.
17 kick_user(#{<<"user">> := JID, <<"reason">> := KickReason}) ->
18 4 Result = mongoose_session_api:kick_session(JID, KickReason),
19 4 format_session_payload(Result, JID).
20
21 -spec set_presence(map()) -> {ok, map()} | {error, resolver_error()}.
22 set_presence(#{<<"user">> := JID, <<"type">> := Type,
23 <<"show">> := Show, <<"status">> := Status,
24 <<"priority">> := Priority}) ->
25 4 Show2 = null_to_empty(Show),
26 4 Status2 = null_to_empty(Status),
27 4 Priority2 = null_to_empty(Priority),
28 4 Result = mongoose_session_api:set_presence(JID, Type, Show2, Status2, Priority2),
29 4 format_session_payload(Result, JID).
30
31 %% Internal
32
33 -spec null_to_empty(null | integer() | binary()) -> binary().
34 4 null_to_empty(null) -> <<>>;
35 2 null_to_empty(Int) when is_integer(Int) -> integer_to_binary(Int);
36 6 null_to_empty(Bin) -> Bin.
37
38 -spec format_session_payload({atom(), binary()}, jid:jid()) ->
39 {ok, map()} | {error, resolver_error()}.
40 format_session_payload(InResult, JID) ->
41 8 case InResult of
42 {ok, Msg} ->
43 5 {ok, make_session_payload(Msg, JID)};
44 Result ->
45 3 make_error(Result, #{jid => JID})
46 end.
47
48 -spec make_session_payload(binary(), jid:jid()) -> map().
49 make_session_payload(Msg, JID) ->
50 5 #{<<"message">> => Msg, <<"jid">> => JID}.
Line Hits Source