Packages

Erlang/Elixir XMPP parsing and serialization library

Current section

Files

Jump to
contus_xmpp src xep0403.erl
Raw

src/xep0403.erl

%% Created automatically by XML generator (fxml_gen.erl)
%% Source: xmpp_codec.spec
-module(xep0403).
-compile(export_all).
do_decode(<<"mix">>, <<"urn:xmpp:mix:presence:0">>, El,
Opts) ->
decode_mix_presence(<<"urn:xmpp:mix:presence:0">>,
Opts,
El);
do_decode(Name, <<>>, _, _) ->
erlang:error({xmpp_codec, {missing_tag_xmlns, Name}});
do_decode(Name, XMLNS, _, _) ->
erlang:error({xmpp_codec, {unknown_tag, Name, XMLNS}}).
tags() -> [{<<"mix">>, <<"urn:xmpp:mix:presence:0">>}].
do_encode({mix_presence, _, _, _} = Mix, TopXMLNS) ->
encode_mix_presence(Mix, TopXMLNS).
do_get_name({mix_presence, _, _, _}) -> <<"mix">>.
do_get_ns({mix_presence, Xmlns, _, _}) -> Xmlns.
pp(mix_presence, 3) -> [xmlns, jid, nick];
pp(_, _) -> no.
records() -> [{mix_presence, 3}].
decode_mix_presence(__TopXMLNS, __Opts,
{xmlel, <<"mix">>, _attrs, _els}) ->
{Jid, Nick} = decode_mix_presence_els(__TopXMLNS,
__Opts,
_els,
undefined,
<<>>),
Xmlns = decode_mix_presence_attrs(__TopXMLNS,
_attrs,
undefined),
{mix_presence, Xmlns, Jid, Nick}.
decode_mix_presence_els(__TopXMLNS, __Opts, [], Jid,
Nick) ->
{Jid, Nick};
decode_mix_presence_els(__TopXMLNS, __Opts,
[{xmlel, <<"jid">>, _attrs, _} = _el | _els], Jid,
Nick) ->
case xmpp_codec:get_attr(<<"xmlns">>,
_attrs,
__TopXMLNS)
of
<<"urn:xmpp:mix:core:0">> ->
decode_mix_presence_els(__TopXMLNS,
__Opts,
_els,
xep0369:decode_mix_jid(<<"urn:xmpp:mix:core:0">>,
__Opts,
_el),
Nick);
<<"urn:xmpp:mix:core:1">> ->
decode_mix_presence_els(__TopXMLNS,
__Opts,
_els,
xep0369:decode_mix_jid(<<"urn:xmpp:mix:core:1">>,
__Opts,
_el),
Nick);
<<"urn:xmpp:mix:presence:0">> ->
decode_mix_presence_els(__TopXMLNS,
__Opts,
_els,
xep0369:decode_mix_jid(<<"urn:xmpp:mix:presence:0">>,
__Opts,
_el),
Nick);
_ ->
decode_mix_presence_els(__TopXMLNS,
__Opts,
_els,
Jid,
Nick)
end;
decode_mix_presence_els(__TopXMLNS, __Opts,
[{xmlel, <<"nick">>, _attrs, _} = _el | _els], Jid,
Nick) ->
case xmpp_codec:get_attr(<<"xmlns">>,
_attrs,
__TopXMLNS)
of
<<"urn:xmpp:mix:core:0">> ->
decode_mix_presence_els(__TopXMLNS,
__Opts,
_els,
Jid,
xep0369:decode_mix_nick(<<"urn:xmpp:mix:core:0">>,
__Opts,
_el));
<<"urn:xmpp:mix:core:1">> ->
decode_mix_presence_els(__TopXMLNS,
__Opts,
_els,
Jid,
xep0369:decode_mix_nick(<<"urn:xmpp:mix:core:1">>,
__Opts,
_el));
<<"urn:xmpp:mix:presence:0">> ->
decode_mix_presence_els(__TopXMLNS,
__Opts,
_els,
Jid,
xep0369:decode_mix_nick(<<"urn:xmpp:mix:presence:0">>,
__Opts,
_el));
_ ->
decode_mix_presence_els(__TopXMLNS,
__Opts,
_els,
Jid,
Nick)
end;
decode_mix_presence_els(__TopXMLNS, __Opts, [_ | _els],
Jid, Nick) ->
decode_mix_presence_els(__TopXMLNS,
__Opts,
_els,
Jid,
Nick).
decode_mix_presence_attrs(__TopXMLNS,
[{<<"xmlns">>, _val} | _attrs], _Xmlns) ->
decode_mix_presence_attrs(__TopXMLNS, _attrs, _val);
decode_mix_presence_attrs(__TopXMLNS, [_ | _attrs],
Xmlns) ->
decode_mix_presence_attrs(__TopXMLNS, _attrs, Xmlns);
decode_mix_presence_attrs(__TopXMLNS, [], Xmlns) ->
decode_mix_presence_attr_xmlns(__TopXMLNS, Xmlns).
encode_mix_presence({mix_presence, Xmlns, Jid, Nick},
__TopXMLNS) ->
__NewTopXMLNS = xmpp_codec:choose_top_xmlns(Xmlns,
[<<"urn:xmpp:mix:presence:0">>],
__TopXMLNS),
_els = lists:reverse('encode_mix_presence_$jid'(Jid,
__NewTopXMLNS,
'encode_mix_presence_$nick'(Nick,
__NewTopXMLNS,
[]))),
_attrs = xmpp_codec:enc_xmlns_attrs(__NewTopXMLNS,
__TopXMLNS),
{xmlel, <<"mix">>, _attrs, _els}.
'encode_mix_presence_$jid'(undefined, __TopXMLNS,
_acc) ->
_acc;
'encode_mix_presence_$jid'(Jid, __TopXMLNS, _acc) ->
[xep0369:encode_mix_jid(Jid, __TopXMLNS) | _acc].
'encode_mix_presence_$nick'(<<>>, __TopXMLNS, _acc) ->
_acc;
'encode_mix_presence_$nick'(Nick, __TopXMLNS, _acc) ->
[xep0369:encode_mix_nick(Nick, __TopXMLNS) | _acc].
decode_mix_presence_attr_xmlns(__TopXMLNS, undefined) ->
<<>>;
decode_mix_presence_attr_xmlns(__TopXMLNS, _val) ->
_val.