./ct_report/coverage/mongoose_client_api_rooms_config.COVER.html

1 -module(mongoose_client_api_rooms_config).
2
3 -behaviour(mongoose_client_api).
4 -export([routes/0]).
5
6 -behaviour(cowboy_rest).
7 -export([trails/0,
8 init/2,
9 is_authorized/2,
10 content_types_accepted/2,
11 allowed_methods/2,
12 from_json/2]).
13
14 -ignore_xref([from_json/2, trails/0]).
15
16 -import(mongoose_client_api, [parse_body/1, try_handle_request/3, throw_error/2]).
17 -import(mongoose_client_api_rooms, [get_room_jid/3, get_room_name/1, get_room_subject/1]).
18
19 -type req() :: cowboy_req:req().
20 -type state() :: map().
21
22 -spec routes() -> mongoose_http_handler:routes().
23 routes() ->
24 4 [{"/rooms/[:id]/config", ?MODULE, #{}}].
25
26 trails() ->
27 4 mongoose_client_api_rooms_config_doc:trails().
28
29 -spec init(req(), state()) -> {cowboy_rest, req(), state()}.
30 init(Req, Opts) ->
31
:-(
mongoose_client_api:init(Req, Opts).
32
33 -spec is_authorized(req(), state()) -> {true | {false, iodata()}, req(), state()}.
34 is_authorized(Req, State) ->
35
:-(
mongoose_client_api:is_authorized(Req, State).
36
37 content_types_accepted(Req, State) ->
38
:-(
mongoose_client_api_rooms:content_types_accepted(Req, State).
39
40 allowed_methods(Req, State) ->
41
:-(
{[<<"OPTIONS">>, <<"PUT">>], Req, State}.
42
43 %% @doc Called for a method of type "PUT"
44 -spec from_json(req(), state()) -> {true | stop, req(), state()}.
45 from_json(Req, State) ->
46
:-(
try_handle_request(Req, State, fun handle_put/2).
47
48 %% Internal functions
49
50 handle_put(Req, State = #{jid := UserJid}) ->
51
:-(
Bindings = cowboy_req:bindings(Req),
52
:-(
RoomJid = get_room_jid(Bindings, State, required),
53
:-(
Args = parse_body(Req),
54
:-(
Name = get_room_name(Args),
55
:-(
Subject = get_room_subject(Args),
56
:-(
Config = #{<<"roomname">> => Name, <<"subject">> => Subject},
57
:-(
case mod_muc_light_api:change_room_config(RoomJid, UserJid, Config) of
58 {ok, _} ->
59
:-(
{true, Req, State};
60 {not_room_member, Msg} ->
61
:-(
throw_error(denied, Msg);
62 {not_allowed, Msg} ->
63
:-(
throw_error(denied, Msg);
64 {room_not_found, Msg} ->
65
:-(
throw_error(not_found, Msg);
66 {validation_error, Msg} ->
67
:-(
throw_error(bad_request, Msg)
68 end.
Line Hits Source