./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 80 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, #{user := User,
48 role_in_room := owner,
49 jid := #jid{lserver = Server},
50 room_id := RoomID} = State) ->
51 11 {ok, Body, Req2} = cowboy_req:read_body(Req),
52 11 case mongoose_client_api:json_to_map(Body) of
53 {ok, #{<<"user">> := UserToInvite}} when is_binary(UserToInvite) ->
54 11 mod_muc_light_commands:change_affiliation(Server, RoomID, User, 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,
65 user := User} = State) ->
66 3 UserToRemove = cowboy_req:binding(user, Req),
67 3 remove_user_from_room(User, UserToRemove, Req, State);
68 delete_resource(Req, #{user := User} = State) ->
69 1 UserToRemove = cowboy_req:binding(user, Req),
70 1 case UserToRemove of
71 User ->
72 1 remove_user_from_room(User, User, Req, State);
73 _ ->
74
:-(
mongoose_client_api:forbidden_request(Req, State)
75 end.
76
77 remove_user_from_room(Remover, Target, Req,
78 #{jid := #jid{lserver = Server}, room_id := RoomID} = State) ->
79 4 mod_muc_light_commands:change_affiliation(Server, RoomID, Remover, Target, <<"none">>),
80 4 {true, Req, State}.
Line Hits Source