./ct_report/coverage/mongoose_graphql_muc_light_admin_mutation.COVER.html

1 -module(mongoose_graphql_muc_light_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, format_result/2]).
10 -import(mongoose_graphql_muc_light_helper, [make_room/1, make_ok_user/1,
11 prepare_blocking_items/1]).
12
13 execute(_Ctx, _Obj, <<"createRoom">>, Args) ->
14 5 create_room(Args);
15 execute(_Ctx, _Obj, <<"changeRoomConfiguration">>, Args) ->
16 5 change_room_config(Args);
17 execute(_Ctx, _Obj, <<"inviteUser">>, Args) ->
18 4 invite_user(Args);
19 execute(_Ctx, _Obj, <<"deleteRoom">>, Args) ->
20 3 delete_room(Args);
21 execute(_Ctx, _Obj, <<"kickUser">>, Args) ->
22 1 kick_user(Args);
23 execute(_Ctx, _Obj, <<"sendMessageToRoom">>, Args) ->
24 4 send_msg_to_room(Args);
25 execute(_Ctx, _Obj, <<"setBlockingList">>, Args) ->
26 3 set_blocking_list(Args).
27
28 -spec create_room(map()) -> {ok, map()} | {error, resolver_error()}.
29 create_room(#{<<"id">> := null, <<"mucDomain">> := MUCDomain, <<"name">> := RoomName,
30 <<"owner">> := CreatorJID, <<"subject">> := Subject}) ->
31 2 case mod_muc_light_api:create_room(MUCDomain, CreatorJID, RoomName, Subject) of
32 {ok, Room} ->
33 1 {ok, make_room(Room)};
34 Err ->
35 1 make_error(Err, #{mucDomain => MUCDomain, creator => CreatorJID})
36 end;
37 create_room(#{<<"id">> := RoomID, <<"mucDomain">> := MUCDomain, <<"name">> := RoomName,
38 <<"owner">> := CreatorJID, <<"subject">> := Subject}) ->
39 3 case mod_muc_light_api:create_room(MUCDomain, RoomID, CreatorJID, RoomName, Subject) of
40 {ok, Room} ->
41 1 {ok, make_room(Room)};
42 Err ->
43 2 make_error(Err, #{mucDomain => MUCDomain, id => RoomID, creator => CreatorJID})
44 end.
45
46 -spec change_room_config(map()) -> {ok, map()} | {error, resolver_error()}.
47 change_room_config(#{<<"room">> := RoomJID, <<"name">> := RoomName,
48 <<"owner">> := OwnerJID, <<"subject">> := Subject}) ->
49 5 case mod_muc_light_api:change_room_config(RoomJID, OwnerJID, RoomName, Subject) of
50 {ok, Room} ->
51 1 {ok, make_room(Room)};
52 Err ->
53 4 make_error(Err, #{room => jid:to_binary(RoomJID), owner => jid:to_binary(OwnerJID)})
54 end.
55
56 -spec delete_room(map()) -> {ok, binary()} | {error, resolver_error()}.
57 delete_room(#{<<"room">> := RoomJID}) ->
58 3 Result = mod_muc_light_api:delete_room(RoomJID),
59 3 format_result(Result, #{room => jid:to_binary(RoomJID)}).
60
61 -spec invite_user(map()) -> {ok, binary()} | {error, resolver_error()}.
62 invite_user(#{<<"room">> := RoomJID, <<"sender">> := SenderJID,
63 <<"recipient">> := RecipientJID}) ->
64 4 Result = mod_muc_light_api:invite_to_room(RoomJID, SenderJID, RecipientJID),
65 4 format_result(Result, #{room => jid:to_binary(RoomJID), sender => jid:to_binary(SenderJID),
66 recipient => jid:to_binary(RecipientJID)}).
67
68 -spec kick_user(map()) -> {ok, binary()} | {error, resolver_error()}.
69 kick_user(#{<<"room">> := RoomJID, <<"user">> := UserJID}) ->
70 1 Result = mod_muc_light_api:remove_user_from_room(RoomJID, UserJID, UserJID),
71 1 format_result(Result, #{user => UserJID}).
72
73 -spec send_msg_to_room(map()) -> {ok, binary()} | {error, resolver_error()}.
74 send_msg_to_room(#{<<"room">> := RoomJID, <<"from">> := FromJID, <<"body">> := Message}) ->
75 4 Result = mod_muc_light_api:send_message(RoomJID, FromJID, Message),
76 4 format_result(Result, #{room => jid:to_binary(RoomJID), from => jid:to_binary(FromJID)}).
77
78 -spec set_blocking_list(map()) -> {ok, binary()} | {error, resolver_error()}.
79 set_blocking_list(#{<<"user">> := UserJID, <<"items">> := Items}) ->
80 3 Items2 = prepare_blocking_items(Items),
81 3 Result = mod_muc_light_api:set_blocking(UserJID, Items2),
82 3 format_result(Result, #{user => jid:to_binary(UserJID)}).
Line Hits Source