Current section
Files
Jump to
Current section
Files
src/xep0023.erl
%% Created automatically by XML generator (fxml_gen.erl)
%% Source: xmpp_codec.spec
-module(xep0023).
-compile(export_all).
do_decode(<<"x">>, <<"jabber:x:expire">>, El, Opts) ->
decode_expire(<<"jabber:x:expire">>, 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() -> [{<<"x">>, <<"jabber:x:expire">>}].
do_encode({expire, _, _} = X, TopXMLNS) ->
encode_expire(X, TopXMLNS).
do_get_name({expire, _, _}) -> <<"x">>.
do_get_ns({expire, _, _}) -> <<"jabber:x:expire">>.
pp(expire, 2) -> [seconds, stored];
pp(_, _) -> no.
records() -> [{expire, 2}].
dec_int(Val, Min, Max) ->
case erlang:binary_to_integer(Val) of
Int when Int =< Max, Min == infinity -> Int;
Int when Int =< Max, Int >= Min -> Int
end.
enc_int(Int) -> erlang:integer_to_binary(Int).
decode_expire(__TopXMLNS, __Opts,
{xmlel, <<"x">>, _attrs, _els}) ->
{Seconds, Stored} = decode_expire_attrs(__TopXMLNS,
_attrs,
undefined,
undefined),
{expire, Seconds, Stored}.
decode_expire_attrs(__TopXMLNS,
[{<<"seconds">>, _val} | _attrs], _Seconds, Stored) ->
decode_expire_attrs(__TopXMLNS, _attrs, _val, Stored);
decode_expire_attrs(__TopXMLNS,
[{<<"stored">>, _val} | _attrs], Seconds, _Stored) ->
decode_expire_attrs(__TopXMLNS, _attrs, Seconds, _val);
decode_expire_attrs(__TopXMLNS, [_ | _attrs], Seconds,
Stored) ->
decode_expire_attrs(__TopXMLNS,
_attrs,
Seconds,
Stored);
decode_expire_attrs(__TopXMLNS, [], Seconds, Stored) ->
{decode_expire_attr_seconds(__TopXMLNS, Seconds),
decode_expire_attr_stored(__TopXMLNS, Stored)}.
encode_expire({expire, Seconds, Stored}, __TopXMLNS) ->
__NewTopXMLNS =
xmpp_codec:choose_top_xmlns(<<"jabber:x:expire">>,
[],
__TopXMLNS),
_els = [],
_attrs = encode_expire_attr_stored(Stored,
encode_expire_attr_seconds(Seconds,
xmpp_codec:enc_xmlns_attrs(__NewTopXMLNS,
__TopXMLNS))),
{xmlel, <<"x">>, _attrs, _els}.
decode_expire_attr_seconds(__TopXMLNS, undefined) ->
erlang:error({xmpp_codec,
{missing_attr, <<"seconds">>, <<"x">>, __TopXMLNS}});
decode_expire_attr_seconds(__TopXMLNS, _val) ->
case catch dec_int(_val, 0, infinity) of
{'EXIT', _} ->
erlang:error({xmpp_codec,
{bad_attr_value,
<<"seconds">>,
<<"x">>,
__TopXMLNS}});
_res -> _res
end.
encode_expire_attr_seconds(_val, _acc) ->
[{<<"seconds">>, enc_int(_val)} | _acc].
decode_expire_attr_stored(__TopXMLNS, undefined) ->
undefined;
decode_expire_attr_stored(__TopXMLNS, _val) ->
case catch dec_int(_val, 0, infinity) of
{'EXIT', _} ->
erlang:error({xmpp_codec,
{bad_attr_value, <<"stored">>, <<"x">>, __TopXMLNS}});
_res -> _res
end.
encode_expire_attr_stored(undefined, _acc) -> _acc;
encode_expire_attr_stored(_val, _acc) ->
[{<<"stored">>, enc_int(_val)} | _acc].