Packages

Erlang/Elixir XMPP parsing and serialization library

Current section

Files

Jump to
contus_xmpp src xep0440.erl
Raw

src/xep0440.erl

%% Created automatically by XML generator (fxml_gen.erl)
%% Source: xmpp_codec.spec
-module(xep0440).
-compile(export_all).
do_decode(<<"channel-binding">>,
<<"urn:xmpp:sasl-cb:0">>, El, Opts) ->
decode_sasl_channel_binding_element(<<"urn:xmpp:sasl-cb:0">>,
Opts,
El);
do_decode(<<"sasl-channel-binding">>,
<<"urn:xmpp:sasl-cb:0">>, El, Opts) ->
decode_sasl_channel_binding(<<"urn:xmpp:sasl-cb: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() ->
[{<<"channel-binding">>, <<"urn:xmpp:sasl-cb:0">>},
{<<"sasl-channel-binding">>, <<"urn:xmpp:sasl-cb:0">>}].
do_encode({sasl_channel_binding, _} =
Sasl_channel_binding,
TopXMLNS) ->
encode_sasl_channel_binding(Sasl_channel_binding,
TopXMLNS).
do_get_name({sasl_channel_binding, _}) ->
<<"sasl-channel-binding">>.
do_get_ns({sasl_channel_binding, _}) ->
<<"urn:xmpp:sasl-cb:0">>.
pp(sasl_channel_binding, 1) -> [bindings];
pp(_, _) -> no.
records() -> [{sasl_channel_binding, 1}].
decode_sasl_channel_binding_element(__TopXMLNS, __Opts,
{xmlel,
<<"channel-binding">>,
_attrs,
_els}) ->
Type =
decode_sasl_channel_binding_element_attrs(__TopXMLNS,
_attrs,
undefined),
Type.
decode_sasl_channel_binding_element_attrs(__TopXMLNS,
[{<<"type">>, _val} | _attrs],
_Type) ->
decode_sasl_channel_binding_element_attrs(__TopXMLNS,
_attrs,
_val);
decode_sasl_channel_binding_element_attrs(__TopXMLNS,
[_ | _attrs], Type) ->
decode_sasl_channel_binding_element_attrs(__TopXMLNS,
_attrs,
Type);
decode_sasl_channel_binding_element_attrs(__TopXMLNS,
[], Type) ->
decode_sasl_channel_binding_element_attr_type(__TopXMLNS,
Type).
encode_sasl_channel_binding_element(Type, __TopXMLNS) ->
__NewTopXMLNS =
xmpp_codec:choose_top_xmlns(<<"urn:xmpp:sasl-cb:0">>,
[],
__TopXMLNS),
_els = [],
_attrs =
encode_sasl_channel_binding_element_attr_type(Type,
xmpp_codec:enc_xmlns_attrs(__NewTopXMLNS,
__TopXMLNS)),
{xmlel, <<"channel-binding">>, _attrs, _els}.
decode_sasl_channel_binding_element_attr_type(__TopXMLNS,
undefined) ->
erlang:error({xmpp_codec,
{missing_attr,
<<"type">>,
<<"channel-binding">>,
__TopXMLNS}});
decode_sasl_channel_binding_element_attr_type(__TopXMLNS,
_val) ->
_val.
encode_sasl_channel_binding_element_attr_type(_val,
_acc) ->
[{<<"type">>, _val} | _acc].
decode_sasl_channel_binding(__TopXMLNS, __Opts,
{xmlel,
<<"sasl-channel-binding">>,
_attrs,
_els}) ->
Bindings = decode_sasl_channel_binding_els(__TopXMLNS,
__Opts,
_els,
[]),
{sasl_channel_binding, Bindings}.
decode_sasl_channel_binding_els(__TopXMLNS, __Opts, [],
Bindings) ->
lists:reverse(Bindings);
decode_sasl_channel_binding_els(__TopXMLNS, __Opts,
[{xmlel, <<"channel-binding">>, _attrs, _} = _el
| _els],
Bindings) ->
case xmpp_codec:get_attr(<<"xmlns">>,
_attrs,
__TopXMLNS)
of
<<"urn:xmpp:sasl-cb:0">> ->
decode_sasl_channel_binding_els(__TopXMLNS,
__Opts,
_els,
[decode_sasl_channel_binding_element(<<"urn:xmpp:sasl-cb:0">>,
__Opts,
_el)
| Bindings]);
_ ->
decode_sasl_channel_binding_els(__TopXMLNS,
__Opts,
_els,
Bindings)
end;
decode_sasl_channel_binding_els(__TopXMLNS, __Opts,
[_ | _els], Bindings) ->
decode_sasl_channel_binding_els(__TopXMLNS,
__Opts,
_els,
Bindings).
encode_sasl_channel_binding({sasl_channel_binding,
Bindings},
__TopXMLNS) ->
__NewTopXMLNS =
xmpp_codec:choose_top_xmlns(<<"urn:xmpp:sasl-cb:0">>,
[],
__TopXMLNS),
_els =
lists:reverse('encode_sasl_channel_binding_$bindings'(Bindings,
__NewTopXMLNS,
[])),
_attrs = xmpp_codec:enc_xmlns_attrs(__NewTopXMLNS,
__TopXMLNS),
{xmlel, <<"sasl-channel-binding">>, _attrs, _els}.
'encode_sasl_channel_binding_$bindings'([], __TopXMLNS,
_acc) ->
_acc;
'encode_sasl_channel_binding_$bindings'([Bindings
| _els],
__TopXMLNS, _acc) ->
'encode_sasl_channel_binding_$bindings'(_els,
__TopXMLNS,
[encode_sasl_channel_binding_element(Bindings,
__TopXMLNS)
| _acc]).