Packages

Erlang/Elixir XMPP parsing and serialization library

Current section

Files

Jump to
contus_xmpp src xep0485.erl
Raw

src/xep0485.erl

%% Created automatically by XML generator (fxml_gen.erl)
%% Source: xmpp_codec.spec
-module(xep0485).
-compile(export_all).
do_decode(<<"connection">>, <<"urn:xmpp:serverinfo:0">>,
El, Opts) ->
decode_pubsub_serverinfo_connection(<<"urn:xmpp:serverinfo:0">>,
Opts,
El);
do_decode(<<"remote-domain">>,
<<"urn:xmpp:serverinfo:0">>, El, Opts) ->
decode_pubsub_serverinfo_remote_domain(<<"urn:xmpp:serverinfo:0">>,
Opts,
El);
do_decode(<<"federation">>, <<"urn:xmpp:serverinfo:0">>,
El, Opts) ->
decode_pubsub_serverinfo_federation(<<"urn:xmpp:serverinfo:0">>,
Opts,
El);
do_decode(<<"domain">>, <<"urn:xmpp:serverinfo:0">>, El,
Opts) ->
decode_pubsub_serverinfo_domain(<<"urn:xmpp:serverinfo:0">>,
Opts,
El);
do_decode(<<"serverinfo">>, <<"urn:xmpp:serverinfo:0">>,
El, Opts) ->
decode_pubsub_serverinfo(<<"urn:xmpp:serverinfo: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() ->
[{<<"connection">>, <<"urn:xmpp:serverinfo:0">>},
{<<"remote-domain">>, <<"urn:xmpp:serverinfo:0">>},
{<<"federation">>, <<"urn:xmpp:serverinfo:0">>},
{<<"domain">>, <<"urn:xmpp:serverinfo:0">>},
{<<"serverinfo">>, <<"urn:xmpp:serverinfo:0">>}].
do_encode({pubsub_serverinfo, _} = Serverinfo,
TopXMLNS) ->
encode_pubsub_serverinfo(Serverinfo, TopXMLNS);
do_encode({pubsub_serverinfo_domain, _, _} = Domain,
TopXMLNS) ->
encode_pubsub_serverinfo_domain(Domain, TopXMLNS);
do_encode({pubsub_serverinfo_remote_domain, _, _} =
Remote_domain,
TopXMLNS) ->
encode_pubsub_serverinfo_remote_domain(Remote_domain,
TopXMLNS).
do_get_name({pubsub_serverinfo, _}) -> <<"serverinfo">>;
do_get_name({pubsub_serverinfo_domain, _, _}) ->
<<"domain">>;
do_get_name({pubsub_serverinfo_remote_domain, _, _}) ->
<<"remote-domain">>.
do_get_ns({pubsub_serverinfo, _}) ->
<<"urn:xmpp:serverinfo:0">>;
do_get_ns({pubsub_serverinfo_domain, _, _}) ->
<<"urn:xmpp:serverinfo:0">>;
do_get_ns({pubsub_serverinfo_remote_domain, _, _}) ->
<<"urn:xmpp:serverinfo:0">>.
pp(pubsub_serverinfo, 1) -> [domain];
pp(pubsub_serverinfo_domain, 2) ->
[name, remote_domain];
pp(pubsub_serverinfo_remote_domain, 2) -> [name, type];
pp(_, _) -> no.
records() ->
[{pubsub_serverinfo, 1},
{pubsub_serverinfo_domain, 2},
{pubsub_serverinfo_remote_domain, 2}].
dec_enum(Val, Enums) ->
AtomVal = erlang:binary_to_existing_atom(Val, utf8),
case lists:member(AtomVal, Enums) of
true -> AtomVal
end.
enc_enum(Atom) -> erlang:atom_to_binary(Atom, utf8).
decode_pubsub_serverinfo_connection(__TopXMLNS, __Opts,
{xmlel, <<"connection">>, _attrs, _els}) ->
Type =
decode_pubsub_serverinfo_connection_attrs(__TopXMLNS,
_attrs,
undefined),
Type.
decode_pubsub_serverinfo_connection_attrs(__TopXMLNS,
[{<<"type">>, _val} | _attrs],
_Type) ->
decode_pubsub_serverinfo_connection_attrs(__TopXMLNS,
_attrs,
_val);
decode_pubsub_serverinfo_connection_attrs(__TopXMLNS,
[_ | _attrs], Type) ->
decode_pubsub_serverinfo_connection_attrs(__TopXMLNS,
_attrs,
Type);
decode_pubsub_serverinfo_connection_attrs(__TopXMLNS,
[], Type) ->
decode_pubsub_serverinfo_connection_attr_type(__TopXMLNS,
Type).
encode_pubsub_serverinfo_connection(Type, __TopXMLNS) ->
__NewTopXMLNS =
xmpp_codec:choose_top_xmlns(<<"urn:xmpp:serverinfo:0">>,
[],
__TopXMLNS),
_els = [],
_attrs =
encode_pubsub_serverinfo_connection_attr_type(Type,
xmpp_codec:enc_xmlns_attrs(__NewTopXMLNS,
__TopXMLNS)),
{xmlel, <<"connection">>, _attrs, _els}.
decode_pubsub_serverinfo_connection_attr_type(__TopXMLNS,
undefined) ->
erlang:error({xmpp_codec,
{missing_attr,
<<"type">>,
<<"connection">>,
__TopXMLNS}});
decode_pubsub_serverinfo_connection_attr_type(__TopXMLNS,
_val) ->
case catch dec_enum(_val, [incoming, outgoing, bidi]) of
{'EXIT', _} ->
erlang:error({xmpp_codec,
{bad_attr_value,
<<"type">>,
<<"connection">>,
__TopXMLNS}});
_res -> _res
end.
encode_pubsub_serverinfo_connection_attr_type(_val,
_acc) ->
[{<<"type">>, enc_enum(_val)} | _acc].
decode_pubsub_serverinfo_remote_domain(__TopXMLNS,
__Opts,
{xmlel,
<<"remote-domain">>,
_attrs,
_els}) ->
Type =
decode_pubsub_serverinfo_remote_domain_els(__TopXMLNS,
__Opts,
_els,
[]),
Name =
decode_pubsub_serverinfo_remote_domain_attrs(__TopXMLNS,
_attrs,
undefined),
{pubsub_serverinfo_remote_domain, Name, Type}.
decode_pubsub_serverinfo_remote_domain_els(__TopXMLNS,
__Opts, [], Type) ->
lists:reverse(Type);
decode_pubsub_serverinfo_remote_domain_els(__TopXMLNS,
__Opts,
[{xmlel,
<<"connection">>,
_attrs,
_} =
_el
| _els],
Type) ->
case xmpp_codec:get_attr(<<"xmlns">>,
_attrs,
__TopXMLNS)
of
<<"urn:xmpp:serverinfo:0">> ->
decode_pubsub_serverinfo_remote_domain_els(__TopXMLNS,
__Opts,
_els,
[decode_pubsub_serverinfo_connection(<<"urn:xmpp:serverinfo:0">>,
__Opts,
_el)
| Type]);
_ ->
decode_pubsub_serverinfo_remote_domain_els(__TopXMLNS,
__Opts,
_els,
Type)
end;
decode_pubsub_serverinfo_remote_domain_els(__TopXMLNS,
__Opts, [_ | _els], Type) ->
decode_pubsub_serverinfo_remote_domain_els(__TopXMLNS,
__Opts,
_els,
Type).
decode_pubsub_serverinfo_remote_domain_attrs(__TopXMLNS,
[{<<"name">>, _val} | _attrs],
_Name) ->
decode_pubsub_serverinfo_remote_domain_attrs(__TopXMLNS,
_attrs,
_val);
decode_pubsub_serverinfo_remote_domain_attrs(__TopXMLNS,
[_ | _attrs], Name) ->
decode_pubsub_serverinfo_remote_domain_attrs(__TopXMLNS,
_attrs,
Name);
decode_pubsub_serverinfo_remote_domain_attrs(__TopXMLNS,
[], Name) ->
decode_pubsub_serverinfo_remote_domain_attr_name(__TopXMLNS,
Name).
encode_pubsub_serverinfo_remote_domain({pubsub_serverinfo_remote_domain,
Name,
Type},
__TopXMLNS) ->
__NewTopXMLNS =
xmpp_codec:choose_top_xmlns(<<"urn:xmpp:serverinfo:0">>,
[],
__TopXMLNS),
_els =
lists:reverse('encode_pubsub_serverinfo_remote_domain_$type'(Type,
__NewTopXMLNS,
[])),
_attrs =
encode_pubsub_serverinfo_remote_domain_attr_name(Name,
xmpp_codec:enc_xmlns_attrs(__NewTopXMLNS,
__TopXMLNS)),
{xmlel, <<"remote-domain">>, _attrs, _els}.
'encode_pubsub_serverinfo_remote_domain_$type'([],
__TopXMLNS, _acc) ->
_acc;
'encode_pubsub_serverinfo_remote_domain_$type'([Type
| _els],
__TopXMLNS, _acc) ->
'encode_pubsub_serverinfo_remote_domain_$type'(_els,
__TopXMLNS,
[encode_pubsub_serverinfo_connection(Type,
__TopXMLNS)
| _acc]).
decode_pubsub_serverinfo_remote_domain_attr_name(__TopXMLNS,
undefined) ->
erlang:error({xmpp_codec,
{missing_attr,
<<"name">>,
<<"remote-domain">>,
__TopXMLNS}});
decode_pubsub_serverinfo_remote_domain_attr_name(__TopXMLNS,
_val) ->
_val.
encode_pubsub_serverinfo_remote_domain_attr_name(_val,
_acc) ->
[{<<"name">>, _val} | _acc].
decode_pubsub_serverinfo_federation(__TopXMLNS, __Opts,
{xmlel, <<"federation">>, _attrs, _els}) ->
Remote_domain =
decode_pubsub_serverinfo_federation_els(__TopXMLNS,
__Opts,
_els,
[]),
Remote_domain.
decode_pubsub_serverinfo_federation_els(__TopXMLNS,
__Opts, [], Remote_domain) ->
lists:reverse(Remote_domain);
decode_pubsub_serverinfo_federation_els(__TopXMLNS,
__Opts,
[{xmlel,
<<"remote-domain">>,
_attrs,
_} =
_el
| _els],
Remote_domain) ->
case xmpp_codec:get_attr(<<"xmlns">>,
_attrs,
__TopXMLNS)
of
<<"urn:xmpp:serverinfo:0">> ->
decode_pubsub_serverinfo_federation_els(__TopXMLNS,
__Opts,
_els,
[decode_pubsub_serverinfo_remote_domain(<<"urn:xmpp:serverinfo:0">>,
__Opts,
_el)
| Remote_domain]);
_ ->
decode_pubsub_serverinfo_federation_els(__TopXMLNS,
__Opts,
_els,
Remote_domain)
end;
decode_pubsub_serverinfo_federation_els(__TopXMLNS,
__Opts, [_ | _els], Remote_domain) ->
decode_pubsub_serverinfo_federation_els(__TopXMLNS,
__Opts,
_els,
Remote_domain).
encode_pubsub_serverinfo_federation(Remote_domain,
__TopXMLNS) ->
__NewTopXMLNS =
xmpp_codec:choose_top_xmlns(<<"urn:xmpp:serverinfo:0">>,
[],
__TopXMLNS),
_els =
lists:reverse('encode_pubsub_serverinfo_federation_$remote_domain'(Remote_domain,
__NewTopXMLNS,
[])),
_attrs = xmpp_codec:enc_xmlns_attrs(__NewTopXMLNS,
__TopXMLNS),
{xmlel, <<"federation">>, _attrs, _els}.
'encode_pubsub_serverinfo_federation_$remote_domain'([],
__TopXMLNS, _acc) ->
_acc;
'encode_pubsub_serverinfo_federation_$remote_domain'([Remote_domain
| _els],
__TopXMLNS, _acc) ->
'encode_pubsub_serverinfo_federation_$remote_domain'(_els,
__TopXMLNS,
[encode_pubsub_serverinfo_remote_domain(Remote_domain,
__TopXMLNS)
| _acc]).
decode_pubsub_serverinfo_domain(__TopXMLNS, __Opts,
{xmlel, <<"domain">>, _attrs, _els}) ->
Remote_domain =
decode_pubsub_serverinfo_domain_els(__TopXMLNS,
__Opts,
_els,
undefined),
Name = decode_pubsub_serverinfo_domain_attrs(__TopXMLNS,
_attrs,
undefined),
{pubsub_serverinfo_domain, Name, Remote_domain}.
decode_pubsub_serverinfo_domain_els(__TopXMLNS, __Opts,
[], Remote_domain) ->
Remote_domain;
decode_pubsub_serverinfo_domain_els(__TopXMLNS, __Opts,
[{xmlel, <<"federation">>, _attrs, _} = _el
| _els],
Remote_domain) ->
case xmpp_codec:get_attr(<<"xmlns">>,
_attrs,
__TopXMLNS)
of
<<"urn:xmpp:serverinfo:0">> ->
decode_pubsub_serverinfo_domain_els(__TopXMLNS,
__Opts,
_els,
decode_pubsub_serverinfo_federation(<<"urn:xmpp:serverinfo:0">>,
__Opts,
_el));
_ ->
decode_pubsub_serverinfo_domain_els(__TopXMLNS,
__Opts,
_els,
Remote_domain)
end;
decode_pubsub_serverinfo_domain_els(__TopXMLNS, __Opts,
[_ | _els], Remote_domain) ->
decode_pubsub_serverinfo_domain_els(__TopXMLNS,
__Opts,
_els,
Remote_domain).
decode_pubsub_serverinfo_domain_attrs(__TopXMLNS,
[{<<"name">>, _val} | _attrs], _Name) ->
decode_pubsub_serverinfo_domain_attrs(__TopXMLNS,
_attrs,
_val);
decode_pubsub_serverinfo_domain_attrs(__TopXMLNS,
[_ | _attrs], Name) ->
decode_pubsub_serverinfo_domain_attrs(__TopXMLNS,
_attrs,
Name);
decode_pubsub_serverinfo_domain_attrs(__TopXMLNS, [],
Name) ->
decode_pubsub_serverinfo_domain_attr_name(__TopXMLNS,
Name).
encode_pubsub_serverinfo_domain({pubsub_serverinfo_domain,
Name,
Remote_domain},
__TopXMLNS) ->
__NewTopXMLNS =
xmpp_codec:choose_top_xmlns(<<"urn:xmpp:serverinfo:0">>,
[],
__TopXMLNS),
_els =
lists:reverse('encode_pubsub_serverinfo_domain_$remote_domain'(Remote_domain,
__NewTopXMLNS,
[])),
_attrs = encode_pubsub_serverinfo_domain_attr_name(Name,
xmpp_codec:enc_xmlns_attrs(__NewTopXMLNS,
__TopXMLNS)),
{xmlel, <<"domain">>, _attrs, _els}.
'encode_pubsub_serverinfo_domain_$remote_domain'(undefined,
__TopXMLNS, _acc) ->
_acc;
'encode_pubsub_serverinfo_domain_$remote_domain'(Remote_domain,
__TopXMLNS, _acc) ->
[encode_pubsub_serverinfo_federation(Remote_domain,
__TopXMLNS)
| _acc].
decode_pubsub_serverinfo_domain_attr_name(__TopXMLNS,
undefined) ->
erlang:error({xmpp_codec,
{missing_attr, <<"name">>, <<"domain">>, __TopXMLNS}});
decode_pubsub_serverinfo_domain_attr_name(__TopXMLNS,
_val) ->
_val.
encode_pubsub_serverinfo_domain_attr_name(_val, _acc) ->
[{<<"name">>, _val} | _acc].
decode_pubsub_serverinfo(__TopXMLNS, __Opts,
{xmlel, <<"serverinfo">>, _attrs, _els}) ->
Domain = decode_pubsub_serverinfo_els(__TopXMLNS,
__Opts,
_els,
[]),
{pubsub_serverinfo, Domain}.
decode_pubsub_serverinfo_els(__TopXMLNS, __Opts, [],
Domain) ->
lists:reverse(Domain);
decode_pubsub_serverinfo_els(__TopXMLNS, __Opts,
[{xmlel, <<"domain">>, _attrs, _} = _el | _els],
Domain) ->
case xmpp_codec:get_attr(<<"xmlns">>,
_attrs,
__TopXMLNS)
of
<<"urn:xmpp:serverinfo:0">> ->
decode_pubsub_serverinfo_els(__TopXMLNS,
__Opts,
_els,
[decode_pubsub_serverinfo_domain(<<"urn:xmpp:serverinfo:0">>,
__Opts,
_el)
| Domain]);
_ ->
decode_pubsub_serverinfo_els(__TopXMLNS,
__Opts,
_els,
Domain)
end;
decode_pubsub_serverinfo_els(__TopXMLNS, __Opts,
[_ | _els], Domain) ->
decode_pubsub_serverinfo_els(__TopXMLNS,
__Opts,
_els,
Domain).
encode_pubsub_serverinfo({pubsub_serverinfo, Domain},
__TopXMLNS) ->
__NewTopXMLNS =
xmpp_codec:choose_top_xmlns(<<"urn:xmpp:serverinfo:0">>,
[],
__TopXMLNS),
_els =
lists:reverse('encode_pubsub_serverinfo_$domain'(Domain,
__NewTopXMLNS,
[])),
_attrs = xmpp_codec:enc_xmlns_attrs(__NewTopXMLNS,
__TopXMLNS),
{xmlel, <<"serverinfo">>, _attrs, _els}.
'encode_pubsub_serverinfo_$domain'([], __TopXMLNS,
_acc) ->
_acc;
'encode_pubsub_serverinfo_$domain'([Domain | _els],
__TopXMLNS, _acc) ->
'encode_pubsub_serverinfo_$domain'(_els,
__TopXMLNS,
[encode_pubsub_serverinfo_domain(Domain,
__TopXMLNS)
| _acc]).