./ct_report/coverage/mongoose_client_api_rooms_users.COVER.html

1 -module(mongoose_client_api_rooms_users).
2 -behaviour(cowboy_rest).
3
4 -export([trails/0]).
5
6 -export([init/2]).
7 -export([content_types_provided/2]).
8 -export([content_types_accepted/2]).
9 -export([is_authorized/2]).
10 -export([allowed_methods/2]).
11 -export([resource_exists/2]).
12 -export([allow_missing_post/2]).
13
14 -export([from_json/2]).
15 -export([delete_resource/2]).
16
17 -ignore_xref([from_json/2, trails/0]).
18
19 -include("mongoose.hrl").
20 -include("jlib.hrl").
21 -include_lib("exml/include/exml.hrl").
22
23 trails() ->
24 83 mongoose_client_api_rooms_users_doc:trails().
25
26 init(Req, Opts) ->
27 16 mongoose_client_api:init(Req, Opts).
28
29 is_authorized(Req, State) ->
30 16 mongoose_client_api:is_authorized(Req, State).
31
32 content_types_provided(Req, State) ->
33 16 mongoose_client_api_rooms:content_types_provided(Req, State).
34
35 content_types_accepted(Req, State) ->
36 12 mongoose_client_api_rooms:content_types_accepted(Req, State).
37
38 allowed_methods(Req, State) ->
39 16 {[<<"OPTIONS">>, <<"POST">>, <<"DELETE">>], Req, State}.
40
41 resource_exists(Req, State) ->
42 16 mongoose_client_api_rooms:resource_exists(Req, State).
43
44 allow_missing_post(Req, State) ->
45
:-(
{false, Req, State}.
46
47 from_json(Req, #{role_in_room := owner,
48 jid := UserJID,
49 room := #{jid := RoomJID}} = State) ->
50 11 {ok, Body, Req2} = cowboy_req:read_body(Req),
51 11 case mongoose_client_api:json_to_map(Body) of
52 {ok, #{<<"user">> := UserToInvite}} when is_binary(UserToInvite) ->
53 11 mod_muc_light_api:change_affiliation(RoomJID, UserJID,
54 jid:from_binary(UserToInvite), <<"member">>),
55 11 {true, Req2, State};
56 _ ->
57
:-(
{false, Req, State}
58 end;
59 from_json(Req, State) ->
60 1 mongoose_client_api:forbidden_request(Req, State).
61
62 delete_resource(Req, #{role_in_room := none} = State) ->
63
:-(
mongoose_client_api:forbidden_request(Req, State);
64 delete_resource(Req, #{role_in_room := owner} = State) ->
65 3 UserToRemove = cowboy_req:binding(user, Req),
66 3 remove_user_from_room(UserToRemove, Req, State);
67 delete_resource(Req, #{user := User} = State) ->
68 1 UserToRemove = cowboy_req:binding(user, Req),
69 1 case UserToRemove of
70 User ->
71 1 remove_user_from_room(User, Req, State);
72 _ ->
73
:-(
mongoose_client_api:forbidden_request(Req, State)
74 end.
75
76 remove_user_from_room(Target, Req,
77 #{jid := UserJID, room := #{jid := RoomJID}} = State) ->
78 4 mod_muc_light_api:change_affiliation(RoomJID, UserJID, jid:from_binary(Target), <<"none">>),
79 4 {true, Req, State}.
Line Hits Source