./ct_report/coverage/mongoose_graphql_muc_light_user_mutation.COVER.html

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