Current section

Files

Jump to
cttest src xep0430.erl
Raw

src/xep0430.erl

%% Created automatically by XML generator (fxml_gen.erl)
%% Source: xmpp_codec.spec
-module(xep0430).
-compile(export_all).
do_decode(<<"fin">>, <<"urn:xmpp:inbox:1">>, El,
Opts) ->
decode_inbox_fin(<<"urn:xmpp:inbox:1">>, Opts, El);
do_decode(<<"entry">>, <<"urn:xmpp:inbox:1">>, El,
Opts) ->
decode_inbox_entry(<<"urn:xmpp:inbox:1">>, Opts, El);
do_decode(<<"inbox">>, <<"urn:xmpp:inbox:1">>, El,
Opts) ->
decode_inbox_query(<<"urn:xmpp:inbox: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() ->
[{<<"fin">>, <<"urn:xmpp:inbox:1">>},
{<<"entry">>, <<"urn:xmpp:inbox:1">>},
{<<"inbox">>, <<"urn:xmpp:inbox:1">>}].
do_encode({inbox_query, _} = Inbox, TopXMLNS) ->
encode_inbox_query(Inbox, TopXMLNS);
do_encode({inbox_entry, _, _, _} = Entry, TopXMLNS) ->
encode_inbox_entry(Entry, TopXMLNS);
do_encode({inbox_fin, _, _, _, _} = Fin, TopXMLNS) ->
encode_inbox_fin(Fin, TopXMLNS).
do_get_name({inbox_entry, _, _, _}) -> <<"entry">>;
do_get_name({inbox_fin, _, _, _, _}) -> <<"fin">>;
do_get_name({inbox_query, _}) -> <<"inbox">>.
do_get_ns({inbox_entry, _, _, _}) ->
<<"urn:xmpp:inbox:1">>;
do_get_ns({inbox_fin, _, _, _, _}) ->
<<"urn:xmpp:inbox:1">>;
do_get_ns({inbox_query, _}) -> <<"urn:xmpp:inbox:1">>.
pp(inbox_query, 1) -> [rsm];
pp(inbox_entry, 3) -> [unread, jid, id];
pp(inbox_fin, 4) -> [total, unread, all_unread, rsm];
pp(_, _) -> no.
records() ->
[{inbox_query, 1}, {inbox_entry, 3}, {inbox_fin, 4}].
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_inbox_fin(__TopXMLNS, __Opts,
{xmlel, <<"fin">>, _attrs, _els}) ->
Rsm = decode_inbox_fin_els(__TopXMLNS,
__Opts,
_els,
undefined),
{Total, Unread, All_unread} =
decode_inbox_fin_attrs(__TopXMLNS,
_attrs,
undefined,
undefined,
undefined),
{inbox_fin, Total, Unread, All_unread, Rsm}.
decode_inbox_fin_els(__TopXMLNS, __Opts, [], Rsm) ->
Rsm;
decode_inbox_fin_els(__TopXMLNS, __Opts,
[{xmlel, <<"set">>, _attrs, _} = _el | _els], Rsm) ->
case xmpp_codec:get_attr(<<"xmlns">>,
_attrs,
__TopXMLNS)
of
<<"http://jabber.org/protocol/rsm">> ->
decode_inbox_fin_els(__TopXMLNS,
__Opts,
_els,
xep0059:decode_rsm_set(<<"http://jabber.org/protocol/rsm">>,
__Opts,
_el));
_ -> decode_inbox_fin_els(__TopXMLNS, __Opts, _els, Rsm)
end;
decode_inbox_fin_els(__TopXMLNS, __Opts, [_ | _els],
Rsm) ->
decode_inbox_fin_els(__TopXMLNS, __Opts, _els, Rsm).
decode_inbox_fin_attrs(__TopXMLNS,
[{<<"total">>, _val} | _attrs], _Total, Unread,
All_unread) ->
decode_inbox_fin_attrs(__TopXMLNS,
_attrs,
_val,
Unread,
All_unread);
decode_inbox_fin_attrs(__TopXMLNS,
[{<<"unread">>, _val} | _attrs], Total, _Unread,
All_unread) ->
decode_inbox_fin_attrs(__TopXMLNS,
_attrs,
Total,
_val,
All_unread);
decode_inbox_fin_attrs(__TopXMLNS,
[{<<"all-unread">>, _val} | _attrs], Total, Unread,
_All_unread) ->
decode_inbox_fin_attrs(__TopXMLNS,
_attrs,
Total,
Unread,
_val);
decode_inbox_fin_attrs(__TopXMLNS, [_ | _attrs], Total,
Unread, All_unread) ->
decode_inbox_fin_attrs(__TopXMLNS,
_attrs,
Total,
Unread,
All_unread);
decode_inbox_fin_attrs(__TopXMLNS, [], Total, Unread,
All_unread) ->
{decode_inbox_fin_attr_total(__TopXMLNS, Total),
decode_inbox_fin_attr_unread(__TopXMLNS, Unread),
'decode_inbox_fin_attr_all-unread'(__TopXMLNS,
All_unread)}.
encode_inbox_fin({inbox_fin,
Total,
Unread,
All_unread,
Rsm},
__TopXMLNS) ->
__NewTopXMLNS =
xmpp_codec:choose_top_xmlns(<<"urn:xmpp:inbox:1">>,
[],
__TopXMLNS),
_els = lists:reverse('encode_inbox_fin_$rsm'(Rsm,
__NewTopXMLNS,
[])),
_attrs = 'encode_inbox_fin_attr_all-unread'(All_unread,
encode_inbox_fin_attr_unread(Unread,
encode_inbox_fin_attr_total(Total,
xmpp_codec:enc_xmlns_attrs(__NewTopXMLNS,
__TopXMLNS)))),
{xmlel, <<"fin">>, _attrs, _els}.
'encode_inbox_fin_$rsm'(undefined, __TopXMLNS, _acc) ->
_acc;
'encode_inbox_fin_$rsm'(Rsm, __TopXMLNS, _acc) ->
[xep0059:encode_rsm_set(Rsm, __TopXMLNS) | _acc].
decode_inbox_fin_attr_total(__TopXMLNS, undefined) ->
undefined;
decode_inbox_fin_attr_total(__TopXMLNS, _val) ->
case catch dec_int(_val, 0, infinity) of
{'EXIT', _} ->
erlang:error({xmpp_codec,
{bad_attr_value,
<<"total">>,
<<"fin">>,
__TopXMLNS}});
_res -> _res
end.
encode_inbox_fin_attr_total(undefined, _acc) -> _acc;
encode_inbox_fin_attr_total(_val, _acc) ->
[{<<"total">>, enc_int(_val)} | _acc].
decode_inbox_fin_attr_unread(__TopXMLNS, undefined) ->
undefined;
decode_inbox_fin_attr_unread(__TopXMLNS, _val) ->
case catch dec_int(_val, 0, infinity) of
{'EXIT', _} ->
erlang:error({xmpp_codec,
{bad_attr_value,
<<"unread">>,
<<"fin">>,
__TopXMLNS}});
_res -> _res
end.
encode_inbox_fin_attr_unread(undefined, _acc) -> _acc;
encode_inbox_fin_attr_unread(_val, _acc) ->
[{<<"unread">>, enc_int(_val)} | _acc].
'decode_inbox_fin_attr_all-unread'(__TopXMLNS,
undefined) ->
undefined;
'decode_inbox_fin_attr_all-unread'(__TopXMLNS, _val) ->
case catch dec_int(_val, 0, infinity) of
{'EXIT', _} ->
erlang:error({xmpp_codec,
{bad_attr_value,
<<"all-unread">>,
<<"fin">>,
__TopXMLNS}});
_res -> _res
end.
'encode_inbox_fin_attr_all-unread'(undefined, _acc) ->
_acc;
'encode_inbox_fin_attr_all-unread'(_val, _acc) ->
[{<<"all-unread">>, enc_int(_val)} | _acc].
decode_inbox_entry(__TopXMLNS, __Opts,
{xmlel, <<"entry">>, _attrs, _els}) ->
{Unread, Jid, Id} = decode_inbox_entry_attrs(__TopXMLNS,
_attrs,
undefined,
undefined,
undefined),
{inbox_entry, Unread, Jid, Id}.
decode_inbox_entry_attrs(__TopXMLNS,
[{<<"unread">>, _val} | _attrs], _Unread, Jid, Id) ->
decode_inbox_entry_attrs(__TopXMLNS,
_attrs,
_val,
Jid,
Id);
decode_inbox_entry_attrs(__TopXMLNS,
[{<<"jid">>, _val} | _attrs], Unread, _Jid, Id) ->
decode_inbox_entry_attrs(__TopXMLNS,
_attrs,
Unread,
_val,
Id);
decode_inbox_entry_attrs(__TopXMLNS,
[{<<"id">>, _val} | _attrs], Unread, Jid, _Id) ->
decode_inbox_entry_attrs(__TopXMLNS,
_attrs,
Unread,
Jid,
_val);
decode_inbox_entry_attrs(__TopXMLNS, [_ | _attrs],
Unread, Jid, Id) ->
decode_inbox_entry_attrs(__TopXMLNS,
_attrs,
Unread,
Jid,
Id);
decode_inbox_entry_attrs(__TopXMLNS, [], Unread, Jid,
Id) ->
{decode_inbox_entry_attr_unread(__TopXMLNS, Unread),
decode_inbox_entry_attr_jid(__TopXMLNS, Jid),
decode_inbox_entry_attr_id(__TopXMLNS, Id)}.
encode_inbox_entry({inbox_entry, Unread, Jid, Id},
__TopXMLNS) ->
__NewTopXMLNS =
xmpp_codec:choose_top_xmlns(<<"urn:xmpp:inbox:1">>,
[],
__TopXMLNS),
_els = [],
_attrs = encode_inbox_entry_attr_id(Id,
encode_inbox_entry_attr_jid(Jid,
encode_inbox_entry_attr_unread(Unread,
xmpp_codec:enc_xmlns_attrs(__NewTopXMLNS,
__TopXMLNS)))),
{xmlel, <<"entry">>, _attrs, _els}.
decode_inbox_entry_attr_unread(__TopXMLNS, undefined) ->
undefined;
decode_inbox_entry_attr_unread(__TopXMLNS, _val) ->
case catch dec_int(_val, 0, infinity) of
{'EXIT', _} ->
erlang:error({xmpp_codec,
{bad_attr_value,
<<"unread">>,
<<"entry">>,
__TopXMLNS}});
_res -> _res
end.
encode_inbox_entry_attr_unread(undefined, _acc) -> _acc;
encode_inbox_entry_attr_unread(_val, _acc) ->
[{<<"unread">>, enc_int(_val)} | _acc].
decode_inbox_entry_attr_jid(__TopXMLNS, undefined) ->
undefined;
decode_inbox_entry_attr_jid(__TopXMLNS, _val) ->
case catch jid:decode(_val) of
{'EXIT', _} ->
erlang:error({xmpp_codec,
{bad_attr_value,
<<"jid">>,
<<"entry">>,
__TopXMLNS}});
_res -> _res
end.
encode_inbox_entry_attr_jid(undefined, _acc) -> _acc;
encode_inbox_entry_attr_jid(_val, _acc) ->
[{<<"jid">>, jid:encode(_val)} | _acc].
decode_inbox_entry_attr_id(__TopXMLNS, undefined) ->
<<>>;
decode_inbox_entry_attr_id(__TopXMLNS, _val) -> _val.
encode_inbox_entry_attr_id(<<>>, _acc) -> _acc;
encode_inbox_entry_attr_id(_val, _acc) ->
[{<<"id">>, _val} | _acc].
decode_inbox_query(__TopXMLNS, __Opts,
{xmlel, <<"inbox">>, _attrs, _els}) ->
Rsm = decode_inbox_query_els(__TopXMLNS,
__Opts,
_els,
undefined),
{inbox_query, Rsm}.
decode_inbox_query_els(__TopXMLNS, __Opts, [], Rsm) ->
Rsm;
decode_inbox_query_els(__TopXMLNS, __Opts,
[{xmlel, <<"set">>, _attrs, _} = _el | _els], Rsm) ->
case xmpp_codec:get_attr(<<"xmlns">>,
_attrs,
__TopXMLNS)
of
<<"http://jabber.org/protocol/rsm">> ->
decode_inbox_query_els(__TopXMLNS,
__Opts,
_els,
xep0059:decode_rsm_set(<<"http://jabber.org/protocol/rsm">>,
__Opts,
_el));
_ ->
decode_inbox_query_els(__TopXMLNS, __Opts, _els, Rsm)
end;
decode_inbox_query_els(__TopXMLNS, __Opts, [_ | _els],
Rsm) ->
decode_inbox_query_els(__TopXMLNS, __Opts, _els, Rsm).
encode_inbox_query({inbox_query, Rsm}, __TopXMLNS) ->
__NewTopXMLNS =
xmpp_codec:choose_top_xmlns(<<"urn:xmpp:inbox:1">>,
[],
__TopXMLNS),
_els = lists:reverse('encode_inbox_query_$rsm'(Rsm,
__NewTopXMLNS,
[])),
_attrs = xmpp_codec:enc_xmlns_attrs(__NewTopXMLNS,
__TopXMLNS),
{xmlel, <<"inbox">>, _attrs, _els}.
'encode_inbox_query_$rsm'(undefined, __TopXMLNS,
_acc) ->
_acc;
'encode_inbox_query_$rsm'(Rsm, __TopXMLNS, _acc) ->
[xep0059:encode_rsm_set(Rsm, __TopXMLNS) | _acc].