./ct_report/coverage/mongoose_graphql_muc_light_admin_mutation.COVER.html

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