./ct_report/coverage/mongoose_graphql_muc_user_mutation.COVER.html

1 -module(mongoose_graphql_muc_user_mutation).
2 -behaviour(mongoose_graphql).
3
4 -export([execute/4]).
5
6 -ignore_xref([execute/4]).
7
8 -include("../mongoose_graphql_types.hrl").
9
10 -import(mongoose_graphql_helper, [make_error/2, format_result/2, null_to_default/2]).
11
12 execute(Ctx, _Obj, <<"createInstantRoom">>, Args) ->
13 2 create_instant_room(Ctx, Args);
14 execute(Ctx, _Obj, <<"inviteUser">>, Args) ->
15 1 invite_user(Ctx, Args);
16 execute(Ctx, _Obj, <<"kickUser">>, Args) ->
17 1 kick_user(Ctx, Args);
18 execute(Ctx, _Obj, <<"sendMessageToRoom">>, Args) ->
19 4 send_message_to_room(Ctx, Args);
20 execute(Ctx, _Obj, <<"changeRoomConfiguration">>, Args) ->
21 3 change_room_config(Ctx, Args);
22 execute(Ctx, _Obj, <<"deleteRoom">>, Args) ->
23 3 delete_room(Ctx, Args).
24
25 -spec create_instant_room(map(), map()) -> {ok, map()} | {error, resolver_error()}.
26 create_instant_room(#{user := UserJID}, #{<<"mucDomain">> := MUCDomain, <<"name">> := Name,
27 <<"nick">> := Nick}) ->
28 2 case mod_muc_api:create_instant_room(MUCDomain, Name, UserJID, Nick) of
29 {ok, Room} ->
30 1 {ok, mongoose_graphql_muc_helper:make_room_desc(Room)};
31 Error ->
32 1 make_error(Error, #{mucDomain => MUCDomain})
33 end.
34
35 -spec invite_user(map(), map()) -> {ok, binary()} | {error, resolver_error()}.
36 invite_user(#{user := UserJID}, #{<<"room">> := RoomJID, <<"recipient">> := RecipientJID,
37 <<"reason">> := Reason}) ->
38 1 Reason2 = null_to_default(Reason, mongoose_graphql_muc_helper:default_invite_reason("user")),
39 1 Res = mod_muc_api:invite_to_room(RoomJID, UserJID, RecipientJID, Reason2),
40 1 format_result(Res, #{room => jid:to_binary(RoomJID)}).
41
42 -spec kick_user(map(), map()) -> {ok, binary()} | {error, resolver_error()}.
43 kick_user(#{user := _UserJID}, #{<<"room">> := RoomJID, <<"nick">> := Nick,
44 <<"reason">> := Reason}) ->
45 1 Reason2 = null_to_default(Reason, mongoose_graphql_muc_helper:default_kick_reason("user")),
46 1 Res = mod_muc_api:kick_user_from_room(RoomJID, Nick, Reason2),
47 1 format_result(Res, #{room => jid:to_binary(RoomJID)}).
48
49 -spec send_message_to_room(map(), map()) -> {ok, binary()} | {error, resolver_error()}.
50 send_message_to_room(#{user := UserJID}, #{<<"room">> := RoomJID, <<"body">> := Message,
51 <<"resource">> := Res}) ->
52 4 Result = do_send_message_to_room(RoomJID, UserJID, Message, Res),
53 4 format_result(Result, #{room => jid:to_binary(RoomJID)}).
54
55 -spec change_room_config(map(), map()) -> {ok, map()} | {error, resolver_error()}.
56 change_room_config(#{user := UserJID}, #{<<"room">> := RoomJID, <<"config">> := ConfigInput}) ->
57 3 Fun = fun(Config) -> mongoose_graphql_muc_helper:make_muc_room_config(ConfigInput, Config) end,
58 3 case mod_muc_api:modify_room_config(RoomJID, UserJID, Fun) of
59 {ok, Config} ->
60 1 {ok, mongoose_graphql_muc_helper:muc_room_config_to_map(Config)};
61 Error ->
62 2 make_error(Error, #{room => jid:to_binary(RoomJID)})
63 end.
64
65 -spec delete_room(map(), map()) -> {ok, binary()} | {error, resolver_error()}.
66 delete_room(#{user := UserJID}, #{<<"room">> := RoomJID, <<"reason">> := Reason}) ->
67 3 Reason2 = null_to_default(Reason,
68 mongoose_graphql_muc_helper:default_room_removal_reason("user")),
69 3 Res = mod_muc_api:delete_room(RoomJID, UserJID, Reason2),
70 3 format_result(Res, #{room => jid:to_binary(RoomJID)}).
71
72 -spec do_send_message_to_room(jid:jid(), jid:jid(), binary(), binary() | null) ->
73 {ok | no_session, iolist()}.
74 do_send_message_to_room(RoomJID, UserJID, Message, Res) ->
75 4 case mongoose_graphql_muc_helper:add_user_resource(UserJID, Res) of
76 {ok, UserJIDRes} ->
77 3 mod_muc_api:send_message_to_room(RoomJID, UserJIDRes, Message);
78 Error ->
79 1 Error
80 end.
Line Hits Source