Skip to content

Commit 1428ceb

Browse files
authoredJan 28, 2025··
Merge pull request #4473 from esl/xml_cleanups
Cleanup exml types
2 parents ce1b5f6 + 2c9994c commit 1428ceb

16 files changed

+66
-87
lines changed
 

‎big_tests/rebar.config

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
%% We use https:// instead of git://
1010
{deps, [
11-
{exml, "4.0.0", {pkg, hexml}},
11+
{exml, "4.1.1", {pkg, hexml}},
1212
{bbmustache, "1.12.2"},
1313
{jiffy, "1.1.2"},
1414
{proper, "1.4.0"},

‎big_tests/rebar.lock

+3-3
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
0},
1313
{<<"escalus">>,{pkg,<<"escalus">>,<<"4.3.0">>},0},
1414
{<<"esip">>,{pkg,<<"esip">>,<<"1.0.56">>},0},
15-
{<<"exml">>,{pkg,<<"hexml">>,<<"4.0.0">>},0},
15+
{<<"exml">>,{pkg,<<"hexml">>,<<"4.1.1">>},0},
1616
{<<"fast_pbkdf2">>,{pkg,<<"fast_pbkdf2">>,<<"1.0.6">>},2},
1717
{<<"fast_scram">>,{pkg,<<"fast_scram">>,<<"0.6.1">>},1},
1818
{<<"fast_tls">>,{pkg,<<"fast_tls">>,<<"1.1.21">>},1},
@@ -44,7 +44,7 @@
4444
{<<"ct_groups_summary_hook">>, <<"21B94902B6CF2D345F4D790D34B49654E71CB8E570DCCC9C1C3616DAE720A7AA">>},
4545
{<<"escalus">>, <<"80301D57F4C863FA95F09AE148524508F18D7389B5070E2A5FFB7A38B51527C5">>},
4646
{<<"esip">>, <<"63C0FDC667BE751714E1E5C14621A9334F21B60AC1BB68BE889454CA9CA021B7">>},
47-
{<<"exml">>, <<"54C1AAD5BD290EC31C19CE4A5D449C7E3236107AA2D3610FC04FC963DC8EAF13">>},
47+
{<<"exml">>, <<"D46272177F3B779D75058005C744997034823AB3A237F9B30B56A583B063FDE3">>},
4848
{<<"fast_pbkdf2">>, <<"199BCEC73A1A246941E9465D3DC41052953B638128841ED24B29ED03CF70AF27">>},
4949
{<<"fast_scram">>, <<"BEEADB03D774640F0671681759CE53B2FF33CB58C86FD9BF2A793E2FC1ED0F5D">>},
5050
{<<"fast_tls">>, <<"65D7D547A09EEFB37A1C0D04D8601FAC4F3E6E2C1EDE859A7787081670F9648D">>},
@@ -75,7 +75,7 @@
7575
{<<"ct_groups_summary_hook">>, <<"997CDE48FEB0C398989E4091A341D4FFF43CFA06CDB8FB2E80CC4A0E0362691C">>},
7676
{<<"escalus">>, <<"8C4D39677D55C48B04EDE4EAC0FD0AD2A574BEDE7180761E6E3D3877900C7708">>},
7777
{<<"esip">>, <<"9EF3660CEF93B623F7368DCD5C79F4E704358631909E6DD464E335378815DA1F">>},
78-
{<<"exml">>, <<"08CC97527C708D57A03F467049AC260B5951BD67906AA154BE56B5D8BDD3238C">>},
78+
{<<"exml">>, <<"86C154396A9B21EEB0EDB9636D0E2D493FE0F59EAAF40FCFE795210F31119D8F">>},
7979
{<<"fast_pbkdf2">>, <<"35EEC22629AAA739915843C7B7DE0D84657D1ECE972D8BBC86368747E9C14012">>},
8080
{<<"fast_scram">>, <<"FE0650A309FDF97C75E1EA812CCFB40EB464ECAFD3783E83AA17C7F572EDAB0B">>},
8181
{<<"fast_tls">>, <<"131542913937025E48CD80AA81F00359686D5501B75621E72026A87B5229505B">>},

‎big_tests/tests/graphql_private_SUITE.erl

+1-1
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ parse_xml_error(Config) ->
159159
parse_xml_error(Config, Alice) ->
160160
ResultSet = user_set_private(Alice, <<"AAAABBBB">>, Config),
161161
?assertEqual(<<"Input coercion failed for type XmlElement with value <<\"AAAABBBB\">>."
162-
" The reason it failed is: \"expected <\"">>,
162+
" The reason it failed is: <<\"expected <\">>">>,
163163
get_coercion_err_msg(ResultSet)).
164164

165165
% User private not configured test cases

‎big_tests/tests/graphql_stanza_SUITE.erl

+1-1
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,7 @@ user_send_stanza_with_spoofed_from_story(Config, Alice, Bob) ->
393393
admin_send_unparsable_stanza(Config) ->
394394
Res = send_stanza(<<"<test">>, Config),
395395
?assertEqual(<<"Input coercion failed for type XmlElement with value <<\"<test\">>. "
396-
"The reason it failed is: \"expected >\"">>,
396+
"The reason it failed is: <<\"expected >\">>">>,
397397
get_coercion_err_msg(Res)).
398398

399399
admin_send_stanza_from_unknown_user(Config) ->

‎include/mod_muc_light.hrl

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757

5858
-record(msg, {
5959
id = <<>> :: binary(),
60-
children = [] :: [jlib:xmlch()]
60+
children = [] :: [exml:child()]
6161
}).
6262

6363
-record(config, {

‎rebar.config

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
{deps,
4747
[
4848
%%% Stateless parsers
49-
{exml, "4.0.0", {pkg, hexml}},
49+
{exml, "4.1.1", {pkg, hexml}},
5050
{jiffy, "1.1.2"},
5151
{jid, "2.2.0", {pkg, mongoose_jid}},
5252
{tomerl, "0.5.0"},

‎rebar.lock

+3-3
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
{<<"erl_csv">>,{pkg,<<"erl_csv">>,<<"0.3.3">>},0},
2727
{<<"erlang_doctor">>,{pkg,<<"erlang_doctor">>,<<"0.2.7">>},0},
2828
{<<"erlcloud">>,{pkg,<<"erlcloud">>,<<"3.8.2">>},0},
29-
{<<"exml">>,{pkg,<<"hexml">>,<<"4.0.0">>},0},
29+
{<<"exml">>,{pkg,<<"hexml">>,<<"4.1.1">>},0},
3030
{<<"exometer_core">>,
3131
{git,"https://github.com/esl/exometer_core.git",
3232
{ref,"123daa053a4abb3ff4bdbf52f08344da535294e9"}},
@@ -142,7 +142,7 @@
142142
{<<"erl_csv">>, <<"94FBA776D493FE0DA76786D694CC2A788F14C864766DBB04C1786272515898C4">>},
143143
{<<"erlang_doctor">>, <<"38DCCF531B0DCF01B327EF437C7422EA3123457CF664C75BA8219D6022A7DA4B">>},
144144
{<<"erlcloud">>, <<"E0EE55C4B11826E79737655A52282C5C62EB31F7FDFACF4E314C12422C64A95F">>},
145-
{<<"exml">>, <<"54C1AAD5BD290EC31C19CE4A5D449C7E3236107AA2D3610FC04FC963DC8EAF13">>},
145+
{<<"exml">>, <<"D46272177F3B779D75058005C744997034823AB3A237F9B30B56A583B063FDE3">>},
146146
{<<"fast_pbkdf2">>, <<"6045138C4C209FC8222A0B18B2CB1D7BD7407EF4ADAD0F14C5E0F7F4726E3E41">>},
147147
{<<"fast_scram">>, <<"70724F584A118DA147A51EE38DEE56203F217D58AD61E0BB2C2EF834C16B35B8">>},
148148
{<<"fast_tls">>, <<"44356B256AFAD4399C2FC5059A3066669DAFD8BD4E4E796C9C1CF8910DDD265E">>},
@@ -213,7 +213,7 @@
213213
{<<"erl_csv">>, <<"B1B4B5F6578B2AFC307E8CBF67277AC8E3D721FE5E6B5A4D53BA49215C9600F3">>},
214214
{<<"erlang_doctor">>, <<"5895F16E04666843895479D60624751330F87D8296411E03EC405F42F697796D">>},
215215
{<<"erlcloud">>, <<"36207854A37BF157B45A9A115A7EEE814430808ADB2CC713C72E0048DD6351A1">>},
216-
{<<"exml">>, <<"08CC97527C708D57A03F467049AC260B5951BD67906AA154BE56B5D8BDD3238C">>},
216+
{<<"exml">>, <<"86C154396A9B21EEB0EDB9636D0E2D493FE0F59EAAF40FCFE795210F31119D8F">>},
217217
{<<"fast_pbkdf2">>, <<"BC3B5A3CAB47AD114FF8BB815FEDE62A6187ACD14D8B37412F2AF8236A089CEF">>},
218218
{<<"fast_scram">>, <<"771D034341599CFC6A6C5E56CF924B68D2C7478088CAF17419E3147B66914667">>},
219219
{<<"fast_tls">>, <<"E65779AEFB7AB15C4755230FEF8077E687D20CC5A3984A5974F9F657E8E2485B">>},

‎src/c2s/mongoose_c2s.erl

+1-1
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ handle_socket_packet(StateData = #c2s_data{parser = Parser}, Packet) ->
273273
?LOG_DEBUG(#{what => received_xml_on_stream, packet => Packet, c2s_pid => self()}),
274274
case exml_stream:parse(Parser, Packet) of
275275
{error, Reason} ->
276-
NextEvent = {next_event, internal, #xmlstreamerror{name = iolist_to_binary(Reason)}},
276+
NextEvent = {next_event, internal, #xmlstreamerror{name = Reason}},
277277
{keep_state, StateData, NextEvent};
278278
{ok, NewParser, XmlElements} ->
279279
Size = iolist_size(Packet),

‎src/jlib.erl

+17-38
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,6 @@
6666
-type xmlstreamerror() :: #xmlstreamerror{}.
6767
-type xmlstreamel() :: exml:element() | exml_stream:start() | exml_stream:stop() | xmlstreamerror().
6868

69-
-type xmlcdata() :: #xmlcdata{}.
70-
71-
-type xmlch() :: exml:element() | xmlcdata(). % (XML ch)ild
72-
7369
-type iq() :: #iq{}.
7470

7571
-type rsm_in() :: #rsm_in{}.
@@ -80,8 +76,6 @@
8076

8177
-export_type([xmlstreamel/0, xmlstreamerror/0,
8278
rsm_in/0, rsm_out/0,
83-
xmlcdata/0,
84-
xmlch/0,
8579
iq/0,
8680
rfc3339_string/0]).
8781

@@ -100,8 +94,7 @@ make_result_iq_reply_attrs(#xmlel{attrs = Attrs}) ->
10094
Attrs1 = swap_from_to_attrs(Attrs),
10195
Attrs1#{<<"type">> => <<"result">>}.
10296

103-
-spec make_error_reply(exml:element() | mongoose_acc:t(),
104-
xmlcdata() | exml:element()) ->
97+
-spec make_error_reply(exml:element() | mongoose_acc:t(), exml:child()) ->
10598
exml:element() | {mongoose_acc:t(), exml:element() | {error, {already_an_error, _, _}}}.
10699
make_error_reply(#xmlel{} = Elem, Error) ->
107100
?LOG_DEBUG(#{what => make_error_reply,
@@ -191,12 +184,9 @@ swap_from_to_attrs(Attrs) ->
191184
To :: jid:simple_jid() | jid:jid(),
192185
XE :: exml:element()) -> exml:element().
193186
replace_from_to(From, To, XE = #xmlel{attrs = Attrs}) ->
194-
NewAttrs = replace_from_to_attrs(jid:to_binary(From),
195-
jid:to_binary(To),
196-
Attrs),
187+
NewAttrs = replace_from_to_attrs(jid:to_binary(From), jid:to_binary(To), Attrs),
197188
XE#xmlel{attrs = NewAttrs}.
198189

199-
200190
-spec remove_attr(binary(), exml:element()) -> exml:element().
201191
remove_attr(Attr, XE = #xmlel{attrs = Attrs}) ->
202192
NewAttrs = maps:remove(Attr, Attrs),
@@ -467,41 +457,30 @@ maybe_append_delay(Packet = #xmlel{children = Children}, From, TS, Desc) ->
467457
Packet
468458
end.
469459

470-
remove_delay_tags(#xmlel{children = Els} = Packet) ->
471-
NEl = lists:foldl(
472-
fun(#xmlel{name= <<"delay">>} = R, El) ->
473-
case exml_query:attr(R, <<"xmlns">>) of
474-
?NS_DELAY ->
475-
El;
476-
_ ->
477-
El ++ [R]
478-
end;
479-
(#xmlel{name= <<"x">>} = R, El) ->
480-
case exml_query:attr(R, <<"xmlns">>) of
481-
?NS_DELAY91 ->
482-
El;
483-
_ ->
484-
El ++ [R]
485-
end;
486-
(R, El) ->
487-
El ++ [R]
488-
end, [], Els),
489-
Packet#xmlel{children = NEl}.
490-
491-
-spec remove_cdata([xmlch()]) -> [xmlch()].
460+
remove_delay_tags(#xmlel{children = Children} = Packet) ->
461+
Fun = fun(#xmlel{name = <<"delay">>, attrs = #{<<"xmlns">> := ?NS_DELAY}}, Els) ->
462+
Els;
463+
(#xmlel{name = <<"x">>, attrs = #{<<"xmlns">> := ?NS_DELAY91}}, Els) ->
464+
Els;
465+
(R, Els) ->
466+
[R | Els]
467+
end,
468+
NEls = lists:foldl(Fun, [], Children),
469+
Packet#xmlel{children = lists:reverse(NEls)}.
470+
471+
-spec remove_cdata([exml:child()]) -> [exml:element()].
492472
remove_cdata(L) ->
493473
[E || E <- L, remove_cdata_p(E)].
494474

495-
-spec remove_cdata_p(xmlch()) -> boolean().
475+
-spec remove_cdata_p(exml:child()) -> boolean().
496476
remove_cdata_p(#xmlel{}) -> true;
497477
remove_cdata_p(_) -> false.
498478

499-
-spec append_subtags(exml:element(), [xmlch()]) -> exml:element().
479+
-spec append_subtags(exml:element(), [exml:child()]) -> exml:element().
500480
append_subtags(XE = #xmlel{children = SubTags1}, SubTags2) ->
501481
XE#xmlel{children = SubTags1 ++ SubTags2}.
502482

503-
-spec replace_tag_attr(Attr :: binary(), Value :: binary(), exml:element()
504-
) -> exml:element().
483+
-spec replace_tag_attr(Attr :: binary(), Value :: binary(), exml:element()) -> exml:element().
505484
replace_tag_attr(Attr, Value, XE = #xmlel{attrs = Attrs}) ->
506485
Attrs1 = Attrs#{Attr => Value},
507486
XE#xmlel{attrs = Attrs1}.

‎src/mam/mod_mam_utils.erl

+1-1
Original file line numberDiff line numberDiff line change
@@ -582,7 +582,7 @@ result_set(FirstId, LastId, FirstIndexI, CountI)
582582
children = FirstEl ++ LastEl ++ [CountEl]}.
583583

584584

585-
-spec result_query(jlib:xmlcdata() | exml:element(), binary()) -> exml:element().
585+
-spec result_query(exml:child(), binary()) -> exml:element().
586586
result_query(SetEl, Namespace) ->
587587
#xmlel{
588588
name = <<"query">>,

‎src/mod_websockets.erl

+1-1
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ process_client_elements(Elements, #ws_state{fsm_pid = FSM} = State) ->
204204
process_parse_error(_Reason, #ws_state{fsm_pid = undefined} = State) ->
205205
{stop, State};
206206
process_parse_error(Reason, #ws_state{fsm_pid = FSM} = State) ->
207-
send_to_fsm(FSM, #xmlstreamerror{name = iolist_to_binary(Reason)}),
207+
send_to_fsm(FSM, #xmlstreamerror{name = Reason}),
208208
{ok, State}.
209209

210210
send_to_fsm(FSM, Element) ->

‎src/muc/mod_muc.erl

+1-1
Original file line numberDiff line numberDiff line change
@@ -1031,7 +1031,7 @@ get_room_pos(Desired, [_ | Rooms], HeadPosition) ->
10311031
%% with the returned Name already created, nor mark the generated Name
10321032
%% as `<<"already used">>'. But in practice, it is unique enough. See
10331033
%% http://xmpp.org/extensions/xep-0045.html#createroom-unique
1034-
-spec iq_get_unique(jid:jid()) -> jlib:xmlcdata().
1034+
-spec iq_get_unique(jid:jid()) -> exml:cdata().
10351035
iq_get_unique(From) ->
10361036
Raw = [From, erlang:unique_integer(), mongoose_bin:gen_from_crypto()],
10371037
#xmlcdata{content = mongoose_bin:encode_crypto(term_to_binary(Raw))}.

‎src/muc/mod_muc_room.erl

+10-10
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,7 @@ is_query_allowed(#xmlel{children = Els}) ->
413413
-spec locked_state_process_owner_iq(jid:jid(), exml:element(),
414414
ejabberd:lang(), 'error' | 'get' | 'invalid' | 'result', _)
415415
-> {{'error', exml:element()}, statename()}
416-
| {{result, [exml:element() | jlib:xmlcdata()], state() | stop}, statename()}.
416+
| {{result, [exml:child()], state() | stop}, statename()}.
417417
locked_state_process_owner_iq(From, Query, Lang, set, StateData) ->
418418
Result = case is_query_allowed(Query) of
419419
true ->
@@ -2005,7 +2005,7 @@ extract_password(Packet) ->
20052005
{element, <<"password">>},
20062006
cdata]).
20072007

2008-
-spec count_stanza_shift(mod_muc:nick(), [jlib:xmlcdata() | exml:element()],
2008+
-spec count_stanza_shift(mod_muc:nick(), [exml:child()],
20092009
state()) -> any().
20102010
count_stanza_shift(Nick, Els, StateData) ->
20112011
HL = lqueue_to_list(StateData#state.history),
@@ -2087,7 +2087,7 @@ calc_shift(MaxSize, Size, Shift, [S | TSizes]) ->
20872087
calc_shift(MaxSize, Size - S, Shift + 1, TSizes).
20882088

20892089

2090-
-spec extract_history([jlib:xmlcdata() | exml:element()], Type :: binary()) ->
2090+
-spec extract_history([exml:child()], Type :: binary()) ->
20912091
false | non_neg_integer().
20922092
extract_history([], _Type) ->
20932093
false;
@@ -3127,7 +3127,7 @@ send_kickban_presence1(UJID, Reason, Code, Affiliation, StateData) ->
31273127

31283128
-spec process_iq_owner(jid:jid(), get | set, ejabberd:lang(), exml:element(),
31293129
state(), statename()) ->
3130-
{error, exml:element()} | {result, [exml:element() | jlib:xmlcdata()], state() | stop}.
3130+
{error, exml:element()} | {result, [exml:child()], state() | stop}.
31313131
process_iq_owner(From, Type, Lang, SubEl, StateData, StateName) ->
31323132
case get_affiliation(From, StateData) of
31333133
owner ->
@@ -3139,7 +3139,7 @@ process_iq_owner(From, Type, Lang, SubEl, StateData, StateName) ->
31393139

31403140
-spec process_authorized_iq_owner(jid:jid(), get | set, ejabberd:lang(), exml:element(),
31413141
state(), statename()) ->
3142-
{error, exml:element()} | {result, [exml:element() | jlib:xmlcdata()], state() | stop}.
3142+
{error, exml:element()} | {result, [exml:child()], state() | stop}.
31433143
process_authorized_iq_owner(From, set, Lang, SubEl, StateData, StateName) ->
31443144
#xmlel{children = Els} = SubEl,
31453145
case jlib:remove_cdata(Els) of
@@ -3189,7 +3189,7 @@ process_authorized_iq_owner(From, get, Lang, SubEl, StateData, _StateName) ->
31893189

31903190
-spec process_authorized_submit_owner(From ::jid:jid(), [{binary(), [binary()]}],
31913191
StateData :: state()) ->
3192-
{error, exml:element()} | {result, [exml:element() | jlib:xmlcdata()], state() | stop}.
3192+
{error, exml:element()} | {result, [exml:child()], state() | stop}.
31933193
process_authorized_submit_owner(_From, [], StateData) ->
31943194
%confirm an instant room
31953195
save_persistent_room_state(StateData),
@@ -3904,7 +3904,7 @@ check_voice_approval(From, XEl, Lang, StateData) ->
39043904
%% Invitation support
39053905

39063906
-spec check_invitation(jid:simple_jid() | jid:jid(),
3907-
[jlib:xmlcdata() | exml:element()], ejabberd:lang(), state())
3907+
[exml:child()], ejabberd:lang(), state())
39083908
-> {'error', _} | {'ok', [jid:jid()]}.
39093909
check_invitation(FromJID, Els, Lang, StateData) ->
39103910
try
@@ -3913,7 +3913,7 @@ check_invitation(FromJID, Els, Lang, StateData) ->
39133913
end.
39143914

39153915

3916-
-spec unsafe_check_invitation(jid:jid(), [jlib:xmlcdata() | exml:element()],
3916+
-spec unsafe_check_invitation(jid:jid(), [exml:child()],
39173917
ejabberd:lang(), state()) -> {ok, [jid:jid()]}.
39183918
unsafe_check_invitation(FromJID, Els, Lang,
39193919
StateData=#state{host=Host, server_host=ServerHost, jid=RoomJID}) ->
@@ -3971,7 +3971,7 @@ decode_destination_jid(InviteEl) ->
39713971
end.
39723972

39733973

3974-
-spec find_invite_elems([jlib:xmlcdata() | exml:element()]) -> [exml:element()].
3974+
-spec find_invite_elems([exml:child()]) -> [exml:element()].
39753975
find_invite_elems(Els) ->
39763976
case jlib:remove_cdata(Els) of
39773977
[#xmlel{name = <<"x">>, children = Els1} = XEl] ->
@@ -4326,7 +4326,7 @@ route_voice_approval(_Type, From, Packet, _Lang, StateData) ->
43264326

43274327
-spec route_invitation(InvitationsOrError,
43284328
From, Packet, Lang, state()) -> state() when
4329-
InvitationsOrError :: {'error', jlib:xmlcdata() | exml:element()}
4329+
InvitationsOrError :: {'error', exml:cdata() | exml:element()}
43304330
| {'ok', [jid:jid()]},
43314331
From :: jid:simple_jid() | jid:jid(),
43324332
Packet :: exml:element(),

‎src/muc_light/mod_muc_light_codec_backend.erl

+1-1
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ encode_error(ErrMsg, OrigFrom, OrigTo, OrigPacket, Acc) ->
9999
mongoose_backend:call(HostType, ?MAIN_MODULE, ?FUNCTION_NAME, Args).
100100

101101
-spec encode_error(ErrMsg :: tuple(),
102-
ExtraChildren :: [jlib:xmlch()],
102+
ExtraChildren :: [exml:child()],
103103
OrigFrom :: jid:jid(),
104104
OrigTo :: jid:jid(),
105105
OrigPacket :: exml:element(),

‎src/muc_light/mod_muc_light_codec_legacy.erl

+10-10
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ decode_message(#xmlel{ attrs = Attrs, children = Children }) ->
108108
decode_message_by_type(Attrs, Children).
109109

110110
-spec decode_message_by_type(exml:attrs(),
111-
Children :: [jlib:xmlch()]) ->
111+
Children :: [exml:child()]) ->
112112
{ok, msg() | {set, mod_muc_light_room_config:kv()}} | {error, bad_request} | ignore.
113113
decode_message_by_type(#{<<"type">> := <<"groupchat">>}, [#xmlel{ name = <<"subject">> } = SubjectEl]) ->
114114
{ok, {set, #config{ raw_config = [{<<"subject">>, exml_query:cdata(SubjectEl)}] }}};
@@ -196,11 +196,11 @@ parse_config_form(QueryEl) ->
196196
{error, Msg}
197197
end.
198198

199-
-spec parse_aff_users(Els :: [jlib:xmlch()]) -> {ok, aff_users()}.
199+
-spec parse_aff_users(Els :: [exml:child()]) -> {ok, aff_users()}.
200200
parse_aff_users(Els) ->
201201
parse_aff_users(Els, []).
202202

203-
-spec parse_aff_users(Els :: [jlib:xmlch()], AffUsersAcc :: aff_users()) -> {ok, aff_users()}.
203+
-spec parse_aff_users(Els :: [exml:child()], AffUsersAcc :: aff_users()) -> {ok, aff_users()}.
204204
parse_aff_users([], AffUsersAcc) ->
205205
{ok, AffUsersAcc};
206206
parse_aff_users([Item | RItemsEls], AffUsersAcc) ->
@@ -210,11 +210,11 @@ parse_aff_users([Item | RItemsEls], AffUsersAcc) ->
210210
Aff = mod_muc_light_utils:b2aff(AffBin),
211211
parse_aff_users(RItemsEls, [{jid:to_lus(JID), Aff} | AffUsersAcc]).
212212

213-
-spec parse_blocking_list(Els :: [jlib:xmlch()]) -> {ok, [blocking_item()]}.
213+
-spec parse_blocking_list(Els :: [exml:child()]) -> {ok, [blocking_item()]}.
214214
parse_blocking_list(ItemsEls) ->
215215
parse_blocking_list(ItemsEls, []).
216216

217-
-spec parse_blocking_list(Els :: [jlib:xmlch()], ItemsAcc :: [blocking_item()]) ->
217+
-spec parse_blocking_list(Els :: [exml:child()], ItemsAcc :: [blocking_item()]) ->
218218
{ok, [blocking_item()]}.
219219
parse_blocking_list([], ItemsAcc) ->
220220
{ok, ItemsAcc};
@@ -240,7 +240,7 @@ parse_blocking_list([Item | RItemsEls], ItemsAcc) ->
240240
HandleFun :: mod_muc_light_codec_backend:encoded_packet_handler(),
241241
Acc :: mongoose_acc:t()) ->
242242
{iq_reply, ID :: binary()} |
243-
{iq_reply, XMLNS :: binary(), Els :: [jlib:xmlch()], ID :: binary()} |
243+
{iq_reply, XMLNS :: binary(), Els :: [exml:child()], ID :: binary()} |
244244
noreply.
245245
encode_meta({get, #disco_info{ id = ID }}, RoomJID, SenderJID, _HandleFun, Acc) ->
246246
HostType = mod_muc_light_utils:acc_to_host_type(Acc),
@@ -367,7 +367,7 @@ blocking_to_el({What, Action, {WhoU, WhoS}}, Service) ->
367367
<<"action">> => action2b(Action),
368368
<<"order">> => <<"1">>}}.
369369

370-
-spec envelope(XMLNS :: binary(), Children :: [jlib:xmlch()]) -> [jlib:xmlch()].
370+
-spec envelope(XMLNS :: binary(), Children :: [exml:child()]) -> [exml:child()].
371371
envelope(XMLNS, Children) ->
372372
[ #xmlel{ name = <<"x">>, attrs = #{<<"xmlns">> => XMLNS}, children = Children } ].
373373

@@ -425,7 +425,7 @@ msg_to_leaving_user(Room, {ToU, ToS} = User, HandleFun) ->
425425

426426
-spec send_to_aff_user(From :: jid:jid(), ToU :: jid:luser(), ToS :: jid:lserver(),
427427
Name :: binary(), Attrs :: exml:attrs(),
428-
Children :: [jlib:xmlch()],
428+
Children :: [exml:child()],
429429
HandleFun :: mod_muc_light_codec_backend:encoded_packet_handler()) -> ok.
430430
send_to_aff_user(From, ToU, ToS, Name, Attrs, Children, HandleFun) ->
431431
To = jid:make_noprep(ToU, ToS, <<>>),
@@ -442,7 +442,7 @@ jids_from_room_with_resource(RoomJID, Resource) ->
442442
{From, FromBin}.
443443

444444
-spec make_iq_result(FromBin :: binary(), ToBin :: binary(), ID :: binary(),
445-
XMLNS :: binary(), Els :: [jlib:xmlch()] | undefined) -> exml:element().
445+
XMLNS :: binary(), Els :: [exml:child()] | undefined) -> exml:element().
446446
make_iq_result(FromBin, ToBin, ID, XMLNS, Els) ->
447447
Attrs = #{<<"from">> => FromBin,
448448
<<"to">> => ToBin,
@@ -451,7 +451,7 @@ make_iq_result(FromBin, ToBin, ID, XMLNS, Els) ->
451451
Query = make_query_el(XMLNS, Els),
452452
#xmlel{ name = <<"iq">>, attrs = Attrs, children = Query }.
453453

454-
-spec make_query_el(binary(), [jlib:xmlch()] | undefined) -> [exml:element()].
454+
-spec make_query_el(binary(), [exml:child()] | undefined) -> [exml:element()].
455455
make_query_el(_, undefined) ->
456456
[];
457457
make_query_el(XMLNS, Els) ->

‎src/muc_light/mod_muc_light_codec_modern.erl

+13-13
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ encode_error(ErrMsg, OrigFrom, OrigTo, OrigPacket, Acc) ->
113113
decode_message(#xmlel{ attrs = Attrs, children = Children }) ->
114114
decode_message_by_type(Attrs, Children).
115115

116-
-spec decode_message_by_type(exml:attrs(), Children :: [jlib:xmlch()]) ->
116+
-spec decode_message_by_type(exml:attrs(), Children :: [exml:child()]) ->
117117
{ok, msg()} | {error, bad_request} | ignore.
118118
decode_message_by_type(#{<<"type">> := <<"groupchat">>} = Attrs, Children) ->
119119
{ok, #msg{ children = Children, id = ensure_id(Attrs) }};
@@ -196,12 +196,12 @@ decode_iq(_, _) ->
196196

197197
%% ------------------ Parsers ------------------
198198

199-
-spec parse_config(Els :: [jlib:xmlch()]) -> {ok, mod_muc_light_room_config:binary_kv()}
199+
-spec parse_config(Els :: [exml:child()]) -> {ok, mod_muc_light_room_config:binary_kv()}
200200
| {error, bad_request()}.
201201
parse_config(Els) ->
202202
parse_config(Els, []).
203203

204-
-spec parse_config(Els :: [jlib:xmlch()], ConfigAcc :: mod_muc_light_room_config:binary_kv()) ->
204+
-spec parse_config(Els :: [exml:child()], ConfigAcc :: mod_muc_light_room_config:binary_kv()) ->
205205
{ok, mod_muc_light_room_config:binary_kv()} | {error, bad_request()}.
206206
parse_config([], ConfigAcc) ->
207207
{ok, ConfigAcc};
@@ -213,12 +213,12 @@ parse_config([#xmlel{ name = Key, children = [ #xmlcdata{ content = Value } ] }
213213
parse_config([_ | REls], ConfigAcc) ->
214214
parse_config(REls, ConfigAcc).
215215

216-
-spec parse_aff_users(Els :: [jlib:xmlch()]) ->
216+
-spec parse_aff_users(Els :: [exml:child()]) ->
217217
{ok, aff_users()} | {error, bad_request()}.
218218
parse_aff_users(Els) ->
219219
parse_aff_users(Els, []).
220220

221-
-spec parse_aff_users(Els :: [jlib:xmlch()], AffUsersAcc :: aff_users()) ->
221+
-spec parse_aff_users(Els :: [exml:child()], AffUsersAcc :: aff_users()) ->
222222
{ok, aff_users()} | {error, bad_request()}.
223223
parse_aff_users([], AffUsersAcc) ->
224224
{ok, AffUsersAcc};
@@ -233,11 +233,11 @@ parse_aff_users([#xmlel{ name = <<"user">>, attrs = #{<<"affiliation">> := AffBi
233233
parse_aff_users(_, _) ->
234234
{error, {bad_request, <<"Failed to parse affiliations">>}}.
235235

236-
-spec parse_blocking_list(Els :: [jlib:xmlch()]) -> {ok, [blocking_item()]} | {error, bad_request}.
236+
-spec parse_blocking_list(Els :: [exml:child()]) -> {ok, [blocking_item()]} | {error, bad_request}.
237237
parse_blocking_list(ItemsEls) ->
238238
parse_blocking_list(ItemsEls, []).
239239

240-
-spec parse_blocking_list(Els :: [jlib:xmlch()], ItemsAcc :: [blocking_item()]) ->
240+
-spec parse_blocking_list(Els :: [exml:child()], ItemsAcc :: [blocking_item()]) ->
241241
{ok, [blocking_item()]} | {error, bad_request}.
242242
parse_blocking_list([], ItemsAcc) ->
243243
{ok, ItemsAcc};
@@ -421,12 +421,12 @@ kv_to_el({Key, Value}) ->
421421
kv_to_el(Key, Value) ->
422422
#xmlel{ name = Key, children = [#xmlcdata{ content = Value }] }.
423423

424-
-spec msg_envelope(XMLNS :: binary(), Children :: [jlib:xmlch()]) -> [exml:element()].
424+
-spec msg_envelope(XMLNS :: binary(), Children :: [exml:child()]) -> [exml:element()].
425425
msg_envelope(XMLNS, Children) ->
426426
[ #xmlel{ name = <<"x">>, attrs = #{<<"xmlns">> => XMLNS}, children = Children },
427427
#xmlel{ name = <<"body">> } ].
428428

429-
-spec inject_prev_version(IQChildren :: [jlib:xmlch()], PrevVersion :: binary()) -> [jlib:xmlch()].
429+
-spec inject_prev_version(IQChildren :: [exml:child()], PrevVersion :: binary()) -> [exml:child()].
430430
inject_prev_version([#xmlel{ name = <<"x">>, attrs = #{<<"xmlns">> := ?NS_MUC_LIGHT_AFFILIATIONS},
431431
children = Items} = XEl | REls], PrevVersion) ->
432432
[XEl#xmlel{ children = [kv_to_el(<<"prev-version">>, PrevVersion) | Items] } | REls];
@@ -435,7 +435,7 @@ inject_prev_version([El | REls], PrevVersion) ->
435435

436436
-spec bcast_aff_messages(From :: jid:jid(), OldAffUsers :: aff_users(),
437437
NewAffUsers :: aff_users(), Attrs :: exml:attrs(),
438-
VersionEl :: exml:element(), Children :: [jlib:xmlch()],
438+
VersionEl :: exml:element(), Children :: [exml:child()],
439439
HandleFun :: mod_muc_light_codec_backend:encoded_packet_handler()) -> ok.
440440
bcast_aff_messages(_, [], [], _, _, _, _) ->
441441
ok;
@@ -465,7 +465,7 @@ msg_to_leaving_user(From, {ToU, ToS} = User, Attrs, HandleFun) ->
465465
msg_to_aff_user(From, ToU, ToS, Attrs, NotifForLeaving, HandleFun).
466466

467467
-spec msg_to_aff_user(From :: jid:jid(), ToU :: jid:luser(), ToS :: jid:lserver(),
468-
Attrs :: exml:attrs(), Children :: [jlib:xmlch()],
468+
Attrs :: exml:attrs(), Children :: [exml:child()],
469469
HandleFun :: mod_muc_light_codec_backend:encoded_packet_handler()) -> ok.
470470
msg_to_aff_user(From, ToU, ToS, Attrs, Children, HandleFun) ->
471471
To = jid:make_noprep(ToU, ToS, <<>>),
@@ -482,7 +482,7 @@ jids_from_room_with_resource(RoomJID, Resource) ->
482482
{From, FromBin}.
483483

484484
-spec make_iq_result(FromBin :: binary(), ToBin :: binary(), ID :: binary(),
485-
XMLNS :: binary(), Els :: [jlib:xmlch()] | undefined) -> exml:element().
485+
XMLNS :: binary(), Els :: [exml:child()] | undefined) -> exml:element().
486486
make_iq_result(FromBin, ToBin, ID, XMLNS, Els) ->
487487
Attrs = #{<<"from">> => FromBin,
488488
<<"to">> => ToBin,
@@ -491,7 +491,7 @@ make_iq_result(FromBin, ToBin, ID, XMLNS, Els) ->
491491
Query = make_query_el(XMLNS, Els),
492492
#xmlel{ name = <<"iq">>, attrs = Attrs, children = Query }.
493493

494-
-spec make_query_el(binary(), [jlib:xmlch()] | undefined) -> [exml:element()].
494+
-spec make_query_el(binary(), [exml:child()] | undefined) -> [exml:element()].
495495
make_query_el(_, undefined) ->
496496
[];
497497
make_query_el(XMLNS, Els) ->

0 commit comments

Comments
 (0)
Please sign in to comment.