Current section
Files
Jump to
Current section
Files
src/xep0355.erl
%% Created automatically by XML generator (fxml_gen.erl)
%% Source: xmpp_codec.spec
-module(xep0355).
-compile(export_all).
do_decode(<<"query">>, <<"urn:xmpp:delegation:1">>, El,
Opts) ->
decode_delegation_query(<<"urn:xmpp:delegation:1">>,
Opts,
El);
do_decode(<<"delegate">>, <<"urn:xmpp:delegation:1">>,
El, Opts) ->
decode_delegate(<<"urn:xmpp:delegation:1">>, Opts, El);
do_decode(<<"delegation">>, <<"urn:xmpp:delegation:1">>,
El, Opts) ->
decode_delegation(<<"urn:xmpp:delegation:1">>,
Opts,
El);
do_decode(<<"delegated">>, <<"urn:xmpp:delegation:1">>,
El, Opts) ->
decode_delegated(<<"urn:xmpp:delegation:1">>, Opts, El);
do_decode(<<"attribute">>, <<"urn:xmpp:delegation:1">>,
El, Opts) ->
decode_delegated_attribute(<<"urn:xmpp:delegation:1">>,
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() ->
[{<<"query">>, <<"urn:xmpp:delegation:1">>},
{<<"delegate">>, <<"urn:xmpp:delegation:1">>},
{<<"delegation">>, <<"urn:xmpp:delegation:1">>},
{<<"delegated">>, <<"urn:xmpp:delegation:1">>},
{<<"attribute">>, <<"urn:xmpp:delegation:1">>}].
do_encode({delegated, _, _} = Delegated, TopXMLNS) ->
encode_delegated(Delegated, TopXMLNS);
do_encode({delegation, _, _} = Delegation, TopXMLNS) ->
encode_delegation(Delegation, TopXMLNS);
do_encode({delegation_query, _, _} = Query, TopXMLNS) ->
encode_delegation_query(Query, TopXMLNS).
do_get_name({delegated, _, _}) -> <<"delegated">>;
do_get_name({delegation, _, _}) -> <<"delegation">>;
do_get_name({delegation_query, _, _}) -> <<"query">>.
do_get_ns({delegated, _, _}) ->
<<"urn:xmpp:delegation:1">>;
do_get_ns({delegation, _, _}) ->
<<"urn:xmpp:delegation:1">>;
do_get_ns({delegation_query, _, _}) ->
<<"urn:xmpp:delegation:1">>.
pp(delegated, 2) -> [ns, attrs];
pp(delegation, 2) -> [delegated, forwarded];
pp(delegation_query, 2) -> [to, delegate];
pp(_, _) -> no.
records() ->
[{delegated, 2},
{delegation, 2},
{delegation_query, 2}].
decode_delegation_query(__TopXMLNS, __Opts,
{xmlel, <<"query">>, _attrs, _els}) ->
Delegate = decode_delegation_query_els(__TopXMLNS,
__Opts,
_els,
[]),
To = decode_delegation_query_attrs(__TopXMLNS,
_attrs,
undefined),
{delegation_query, To, Delegate}.
decode_delegation_query_els(__TopXMLNS, __Opts, [],
Delegate) ->
lists:reverse(Delegate);
decode_delegation_query_els(__TopXMLNS, __Opts,
[{xmlel, <<"delegate">>, _attrs, _} = _el | _els],
Delegate) ->
case xmpp_codec:get_attr(<<"xmlns">>,
_attrs,
__TopXMLNS)
of
<<"urn:xmpp:delegation:1">> ->
decode_delegation_query_els(__TopXMLNS,
__Opts,
_els,
[decode_delegate(<<"urn:xmpp:delegation:1">>,
__Opts,
_el)
| Delegate]);
_ ->
decode_delegation_query_els(__TopXMLNS,
__Opts,
_els,
Delegate)
end;
decode_delegation_query_els(__TopXMLNS, __Opts,
[_ | _els], Delegate) ->
decode_delegation_query_els(__TopXMLNS,
__Opts,
_els,
Delegate).
decode_delegation_query_attrs(__TopXMLNS,
[{<<"to">>, _val} | _attrs], _To) ->
decode_delegation_query_attrs(__TopXMLNS, _attrs, _val);
decode_delegation_query_attrs(__TopXMLNS, [_ | _attrs],
To) ->
decode_delegation_query_attrs(__TopXMLNS, _attrs, To);
decode_delegation_query_attrs(__TopXMLNS, [], To) ->
decode_delegation_query_attr_to(__TopXMLNS, To).
encode_delegation_query({delegation_query,
To,
Delegate},
__TopXMLNS) ->
__NewTopXMLNS =
xmpp_codec:choose_top_xmlns(<<"urn:xmpp:delegation:1">>,
[],
__TopXMLNS),
_els =
lists:reverse('encode_delegation_query_$delegate'(Delegate,
__NewTopXMLNS,
[])),
_attrs = encode_delegation_query_attr_to(To,
xmpp_codec:enc_xmlns_attrs(__NewTopXMLNS,
__TopXMLNS)),
{xmlel, <<"query">>, _attrs, _els}.
'encode_delegation_query_$delegate'([], __TopXMLNS,
_acc) ->
_acc;
'encode_delegation_query_$delegate'([Delegate | _els],
__TopXMLNS, _acc) ->
'encode_delegation_query_$delegate'(_els,
__TopXMLNS,
[encode_delegate(Delegate, __TopXMLNS)
| _acc]).
decode_delegation_query_attr_to(__TopXMLNS,
undefined) ->
erlang:error({xmpp_codec,
{missing_attr, <<"to">>, <<"query">>, __TopXMLNS}});
decode_delegation_query_attr_to(__TopXMLNS, _val) ->
case catch jid:decode(_val) of
{'EXIT', _} ->
erlang:error({xmpp_codec,
{bad_attr_value, <<"to">>, <<"query">>, __TopXMLNS}});
_res -> _res
end.
encode_delegation_query_attr_to(_val, _acc) ->
[{<<"to">>, jid:encode(_val)} | _acc].
decode_delegate(__TopXMLNS, __Opts,
{xmlel, <<"delegate">>, _attrs, _els}) ->
Namespace = decode_delegate_attrs(__TopXMLNS,
_attrs,
undefined),
Namespace.
decode_delegate_attrs(__TopXMLNS,
[{<<"namespace">>, _val} | _attrs], _Namespace) ->
decode_delegate_attrs(__TopXMLNS, _attrs, _val);
decode_delegate_attrs(__TopXMLNS, [_ | _attrs],
Namespace) ->
decode_delegate_attrs(__TopXMLNS, _attrs, Namespace);
decode_delegate_attrs(__TopXMLNS, [], Namespace) ->
decode_delegate_attr_namespace(__TopXMLNS, Namespace).
encode_delegate(Namespace, __TopXMLNS) ->
__NewTopXMLNS =
xmpp_codec:choose_top_xmlns(<<"urn:xmpp:delegation:1">>,
[],
__TopXMLNS),
_els = [],
_attrs = encode_delegate_attr_namespace(Namespace,
xmpp_codec:enc_xmlns_attrs(__NewTopXMLNS,
__TopXMLNS)),
{xmlel, <<"delegate">>, _attrs, _els}.
decode_delegate_attr_namespace(__TopXMLNS, undefined) ->
erlang:error({xmpp_codec,
{missing_attr,
<<"namespace">>,
<<"delegate">>,
__TopXMLNS}});
decode_delegate_attr_namespace(__TopXMLNS, _val) ->
_val.
encode_delegate_attr_namespace(_val, _acc) ->
[{<<"namespace">>, _val} | _acc].
decode_delegation(__TopXMLNS, __Opts,
{xmlel, <<"delegation">>, _attrs, _els}) ->
{Forwarded, Delegated} =
decode_delegation_els(__TopXMLNS,
__Opts,
_els,
undefined,
[]),
{delegation, Delegated, Forwarded}.
decode_delegation_els(__TopXMLNS, __Opts, [], Forwarded,
Delegated) ->
{Forwarded, lists:reverse(Delegated)};
decode_delegation_els(__TopXMLNS, __Opts,
[{xmlel, <<"delegated">>, _attrs, _} = _el | _els],
Forwarded, Delegated) ->
case xmpp_codec:get_attr(<<"xmlns">>,
_attrs,
__TopXMLNS)
of
<<"urn:xmpp:delegation:1">> ->
decode_delegation_els(__TopXMLNS,
__Opts,
_els,
Forwarded,
[decode_delegated(<<"urn:xmpp:delegation:1">>,
__Opts,
_el)
| Delegated]);
_ ->
decode_delegation_els(__TopXMLNS,
__Opts,
_els,
Forwarded,
Delegated)
end;
decode_delegation_els(__TopXMLNS, __Opts,
[{xmlel, <<"forwarded">>, _attrs, _} = _el | _els],
Forwarded, Delegated) ->
case xmpp_codec:get_attr(<<"xmlns">>,
_attrs,
__TopXMLNS)
of
<<"urn:xmpp:forward:0">> ->
decode_delegation_els(__TopXMLNS,
__Opts,
_els,
xep0297:decode_forwarded(<<"urn:xmpp:forward:0">>,
__Opts,
_el),
Delegated);
_ ->
decode_delegation_els(__TopXMLNS,
__Opts,
_els,
Forwarded,
Delegated)
end;
decode_delegation_els(__TopXMLNS, __Opts, [_ | _els],
Forwarded, Delegated) ->
decode_delegation_els(__TopXMLNS,
__Opts,
_els,
Forwarded,
Delegated).
encode_delegation({delegation, Delegated, Forwarded},
__TopXMLNS) ->
__NewTopXMLNS =
xmpp_codec:choose_top_xmlns(<<"urn:xmpp:delegation:1">>,
[],
__TopXMLNS),
_els =
lists:reverse('encode_delegation_$forwarded'(Forwarded,
__NewTopXMLNS,
'encode_delegation_$delegated'(Delegated,
__NewTopXMLNS,
[]))),
_attrs = xmpp_codec:enc_xmlns_attrs(__NewTopXMLNS,
__TopXMLNS),
{xmlel, <<"delegation">>, _attrs, _els}.
'encode_delegation_$forwarded'(undefined, __TopXMLNS,
_acc) ->
_acc;
'encode_delegation_$forwarded'(Forwarded, __TopXMLNS,
_acc) ->
[xep0297:encode_forwarded(Forwarded, __TopXMLNS)
| _acc].
'encode_delegation_$delegated'([], __TopXMLNS, _acc) ->
_acc;
'encode_delegation_$delegated'([Delegated | _els],
__TopXMLNS, _acc) ->
'encode_delegation_$delegated'(_els,
__TopXMLNS,
[encode_delegated(Delegated, __TopXMLNS)
| _acc]).
decode_delegated(__TopXMLNS, __Opts,
{xmlel, <<"delegated">>, _attrs, _els}) ->
Attrs = decode_delegated_els(__TopXMLNS,
__Opts,
_els,
[]),
Ns = decode_delegated_attrs(__TopXMLNS,
_attrs,
undefined),
{delegated, Ns, Attrs}.
decode_delegated_els(__TopXMLNS, __Opts, [], Attrs) ->
lists:reverse(Attrs);
decode_delegated_els(__TopXMLNS, __Opts,
[{xmlel, <<"attribute">>, _attrs, _} = _el | _els],
Attrs) ->
case xmpp_codec:get_attr(<<"xmlns">>,
_attrs,
__TopXMLNS)
of
<<"urn:xmpp:delegation:1">> ->
decode_delegated_els(__TopXMLNS,
__Opts,
_els,
[decode_delegated_attribute(<<"urn:xmpp:delegation:1">>,
__Opts,
_el)
| Attrs]);
_ ->
decode_delegated_els(__TopXMLNS, __Opts, _els, Attrs)
end;
decode_delegated_els(__TopXMLNS, __Opts, [_ | _els],
Attrs) ->
decode_delegated_els(__TopXMLNS, __Opts, _els, Attrs).
decode_delegated_attrs(__TopXMLNS,
[{<<"namespace">>, _val} | _attrs], _Ns) ->
decode_delegated_attrs(__TopXMLNS, _attrs, _val);
decode_delegated_attrs(__TopXMLNS, [_ | _attrs], Ns) ->
decode_delegated_attrs(__TopXMLNS, _attrs, Ns);
decode_delegated_attrs(__TopXMLNS, [], Ns) ->
decode_delegated_attr_namespace(__TopXMLNS, Ns).
encode_delegated({delegated, Ns, Attrs}, __TopXMLNS) ->
__NewTopXMLNS =
xmpp_codec:choose_top_xmlns(<<"urn:xmpp:delegation:1">>,
[],
__TopXMLNS),
_els = lists:reverse('encode_delegated_$attrs'(Attrs,
__NewTopXMLNS,
[])),
_attrs = encode_delegated_attr_namespace(Ns,
xmpp_codec:enc_xmlns_attrs(__NewTopXMLNS,
__TopXMLNS)),
{xmlel, <<"delegated">>, _attrs, _els}.
'encode_delegated_$attrs'([], __TopXMLNS, _acc) -> _acc;
'encode_delegated_$attrs'([Attrs | _els], __TopXMLNS,
_acc) ->
'encode_delegated_$attrs'(_els,
__TopXMLNS,
[encode_delegated_attribute(Attrs, __TopXMLNS)
| _acc]).
decode_delegated_attr_namespace(__TopXMLNS,
undefined) ->
erlang:error({xmpp_codec,
{missing_attr,
<<"namespace">>,
<<"delegated">>,
__TopXMLNS}});
decode_delegated_attr_namespace(__TopXMLNS, _val) ->
_val.
encode_delegated_attr_namespace(_val, _acc) ->
[{<<"namespace">>, _val} | _acc].
decode_delegated_attribute(__TopXMLNS, __Opts,
{xmlel, <<"attribute">>, _attrs, _els}) ->
Name = decode_delegated_attribute_attrs(__TopXMLNS,
_attrs,
undefined),
Name.
decode_delegated_attribute_attrs(__TopXMLNS,
[{<<"name">>, _val} | _attrs], _Name) ->
decode_delegated_attribute_attrs(__TopXMLNS,
_attrs,
_val);
decode_delegated_attribute_attrs(__TopXMLNS,
[_ | _attrs], Name) ->
decode_delegated_attribute_attrs(__TopXMLNS,
_attrs,
Name);
decode_delegated_attribute_attrs(__TopXMLNS, [],
Name) ->
decode_delegated_attribute_attr_name(__TopXMLNS, Name).
encode_delegated_attribute(Name, __TopXMLNS) ->
__NewTopXMLNS =
xmpp_codec:choose_top_xmlns(<<"urn:xmpp:delegation:1">>,
[],
__TopXMLNS),
_els = [],
_attrs = encode_delegated_attribute_attr_name(Name,
xmpp_codec:enc_xmlns_attrs(__NewTopXMLNS,
__TopXMLNS)),
{xmlel, <<"attribute">>, _attrs, _els}.
decode_delegated_attribute_attr_name(__TopXMLNS,
undefined) ->
erlang:error({xmpp_codec,
{missing_attr,
<<"name">>,
<<"attribute">>,
__TopXMLNS}});
decode_delegated_attribute_attr_name(__TopXMLNS,
_val) ->
_val.
encode_delegated_attribute_attr_name(_val, _acc) ->
[{<<"name">>, _val} | _acc].