./ct_report/coverage/mongoose_graphql_muc_light_user_mutation.COVER.html

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