./ct_report/coverage/mongoose_graphql_muc_admin_mutation.COVER.html

1 -module(mongoose_graphql_muc_admin_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 null_to_undefined/1]).
12
13 execute(_Ctx, _Obj, <<"createInstantRoom">>, Args) ->
14 3 create_instant_room(Args);
15 execute(_Ctx, _Obj, <<"inviteUser">>, Args) ->
16 3 invite_user(Args);
17 execute(_Ctx, _Obj, <<"kickUser">>, Args) ->
18 3 kick_user(Args);
19 execute(_Ctx, _Obj, <<"sendMessageToRoom">>, Args) ->
20 2 send_message_to_room(Args);
21 execute(_Ctx, _Obj, <<"sendPrivateMessage">>, Args) ->
22 1 send_private_message(Args);
23 execute(_Ctx, _Obj, <<"changeRoomConfiguration">>, Args) ->
24 2 change_room_config(Args);
25 execute(_Ctx, _Obj, <<"deleteRoom">>, Args) ->
26 3 delete_room(Args);
27 execute(_Ctx, _Obj, <<"setUserRole">>, Args) ->
28 6 set_user_role(Args);
29 execute(_Ctx, _Obj, <<"setUserAffiliation">>, Args) ->
30 7 set_user_affiliation(Args);
31 execute(_Ctx, _Obj, <<"enterRoom">>, Args) ->
32 4 enter_room(Args);
33 execute(_Ctx, _Obj, <<"exitRoom">>, Args) ->
34 1 exit_room(Args).
35
36 -spec create_instant_room(map()) -> {ok, map()} | {error, resolver_error()}.
37 create_instant_room(#{<<"mucDomain">> := MUCDomain, <<"name">> := Name,
38 <<"owner">> := OwnerJID, <<"nick">> := Nick}) ->
39 3 case mod_muc_api:create_instant_room(MUCDomain, Name, OwnerJID, Nick) of
40 {ok, Room} ->
41 1 {ok, mongoose_graphql_muc_helper:make_room_desc(Room)};
42 Error ->
43 2 make_error(Error, #{mucDomain => MUCDomain,
44 owner => jid:to_binary(OwnerJID)})
45 end.
46
47 -spec invite_user(map()) -> {ok, binary()} | {error, resolver_error()}.
48 invite_user(#{<<"room">> := RoomJID, <<"sender">> := SenderJID,
49 <<"recipient">> := RecipientJID, <<"reason">> := Reason}) ->
50 3 Reason2 = null_to_default(Reason, mongoose_graphql_muc_helper:default_invite_reason("admin")),
51 3 Res = mod_muc_api:invite_to_room(RoomJID, SenderJID, RecipientJID, Reason2),
52 3 format_result(Res, #{room => jid:to_binary(RoomJID),
53 sender => jid:to_binary(SenderJID)}).
54
55 -spec kick_user(map()) -> {ok, binary()} | {error, resolver_error()}.
56 kick_user(#{<<"room">> := RoomJID, <<"nick">> := Nick, <<"reason">> := Reason}) ->
57 3 Reason2 = null_to_default(Reason, mongoose_graphql_muc_helper:default_kick_reason("admin")),
58 3 Res = mod_muc_api:kick_user_from_room(RoomJID, Nick, Reason2),
59 3 format_result(Res, #{room => jid:to_binary(RoomJID)}).
60
61 -spec send_message_to_room(map()) -> {ok, binary()} | {error, resolver_error()}.
62 send_message_to_room(#{<<"room">> := RoomJID, <<"from">> := SenderJID, <<"body">> := Message}) ->
63 2 Res = mod_muc_api:send_message_to_room(RoomJID, SenderJID, Message),
64 2 format_result(Res, #{room => jid:to_binary(RoomJID),
65 from => jid:to_binary(SenderJID)}).
66
67 -spec send_private_message(map()) -> {ok, binary()} | {error, resolver_error()}.
68 send_private_message(#{<<"room">> := RoomJID, <<"from">> := SenderJID,
69 <<"toNick">> := ToNick, <<"body">> := Message}) ->
70 1 Res = mod_muc_api:send_private_message(RoomJID, SenderJID, ToNick, Message),
71 1 format_result(Res, #{room => jid:to_binary(RoomJID),
72 from => jid:to_binary(SenderJID)}).
73
74 -spec change_room_config(map()) -> {ok, map()} | {error, resolver_error()}.
75 change_room_config(#{<<"room">> := RoomJID, <<"config">> := ConfigInput}) ->
76 2 Fun = fun(Config) -> mongoose_graphql_muc_helper:make_muc_room_config(ConfigInput, Config) end,
77 2 case mod_muc_api:modify_room_config(RoomJID, Fun) of
78 {ok, Config} ->
79 1 {ok, mongoose_graphql_muc_helper:muc_room_config_to_map(Config)};
80 Error ->
81 1 make_error(Error, #{room => jid:to_binary(RoomJID)})
82 end.
83
84 -spec delete_room(map()) -> {ok, binary()} | {error, resolver_error()}.
85 delete_room(#{<<"room">> := RoomJID, <<"reason">> := Reason}) ->
86 3 Reason2 = null_to_default(Reason,
87 mongoose_graphql_muc_helper:default_room_removal_reason("admin")),
88 3 Res = mod_muc_api:delete_room(RoomJID, Reason2),
89 3 format_result(Res, #{room => jid:to_binary(RoomJID)}).
90
91 -spec set_user_role(map()) -> {ok, binary()} | {error, resolver_error()}.
92 set_user_role(#{<<"room">> := RoomJID, <<"nick">> := Nick, <<"role">> := Role}) ->
93 6 Result = mod_muc_api:set_role(RoomJID, Nick, Role),
94 6 format_result(Result, #{room => jid:to_binary(RoomJID)}).
95
96 -spec set_user_affiliation(map()) -> {ok, binary()} | {error, resolver_error()}.
97 set_user_affiliation(#{<<"room">> := RoomJID, <<"user">> := UserJID, <<"affiliation">> := Aff}) ->
98 7 Result = mod_muc_api:set_affiliation(RoomJID, UserJID, Aff),
99 7 format_result(Result, #{room => jid:to_binary(RoomJID)}).
100
101 -spec enter_room(map()) -> {ok, binary()} | {error, resolver_error()}.
102 enter_room(#{<<"room">> := RoomJID, <<"user">> := UserJID, <<"nick">> := Nick,
103 <<"password">> := Password}) ->
104 4 RoomJIDRes = jid:replace_resource(RoomJID, Nick),
105 4 Password2 = null_to_undefined(Password),
106 4 Result = mod_muc_api:enter_room(RoomJIDRes, UserJID, Password2),
107 4 format_result(Result, #{room => jid:to_binary(RoomJID)}).
108
109 -spec exit_room(map()) -> {ok, binary()} | {error, resolver_error()}.
110 exit_room(#{<<"room">> := RoomJID, <<"user">> := UserJID, <<"nick">> := Nick}) ->
111 1 RoomJIDRes = jid:replace_resource(RoomJID, Nick),
112 1 Result = mod_muc_api:exit_room(RoomJIDRes, UserJID),
113 1 format_result(Result, #{room => jid:to_binary(RoomJID)}).
Line Hits Source