./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
12 execute(_Ctx, _Obj, <<"createInstantRoom">>, Args) ->
13 3 create_instant_room(Args);
14 execute(_Ctx, _Obj, <<"inviteUser">>, Args) ->
15 2 invite_user(Args);
16 execute(_Ctx, _Obj, <<"kickUser">>, Args) ->
17 1 kick_user(Args);
18 execute(_Ctx, _Obj, <<"sendMessageToRoom">>, Args) ->
19 2 send_message_to_room(Args);
20 execute(_Ctx, _Obj, <<"changeRoomConfiguration">>, Args) ->
21 2 change_room_config(Args);
22 execute(_Ctx, _Obj, <<"deleteRoom">>, Args) ->
23 3 delete_room(Args).
24
25 -spec create_instant_room(map()) -> {ok, map()} | {error, resolver_error()}.
26 create_instant_room(#{<<"mucDomain">> := MUCDomain, <<"name">> := Name,
27 <<"owner">> := OwnerJID, <<"nick">> := Nick}) ->
28 3 case mod_muc_api:create_instant_room(MUCDomain, Name, OwnerJID, Nick) of
29 {ok, Room} ->
30 1 {ok, mongoose_graphql_muc_helper:make_room_desc(Room)};
31 Error ->
32 2 make_error(Error, #{mucDomain => MUCDomain,
33 owner => jid:to_binary(OwnerJID)})
34 end.
35
36 -spec invite_user(map()) -> {ok, binary()} | {error, resolver_error()}.
37 invite_user(#{<<"room">> := RoomJID, <<"sender">> := SenderJID,
38 <<"recipient">> := RecipientJID, <<"reason">> := Reason}) ->
39 2 Reason2 = null_to_default(Reason, mongoose_graphql_muc_helper:default_invite_reason("admin")),
40 2 Res = mod_muc_api:invite_to_room(RoomJID, SenderJID, RecipientJID, Reason2),
41 2 format_result(Res, #{room => jid:to_binary(RoomJID),
42 sender => jid:to_binary(SenderJID)}).
43
44 -spec kick_user(map()) -> {ok, binary()} | {error, resolver_error()}.
45 kick_user(#{<<"room">> := RoomJID, <<"nick">> := Nick, <<"reason">> := Reason}) ->
46 1 Reason2 = null_to_default(Reason, mongoose_graphql_muc_helper:default_kick_reason("admin")),
47 1 Res = mod_muc_api:kick_user_from_room(RoomJID, Nick, Reason2),
48 1 format_result(Res, #{room => jid:to_binary(RoomJID)}).
49
50 -spec send_message_to_room(map()) -> {ok, binary()} | {error, resolver_error()}.
51 send_message_to_room(#{<<"room">> := RoomJID, <<"from">> := SenderJID, <<"body">> := Message}) ->
52 2 Res = mod_muc_api:send_message_to_room(RoomJID, SenderJID, Message),
53 2 format_result(Res, #{room => jid:to_binary(RoomJID),
54 from => jid:to_binary(SenderJID)}).
55
56 -spec change_room_config(map()) -> {ok, map()} | {error, resolver_error()}.
57 change_room_config(#{<<"room">> := RoomJID, <<"config">> := ConfigInput}) ->
58 2 Fun = fun(Config) -> mongoose_graphql_muc_helper:make_muc_room_config(ConfigInput, Config) end,
59 2 case mod_muc_api:modify_room_config(RoomJID, Fun) of
60 {ok, Config} ->
61 1 {ok, mongoose_graphql_muc_helper:muc_room_config_to_map(Config)};
62 Error ->
63 1 make_error(Error, #{room => jid:to_binary(RoomJID)})
64 end.
65
66 -spec delete_room(map()) -> {ok, binary()} | {error, resolver_error()}.
67 delete_room(#{<<"room">> := RoomJID, <<"reason">> := Reason}) ->
68 3 Reason2 = null_to_default(Reason,
69 mongoose_graphql_muc_helper:default_room_removal_reason("admin")),
70 3 Res = mod_muc_api:delete_room(RoomJID, Reason2),
71 3 format_result(Res, #{room => jid:to_binary(RoomJID)}).
Line Hits Source