aboutsummaryrefslogtreecommitdiff
path: root/tools/xmpp_codec.erl
diff options
context:
space:
mode:
Diffstat (limited to 'tools/xmpp_codec.erl')
-rw-r--r--tools/xmpp_codec.erl1736
1 files changed, 1662 insertions, 74 deletions
diff --git a/tools/xmpp_codec.erl b/tools/xmpp_codec.erl
index 1d5cd88e0..01e0676ae 100644
--- a/tools/xmpp_codec.erl
+++ b/tools/xmpp_codec.erl
@@ -1,4 +1,4 @@
-%% Created automatically by XML generator (xml_gen.erl)
+%% Created automatically by XML generator (fxml_gen.erl)
%% Source: xmpp_codec.spec
-module(xmpp_codec).
@@ -15,6 +15,32 @@ decode(_el) -> decode(_el, []).
decode({xmlel, _name, _attrs, _} = _el, Opts) ->
IgnoreEls = proplists:get_bool(ignore_els, Opts),
case {_name, get_attr(<<"xmlns">>, _attrs)} of
+ {<<"participant">>, <<"urn:xmpp:mix:0">>} ->
+ decode_mix_participant(<<"urn:xmpp:mix:0">>, IgnoreEls,
+ _el);
+ {<<"leave">>, <<"urn:xmpp:mix:0">>} ->
+ decode_mix_leave(<<"urn:xmpp:mix:0">>, IgnoreEls, _el);
+ {<<"join">>, <<"urn:xmpp:mix:0">>} ->
+ decode_mix_join(<<"urn:xmpp:mix:0">>, IgnoreEls, _el);
+ {<<"subscribe">>, <<"urn:xmpp:mix:0">>} ->
+ decode_mix_subscribe(<<"urn:xmpp:mix:0">>, IgnoreEls,
+ _el);
+ {<<"offline">>,
+ <<"http://jabber.org/protocol/offline">>} ->
+ decode_offline(<<"http://jabber.org/protocol/offline">>,
+ IgnoreEls, _el);
+ {<<"item">>,
+ <<"http://jabber.org/protocol/offline">>} ->
+ decode_offline_item(<<"http://jabber.org/protocol/offline">>,
+ IgnoreEls, _el);
+ {<<"fetch">>,
+ <<"http://jabber.org/protocol/offline">>} ->
+ decode_offline_fetch(<<"http://jabber.org/protocol/offline">>,
+ IgnoreEls, _el);
+ {<<"purge">>,
+ <<"http://jabber.org/protocol/offline">>} ->
+ decode_offline_purge(<<"http://jabber.org/protocol/offline">>,
+ IgnoreEls, _el);
{<<"failed">>, <<"urn:xmpp:sm:2">>} ->
decode_sm_failed(<<"urn:xmpp:sm:2">>, IgnoreEls, _el);
{<<"failed">>, <<"urn:xmpp:sm:3">>} ->
@@ -73,6 +99,65 @@ decode({xmlel, _name, _attrs, _} = _el, Opts) ->
{<<"forwarded">>, <<"urn:xmpp:forward:0">>} ->
decode_forwarded(<<"urn:xmpp:forward:0">>, IgnoreEls,
_el);
+ {<<"fin">>, <<"urn:xmpp:mam:0">>} ->
+ decode_mam_fin(<<"urn:xmpp:mam:0">>, IgnoreEls, _el);
+ {<<"prefs">>, <<"urn:xmpp:mam:0">>} ->
+ decode_mam_prefs(<<"urn:xmpp:mam:0">>, IgnoreEls, _el);
+ {<<"prefs">>, <<"urn:xmpp:mam:tmp">>} ->
+ decode_mam_prefs(<<"urn:xmpp:mam:tmp">>, IgnoreEls,
+ _el);
+ {<<"always">>, <<"urn:xmpp:mam:tmp">>} ->
+ decode_mam_always(<<"urn:xmpp:mam:tmp">>, IgnoreEls,
+ _el);
+ {<<"never">>, <<"urn:xmpp:mam:tmp">>} ->
+ decode_mam_never(<<"urn:xmpp:mam:tmp">>, IgnoreEls,
+ _el);
+ {<<"jid">>, <<"urn:xmpp:mam:tmp">>} ->
+ decode_mam_jid(<<"urn:xmpp:mam:tmp">>, IgnoreEls, _el);
+ {<<"result">>, <<"urn:xmpp:mam:0">>} ->
+ decode_mam_result(<<"urn:xmpp:mam:0">>, IgnoreEls, _el);
+ {<<"result">>, <<"urn:xmpp:mam:tmp">>} ->
+ decode_mam_result(<<"urn:xmpp:mam:tmp">>, IgnoreEls,
+ _el);
+ {<<"archived">>, <<"urn:xmpp:mam:tmp">>} ->
+ decode_mam_archived(<<"urn:xmpp:mam:tmp">>, IgnoreEls,
+ _el);
+ {<<"query">>, <<"urn:xmpp:mam:0">>} ->
+ decode_mam_query(<<"urn:xmpp:mam:0">>, IgnoreEls, _el);
+ {<<"query">>, <<"urn:xmpp:mam:tmp">>} ->
+ decode_mam_query(<<"urn:xmpp:mam:tmp">>, IgnoreEls,
+ _el);
+ {<<"with">>, <<"urn:xmpp:mam:tmp">>} ->
+ decode_mam_with(<<"urn:xmpp:mam:tmp">>, IgnoreEls, _el);
+ {<<"end">>, <<"urn:xmpp:mam:tmp">>} ->
+ decode_mam_end(<<"urn:xmpp:mam:tmp">>, IgnoreEls, _el);
+ {<<"start">>, <<"urn:xmpp:mam:tmp">>} ->
+ decode_mam_start(<<"urn:xmpp:mam:tmp">>, IgnoreEls,
+ _el);
+ {<<"set">>, <<"http://jabber.org/protocol/rsm">>} ->
+ decode_rsm_set(<<"http://jabber.org/protocol/rsm">>,
+ IgnoreEls, _el);
+ {<<"first">>, <<"http://jabber.org/protocol/rsm">>} ->
+ decode_rsm_first(<<"http://jabber.org/protocol/rsm">>,
+ IgnoreEls, _el);
+ {<<"max">>, <<"http://jabber.org/protocol/rsm">>} ->
+ decode_rsm_max(<<"http://jabber.org/protocol/rsm">>,
+ IgnoreEls, _el);
+ {<<"index">>, <<"http://jabber.org/protocol/rsm">>} ->
+ decode_rsm_index(<<"http://jabber.org/protocol/rsm">>,
+ IgnoreEls, _el);
+ {<<"count">>, <<"http://jabber.org/protocol/rsm">>} ->
+ decode_rsm_count(<<"http://jabber.org/protocol/rsm">>,
+ IgnoreEls, _el);
+ {<<"last">>, <<"http://jabber.org/protocol/rsm">>} ->
+ decode_rsm_last(<<"http://jabber.org/protocol/rsm">>,
+ IgnoreEls, _el);
+ {<<"before">>, <<"http://jabber.org/protocol/rsm">>} ->
+ decode_rsm_before(<<"http://jabber.org/protocol/rsm">>,
+ IgnoreEls, _el);
+ {<<"after">>, <<"http://jabber.org/protocol/rsm">>} ->
+ decode_rsm_after(<<"http://jabber.org/protocol/rsm">>,
+ IgnoreEls, _el);
{<<"x">>, <<"http://jabber.org/protocol/muc">>} ->
decode_muc(<<"http://jabber.org/protocol/muc">>,
IgnoreEls, _el);
@@ -166,9 +251,6 @@ decode({xmlel, _name, _attrs, _} = _el, Opts) ->
<<"http://jabber.org/protocol/bytestreams">>} ->
decode_bytestreams_streamhost(<<"http://jabber.org/protocol/bytestreams">>,
IgnoreEls, _el);
- {<<"x">>, <<"jabber:x:delay">>} ->
- decode_legacy_delay(<<"jabber:x:delay">>, IgnoreEls,
- _el);
{<<"delay">>, <<"urn:xmpp:delay">>} ->
decode_delay(<<"urn:xmpp:delay">>, IgnoreEls, _el);
{<<"paused">>,
@@ -1016,6 +1098,22 @@ decode({xmlel, _name, _attrs, _} = _el, Opts) ->
is_known_tag({xmlel, _name, _attrs, _} = _el) ->
case {_name, get_attr(<<"xmlns">>, _attrs)} of
+ {<<"participant">>, <<"urn:xmpp:mix:0">>} -> true;
+ {<<"leave">>, <<"urn:xmpp:mix:0">>} -> true;
+ {<<"join">>, <<"urn:xmpp:mix:0">>} -> true;
+ {<<"subscribe">>, <<"urn:xmpp:mix:0">>} -> true;
+ {<<"offline">>,
+ <<"http://jabber.org/protocol/offline">>} ->
+ true;
+ {<<"item">>,
+ <<"http://jabber.org/protocol/offline">>} ->
+ true;
+ {<<"fetch">>,
+ <<"http://jabber.org/protocol/offline">>} ->
+ true;
+ {<<"purge">>,
+ <<"http://jabber.org/protocol/offline">>} ->
+ true;
{<<"failed">>, <<"urn:xmpp:sm:2">>} -> true;
{<<"failed">>, <<"urn:xmpp:sm:3">>} -> true;
{<<"a">>, <<"urn:xmpp:sm:2">>} -> true;
@@ -1041,6 +1139,36 @@ is_known_tag({xmlel, _name, _attrs, _} = _el) ->
{<<"enable">>, <<"urn:xmpp:carbons:2">>} -> true;
{<<"disable">>, <<"urn:xmpp:carbons:2">>} -> true;
{<<"forwarded">>, <<"urn:xmpp:forward:0">>} -> true;
+ {<<"fin">>, <<"urn:xmpp:mam:0">>} -> true;
+ {<<"prefs">>, <<"urn:xmpp:mam:0">>} -> true;
+ {<<"prefs">>, <<"urn:xmpp:mam:tmp">>} -> true;
+ {<<"always">>, <<"urn:xmpp:mam:tmp">>} -> true;
+ {<<"never">>, <<"urn:xmpp:mam:tmp">>} -> true;
+ {<<"jid">>, <<"urn:xmpp:mam:tmp">>} -> true;
+ {<<"result">>, <<"urn:xmpp:mam:0">>} -> true;
+ {<<"result">>, <<"urn:xmpp:mam:tmp">>} -> true;
+ {<<"archived">>, <<"urn:xmpp:mam:tmp">>} -> true;
+ {<<"query">>, <<"urn:xmpp:mam:0">>} -> true;
+ {<<"query">>, <<"urn:xmpp:mam:tmp">>} -> true;
+ {<<"with">>, <<"urn:xmpp:mam:tmp">>} -> true;
+ {<<"end">>, <<"urn:xmpp:mam:tmp">>} -> true;
+ {<<"start">>, <<"urn:xmpp:mam:tmp">>} -> true;
+ {<<"set">>, <<"http://jabber.org/protocol/rsm">>} ->
+ true;
+ {<<"first">>, <<"http://jabber.org/protocol/rsm">>} ->
+ true;
+ {<<"max">>, <<"http://jabber.org/protocol/rsm">>} ->
+ true;
+ {<<"index">>, <<"http://jabber.org/protocol/rsm">>} ->
+ true;
+ {<<"count">>, <<"http://jabber.org/protocol/rsm">>} ->
+ true;
+ {<<"last">>, <<"http://jabber.org/protocol/rsm">>} ->
+ true;
+ {<<"before">>, <<"http://jabber.org/protocol/rsm">>} ->
+ true;
+ {<<"after">>, <<"http://jabber.org/protocol/rsm">>} ->
+ true;
{<<"x">>, <<"http://jabber.org/protocol/muc">>} -> true;
{<<"query">>,
<<"http://jabber.org/protocol/muc#admin">>} ->
@@ -1109,7 +1237,6 @@ is_known_tag({xmlel, _name, _attrs, _} = _el) ->
{<<"streamhost">>,
<<"http://jabber.org/protocol/bytestreams">>} ->
true;
- {<<"x">>, <<"jabber:x:delay">>} -> true;
{<<"delay">>, <<"urn:xmpp:delay">>} -> true;
{<<"paused">>,
<<"http://jabber.org/protocol/chatstates">>} ->
@@ -1874,7 +2001,7 @@ encode({pubsub_items, _, _, _, _} = Items) ->
encode_pubsub_items(Items,
[{<<"xmlns">>,
<<"http://jabber.org/protocol/pubsub">>}]);
-encode({pubsub_event_item, _, _, _} = Item) ->
+encode({pubsub_event_item, _, _, _, _} = Item) ->
encode_pubsub_event_item(Item,
[{<<"xmlns">>,
<<"http://jabber.org/protocol/pubsub#event">>}]);
@@ -1936,9 +2063,6 @@ encode({chatstate, paused} = Paused) ->
encode({delay, _, _} = Delay) ->
encode_delay(Delay,
[{<<"xmlns">>, <<"urn:xmpp:delay">>}]);
-encode({legacy_delay, _, _} = X) ->
- encode_legacy_delay(X,
- [{<<"xmlns">>, <<"jabber:x:delay">>}]);
encode({streamhost, _, _, _} = Streamhost) ->
encode_bytestreams_streamhost(Streamhost,
[{<<"xmlns">>,
@@ -1985,6 +2109,24 @@ encode({muc_admin, _} = Query) ->
encode({muc, _, _} = X) ->
encode_muc(X,
[{<<"xmlns">>, <<"http://jabber.org/protocol/muc">>}]);
+encode({rsm_first, _, _} = First) ->
+ encode_rsm_first(First,
+ [{<<"xmlns">>, <<"http://jabber.org/protocol/rsm">>}]);
+encode({rsm_set, _, _, _, _, _, _, _} = Set) ->
+ encode_rsm_set(Set,
+ [{<<"xmlns">>, <<"http://jabber.org/protocol/rsm">>}]);
+encode({mam_query, _, _, _, _, _, _, _} = Query) ->
+ encode_mam_query(Query, []);
+encode({mam_archived, _, _} = Archived) ->
+ encode_mam_archived(Archived,
+ [{<<"xmlns">>, <<"urn:xmpp:mam:tmp">>}]);
+encode({mam_result, _, _, _, _} = Result) ->
+ encode_mam_result(Result, []);
+encode({mam_prefs, _, _, _, _} = Prefs) ->
+ encode_mam_prefs(Prefs, []);
+encode({mam_fin, _, _, _, _} = Fin) ->
+ encode_mam_fin(Fin,
+ [{<<"xmlns">>, <<"urn:xmpp:mam:0">>}]);
encode({forwarded, _, _} = Forwarded) ->
encode_forwarded(Forwarded,
[{<<"xmlns">>, <<"urn:xmpp:forward:0">>}]);
@@ -2024,7 +2166,24 @@ encode({sm_resumed, _, _, _} = Resumed) ->
encode({sm_r, _} = R) -> encode_sm_r(R, []);
encode({sm_a, _, _} = A) -> encode_sm_a(A, []);
encode({sm_failed, _, _} = Failed) ->
- encode_sm_failed(Failed, []).
+ encode_sm_failed(Failed, []);
+encode({offline_item, _, _} = Item) ->
+ encode_offline_item(Item,
+ [{<<"xmlns">>,
+ <<"http://jabber.org/protocol/offline">>}]);
+encode({offline, _, _, _} = Offline) ->
+ encode_offline(Offline,
+ [{<<"xmlns">>,
+ <<"http://jabber.org/protocol/offline">>}]);
+encode({mix_join, _, _} = Join) ->
+ encode_mix_join(Join,
+ [{<<"xmlns">>, <<"urn:xmpp:mix:0">>}]);
+encode({mix_leave} = Leave) ->
+ encode_mix_leave(Leave,
+ [{<<"xmlns">>, <<"urn:xmpp:mix:0">>}]);
+encode({mix_participant, _, _} = Participant) ->
+ encode_mix_participant(Participant,
+ [{<<"xmlns">>, <<"urn:xmpp:mix:0">>}]).
get_ns({last, _, _}) -> <<"jabber:iq:last">>;
get_ns({version, _, _, _}) -> <<"jabber:iq:version">>;
@@ -2150,7 +2309,7 @@ get_ns({pubsub_item, _, _}) ->
<<"http://jabber.org/protocol/pubsub">>;
get_ns({pubsub_items, _, _, _, _}) ->
<<"http://jabber.org/protocol/pubsub">>;
-get_ns({pubsub_event_item, _, _, _}) ->
+get_ns({pubsub_event_item, _, _, _, _}) ->
<<"http://jabber.org/protocol/pubsub#event">>;
get_ns({pubsub_event_items, _, _, _}) ->
<<"http://jabber.org/protocol/pubsub#event">>;
@@ -2181,7 +2340,6 @@ get_ns({chatstate, inactive}) ->
get_ns({chatstate, paused}) ->
<<"http://jabber.org/protocol/chatstates">>;
get_ns({delay, _, _}) -> <<"urn:xmpp:delay">>;
-get_ns({legacy_delay, _, _}) -> <<"jabber:x:delay">>;
get_ns({streamhost, _, _, _}) ->
<<"http://jabber.org/protocol/bytestreams">>;
get_ns({bytestreams, _, _, _, _, _, _}) ->
@@ -2204,6 +2362,12 @@ get_ns({muc_admin, _}) ->
<<"http://jabber.org/protocol/muc#admin">>;
get_ns({muc, _, _}) ->
<<"http://jabber.org/protocol/muc">>;
+get_ns({rsm_first, _, _}) ->
+ <<"http://jabber.org/protocol/rsm">>;
+get_ns({rsm_set, _, _, _, _, _, _, _}) ->
+ <<"http://jabber.org/protocol/rsm">>;
+get_ns({mam_archived, _, _}) -> <<"urn:xmpp:mam:tmp">>;
+get_ns({mam_fin, _, _, _, _}) -> <<"urn:xmpp:mam:0">>;
get_ns({forwarded, _, _}) -> <<"urn:xmpp:forward:0">>;
get_ns({carbons_disable}) -> <<"urn:xmpp:carbons:2">>;
get_ns({carbons_enable}) -> <<"urn:xmpp:carbons:2">>;
@@ -2214,6 +2378,13 @@ get_ns({carbons_sent, _}) -> <<"urn:xmpp:carbons:2">>;
get_ns({feature_csi, _}) -> <<"urn:xmpp:csi:0">>;
get_ns({csi, active}) -> <<"urn:xmpp:csi:0">>;
get_ns({csi, inactive}) -> <<"urn:xmpp:csi:0">>;
+get_ns({offline_item, _, _}) ->
+ <<"http://jabber.org/protocol/offline">>;
+get_ns({offline, _, _, _}) ->
+ <<"http://jabber.org/protocol/offline">>;
+get_ns({mix_join, _, _}) -> <<"urn:xmpp:mix:0">>;
+get_ns({mix_leave}) -> <<"urn:xmpp:mix:0">>;
+get_ns({mix_participant, _, _}) -> <<"urn:xmpp:mix:0">>;
get_ns(_) -> <<>>.
dec_int(Val) -> dec_int(Val, infinity, infinity).
@@ -2360,7 +2531,8 @@ pp(pubsub_subscription, 4) -> [jid, node, subid, type];
pp(pubsub_affiliation, 2) -> [node, type];
pp(pubsub_item, 2) -> [id, xml_els];
pp(pubsub_items, 4) -> [node, max_items, subid, items];
-pp(pubsub_event_item, 3) -> [id, node, publisher];
+pp(pubsub_event_item, 4) ->
+ [id, node, publisher, xml_els];
pp(pubsub_event_items, 3) -> [node, retract, items];
pp(pubsub_event, 1) -> [items];
pp(pubsub_subscribe, 2) -> [node, jid];
@@ -2374,7 +2546,6 @@ pp(pubsub, 8) ->
pp(shim, 1) -> [headers];
pp(chatstate, 1) -> [type];
pp(delay, 2) -> [stamp, from];
-pp(legacy_delay, 2) -> [stamp, from];
pp(streamhost, 3) -> [jid, host, port];
pp(bytestreams, 6) ->
[hosts, used, activate, dstaddr, mode, sid];
@@ -2393,6 +2564,15 @@ pp(muc_item, 7) ->
pp(muc_actor, 2) -> [jid, nick];
pp(muc_admin, 1) -> [items];
pp(muc, 2) -> [history, password];
+pp(rsm_first, 2) -> [index, data];
+pp(rsm_set, 7) ->
+ ['after', before, count, first, index, last, max];
+pp(mam_query, 7) ->
+ [xmlns, id, start, 'end', with, rsm, xdata];
+pp(mam_archived, 2) -> [by, id];
+pp(mam_result, 4) -> [xmlns, queryid, id, sub_els];
+pp(mam_prefs, 4) -> [xmlns, default, always, never];
+pp(mam_fin, 4) -> [id, rsm, stable, complete];
pp(forwarded, 2) -> [delay, sub_els];
pp(carbons_disable, 0) -> [];
pp(carbons_enable, 0) -> [];
@@ -2409,6 +2589,11 @@ pp(sm_resumed, 3) -> [h, previd, xmlns];
pp(sm_r, 1) -> [xmlns];
pp(sm_a, 2) -> [h, xmlns];
pp(sm_failed, 2) -> [reason, xmlns];
+pp(offline_item, 2) -> [node, action];
+pp(offline, 3) -> [items, purge, fetch];
+pp(mix_join, 2) -> [jid, subscribe];
+pp(mix_leave, 0) -> [];
+pp(mix_participant, 2) -> [jid, nick];
pp(_, _) -> no.
enc_bool(false) -> <<"false">>;
@@ -2420,15 +2605,15 @@ dec_bool(<<"true">>) -> true;
dec_bool(<<"1">>) -> true.
resourceprep(R) ->
- case jlib:resourceprep(R) of
+ case jid:resourceprep(R) of
error -> erlang:error(badarg);
R1 -> R1
end.
-enc_jid(J) -> jlib:jid_to_string(J).
+enc_jid(J) -> jid:to_string(J).
dec_jid(Val) ->
- case jlib:string_to_jid(Val) of
+ case jid:from_string(Val) of
error -> erlang:error(badarg);
J -> J
end.
@@ -2451,6 +2636,320 @@ dec_tzo(Val) ->
M = jlib:binary_to_integer(M1),
if H >= -12, H =< 12, M >= 0, M < 60 -> {H, M} end.
+decode_mix_participant(__TopXMLNS, __IgnoreEls,
+ {xmlel, <<"participant">>, _attrs, _els}) ->
+ {Jid, Nick} = decode_mix_participant_attrs(__TopXMLNS,
+ _attrs, undefined, undefined),
+ {mix_participant, Jid, Nick}.
+
+decode_mix_participant_attrs(__TopXMLNS,
+ [{<<"jid">>, _val} | _attrs], _Jid, Nick) ->
+ decode_mix_participant_attrs(__TopXMLNS, _attrs, _val,
+ Nick);
+decode_mix_participant_attrs(__TopXMLNS,
+ [{<<"nick">>, _val} | _attrs], Jid, _Nick) ->
+ decode_mix_participant_attrs(__TopXMLNS, _attrs, Jid,
+ _val);
+decode_mix_participant_attrs(__TopXMLNS, [_ | _attrs],
+ Jid, Nick) ->
+ decode_mix_participant_attrs(__TopXMLNS, _attrs, Jid,
+ Nick);
+decode_mix_participant_attrs(__TopXMLNS, [], Jid,
+ Nick) ->
+ {decode_mix_participant_attr_jid(__TopXMLNS, Jid),
+ decode_mix_participant_attr_nick(__TopXMLNS, Nick)}.
+
+encode_mix_participant({mix_participant, Jid, Nick},
+ _xmlns_attrs) ->
+ _els = [],
+ _attrs = encode_mix_participant_attr_nick(Nick,
+ encode_mix_participant_attr_jid(Jid,
+ _xmlns_attrs)),
+ {xmlel, <<"participant">>, _attrs, _els}.
+
+decode_mix_participant_attr_jid(__TopXMLNS,
+ undefined) ->
+ erlang:error({xmpp_codec,
+ {missing_attr, <<"jid">>, <<"participant">>,
+ __TopXMLNS}});
+decode_mix_participant_attr_jid(__TopXMLNS, _val) ->
+ case catch dec_jid(_val) of
+ {'EXIT', _} ->
+ erlang:error({xmpp_codec,
+ {bad_attr_value, <<"jid">>, <<"participant">>,
+ __TopXMLNS}});
+ _res -> _res
+ end.
+
+encode_mix_participant_attr_jid(_val, _acc) ->
+ [{<<"jid">>, enc_jid(_val)} | _acc].
+
+decode_mix_participant_attr_nick(__TopXMLNS,
+ undefined) ->
+ undefined;
+decode_mix_participant_attr_nick(__TopXMLNS, _val) ->
+ _val.
+
+encode_mix_participant_attr_nick(undefined, _acc) ->
+ _acc;
+encode_mix_participant_attr_nick(_val, _acc) ->
+ [{<<"nick">>, _val} | _acc].
+
+decode_mix_leave(__TopXMLNS, __IgnoreEls,
+ {xmlel, <<"leave">>, _attrs, _els}) ->
+ {mix_leave}.
+
+encode_mix_leave({mix_leave}, _xmlns_attrs) ->
+ _els = [],
+ _attrs = _xmlns_attrs,
+ {xmlel, <<"leave">>, _attrs, _els}.
+
+decode_mix_join(__TopXMLNS, __IgnoreEls,
+ {xmlel, <<"join">>, _attrs, _els}) ->
+ Subscribe = decode_mix_join_els(__TopXMLNS, __IgnoreEls,
+ _els, []),
+ Jid = decode_mix_join_attrs(__TopXMLNS, _attrs,
+ undefined),
+ {mix_join, Jid, Subscribe}.
+
+decode_mix_join_els(__TopXMLNS, __IgnoreEls, [],
+ Subscribe) ->
+ lists:reverse(Subscribe);
+decode_mix_join_els(__TopXMLNS, __IgnoreEls,
+ [{xmlel, <<"subscribe">>, _attrs, _} = _el | _els],
+ Subscribe) ->
+ _xmlns = get_attr(<<"xmlns">>, _attrs),
+ if _xmlns == <<>>; _xmlns == __TopXMLNS ->
+ decode_mix_join_els(__TopXMLNS, __IgnoreEls, _els,
+ [decode_mix_subscribe(__TopXMLNS, __IgnoreEls,
+ _el)
+ | Subscribe]);
+ true ->
+ decode_mix_join_els(__TopXMLNS, __IgnoreEls, _els,
+ Subscribe)
+ end;
+decode_mix_join_els(__TopXMLNS, __IgnoreEls, [_ | _els],
+ Subscribe) ->
+ decode_mix_join_els(__TopXMLNS, __IgnoreEls, _els,
+ Subscribe).
+
+decode_mix_join_attrs(__TopXMLNS,
+ [{<<"jid">>, _val} | _attrs], _Jid) ->
+ decode_mix_join_attrs(__TopXMLNS, _attrs, _val);
+decode_mix_join_attrs(__TopXMLNS, [_ | _attrs], Jid) ->
+ decode_mix_join_attrs(__TopXMLNS, _attrs, Jid);
+decode_mix_join_attrs(__TopXMLNS, [], Jid) ->
+ decode_mix_join_attr_jid(__TopXMLNS, Jid).
+
+encode_mix_join({mix_join, Jid, Subscribe},
+ _xmlns_attrs) ->
+ _els =
+ lists:reverse('encode_mix_join_$subscribe'(Subscribe,
+ [])),
+ _attrs = encode_mix_join_attr_jid(Jid, _xmlns_attrs),
+ {xmlel, <<"join">>, _attrs, _els}.
+
+'encode_mix_join_$subscribe'([], _acc) -> _acc;
+'encode_mix_join_$subscribe'([Subscribe | _els],
+ _acc) ->
+ 'encode_mix_join_$subscribe'(_els,
+ [encode_mix_subscribe(Subscribe, []) | _acc]).
+
+decode_mix_join_attr_jid(__TopXMLNS, undefined) ->
+ undefined;
+decode_mix_join_attr_jid(__TopXMLNS, _val) ->
+ case catch dec_jid(_val) of
+ {'EXIT', _} ->
+ erlang:error({xmpp_codec,
+ {bad_attr_value, <<"jid">>, <<"join">>, __TopXMLNS}});
+ _res -> _res
+ end.
+
+encode_mix_join_attr_jid(undefined, _acc) -> _acc;
+encode_mix_join_attr_jid(_val, _acc) ->
+ [{<<"jid">>, enc_jid(_val)} | _acc].
+
+decode_mix_subscribe(__TopXMLNS, __IgnoreEls,
+ {xmlel, <<"subscribe">>, _attrs, _els}) ->
+ Node = decode_mix_subscribe_attrs(__TopXMLNS, _attrs,
+ undefined),
+ Node.
+
+decode_mix_subscribe_attrs(__TopXMLNS,
+ [{<<"node">>, _val} | _attrs], _Node) ->
+ decode_mix_subscribe_attrs(__TopXMLNS, _attrs, _val);
+decode_mix_subscribe_attrs(__TopXMLNS, [_ | _attrs],
+ Node) ->
+ decode_mix_subscribe_attrs(__TopXMLNS, _attrs, Node);
+decode_mix_subscribe_attrs(__TopXMLNS, [], Node) ->
+ decode_mix_subscribe_attr_node(__TopXMLNS, Node).
+
+encode_mix_subscribe(Node, _xmlns_attrs) ->
+ _els = [],
+ _attrs = encode_mix_subscribe_attr_node(Node,
+ _xmlns_attrs),
+ {xmlel, <<"subscribe">>, _attrs, _els}.
+
+decode_mix_subscribe_attr_node(__TopXMLNS, undefined) ->
+ erlang:error({xmpp_codec,
+ {missing_attr, <<"node">>, <<"subscribe">>,
+ __TopXMLNS}});
+decode_mix_subscribe_attr_node(__TopXMLNS, _val) ->
+ _val.
+
+encode_mix_subscribe_attr_node(_val, _acc) ->
+ [{<<"node">>, _val} | _acc].
+
+decode_offline(__TopXMLNS, __IgnoreEls,
+ {xmlel, <<"offline">>, _attrs, _els}) ->
+ {Items, Purge, Fetch} = decode_offline_els(__TopXMLNS,
+ __IgnoreEls, _els, [], false,
+ false),
+ {offline, Items, Purge, Fetch}.
+
+decode_offline_els(__TopXMLNS, __IgnoreEls, [], Items,
+ Purge, Fetch) ->
+ {lists:reverse(Items), Purge, Fetch};
+decode_offline_els(__TopXMLNS, __IgnoreEls,
+ [{xmlel, <<"purge">>, _attrs, _} = _el | _els], Items,
+ Purge, Fetch) ->
+ _xmlns = get_attr(<<"xmlns">>, _attrs),
+ if _xmlns == <<>>; _xmlns == __TopXMLNS ->
+ decode_offline_els(__TopXMLNS, __IgnoreEls, _els, Items,
+ decode_offline_purge(__TopXMLNS, __IgnoreEls,
+ _el),
+ Fetch);
+ true ->
+ decode_offline_els(__TopXMLNS, __IgnoreEls, _els, Items,
+ Purge, Fetch)
+ end;
+decode_offline_els(__TopXMLNS, __IgnoreEls,
+ [{xmlel, <<"fetch">>, _attrs, _} = _el | _els], Items,
+ Purge, Fetch) ->
+ _xmlns = get_attr(<<"xmlns">>, _attrs),
+ if _xmlns == <<>>; _xmlns == __TopXMLNS ->
+ decode_offline_els(__TopXMLNS, __IgnoreEls, _els, Items,
+ Purge,
+ decode_offline_fetch(__TopXMLNS, __IgnoreEls,
+ _el));
+ true ->
+ decode_offline_els(__TopXMLNS, __IgnoreEls, _els, Items,
+ Purge, Fetch)
+ end;
+decode_offline_els(__TopXMLNS, __IgnoreEls,
+ [{xmlel, <<"item">>, _attrs, _} = _el | _els], Items,
+ Purge, Fetch) ->
+ _xmlns = get_attr(<<"xmlns">>, _attrs),
+ if _xmlns == <<>>; _xmlns == __TopXMLNS ->
+ decode_offline_els(__TopXMLNS, __IgnoreEls, _els,
+ [decode_offline_item(__TopXMLNS, __IgnoreEls, _el)
+ | Items],
+ Purge, Fetch);
+ true ->
+ decode_offline_els(__TopXMLNS, __IgnoreEls, _els, Items,
+ Purge, Fetch)
+ end;
+decode_offline_els(__TopXMLNS, __IgnoreEls, [_ | _els],
+ Items, Purge, Fetch) ->
+ decode_offline_els(__TopXMLNS, __IgnoreEls, _els, Items,
+ Purge, Fetch).
+
+encode_offline({offline, Items, Purge, Fetch},
+ _xmlns_attrs) ->
+ _els = lists:reverse('encode_offline_$items'(Items,
+ 'encode_offline_$purge'(Purge,
+ 'encode_offline_$fetch'(Fetch,
+ [])))),
+ _attrs = _xmlns_attrs,
+ {xmlel, <<"offline">>, _attrs, _els}.
+
+'encode_offline_$items'([], _acc) -> _acc;
+'encode_offline_$items'([Items | _els], _acc) ->
+ 'encode_offline_$items'(_els,
+ [encode_offline_item(Items, []) | _acc]).
+
+'encode_offline_$purge'(false, _acc) -> _acc;
+'encode_offline_$purge'(Purge, _acc) ->
+ [encode_offline_purge(Purge, []) | _acc].
+
+'encode_offline_$fetch'(false, _acc) -> _acc;
+'encode_offline_$fetch'(Fetch, _acc) ->
+ [encode_offline_fetch(Fetch, []) | _acc].
+
+decode_offline_item(__TopXMLNS, __IgnoreEls,
+ {xmlel, <<"item">>, _attrs, _els}) ->
+ {Node, Action} = decode_offline_item_attrs(__TopXMLNS,
+ _attrs, undefined, undefined),
+ {offline_item, Node, Action}.
+
+decode_offline_item_attrs(__TopXMLNS,
+ [{<<"node">>, _val} | _attrs], _Node, Action) ->
+ decode_offline_item_attrs(__TopXMLNS, _attrs, _val,
+ Action);
+decode_offline_item_attrs(__TopXMLNS,
+ [{<<"action">>, _val} | _attrs], Node, _Action) ->
+ decode_offline_item_attrs(__TopXMLNS, _attrs, Node,
+ _val);
+decode_offline_item_attrs(__TopXMLNS, [_ | _attrs],
+ Node, Action) ->
+ decode_offline_item_attrs(__TopXMLNS, _attrs, Node,
+ Action);
+decode_offline_item_attrs(__TopXMLNS, [], Node,
+ Action) ->
+ {decode_offline_item_attr_node(__TopXMLNS, Node),
+ decode_offline_item_attr_action(__TopXMLNS, Action)}.
+
+encode_offline_item({offline_item, Node, Action},
+ _xmlns_attrs) ->
+ _els = [],
+ _attrs = encode_offline_item_attr_action(Action,
+ encode_offline_item_attr_node(Node,
+ _xmlns_attrs)),
+ {xmlel, <<"item">>, _attrs, _els}.
+
+decode_offline_item_attr_node(__TopXMLNS, undefined) ->
+ undefined;
+decode_offline_item_attr_node(__TopXMLNS, _val) -> _val.
+
+encode_offline_item_attr_node(undefined, _acc) -> _acc;
+encode_offline_item_attr_node(_val, _acc) ->
+ [{<<"node">>, _val} | _acc].
+
+decode_offline_item_attr_action(__TopXMLNS,
+ undefined) ->
+ undefined;
+decode_offline_item_attr_action(__TopXMLNS, _val) ->
+ case catch dec_enum(_val, [view, remove]) of
+ {'EXIT', _} ->
+ erlang:error({xmpp_codec,
+ {bad_attr_value, <<"action">>, <<"item">>,
+ __TopXMLNS}});
+ _res -> _res
+ end.
+
+encode_offline_item_attr_action(undefined, _acc) ->
+ _acc;
+encode_offline_item_attr_action(_val, _acc) ->
+ [{<<"action">>, enc_enum(_val)} | _acc].
+
+decode_offline_fetch(__TopXMLNS, __IgnoreEls,
+ {xmlel, <<"fetch">>, _attrs, _els}) ->
+ true.
+
+encode_offline_fetch(true, _xmlns_attrs) ->
+ _els = [],
+ _attrs = _xmlns_attrs,
+ {xmlel, <<"fetch">>, _attrs, _els}.
+
+decode_offline_purge(__TopXMLNS, __IgnoreEls,
+ {xmlel, <<"purge">>, _attrs, _els}) ->
+ true.
+
+encode_offline_purge(true, _xmlns_attrs) ->
+ _els = [],
+ _attrs = _xmlns_attrs,
+ {xmlel, <<"purge">>, _attrs, _els}.
+
decode_sm_failed(__TopXMLNS, __IgnoreEls,
{xmlel, <<"failed">>, _attrs, _els}) ->
Reason = decode_sm_failed_els(__TopXMLNS, __IgnoreEls,
@@ -3592,6 +4091,1135 @@ encode_forwarded({forwarded, Delay, __Els},
[{<<"xmlns">>, <<"urn:xmpp:delay">>}])
| _acc].
+decode_mam_fin(__TopXMLNS, __IgnoreEls,
+ {xmlel, <<"fin">>, _attrs, _els}) ->
+ Rsm = decode_mam_fin_els(__TopXMLNS, __IgnoreEls, _els,
+ undefined),
+ {Id, Stable, Complete} =
+ decode_mam_fin_attrs(__TopXMLNS, _attrs, undefined,
+ undefined, undefined),
+ {mam_fin, Id, Rsm, Stable, Complete}.
+
+decode_mam_fin_els(__TopXMLNS, __IgnoreEls, [], Rsm) ->
+ Rsm;
+decode_mam_fin_els(__TopXMLNS, __IgnoreEls,
+ [{xmlel, <<"set">>, _attrs, _} = _el | _els], Rsm) ->
+ _xmlns = get_attr(<<"xmlns">>, _attrs),
+ if _xmlns == <<"http://jabber.org/protocol/rsm">> ->
+ decode_mam_fin_els(__TopXMLNS, __IgnoreEls, _els,
+ decode_rsm_set(_xmlns, __IgnoreEls, _el));
+ true ->
+ decode_mam_fin_els(__TopXMLNS, __IgnoreEls, _els, Rsm)
+ end;
+decode_mam_fin_els(__TopXMLNS, __IgnoreEls, [_ | _els],
+ Rsm) ->
+ decode_mam_fin_els(__TopXMLNS, __IgnoreEls, _els, Rsm).
+
+decode_mam_fin_attrs(__TopXMLNS,
+ [{<<"queryid">>, _val} | _attrs], _Id, Stable,
+ Complete) ->
+ decode_mam_fin_attrs(__TopXMLNS, _attrs, _val, Stable,
+ Complete);
+decode_mam_fin_attrs(__TopXMLNS,
+ [{<<"stable">>, _val} | _attrs], Id, _Stable,
+ Complete) ->
+ decode_mam_fin_attrs(__TopXMLNS, _attrs, Id, _val,
+ Complete);
+decode_mam_fin_attrs(__TopXMLNS,
+ [{<<"complete">>, _val} | _attrs], Id, Stable,
+ _Complete) ->
+ decode_mam_fin_attrs(__TopXMLNS, _attrs, Id, Stable,
+ _val);
+decode_mam_fin_attrs(__TopXMLNS, [_ | _attrs], Id,
+ Stable, Complete) ->
+ decode_mam_fin_attrs(__TopXMLNS, _attrs, Id, Stable,
+ Complete);
+decode_mam_fin_attrs(__TopXMLNS, [], Id, Stable,
+ Complete) ->
+ {decode_mam_fin_attr_queryid(__TopXMLNS, Id),
+ decode_mam_fin_attr_stable(__TopXMLNS, Stable),
+ decode_mam_fin_attr_complete(__TopXMLNS, Complete)}.
+
+encode_mam_fin({mam_fin, Id, Rsm, Stable, Complete},
+ _xmlns_attrs) ->
+ _els = lists:reverse('encode_mam_fin_$rsm'(Rsm, [])),
+ _attrs = encode_mam_fin_attr_complete(Complete,
+ encode_mam_fin_attr_stable(Stable,
+ encode_mam_fin_attr_queryid(Id,
+ _xmlns_attrs))),
+ {xmlel, <<"fin">>, _attrs, _els}.
+
+'encode_mam_fin_$rsm'(undefined, _acc) -> _acc;
+'encode_mam_fin_$rsm'(Rsm, _acc) ->
+ [encode_rsm_set(Rsm,
+ [{<<"xmlns">>, <<"http://jabber.org/protocol/rsm">>}])
+ | _acc].
+
+decode_mam_fin_attr_queryid(__TopXMLNS, undefined) ->
+ undefined;
+decode_mam_fin_attr_queryid(__TopXMLNS, _val) -> _val.
+
+encode_mam_fin_attr_queryid(undefined, _acc) -> _acc;
+encode_mam_fin_attr_queryid(_val, _acc) ->
+ [{<<"queryid">>, _val} | _acc].
+
+decode_mam_fin_attr_stable(__TopXMLNS, undefined) ->
+ undefined;
+decode_mam_fin_attr_stable(__TopXMLNS, _val) ->
+ case catch dec_bool(_val) of
+ {'EXIT', _} ->
+ erlang:error({xmpp_codec,
+ {bad_attr_value, <<"stable">>, <<"fin">>, __TopXMLNS}});
+ _res -> _res
+ end.
+
+encode_mam_fin_attr_stable(undefined, _acc) -> _acc;
+encode_mam_fin_attr_stable(_val, _acc) ->
+ [{<<"stable">>, enc_bool(_val)} | _acc].
+
+decode_mam_fin_attr_complete(__TopXMLNS, undefined) ->
+ undefined;
+decode_mam_fin_attr_complete(__TopXMLNS, _val) ->
+ case catch dec_bool(_val) of
+ {'EXIT', _} ->
+ erlang:error({xmpp_codec,
+ {bad_attr_value, <<"complete">>, <<"fin">>,
+ __TopXMLNS}});
+ _res -> _res
+ end.
+
+encode_mam_fin_attr_complete(undefined, _acc) -> _acc;
+encode_mam_fin_attr_complete(_val, _acc) ->
+ [{<<"complete">>, enc_bool(_val)} | _acc].
+
+decode_mam_prefs(__TopXMLNS, __IgnoreEls,
+ {xmlel, <<"prefs">>, _attrs, _els}) ->
+ {Never, Always} = decode_mam_prefs_els(__TopXMLNS,
+ __IgnoreEls, _els, [], []),
+ {Default, Xmlns} = decode_mam_prefs_attrs(__TopXMLNS,
+ _attrs, undefined, undefined),
+ {mam_prefs, Xmlns, Default, Always, Never}.
+
+decode_mam_prefs_els(__TopXMLNS, __IgnoreEls, [], Never,
+ Always) ->
+ {Never, Always};
+decode_mam_prefs_els(__TopXMLNS, __IgnoreEls,
+ [{xmlel, <<"always">>, _attrs, _} = _el | _els], Never,
+ Always) ->
+ _xmlns = get_attr(<<"xmlns">>, _attrs),
+ if _xmlns == <<>>; _xmlns == __TopXMLNS ->
+ decode_mam_prefs_els(__TopXMLNS, __IgnoreEls, _els,
+ Never,
+ decode_mam_always(__TopXMLNS, __IgnoreEls,
+ _el));
+ true ->
+ decode_mam_prefs_els(__TopXMLNS, __IgnoreEls, _els,
+ Never, Always)
+ end;
+decode_mam_prefs_els(__TopXMLNS, __IgnoreEls,
+ [{xmlel, <<"never">>, _attrs, _} = _el | _els], Never,
+ Always) ->
+ _xmlns = get_attr(<<"xmlns">>, _attrs),
+ if _xmlns == <<>>; _xmlns == __TopXMLNS ->
+ decode_mam_prefs_els(__TopXMLNS, __IgnoreEls, _els,
+ decode_mam_never(__TopXMLNS, __IgnoreEls, _el),
+ Always);
+ true ->
+ decode_mam_prefs_els(__TopXMLNS, __IgnoreEls, _els,
+ Never, Always)
+ end;
+decode_mam_prefs_els(__TopXMLNS, __IgnoreEls,
+ [_ | _els], Never, Always) ->
+ decode_mam_prefs_els(__TopXMLNS, __IgnoreEls, _els,
+ Never, Always).
+
+decode_mam_prefs_attrs(__TopXMLNS,
+ [{<<"default">>, _val} | _attrs], _Default, Xmlns) ->
+ decode_mam_prefs_attrs(__TopXMLNS, _attrs, _val, Xmlns);
+decode_mam_prefs_attrs(__TopXMLNS,
+ [{<<"xmlns">>, _val} | _attrs], Default, _Xmlns) ->
+ decode_mam_prefs_attrs(__TopXMLNS, _attrs, Default,
+ _val);
+decode_mam_prefs_attrs(__TopXMLNS, [_ | _attrs],
+ Default, Xmlns) ->
+ decode_mam_prefs_attrs(__TopXMLNS, _attrs, Default,
+ Xmlns);
+decode_mam_prefs_attrs(__TopXMLNS, [], Default,
+ Xmlns) ->
+ {decode_mam_prefs_attr_default(__TopXMLNS, Default),
+ decode_mam_prefs_attr_xmlns(__TopXMLNS, Xmlns)}.
+
+encode_mam_prefs({mam_prefs, Xmlns, Default, Always,
+ Never},
+ _xmlns_attrs) ->
+ _els = lists:reverse('encode_mam_prefs_$never'(Never,
+ 'encode_mam_prefs_$always'(Always,
+ []))),
+ _attrs = encode_mam_prefs_attr_xmlns(Xmlns,
+ encode_mam_prefs_attr_default(Default,
+ _xmlns_attrs)),
+ {xmlel, <<"prefs">>, _attrs, _els}.
+
+'encode_mam_prefs_$never'([], _acc) -> _acc;
+'encode_mam_prefs_$never'(Never, _acc) ->
+ [encode_mam_never(Never,
+ [{<<"xmlns">>, <<"urn:xmpp:mam:tmp">>}])
+ | _acc].
+
+'encode_mam_prefs_$always'([], _acc) -> _acc;
+'encode_mam_prefs_$always'(Always, _acc) ->
+ [encode_mam_always(Always,
+ [{<<"xmlns">>, <<"urn:xmpp:mam:tmp">>}])
+ | _acc].
+
+decode_mam_prefs_attr_default(__TopXMLNS, undefined) ->
+ undefined;
+decode_mam_prefs_attr_default(__TopXMLNS, _val) ->
+ case catch dec_enum(_val, [always, never, roster]) of
+ {'EXIT', _} ->
+ erlang:error({xmpp_codec,
+ {bad_attr_value, <<"default">>, <<"prefs">>,
+ __TopXMLNS}});
+ _res -> _res
+ end.
+
+encode_mam_prefs_attr_default(undefined, _acc) -> _acc;
+encode_mam_prefs_attr_default(_val, _acc) ->
+ [{<<"default">>, enc_enum(_val)} | _acc].
+
+decode_mam_prefs_attr_xmlns(__TopXMLNS, undefined) ->
+ undefined;
+decode_mam_prefs_attr_xmlns(__TopXMLNS, _val) -> _val.
+
+encode_mam_prefs_attr_xmlns(undefined, _acc) -> _acc;
+encode_mam_prefs_attr_xmlns(_val, _acc) ->
+ [{<<"xmlns">>, _val} | _acc].
+
+decode_mam_always(__TopXMLNS, __IgnoreEls,
+ {xmlel, <<"always">>, _attrs, _els}) ->
+ Jids = decode_mam_always_els(__TopXMLNS, __IgnoreEls,
+ _els, []),
+ Jids.
+
+decode_mam_always_els(__TopXMLNS, __IgnoreEls, [],
+ Jids) ->
+ lists:reverse(Jids);
+decode_mam_always_els(__TopXMLNS, __IgnoreEls,
+ [{xmlel, <<"jid">>, _attrs, _} = _el | _els], Jids) ->
+ _xmlns = get_attr(<<"xmlns">>, _attrs),
+ if _xmlns == <<>>; _xmlns == __TopXMLNS ->
+ decode_mam_always_els(__TopXMLNS, __IgnoreEls, _els,
+ case decode_mam_jid(__TopXMLNS, __IgnoreEls,
+ _el)
+ of
+ [] -> Jids;
+ _new_el -> [_new_el | Jids]
+ end);
+ true ->
+ decode_mam_always_els(__TopXMLNS, __IgnoreEls, _els,
+ Jids)
+ end;
+decode_mam_always_els(__TopXMLNS, __IgnoreEls,
+ [_ | _els], Jids) ->
+ decode_mam_always_els(__TopXMLNS, __IgnoreEls, _els,
+ Jids).
+
+encode_mam_always(Jids, _xmlns_attrs) ->
+ _els = lists:reverse('encode_mam_always_$jids'(Jids,
+ [])),
+ _attrs = _xmlns_attrs,
+ {xmlel, <<"always">>, _attrs, _els}.
+
+'encode_mam_always_$jids'([], _acc) -> _acc;
+'encode_mam_always_$jids'([Jids | _els], _acc) ->
+ 'encode_mam_always_$jids'(_els,
+ [encode_mam_jid(Jids, []) | _acc]).
+
+decode_mam_never(__TopXMLNS, __IgnoreEls,
+ {xmlel, <<"never">>, _attrs, _els}) ->
+ Jids = decode_mam_never_els(__TopXMLNS, __IgnoreEls,
+ _els, []),
+ Jids.
+
+decode_mam_never_els(__TopXMLNS, __IgnoreEls, [],
+ Jids) ->
+ lists:reverse(Jids);
+decode_mam_never_els(__TopXMLNS, __IgnoreEls,
+ [{xmlel, <<"jid">>, _attrs, _} = _el | _els], Jids) ->
+ _xmlns = get_attr(<<"xmlns">>, _attrs),
+ if _xmlns == <<>>; _xmlns == __TopXMLNS ->
+ decode_mam_never_els(__TopXMLNS, __IgnoreEls, _els,
+ case decode_mam_jid(__TopXMLNS, __IgnoreEls,
+ _el)
+ of
+ [] -> Jids;
+ _new_el -> [_new_el | Jids]
+ end);
+ true ->
+ decode_mam_never_els(__TopXMLNS, __IgnoreEls, _els,
+ Jids)
+ end;
+decode_mam_never_els(__TopXMLNS, __IgnoreEls,
+ [_ | _els], Jids) ->
+ decode_mam_never_els(__TopXMLNS, __IgnoreEls, _els,
+ Jids).
+
+encode_mam_never(Jids, _xmlns_attrs) ->
+ _els = lists:reverse('encode_mam_never_$jids'(Jids,
+ [])),
+ _attrs = _xmlns_attrs,
+ {xmlel, <<"never">>, _attrs, _els}.
+
+'encode_mam_never_$jids'([], _acc) -> _acc;
+'encode_mam_never_$jids'([Jids | _els], _acc) ->
+ 'encode_mam_never_$jids'(_els,
+ [encode_mam_jid(Jids, []) | _acc]).
+
+decode_mam_jid(__TopXMLNS, __IgnoreEls,
+ {xmlel, <<"jid">>, _attrs, _els}) ->
+ Cdata = decode_mam_jid_els(__TopXMLNS, __IgnoreEls,
+ _els, <<>>),
+ Cdata.
+
+decode_mam_jid_els(__TopXMLNS, __IgnoreEls, [],
+ Cdata) ->
+ decode_mam_jid_cdata(__TopXMLNS, Cdata);
+decode_mam_jid_els(__TopXMLNS, __IgnoreEls,
+ [{xmlcdata, _data} | _els], Cdata) ->
+ decode_mam_jid_els(__TopXMLNS, __IgnoreEls, _els,
+ <<Cdata/binary, _data/binary>>);
+decode_mam_jid_els(__TopXMLNS, __IgnoreEls, [_ | _els],
+ Cdata) ->
+ decode_mam_jid_els(__TopXMLNS, __IgnoreEls, _els,
+ Cdata).
+
+encode_mam_jid(Cdata, _xmlns_attrs) ->
+ _els = encode_mam_jid_cdata(Cdata, []),
+ _attrs = _xmlns_attrs,
+ {xmlel, <<"jid">>, _attrs, _els}.
+
+decode_mam_jid_cdata(__TopXMLNS, <<>>) ->
+ erlang:error({xmpp_codec,
+ {missing_cdata, <<>>, <<"jid">>, __TopXMLNS}});
+decode_mam_jid_cdata(__TopXMLNS, _val) ->
+ case catch dec_jid(_val) of
+ {'EXIT', _} ->
+ erlang:error({xmpp_codec,
+ {bad_cdata_value, <<>>, <<"jid">>, __TopXMLNS}});
+ _res -> _res
+ end.
+
+encode_mam_jid_cdata(_val, _acc) ->
+ [{xmlcdata, enc_jid(_val)} | _acc].
+
+decode_mam_result(__TopXMLNS, __IgnoreEls,
+ {xmlel, <<"result">>, _attrs, _els}) ->
+ __Els = decode_mam_result_els(__TopXMLNS, __IgnoreEls,
+ _els, []),
+ {Queryid, Xmlns, Id} =
+ decode_mam_result_attrs(__TopXMLNS, _attrs, undefined,
+ undefined, undefined),
+ {mam_result, Xmlns, Queryid, Id, __Els}.
+
+decode_mam_result_els(__TopXMLNS, __IgnoreEls, [],
+ __Els) ->
+ lists:reverse(__Els);
+decode_mam_result_els(__TopXMLNS, __IgnoreEls,
+ [{xmlel, _, _, _} = _el | _els], __Els) ->
+ if __IgnoreEls ->
+ decode_mam_result_els(__TopXMLNS, __IgnoreEls, _els,
+ [_el | __Els]);
+ true ->
+ case is_known_tag(_el) of
+ true ->
+ decode_mam_result_els(__TopXMLNS, __IgnoreEls, _els,
+ [decode(_el) | __Els]);
+ false ->
+ decode_mam_result_els(__TopXMLNS, __IgnoreEls, _els,
+ __Els)
+ end
+ end;
+decode_mam_result_els(__TopXMLNS, __IgnoreEls,
+ [_ | _els], __Els) ->
+ decode_mam_result_els(__TopXMLNS, __IgnoreEls, _els,
+ __Els).
+
+decode_mam_result_attrs(__TopXMLNS,
+ [{<<"queryid">>, _val} | _attrs], _Queryid, Xmlns,
+ Id) ->
+ decode_mam_result_attrs(__TopXMLNS, _attrs, _val, Xmlns,
+ Id);
+decode_mam_result_attrs(__TopXMLNS,
+ [{<<"xmlns">>, _val} | _attrs], Queryid, _Xmlns, Id) ->
+ decode_mam_result_attrs(__TopXMLNS, _attrs, Queryid,
+ _val, Id);
+decode_mam_result_attrs(__TopXMLNS,
+ [{<<"id">>, _val} | _attrs], Queryid, Xmlns, _Id) ->
+ decode_mam_result_attrs(__TopXMLNS, _attrs, Queryid,
+ Xmlns, _val);
+decode_mam_result_attrs(__TopXMLNS, [_ | _attrs],
+ Queryid, Xmlns, Id) ->
+ decode_mam_result_attrs(__TopXMLNS, _attrs, Queryid,
+ Xmlns, Id);
+decode_mam_result_attrs(__TopXMLNS, [], Queryid, Xmlns,
+ Id) ->
+ {decode_mam_result_attr_queryid(__TopXMLNS, Queryid),
+ decode_mam_result_attr_xmlns(__TopXMLNS, Xmlns),
+ decode_mam_result_attr_id(__TopXMLNS, Id)}.
+
+encode_mam_result({mam_result, Xmlns, Queryid, Id,
+ __Els},
+ _xmlns_attrs) ->
+ _els = [encode(_el) || _el <- __Els],
+ _attrs = encode_mam_result_attr_id(Id,
+ encode_mam_result_attr_xmlns(Xmlns,
+ encode_mam_result_attr_queryid(Queryid,
+ _xmlns_attrs))),
+ {xmlel, <<"result">>, _attrs, _els}.
+
+decode_mam_result_attr_queryid(__TopXMLNS, undefined) ->
+ undefined;
+decode_mam_result_attr_queryid(__TopXMLNS, _val) ->
+ _val.
+
+encode_mam_result_attr_queryid(undefined, _acc) -> _acc;
+encode_mam_result_attr_queryid(_val, _acc) ->
+ [{<<"queryid">>, _val} | _acc].
+
+decode_mam_result_attr_xmlns(__TopXMLNS, undefined) ->
+ undefined;
+decode_mam_result_attr_xmlns(__TopXMLNS, _val) -> _val.
+
+encode_mam_result_attr_xmlns(undefined, _acc) -> _acc;
+encode_mam_result_attr_xmlns(_val, _acc) ->
+ [{<<"xmlns">>, _val} | _acc].
+
+decode_mam_result_attr_id(__TopXMLNS, undefined) ->
+ undefined;
+decode_mam_result_attr_id(__TopXMLNS, _val) -> _val.
+
+encode_mam_result_attr_id(undefined, _acc) -> _acc;
+encode_mam_result_attr_id(_val, _acc) ->
+ [{<<"id">>, _val} | _acc].
+
+decode_mam_archived(__TopXMLNS, __IgnoreEls,
+ {xmlel, <<"archived">>, _attrs, _els}) ->
+ {Id, By} = decode_mam_archived_attrs(__TopXMLNS, _attrs,
+ undefined, undefined),
+ {mam_archived, By, Id}.
+
+decode_mam_archived_attrs(__TopXMLNS,
+ [{<<"id">>, _val} | _attrs], _Id, By) ->
+ decode_mam_archived_attrs(__TopXMLNS, _attrs, _val, By);
+decode_mam_archived_attrs(__TopXMLNS,
+ [{<<"by">>, _val} | _attrs], Id, _By) ->
+ decode_mam_archived_attrs(__TopXMLNS, _attrs, Id, _val);
+decode_mam_archived_attrs(__TopXMLNS, [_ | _attrs], Id,
+ By) ->
+ decode_mam_archived_attrs(__TopXMLNS, _attrs, Id, By);
+decode_mam_archived_attrs(__TopXMLNS, [], Id, By) ->
+ {decode_mam_archived_attr_id(__TopXMLNS, Id),
+ decode_mam_archived_attr_by(__TopXMLNS, By)}.
+
+encode_mam_archived({mam_archived, By, Id},
+ _xmlns_attrs) ->
+ _els = [],
+ _attrs = encode_mam_archived_attr_by(By,
+ encode_mam_archived_attr_id(Id,
+ _xmlns_attrs)),
+ {xmlel, <<"archived">>, _attrs, _els}.
+
+decode_mam_archived_attr_id(__TopXMLNS, undefined) ->
+ undefined;
+decode_mam_archived_attr_id(__TopXMLNS, _val) -> _val.
+
+encode_mam_archived_attr_id(undefined, _acc) -> _acc;
+encode_mam_archived_attr_id(_val, _acc) ->
+ [{<<"id">>, _val} | _acc].
+
+decode_mam_archived_attr_by(__TopXMLNS, undefined) ->
+ erlang:error({xmpp_codec,
+ {missing_attr, <<"by">>, <<"archived">>, __TopXMLNS}});
+decode_mam_archived_attr_by(__TopXMLNS, _val) ->
+ case catch dec_jid(_val) of
+ {'EXIT', _} ->
+ erlang:error({xmpp_codec,
+ {bad_attr_value, <<"by">>, <<"archived">>,
+ __TopXMLNS}});
+ _res -> _res
+ end.
+
+encode_mam_archived_attr_by(_val, _acc) ->
+ [{<<"by">>, enc_jid(_val)} | _acc].
+
+decode_mam_query(__TopXMLNS, __IgnoreEls,
+ {xmlel, <<"query">>, _attrs, _els}) ->
+ {Xdata, End, Start, With, Rsm} =
+ decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els,
+ undefined, undefined, undefined, undefined,
+ undefined),
+ {Id, Xmlns} = decode_mam_query_attrs(__TopXMLNS, _attrs,
+ undefined, undefined),
+ {mam_query, Xmlns, Id, Start, End, With, Rsm, Xdata}.
+
+decode_mam_query_els(__TopXMLNS, __IgnoreEls, [], Xdata,
+ End, Start, With, Rsm) ->
+ {Xdata, End, Start, With, Rsm};
+decode_mam_query_els(__TopXMLNS, __IgnoreEls,
+ [{xmlel, <<"start">>, _attrs, _} = _el | _els], Xdata,
+ End, Start, With, Rsm) ->
+ _xmlns = get_attr(<<"xmlns">>, _attrs),
+ if _xmlns == <<>>; _xmlns == __TopXMLNS ->
+ decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els,
+ Xdata, End,
+ decode_mam_start(__TopXMLNS, __IgnoreEls, _el),
+ With, Rsm);
+ true ->
+ decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els,
+ Xdata, End, Start, With, Rsm)
+ end;
+decode_mam_query_els(__TopXMLNS, __IgnoreEls,
+ [{xmlel, <<"end">>, _attrs, _} = _el | _els], Xdata,
+ End, Start, With, Rsm) ->
+ _xmlns = get_attr(<<"xmlns">>, _attrs),
+ if _xmlns == <<>>; _xmlns == __TopXMLNS ->
+ decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els,
+ Xdata,
+ decode_mam_end(__TopXMLNS, __IgnoreEls, _el),
+ Start, With, Rsm);
+ true ->
+ decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els,
+ Xdata, End, Start, With, Rsm)
+ end;
+decode_mam_query_els(__TopXMLNS, __IgnoreEls,
+ [{xmlel, <<"with">>, _attrs, _} = _el | _els], Xdata,
+ End, Start, With, Rsm) ->
+ _xmlns = get_attr(<<"xmlns">>, _attrs),
+ if _xmlns == <<>>; _xmlns == __TopXMLNS ->
+ decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els,
+ Xdata, End, Start,
+ decode_mam_with(__TopXMLNS, __IgnoreEls, _el),
+ Rsm);
+ true ->
+ decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els,
+ Xdata, End, Start, With, Rsm)
+ end;
+decode_mam_query_els(__TopXMLNS, __IgnoreEls,
+ [{xmlel, <<"set">>, _attrs, _} = _el | _els], Xdata,
+ End, Start, With, Rsm) ->
+ _xmlns = get_attr(<<"xmlns">>, _attrs),
+ if _xmlns == <<"http://jabber.org/protocol/rsm">> ->
+ decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els,
+ Xdata, End, Start, With,
+ decode_rsm_set(_xmlns, __IgnoreEls, _el));
+ true ->
+ decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els,
+ Xdata, End, Start, With, Rsm)
+ end;
+decode_mam_query_els(__TopXMLNS, __IgnoreEls,
+ [{xmlel, <<"x">>, _attrs, _} = _el | _els], Xdata, End,
+ Start, With, Rsm) ->
+ _xmlns = get_attr(<<"xmlns">>, _attrs),
+ if _xmlns == <<"jabber:x:data">> ->
+ decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els,
+ decode_xdata(_xmlns, __IgnoreEls, _el), End,
+ Start, With, Rsm);
+ true ->
+ decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els,
+ Xdata, End, Start, With, Rsm)
+ end;
+decode_mam_query_els(__TopXMLNS, __IgnoreEls,
+ [_ | _els], Xdata, End, Start, With, Rsm) ->
+ decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els,
+ Xdata, End, Start, With, Rsm).
+
+decode_mam_query_attrs(__TopXMLNS,
+ [{<<"queryid">>, _val} | _attrs], _Id, Xmlns) ->
+ decode_mam_query_attrs(__TopXMLNS, _attrs, _val, Xmlns);
+decode_mam_query_attrs(__TopXMLNS,
+ [{<<"xmlns">>, _val} | _attrs], Id, _Xmlns) ->
+ decode_mam_query_attrs(__TopXMLNS, _attrs, Id, _val);
+decode_mam_query_attrs(__TopXMLNS, [_ | _attrs], Id,
+ Xmlns) ->
+ decode_mam_query_attrs(__TopXMLNS, _attrs, Id, Xmlns);
+decode_mam_query_attrs(__TopXMLNS, [], Id, Xmlns) ->
+ {decode_mam_query_attr_queryid(__TopXMLNS, Id),
+ decode_mam_query_attr_xmlns(__TopXMLNS, Xmlns)}.
+
+encode_mam_query({mam_query, Xmlns, Id, Start, End,
+ With, Rsm, Xdata},
+ _xmlns_attrs) ->
+ _els = lists:reverse('encode_mam_query_$xdata'(Xdata,
+ 'encode_mam_query_$end'(End,
+ 'encode_mam_query_$start'(Start,
+ 'encode_mam_query_$with'(With,
+ 'encode_mam_query_$rsm'(Rsm,
+ [])))))),
+ _attrs = encode_mam_query_attr_xmlns(Xmlns,
+ encode_mam_query_attr_queryid(Id,
+ _xmlns_attrs)),
+ {xmlel, <<"query">>, _attrs, _els}.
+
+'encode_mam_query_$xdata'(undefined, _acc) -> _acc;
+'encode_mam_query_$xdata'(Xdata, _acc) ->
+ [encode_xdata(Xdata,
+ [{<<"xmlns">>, <<"jabber:x:data">>}])
+ | _acc].
+
+'encode_mam_query_$end'(undefined, _acc) -> _acc;
+'encode_mam_query_$end'(End, _acc) ->
+ [encode_mam_end(End,
+ [{<<"xmlns">>, <<"urn:xmpp:mam:tmp">>}])
+ | _acc].
+
+'encode_mam_query_$start'(undefined, _acc) -> _acc;
+'encode_mam_query_$start'(Start, _acc) ->
+ [encode_mam_start(Start,
+ [{<<"xmlns">>, <<"urn:xmpp:mam:tmp">>}])
+ | _acc].
+
+'encode_mam_query_$with'(undefined, _acc) -> _acc;
+'encode_mam_query_$with'(With, _acc) ->
+ [encode_mam_with(With,
+ [{<<"xmlns">>, <<"urn:xmpp:mam:tmp">>}])
+ | _acc].
+
+'encode_mam_query_$rsm'(undefined, _acc) -> _acc;
+'encode_mam_query_$rsm'(Rsm, _acc) ->
+ [encode_rsm_set(Rsm,
+ [{<<"xmlns">>, <<"http://jabber.org/protocol/rsm">>}])
+ | _acc].
+
+decode_mam_query_attr_queryid(__TopXMLNS, undefined) ->
+ undefined;
+decode_mam_query_attr_queryid(__TopXMLNS, _val) -> _val.
+
+encode_mam_query_attr_queryid(undefined, _acc) -> _acc;
+encode_mam_query_attr_queryid(_val, _acc) ->
+ [{<<"queryid">>, _val} | _acc].
+
+decode_mam_query_attr_xmlns(__TopXMLNS, undefined) ->
+ undefined;
+decode_mam_query_attr_xmlns(__TopXMLNS, _val) -> _val.
+
+encode_mam_query_attr_xmlns(undefined, _acc) -> _acc;
+encode_mam_query_attr_xmlns(_val, _acc) ->
+ [{<<"xmlns">>, _val} | _acc].
+
+decode_mam_with(__TopXMLNS, __IgnoreEls,
+ {xmlel, <<"with">>, _attrs, _els}) ->
+ Cdata = decode_mam_with_els(__TopXMLNS, __IgnoreEls,
+ _els, <<>>),
+ Cdata.
+
+decode_mam_with_els(__TopXMLNS, __IgnoreEls, [],
+ Cdata) ->
+ decode_mam_with_cdata(__TopXMLNS, Cdata);
+decode_mam_with_els(__TopXMLNS, __IgnoreEls,
+ [{xmlcdata, _data} | _els], Cdata) ->
+ decode_mam_with_els(__TopXMLNS, __IgnoreEls, _els,
+ <<Cdata/binary, _data/binary>>);
+decode_mam_with_els(__TopXMLNS, __IgnoreEls, [_ | _els],
+ Cdata) ->
+ decode_mam_with_els(__TopXMLNS, __IgnoreEls, _els,
+ Cdata).
+
+encode_mam_with(Cdata, _xmlns_attrs) ->
+ _els = encode_mam_with_cdata(Cdata, []),
+ _attrs = _xmlns_attrs,
+ {xmlel, <<"with">>, _attrs, _els}.
+
+decode_mam_with_cdata(__TopXMLNS, <<>>) ->
+ erlang:error({xmpp_codec,
+ {missing_cdata, <<>>, <<"with">>, __TopXMLNS}});
+decode_mam_with_cdata(__TopXMLNS, _val) ->
+ case catch dec_jid(_val) of
+ {'EXIT', _} ->
+ erlang:error({xmpp_codec,
+ {bad_cdata_value, <<>>, <<"with">>, __TopXMLNS}});
+ _res -> _res
+ end.
+
+encode_mam_with_cdata(_val, _acc) ->
+ [{xmlcdata, enc_jid(_val)} | _acc].
+
+decode_mam_end(__TopXMLNS, __IgnoreEls,
+ {xmlel, <<"end">>, _attrs, _els}) ->
+ Cdata = decode_mam_end_els(__TopXMLNS, __IgnoreEls,
+ _els, <<>>),
+ Cdata.
+
+decode_mam_end_els(__TopXMLNS, __IgnoreEls, [],
+ Cdata) ->
+ decode_mam_end_cdata(__TopXMLNS, Cdata);
+decode_mam_end_els(__TopXMLNS, __IgnoreEls,
+ [{xmlcdata, _data} | _els], Cdata) ->
+ decode_mam_end_els(__TopXMLNS, __IgnoreEls, _els,
+ <<Cdata/binary, _data/binary>>);
+decode_mam_end_els(__TopXMLNS, __IgnoreEls, [_ | _els],
+ Cdata) ->
+ decode_mam_end_els(__TopXMLNS, __IgnoreEls, _els,
+ Cdata).
+
+encode_mam_end(Cdata, _xmlns_attrs) ->
+ _els = encode_mam_end_cdata(Cdata, []),
+ _attrs = _xmlns_attrs,
+ {xmlel, <<"end">>, _attrs, _els}.
+
+decode_mam_end_cdata(__TopXMLNS, <<>>) ->
+ erlang:error({xmpp_codec,
+ {missing_cdata, <<>>, <<"end">>, __TopXMLNS}});
+decode_mam_end_cdata(__TopXMLNS, _val) ->
+ case catch dec_utc(_val) of
+ {'EXIT', _} ->
+ erlang:error({xmpp_codec,
+ {bad_cdata_value, <<>>, <<"end">>, __TopXMLNS}});
+ _res -> _res
+ end.
+
+encode_mam_end_cdata(_val, _acc) ->
+ [{xmlcdata, enc_utc(_val)} | _acc].
+
+decode_mam_start(__TopXMLNS, __IgnoreEls,
+ {xmlel, <<"start">>, _attrs, _els}) ->
+ Cdata = decode_mam_start_els(__TopXMLNS, __IgnoreEls,
+ _els, <<>>),
+ Cdata.
+
+decode_mam_start_els(__TopXMLNS, __IgnoreEls, [],
+ Cdata) ->
+ decode_mam_start_cdata(__TopXMLNS, Cdata);
+decode_mam_start_els(__TopXMLNS, __IgnoreEls,
+ [{xmlcdata, _data} | _els], Cdata) ->
+ decode_mam_start_els(__TopXMLNS, __IgnoreEls, _els,
+ <<Cdata/binary, _data/binary>>);
+decode_mam_start_els(__TopXMLNS, __IgnoreEls,
+ [_ | _els], Cdata) ->
+ decode_mam_start_els(__TopXMLNS, __IgnoreEls, _els,
+ Cdata).
+
+encode_mam_start(Cdata, _xmlns_attrs) ->
+ _els = encode_mam_start_cdata(Cdata, []),
+ _attrs = _xmlns_attrs,
+ {xmlel, <<"start">>, _attrs, _els}.
+
+decode_mam_start_cdata(__TopXMLNS, <<>>) ->
+ erlang:error({xmpp_codec,
+ {missing_cdata, <<>>, <<"start">>, __TopXMLNS}});
+decode_mam_start_cdata(__TopXMLNS, _val) ->
+ case catch dec_utc(_val) of
+ {'EXIT', _} ->
+ erlang:error({xmpp_codec,
+ {bad_cdata_value, <<>>, <<"start">>, __TopXMLNS}});
+ _res -> _res
+ end.
+
+encode_mam_start_cdata(_val, _acc) ->
+ [{xmlcdata, enc_utc(_val)} | _acc].
+
+decode_rsm_set(__TopXMLNS, __IgnoreEls,
+ {xmlel, <<"set">>, _attrs, _els}) ->
+ {After, Last, First, Count, Before, Max, Index} =
+ decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els,
+ undefined, undefined, undefined, undefined,
+ undefined, undefined, undefined),
+ {rsm_set, After, Before, Count, First, Index, Last,
+ Max}.
+
+decode_rsm_set_els(__TopXMLNS, __IgnoreEls, [], After,
+ Last, First, Count, Before, Max, Index) ->
+ {After, Last, First, Count, Before, Max, Index};
+decode_rsm_set_els(__TopXMLNS, __IgnoreEls,
+ [{xmlel, <<"after">>, _attrs, _} = _el | _els], After,
+ Last, First, Count, Before, Max, Index) ->
+ _xmlns = get_attr(<<"xmlns">>, _attrs),
+ if _xmlns == <<>>; _xmlns == __TopXMLNS ->
+ decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els,
+ decode_rsm_after(__TopXMLNS, __IgnoreEls, _el),
+ Last, First, Count, Before, Max, Index);
+ true ->
+ decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After,
+ Last, First, Count, Before, Max, Index)
+ end;
+decode_rsm_set_els(__TopXMLNS, __IgnoreEls,
+ [{xmlel, <<"before">>, _attrs, _} = _el | _els], After,
+ Last, First, Count, Before, Max, Index) ->
+ _xmlns = get_attr(<<"xmlns">>, _attrs),
+ if _xmlns == <<>>; _xmlns == __TopXMLNS ->
+ decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After,
+ Last, First, Count,
+ decode_rsm_before(__TopXMLNS, __IgnoreEls, _el),
+ Max, Index);
+ true ->
+ decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After,
+ Last, First, Count, Before, Max, Index)
+ end;
+decode_rsm_set_els(__TopXMLNS, __IgnoreEls,
+ [{xmlel, <<"count">>, _attrs, _} = _el | _els], After,
+ Last, First, Count, Before, Max, Index) ->
+ _xmlns = get_attr(<<"xmlns">>, _attrs),
+ if _xmlns == <<>>; _xmlns == __TopXMLNS ->
+ decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After,
+ Last, First,
+ decode_rsm_count(__TopXMLNS, __IgnoreEls, _el),
+ Before, Max, Index);
+ true ->
+ decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After,
+ Last, First, Count, Before, Max, Index)
+ end;
+decode_rsm_set_els(__TopXMLNS, __IgnoreEls,
+ [{xmlel, <<"first">>, _attrs, _} = _el | _els], After,
+ Last, First, Count, Before, Max, Index) ->
+ _xmlns = get_attr(<<"xmlns">>, _attrs),
+ if _xmlns == <<>>; _xmlns == __TopXMLNS ->
+ decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After,
+ Last,
+ decode_rsm_first(__TopXMLNS, __IgnoreEls, _el),
+ Count, Before, Max, Index);
+ true ->
+ decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After,
+ Last, First, Count, Before, Max, Index)
+ end;
+decode_rsm_set_els(__TopXMLNS, __IgnoreEls,
+ [{xmlel, <<"index">>, _attrs, _} = _el | _els], After,
+ Last, First, Count, Before, Max, Index) ->
+ _xmlns = get_attr(<<"xmlns">>, _attrs),
+ if _xmlns == <<>>; _xmlns == __TopXMLNS ->
+ decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After,
+ Last, First, Count, Before, Max,
+ decode_rsm_index(__TopXMLNS, __IgnoreEls, _el));
+ true ->
+ decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After,
+ Last, First, Count, Before, Max, Index)
+ end;
+decode_rsm_set_els(__TopXMLNS, __IgnoreEls,
+ [{xmlel, <<"last">>, _attrs, _} = _el | _els], After,
+ Last, First, Count, Before, Max, Index) ->
+ _xmlns = get_attr(<<"xmlns">>, _attrs),
+ if _xmlns == <<>>; _xmlns == __TopXMLNS ->
+ decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After,
+ decode_rsm_last(__TopXMLNS, __IgnoreEls, _el),
+ First, Count, Before, Max, Index);
+ true ->
+ decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After,
+ Last, First, Count, Before, Max, Index)
+ end;
+decode_rsm_set_els(__TopXMLNS, __IgnoreEls,
+ [{xmlel, <<"max">>, _attrs, _} = _el | _els], After,
+ Last, First, Count, Before, Max, Index) ->
+ _xmlns = get_attr(<<"xmlns">>, _attrs),
+ if _xmlns == <<>>; _xmlns == __TopXMLNS ->
+ decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After,
+ Last, First, Count, Before,
+ decode_rsm_max(__TopXMLNS, __IgnoreEls, _el),
+ Index);
+ true ->
+ decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After,
+ Last, First, Count, Before, Max, Index)
+ end;
+decode_rsm_set_els(__TopXMLNS, __IgnoreEls, [_ | _els],
+ After, Last, First, Count, Before, Max, Index) ->
+ decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After,
+ Last, First, Count, Before, Max, Index).
+
+encode_rsm_set({rsm_set, After, Before, Count, First,
+ Index, Last, Max},
+ _xmlns_attrs) ->
+ _els = lists:reverse('encode_rsm_set_$after'(After,
+ 'encode_rsm_set_$last'(Last,
+ 'encode_rsm_set_$first'(First,
+ 'encode_rsm_set_$count'(Count,
+ 'encode_rsm_set_$before'(Before,
+ 'encode_rsm_set_$max'(Max,
+ 'encode_rsm_set_$index'(Index,
+ [])))))))),
+ _attrs = _xmlns_attrs,
+ {xmlel, <<"set">>, _attrs, _els}.
+
+'encode_rsm_set_$after'(undefined, _acc) -> _acc;
+'encode_rsm_set_$after'(After, _acc) ->
+ [encode_rsm_after(After, []) | _acc].
+
+'encode_rsm_set_$last'(undefined, _acc) -> _acc;
+'encode_rsm_set_$last'(Last, _acc) ->
+ [encode_rsm_last(Last, []) | _acc].
+
+'encode_rsm_set_$first'(undefined, _acc) -> _acc;
+'encode_rsm_set_$first'(First, _acc) ->
+ [encode_rsm_first(First, []) | _acc].
+
+'encode_rsm_set_$count'(undefined, _acc) -> _acc;
+'encode_rsm_set_$count'(Count, _acc) ->
+ [encode_rsm_count(Count, []) | _acc].
+
+'encode_rsm_set_$before'(undefined, _acc) -> _acc;
+'encode_rsm_set_$before'(Before, _acc) ->
+ [encode_rsm_before(Before, []) | _acc].
+
+'encode_rsm_set_$max'(undefined, _acc) -> _acc;
+'encode_rsm_set_$max'(Max, _acc) ->
+ [encode_rsm_max(Max, []) | _acc].
+
+'encode_rsm_set_$index'(undefined, _acc) -> _acc;
+'encode_rsm_set_$index'(Index, _acc) ->
+ [encode_rsm_index(Index, []) | _acc].
+
+decode_rsm_first(__TopXMLNS, __IgnoreEls,
+ {xmlel, <<"first">>, _attrs, _els}) ->
+ Data = decode_rsm_first_els(__TopXMLNS, __IgnoreEls,
+ _els, <<>>),
+ Index = decode_rsm_first_attrs(__TopXMLNS, _attrs,
+ undefined),
+ {rsm_first, Index, Data}.
+
+decode_rsm_first_els(__TopXMLNS, __IgnoreEls, [],
+ Data) ->
+ decode_rsm_first_cdata(__TopXMLNS, Data);
+decode_rsm_first_els(__TopXMLNS, __IgnoreEls,
+ [{xmlcdata, _data} | _els], Data) ->
+ decode_rsm_first_els(__TopXMLNS, __IgnoreEls, _els,
+ <<Data/binary, _data/binary>>);
+decode_rsm_first_els(__TopXMLNS, __IgnoreEls,
+ [_ | _els], Data) ->
+ decode_rsm_first_els(__TopXMLNS, __IgnoreEls, _els,
+ Data).
+
+decode_rsm_first_attrs(__TopXMLNS,
+ [{<<"index">>, _val} | _attrs], _Index) ->
+ decode_rsm_first_attrs(__TopXMLNS, _attrs, _val);
+decode_rsm_first_attrs(__TopXMLNS, [_ | _attrs],
+ Index) ->
+ decode_rsm_first_attrs(__TopXMLNS, _attrs, Index);
+decode_rsm_first_attrs(__TopXMLNS, [], Index) ->
+ decode_rsm_first_attr_index(__TopXMLNS, Index).
+
+encode_rsm_first({rsm_first, Index, Data},
+ _xmlns_attrs) ->
+ _els = encode_rsm_first_cdata(Data, []),
+ _attrs = encode_rsm_first_attr_index(Index,
+ _xmlns_attrs),
+ {xmlel, <<"first">>, _attrs, _els}.
+
+decode_rsm_first_attr_index(__TopXMLNS, undefined) ->
+ undefined;
+decode_rsm_first_attr_index(__TopXMLNS, _val) ->
+ case catch dec_int(_val, 0, infinity) of
+ {'EXIT', _} ->
+ erlang:error({xmpp_codec,
+ {bad_attr_value, <<"index">>, <<"first">>,
+ __TopXMLNS}});
+ _res -> _res
+ end.
+
+encode_rsm_first_attr_index(undefined, _acc) -> _acc;
+encode_rsm_first_attr_index(_val, _acc) ->
+ [{<<"index">>, enc_int(_val)} | _acc].
+
+decode_rsm_first_cdata(__TopXMLNS, <<>>) -> undefined;
+decode_rsm_first_cdata(__TopXMLNS, _val) -> _val.
+
+encode_rsm_first_cdata(undefined, _acc) -> _acc;
+encode_rsm_first_cdata(_val, _acc) ->
+ [{xmlcdata, _val} | _acc].
+
+decode_rsm_max(__TopXMLNS, __IgnoreEls,
+ {xmlel, <<"max">>, _attrs, _els}) ->
+ Cdata = decode_rsm_max_els(__TopXMLNS, __IgnoreEls,
+ _els, <<>>),
+ Cdata.
+
+decode_rsm_max_els(__TopXMLNS, __IgnoreEls, [],
+ Cdata) ->
+ decode_rsm_max_cdata(__TopXMLNS, Cdata);
+decode_rsm_max_els(__TopXMLNS, __IgnoreEls,
+ [{xmlcdata, _data} | _els], Cdata) ->
+ decode_rsm_max_els(__TopXMLNS, __IgnoreEls, _els,
+ <<Cdata/binary, _data/binary>>);
+decode_rsm_max_els(__TopXMLNS, __IgnoreEls, [_ | _els],
+ Cdata) ->
+ decode_rsm_max_els(__TopXMLNS, __IgnoreEls, _els,
+ Cdata).
+
+encode_rsm_max(Cdata, _xmlns_attrs) ->
+ _els = encode_rsm_max_cdata(Cdata, []),
+ _attrs = _xmlns_attrs,
+ {xmlel, <<"max">>, _attrs, _els}.
+
+decode_rsm_max_cdata(__TopXMLNS, <<>>) -> undefined;
+decode_rsm_max_cdata(__TopXMLNS, _val) ->
+ case catch dec_int(_val, 0, infinity) of
+ {'EXIT', _} ->
+ erlang:error({xmpp_codec,
+ {bad_cdata_value, <<>>, <<"max">>, __TopXMLNS}});
+ _res -> _res
+ end.
+
+encode_rsm_max_cdata(undefined, _acc) -> _acc;
+encode_rsm_max_cdata(_val, _acc) ->
+ [{xmlcdata, enc_int(_val)} | _acc].
+
+decode_rsm_index(__TopXMLNS, __IgnoreEls,
+ {xmlel, <<"index">>, _attrs, _els}) ->
+ Cdata = decode_rsm_index_els(__TopXMLNS, __IgnoreEls,
+ _els, <<>>),
+ Cdata.
+
+decode_rsm_index_els(__TopXMLNS, __IgnoreEls, [],
+ Cdata) ->
+ decode_rsm_index_cdata(__TopXMLNS, Cdata);
+decode_rsm_index_els(__TopXMLNS, __IgnoreEls,
+ [{xmlcdata, _data} | _els], Cdata) ->
+ decode_rsm_index_els(__TopXMLNS, __IgnoreEls, _els,
+ <<Cdata/binary, _data/binary>>);
+decode_rsm_index_els(__TopXMLNS, __IgnoreEls,
+ [_ | _els], Cdata) ->
+ decode_rsm_index_els(__TopXMLNS, __IgnoreEls, _els,
+ Cdata).
+
+encode_rsm_index(Cdata, _xmlns_attrs) ->
+ _els = encode_rsm_index_cdata(Cdata, []),
+ _attrs = _xmlns_attrs,
+ {xmlel, <<"index">>, _attrs, _els}.
+
+decode_rsm_index_cdata(__TopXMLNS, <<>>) -> undefined;
+decode_rsm_index_cdata(__TopXMLNS, _val) ->
+ case catch dec_int(_val, 0, infinity) of
+ {'EXIT', _} ->
+ erlang:error({xmpp_codec,
+ {bad_cdata_value, <<>>, <<"index">>, __TopXMLNS}});
+ _res -> _res
+ end.
+
+encode_rsm_index_cdata(undefined, _acc) -> _acc;
+encode_rsm_index_cdata(_val, _acc) ->
+ [{xmlcdata, enc_int(_val)} | _acc].
+
+decode_rsm_count(__TopXMLNS, __IgnoreEls,
+ {xmlel, <<"count">>, _attrs, _els}) ->
+ Cdata = decode_rsm_count_els(__TopXMLNS, __IgnoreEls,
+ _els, <<>>),
+ Cdata.
+
+decode_rsm_count_els(__TopXMLNS, __IgnoreEls, [],
+ Cdata) ->
+ decode_rsm_count_cdata(__TopXMLNS, Cdata);
+decode_rsm_count_els(__TopXMLNS, __IgnoreEls,
+ [{xmlcdata, _data} | _els], Cdata) ->
+ decode_rsm_count_els(__TopXMLNS, __IgnoreEls, _els,
+ <<Cdata/binary, _data/binary>>);
+decode_rsm_count_els(__TopXMLNS, __IgnoreEls,
+ [_ | _els], Cdata) ->
+ decode_rsm_count_els(__TopXMLNS, __IgnoreEls, _els,
+ Cdata).
+
+encode_rsm_count(Cdata, _xmlns_attrs) ->
+ _els = encode_rsm_count_cdata(Cdata, []),
+ _attrs = _xmlns_attrs,
+ {xmlel, <<"count">>, _attrs, _els}.
+
+decode_rsm_count_cdata(__TopXMLNS, <<>>) -> undefined;
+decode_rsm_count_cdata(__TopXMLNS, _val) ->
+ case catch dec_int(_val, 0, infinity) of
+ {'EXIT', _} ->
+ erlang:error({xmpp_codec,
+ {bad_cdata_value, <<>>, <<"count">>, __TopXMLNS}});
+ _res -> _res
+ end.
+
+encode_rsm_count_cdata(undefined, _acc) -> _acc;
+encode_rsm_count_cdata(_val, _acc) ->
+ [{xmlcdata, enc_int(_val)} | _acc].
+
+decode_rsm_last(__TopXMLNS, __IgnoreEls,
+ {xmlel, <<"last">>, _attrs, _els}) ->
+ Cdata = decode_rsm_last_els(__TopXMLNS, __IgnoreEls,
+ _els, <<>>),
+ Cdata.
+
+decode_rsm_last_els(__TopXMLNS, __IgnoreEls, [],
+ Cdata) ->
+ decode_rsm_last_cdata(__TopXMLNS, Cdata);
+decode_rsm_last_els(__TopXMLNS, __IgnoreEls,
+ [{xmlcdata, _data} | _els], Cdata) ->
+ decode_rsm_last_els(__TopXMLNS, __IgnoreEls, _els,
+ <<Cdata/binary, _data/binary>>);
+decode_rsm_last_els(__TopXMLNS, __IgnoreEls, [_ | _els],
+ Cdata) ->
+ decode_rsm_last_els(__TopXMLNS, __IgnoreEls, _els,
+ Cdata).
+
+encode_rsm_last(Cdata, _xmlns_attrs) ->
+ _els = encode_rsm_last_cdata(Cdata, []),
+ _attrs = _xmlns_attrs,
+ {xmlel, <<"last">>, _attrs, _els}.
+
+decode_rsm_last_cdata(__TopXMLNS, <<>>) -> undefined;
+decode_rsm_last_cdata(__TopXMLNS, _val) -> _val.
+
+encode_rsm_last_cdata(undefined, _acc) -> _acc;
+encode_rsm_last_cdata(_val, _acc) ->
+ [{xmlcdata, _val} | _acc].
+
+decode_rsm_before(__TopXMLNS, __IgnoreEls,
+ {xmlel, <<"before">>, _attrs, _els}) ->
+ Cdata = decode_rsm_before_els(__TopXMLNS, __IgnoreEls,
+ _els, <<>>),
+ Cdata.
+
+decode_rsm_before_els(__TopXMLNS, __IgnoreEls, [],
+ Cdata) ->
+ decode_rsm_before_cdata(__TopXMLNS, Cdata);
+decode_rsm_before_els(__TopXMLNS, __IgnoreEls,
+ [{xmlcdata, _data} | _els], Cdata) ->
+ decode_rsm_before_els(__TopXMLNS, __IgnoreEls, _els,
+ <<Cdata/binary, _data/binary>>);
+decode_rsm_before_els(__TopXMLNS, __IgnoreEls,
+ [_ | _els], Cdata) ->
+ decode_rsm_before_els(__TopXMLNS, __IgnoreEls, _els,
+ Cdata).
+
+encode_rsm_before(Cdata, _xmlns_attrs) ->
+ _els = encode_rsm_before_cdata(Cdata, []),
+ _attrs = _xmlns_attrs,
+ {xmlel, <<"before">>, _attrs, _els}.
+
+decode_rsm_before_cdata(__TopXMLNS, <<>>) -> none;
+decode_rsm_before_cdata(__TopXMLNS, _val) -> _val.
+
+encode_rsm_before_cdata(none, _acc) -> _acc;
+encode_rsm_before_cdata(_val, _acc) ->
+ [{xmlcdata, _val} | _acc].
+
+decode_rsm_after(__TopXMLNS, __IgnoreEls,
+ {xmlel, <<"after">>, _attrs, _els}) ->
+ Cdata = decode_rsm_after_els(__TopXMLNS, __IgnoreEls,
+ _els, <<>>),
+ Cdata.
+
+decode_rsm_after_els(__TopXMLNS, __IgnoreEls, [],
+ Cdata) ->
+ decode_rsm_after_cdata(__TopXMLNS, Cdata);
+decode_rsm_after_els(__TopXMLNS, __IgnoreEls,
+ [{xmlcdata, _data} | _els], Cdata) ->
+ decode_rsm_after_els(__TopXMLNS, __IgnoreEls, _els,
+ <<Cdata/binary, _data/binary>>);
+decode_rsm_after_els(__TopXMLNS, __IgnoreEls,
+ [_ | _els], Cdata) ->
+ decode_rsm_after_els(__TopXMLNS, __IgnoreEls, _els,
+ Cdata).
+
+encode_rsm_after(Cdata, _xmlns_attrs) ->
+ _els = encode_rsm_after_cdata(Cdata, []),
+ _attrs = _xmlns_attrs,
+ {xmlel, <<"after">>, _attrs, _els}.
+
+decode_rsm_after_cdata(__TopXMLNS, <<>>) -> undefined;
+decode_rsm_after_cdata(__TopXMLNS, _val) -> _val.
+
+encode_rsm_after_cdata(undefined, _acc) -> _acc;
+encode_rsm_after_cdata(_val, _acc) ->
+ [{xmlcdata, _val} | _acc].
+
decode_muc(__TopXMLNS, __IgnoreEls,
{xmlel, <<"x">>, _attrs, _els}) ->
History = decode_muc_els(__TopXMLNS, __IgnoreEls, _els,
@@ -5397,60 +7025,6 @@ encode_bytestreams_streamhost_attr_port(1080, _acc) ->
encode_bytestreams_streamhost_attr_port(_val, _acc) ->
[{<<"port">>, enc_int(_val)} | _acc].
-decode_legacy_delay(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"x">>, _attrs, _els}) ->
- {Stamp, From} = decode_legacy_delay_attrs(__TopXMLNS,
- _attrs, undefined, undefined),
- {legacy_delay, Stamp, From}.
-
-decode_legacy_delay_attrs(__TopXMLNS,
- [{<<"stamp">>, _val} | _attrs], _Stamp, From) ->
- decode_legacy_delay_attrs(__TopXMLNS, _attrs, _val,
- From);
-decode_legacy_delay_attrs(__TopXMLNS,
- [{<<"from">>, _val} | _attrs], Stamp, _From) ->
- decode_legacy_delay_attrs(__TopXMLNS, _attrs, Stamp,
- _val);
-decode_legacy_delay_attrs(__TopXMLNS, [_ | _attrs],
- Stamp, From) ->
- decode_legacy_delay_attrs(__TopXMLNS, _attrs, Stamp,
- From);
-decode_legacy_delay_attrs(__TopXMLNS, [], Stamp,
- From) ->
- {decode_legacy_delay_attr_stamp(__TopXMLNS, Stamp),
- decode_legacy_delay_attr_from(__TopXMLNS, From)}.
-
-encode_legacy_delay({legacy_delay, Stamp, From},
- _xmlns_attrs) ->
- _els = [],
- _attrs = encode_legacy_delay_attr_from(From,
- encode_legacy_delay_attr_stamp(Stamp,
- _xmlns_attrs)),
- {xmlel, <<"x">>, _attrs, _els}.
-
-decode_legacy_delay_attr_stamp(__TopXMLNS, undefined) ->
- erlang:error({xmpp_codec,
- {missing_attr, <<"stamp">>, <<"x">>, __TopXMLNS}});
-decode_legacy_delay_attr_stamp(__TopXMLNS, _val) ->
- _val.
-
-encode_legacy_delay_attr_stamp(_val, _acc) ->
- [{<<"stamp">>, _val} | _acc].
-
-decode_legacy_delay_attr_from(__TopXMLNS, undefined) ->
- undefined;
-decode_legacy_delay_attr_from(__TopXMLNS, _val) ->
- case catch dec_jid(_val) of
- {'EXIT', _} ->
- erlang:error({xmpp_codec,
- {bad_attr_value, <<"from">>, <<"x">>, __TopXMLNS}});
- _res -> _res
- end.
-
-encode_legacy_delay_attr_from(undefined, _acc) -> _acc;
-encode_legacy_delay_attr_from(_val, _acc) ->
- [{<<"from">>, enc_jid(_val)} | _acc].
-
decode_delay(__TopXMLNS, __IgnoreEls,
{xmlel, <<"delay">>, _attrs, _els}) ->
{Stamp, From} = decode_delay_attrs(__TopXMLNS, _attrs,
@@ -6503,10 +8077,24 @@ encode_pubsub_event_items_attr_node(_val, _acc) ->
decode_pubsub_event_item(__TopXMLNS, __IgnoreEls,
{xmlel, <<"item">>, _attrs, _els}) ->
+ __Xmls = decode_pubsub_event_item_els(__TopXMLNS,
+ __IgnoreEls, _els, []),
{Id, Node, Publisher} =
decode_pubsub_event_item_attrs(__TopXMLNS, _attrs,
undefined, undefined, undefined),
- {pubsub_event_item, Id, Node, Publisher}.
+ {pubsub_event_item, Id, Node, Publisher, __Xmls}.
+
+decode_pubsub_event_item_els(__TopXMLNS, __IgnoreEls,
+ [], __Xmls) ->
+ lists:reverse(__Xmls);
+decode_pubsub_event_item_els(__TopXMLNS, __IgnoreEls,
+ [{xmlel, _, _, _} = _el | _els], __Xmls) ->
+ decode_pubsub_event_item_els(__TopXMLNS, __IgnoreEls,
+ _els, [_el | __Xmls]);
+decode_pubsub_event_item_els(__TopXMLNS, __IgnoreEls,
+ [_ | _els], __Xmls) ->
+ decode_pubsub_event_item_els(__TopXMLNS, __IgnoreEls,
+ _els, __Xmls).
decode_pubsub_event_item_attrs(__TopXMLNS,
[{<<"id">>, _val} | _attrs], _Id, Node,
@@ -6535,9 +8123,9 @@ decode_pubsub_event_item_attrs(__TopXMLNS, [], Id, Node,
Publisher)}.
encode_pubsub_event_item({pubsub_event_item, Id, Node,
- Publisher},
+ Publisher, __Xmls},
_xmlns_attrs) ->
- _els = [],
+ _els = __Xmls,
_attrs =
encode_pubsub_event_item_attr_publisher(Publisher,
encode_pubsub_event_item_attr_node(Node,