diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2013-06-14 12:47:50 +0400 |
---|---|---|
committer | Alexey Shchepin <alexey@process-one.net> | 2013-06-17 17:03:35 +0400 |
commit | 5872ce5cc38cb583a2f421ecf3d98613502d1ce7 (patch) | |
tree | a865a1fdf059e772c9e1e30ef669e31742d6e615 /tools | |
parent | 8a5ec41279ef7dc1f6d52137ec8070820a05c71b (diff) |
Add mod_register checks
Diffstat (limited to 'tools')
-rw-r--r-- | tools/xmpp_codec.erl | 1064 | ||||
-rw-r--r-- | tools/xmpp_codec.hrl | 13 | ||||
-rw-r--r-- | tools/xmpp_codec.spec | 155 |
3 files changed, 1223 insertions, 9 deletions
diff --git a/tools/xmpp_codec.erl b/tools/xmpp_codec.erl index 1442bcc55..1fc1151ff 100644 --- a/tools/xmpp_codec.erl +++ b/tools/xmpp_codec.erl @@ -1,9 +1,15 @@ +%% Created automatically by XML generator (xml_gen.erl) +%% Source: xmpp_codec.spec +%% Date: Fri, 14 Jun 2013 08:43:04 GMT + -module(xmpp_codec). -export([decode/1, encode/1]). decode({xmlel, _name, _attrs, _} = _el) -> case {_name, xml:get_attr_s(<<"xmlns">>, _attrs)} of + {<<"x">>, <<"jabber:x:delay">>} -> + decode_legacy_delay(_el); {<<"delay">>, <<"urn:xmpp:delay">>} -> decode_delay(_el); {<<"pubsub">>, @@ -290,9 +296,49 @@ decode({xmlel, _name, _attrs, _} = _el) -> {<<"session">>, <<"urn:ietf:params:xml:ns:xmpp-session">>} -> decode_session(_el); + {<<"query">>, <<"jabber:iq:register">>} -> + decode_register(_el); + {<<"key">>, <<"jabber:iq:register">>} -> + decode_register_key(_el); + {<<"text">>, <<"jabber:iq:register">>} -> + decode_register_text(_el); + {<<"misc">>, <<"jabber:iq:register">>} -> + decode_register_misc(_el); + {<<"date">>, <<"jabber:iq:register">>} -> + decode_register_date(_el); + {<<"url">>, <<"jabber:iq:register">>} -> + decode_register_url(_el); + {<<"phone">>, <<"jabber:iq:register">>} -> + decode_register_phone(_el); + {<<"zip">>, <<"jabber:iq:register">>} -> + decode_register_zip(_el); + {<<"state">>, <<"jabber:iq:register">>} -> + decode_register_state(_el); + {<<"city">>, <<"jabber:iq:register">>} -> + decode_register_city(_el); + {<<"address">>, <<"jabber:iq:register">>} -> + decode_register_address(_el); + {<<"email">>, <<"jabber:iq:register">>} -> + decode_register_email(_el); + {<<"last">>, <<"jabber:iq:register">>} -> + decode_register_last(_el); + {<<"first">>, <<"jabber:iq:register">>} -> + decode_register_first(_el); + {<<"name">>, <<"jabber:iq:register">>} -> + decode_register_name(_el); + {<<"password">>, <<"jabber:iq:register">>} -> + decode_register_password(_el); + {<<"nick">>, <<"jabber:iq:register">>} -> + decode_register_nick(_el); + {<<"username">>, <<"jabber:iq:register">>} -> + decode_register_username(_el); + {<<"instructions">>, <<"jabber:iq:register">>} -> + decode_register_instructions(_el); + {<<"registered">>, <<"jabber:iq:register">>} -> + decode_register_registered(_el); {<<"register">>, <<"http://jabber.org/features/iq-register">>} -> - decode_register_feature(_el); + decode_feature_register(_el); {<<"c">>, <<"http://jabber.org/protocol/caps">>} -> decode_caps(_el); {<<"ack">>, <<"p1:ack">>} -> decode_p1_ack(_el); @@ -543,6 +589,9 @@ decode({xmlel, _name, _attrs, _} = _el) -> erlang:error({unknown_tag, _name, _xmlns}) end. +encode({legacy_delay, _, _} = X) -> + encode_legacy_delay(X, + [{<<"xmlns">>, <<"jabber:x:delay">>}]); encode({delay, _, _} = Delay) -> encode_delay(Delay, [{<<"xmlns">>, <<"urn:xmpp:delay">>}]); @@ -643,8 +692,13 @@ encode({session} = Session) -> encode_session(Session, [{<<"xmlns">>, <<"urn:ietf:params:xml:ns:xmpp-session">>}]); -encode({register_feature} = Register) -> - encode_register_feature(Register, +encode({register, _, _, _, _, _, _, _, _, _, _, _, _, _, + _, _, _, _, _, _} = + Query) -> + encode_register(Query, + [{<<"xmlns">>, <<"jabber:iq:register">>}]); +encode({feature_register} = Register) -> + encode_feature_register(Register, [{<<"xmlns">>, <<"http://jabber.org/features/iq-register">>}]); encode({caps, _, _, _} = C) -> @@ -4683,16 +4737,967 @@ encode_caps_attr_ver(undefined, _acc) -> _acc; encode_caps_attr_ver(_val, _acc) -> [{<<"ver">>, base64:encode(_val)} | _acc]. -decode_register_feature({xmlel, <<"register">>, _attrs, +decode_feature_register({xmlel, <<"register">>, _attrs, _els}) -> - {register_feature}. + {feature_register}. -encode_register_feature({register_feature}, +encode_feature_register({feature_register}, _xmlns_attrs) -> _els = [], _attrs = _xmlns_attrs, {xmlel, <<"register">>, _attrs, _els}. +decode_register_registered({xmlel, <<"registered">>, + _attrs, _els}) -> + true. + +encode_register_registered(true, _xmlns_attrs) -> + _els = [], + _attrs = _xmlns_attrs, + {xmlel, <<"registered">>, _attrs, _els}. + +decode_register_instructions({xmlel, <<"instructions">>, + _attrs, _els}) -> + Cdata = decode_register_instructions_els(_els, <<>>), + Cdata. + +decode_register_instructions_els([], Cdata) -> + decode_register_instructions_cdata(Cdata); +decode_register_instructions_els([{xmlcdata, _data} + | _els], + Cdata) -> + decode_register_instructions_els(_els, + <<Cdata/binary, _data/binary>>); +decode_register_instructions_els([_ | _els], Cdata) -> + decode_register_instructions_els(_els, Cdata). + +encode_register_instructions(Cdata, _xmlns_attrs) -> + _els = encode_register_instructions_cdata(Cdata, []), + _attrs = _xmlns_attrs, + {xmlel, <<"instructions">>, _attrs, _els}. + +decode_register_instructions_cdata(<<>>) -> undefined; +decode_register_instructions_cdata(_val) -> _val. + +encode_register_instructions_cdata(undefined, _acc) -> + _acc; +encode_register_instructions_cdata(_val, _acc) -> + [{xmlcdata, _val} | _acc]. + +decode_register_username({xmlel, <<"username">>, _attrs, + _els}) -> + Cdata = decode_register_username_els(_els, <<>>), Cdata. + +decode_register_username_els([], Cdata) -> + decode_register_username_cdata(Cdata); +decode_register_username_els([{xmlcdata, _data} | _els], + Cdata) -> + decode_register_username_els(_els, + <<Cdata/binary, _data/binary>>); +decode_register_username_els([_ | _els], Cdata) -> + decode_register_username_els(_els, Cdata). + +encode_register_username(Cdata, _xmlns_attrs) -> + _els = encode_register_username_cdata(Cdata, []), + _attrs = _xmlns_attrs, + {xmlel, <<"username">>, _attrs, _els}. + +decode_register_username_cdata(<<>>) -> none; +decode_register_username_cdata(_val) -> _val. + +encode_register_username_cdata(none, _acc) -> _acc; +encode_register_username_cdata(_val, _acc) -> + [{xmlcdata, _val} | _acc]. + +decode_register_nick({xmlel, <<"nick">>, _attrs, + _els}) -> + Cdata = decode_register_nick_els(_els, <<>>), Cdata. + +decode_register_nick_els([], Cdata) -> + decode_register_nick_cdata(Cdata); +decode_register_nick_els([{xmlcdata, _data} | _els], + Cdata) -> + decode_register_nick_els(_els, + <<Cdata/binary, _data/binary>>); +decode_register_nick_els([_ | _els], Cdata) -> + decode_register_nick_els(_els, Cdata). + +encode_register_nick(Cdata, _xmlns_attrs) -> + _els = encode_register_nick_cdata(Cdata, []), + _attrs = _xmlns_attrs, + {xmlel, <<"nick">>, _attrs, _els}. + +decode_register_nick_cdata(<<>>) -> none; +decode_register_nick_cdata(_val) -> _val. + +encode_register_nick_cdata(none, _acc) -> _acc; +encode_register_nick_cdata(_val, _acc) -> + [{xmlcdata, _val} | _acc]. + +decode_register_password({xmlel, <<"password">>, _attrs, + _els}) -> + Cdata = decode_register_password_els(_els, <<>>), Cdata. + +decode_register_password_els([], Cdata) -> + decode_register_password_cdata(Cdata); +decode_register_password_els([{xmlcdata, _data} | _els], + Cdata) -> + decode_register_password_els(_els, + <<Cdata/binary, _data/binary>>); +decode_register_password_els([_ | _els], Cdata) -> + decode_register_password_els(_els, Cdata). + +encode_register_password(Cdata, _xmlns_attrs) -> + _els = encode_register_password_cdata(Cdata, []), + _attrs = _xmlns_attrs, + {xmlel, <<"password">>, _attrs, _els}. + +decode_register_password_cdata(<<>>) -> none; +decode_register_password_cdata(_val) -> _val. + +encode_register_password_cdata(none, _acc) -> _acc; +encode_register_password_cdata(_val, _acc) -> + [{xmlcdata, _val} | _acc]. + +decode_register_name({xmlel, <<"name">>, _attrs, + _els}) -> + Cdata = decode_register_name_els(_els, <<>>), Cdata. + +decode_register_name_els([], Cdata) -> + decode_register_name_cdata(Cdata); +decode_register_name_els([{xmlcdata, _data} | _els], + Cdata) -> + decode_register_name_els(_els, + <<Cdata/binary, _data/binary>>); +decode_register_name_els([_ | _els], Cdata) -> + decode_register_name_els(_els, Cdata). + +encode_register_name(Cdata, _xmlns_attrs) -> + _els = encode_register_name_cdata(Cdata, []), + _attrs = _xmlns_attrs, + {xmlel, <<"name">>, _attrs, _els}. + +decode_register_name_cdata(<<>>) -> none; +decode_register_name_cdata(_val) -> _val. + +encode_register_name_cdata(none, _acc) -> _acc; +encode_register_name_cdata(_val, _acc) -> + [{xmlcdata, _val} | _acc]. + +decode_register_first({xmlel, <<"first">>, _attrs, + _els}) -> + Cdata = decode_register_first_els(_els, <<>>), Cdata. + +decode_register_first_els([], Cdata) -> + decode_register_first_cdata(Cdata); +decode_register_first_els([{xmlcdata, _data} | _els], + Cdata) -> + decode_register_first_els(_els, + <<Cdata/binary, _data/binary>>); +decode_register_first_els([_ | _els], Cdata) -> + decode_register_first_els(_els, Cdata). + +encode_register_first(Cdata, _xmlns_attrs) -> + _els = encode_register_first_cdata(Cdata, []), + _attrs = _xmlns_attrs, + {xmlel, <<"first">>, _attrs, _els}. + +decode_register_first_cdata(<<>>) -> none; +decode_register_first_cdata(_val) -> _val. + +encode_register_first_cdata(none, _acc) -> _acc; +encode_register_first_cdata(_val, _acc) -> + [{xmlcdata, _val} | _acc]. + +decode_register_last({xmlel, <<"last">>, _attrs, + _els}) -> + Cdata = decode_register_last_els(_els, <<>>), Cdata. + +decode_register_last_els([], Cdata) -> + decode_register_last_cdata(Cdata); +decode_register_last_els([{xmlcdata, _data} | _els], + Cdata) -> + decode_register_last_els(_els, + <<Cdata/binary, _data/binary>>); +decode_register_last_els([_ | _els], Cdata) -> + decode_register_last_els(_els, Cdata). + +encode_register_last(Cdata, _xmlns_attrs) -> + _els = encode_register_last_cdata(Cdata, []), + _attrs = _xmlns_attrs, + {xmlel, <<"last">>, _attrs, _els}. + +decode_register_last_cdata(<<>>) -> none; +decode_register_last_cdata(_val) -> _val. + +encode_register_last_cdata(none, _acc) -> _acc; +encode_register_last_cdata(_val, _acc) -> + [{xmlcdata, _val} | _acc]. + +decode_register_email({xmlel, <<"email">>, _attrs, + _els}) -> + Cdata = decode_register_email_els(_els, <<>>), Cdata. + +decode_register_email_els([], Cdata) -> + decode_register_email_cdata(Cdata); +decode_register_email_els([{xmlcdata, _data} | _els], + Cdata) -> + decode_register_email_els(_els, + <<Cdata/binary, _data/binary>>); +decode_register_email_els([_ | _els], Cdata) -> + decode_register_email_els(_els, Cdata). + +encode_register_email(Cdata, _xmlns_attrs) -> + _els = encode_register_email_cdata(Cdata, []), + _attrs = _xmlns_attrs, + {xmlel, <<"email">>, _attrs, _els}. + +decode_register_email_cdata(<<>>) -> none; +decode_register_email_cdata(_val) -> _val. + +encode_register_email_cdata(none, _acc) -> _acc; +encode_register_email_cdata(_val, _acc) -> + [{xmlcdata, _val} | _acc]. + +decode_register_address({xmlel, <<"address">>, _attrs, + _els}) -> + Cdata = decode_register_address_els(_els, <<>>), Cdata. + +decode_register_address_els([], Cdata) -> + decode_register_address_cdata(Cdata); +decode_register_address_els([{xmlcdata, _data} | _els], + Cdata) -> + decode_register_address_els(_els, + <<Cdata/binary, _data/binary>>); +decode_register_address_els([_ | _els], Cdata) -> + decode_register_address_els(_els, Cdata). + +encode_register_address(Cdata, _xmlns_attrs) -> + _els = encode_register_address_cdata(Cdata, []), + _attrs = _xmlns_attrs, + {xmlel, <<"address">>, _attrs, _els}. + +decode_register_address_cdata(<<>>) -> none; +decode_register_address_cdata(_val) -> _val. + +encode_register_address_cdata(none, _acc) -> _acc; +encode_register_address_cdata(_val, _acc) -> + [{xmlcdata, _val} | _acc]. + +decode_register_city({xmlel, <<"city">>, _attrs, + _els}) -> + Cdata = decode_register_city_els(_els, <<>>), Cdata. + +decode_register_city_els([], Cdata) -> + decode_register_city_cdata(Cdata); +decode_register_city_els([{xmlcdata, _data} | _els], + Cdata) -> + decode_register_city_els(_els, + <<Cdata/binary, _data/binary>>); +decode_register_city_els([_ | _els], Cdata) -> + decode_register_city_els(_els, Cdata). + +encode_register_city(Cdata, _xmlns_attrs) -> + _els = encode_register_city_cdata(Cdata, []), + _attrs = _xmlns_attrs, + {xmlel, <<"city">>, _attrs, _els}. + +decode_register_city_cdata(<<>>) -> none; +decode_register_city_cdata(_val) -> _val. + +encode_register_city_cdata(none, _acc) -> _acc; +encode_register_city_cdata(_val, _acc) -> + [{xmlcdata, _val} | _acc]. + +decode_register_state({xmlel, <<"state">>, _attrs, + _els}) -> + Cdata = decode_register_state_els(_els, <<>>), Cdata. + +decode_register_state_els([], Cdata) -> + decode_register_state_cdata(Cdata); +decode_register_state_els([{xmlcdata, _data} | _els], + Cdata) -> + decode_register_state_els(_els, + <<Cdata/binary, _data/binary>>); +decode_register_state_els([_ | _els], Cdata) -> + decode_register_state_els(_els, Cdata). + +encode_register_state(Cdata, _xmlns_attrs) -> + _els = encode_register_state_cdata(Cdata, []), + _attrs = _xmlns_attrs, + {xmlel, <<"state">>, _attrs, _els}. + +decode_register_state_cdata(<<>>) -> none; +decode_register_state_cdata(_val) -> _val. + +encode_register_state_cdata(none, _acc) -> _acc; +encode_register_state_cdata(_val, _acc) -> + [{xmlcdata, _val} | _acc]. + +decode_register_zip({xmlel, <<"zip">>, _attrs, _els}) -> + Cdata = decode_register_zip_els(_els, <<>>), Cdata. + +decode_register_zip_els([], Cdata) -> + decode_register_zip_cdata(Cdata); +decode_register_zip_els([{xmlcdata, _data} | _els], + Cdata) -> + decode_register_zip_els(_els, + <<Cdata/binary, _data/binary>>); +decode_register_zip_els([_ | _els], Cdata) -> + decode_register_zip_els(_els, Cdata). + +encode_register_zip(Cdata, _xmlns_attrs) -> + _els = encode_register_zip_cdata(Cdata, []), + _attrs = _xmlns_attrs, + {xmlel, <<"zip">>, _attrs, _els}. + +decode_register_zip_cdata(<<>>) -> none; +decode_register_zip_cdata(_val) -> _val. + +encode_register_zip_cdata(none, _acc) -> _acc; +encode_register_zip_cdata(_val, _acc) -> + [{xmlcdata, _val} | _acc]. + +decode_register_phone({xmlel, <<"phone">>, _attrs, + _els}) -> + Cdata = decode_register_phone_els(_els, <<>>), Cdata. + +decode_register_phone_els([], Cdata) -> + decode_register_phone_cdata(Cdata); +decode_register_phone_els([{xmlcdata, _data} | _els], + Cdata) -> + decode_register_phone_els(_els, + <<Cdata/binary, _data/binary>>); +decode_register_phone_els([_ | _els], Cdata) -> + decode_register_phone_els(_els, Cdata). + +encode_register_phone(Cdata, _xmlns_attrs) -> + _els = encode_register_phone_cdata(Cdata, []), + _attrs = _xmlns_attrs, + {xmlel, <<"phone">>, _attrs, _els}. + +decode_register_phone_cdata(<<>>) -> none; +decode_register_phone_cdata(_val) -> _val. + +encode_register_phone_cdata(none, _acc) -> _acc; +encode_register_phone_cdata(_val, _acc) -> + [{xmlcdata, _val} | _acc]. + +decode_register_url({xmlel, <<"url">>, _attrs, _els}) -> + Cdata = decode_register_url_els(_els, <<>>), Cdata. + +decode_register_url_els([], Cdata) -> + decode_register_url_cdata(Cdata); +decode_register_url_els([{xmlcdata, _data} | _els], + Cdata) -> + decode_register_url_els(_els, + <<Cdata/binary, _data/binary>>); +decode_register_url_els([_ | _els], Cdata) -> + decode_register_url_els(_els, Cdata). + +encode_register_url(Cdata, _xmlns_attrs) -> + _els = encode_register_url_cdata(Cdata, []), + _attrs = _xmlns_attrs, + {xmlel, <<"url">>, _attrs, _els}. + +decode_register_url_cdata(<<>>) -> none; +decode_register_url_cdata(_val) -> _val. + +encode_register_url_cdata(none, _acc) -> _acc; +encode_register_url_cdata(_val, _acc) -> + [{xmlcdata, _val} | _acc]. + +decode_register_date({xmlel, <<"date">>, _attrs, + _els}) -> + Cdata = decode_register_date_els(_els, <<>>), Cdata. + +decode_register_date_els([], Cdata) -> + decode_register_date_cdata(Cdata); +decode_register_date_els([{xmlcdata, _data} | _els], + Cdata) -> + decode_register_date_els(_els, + <<Cdata/binary, _data/binary>>); +decode_register_date_els([_ | _els], Cdata) -> + decode_register_date_els(_els, Cdata). + +encode_register_date(Cdata, _xmlns_attrs) -> + _els = encode_register_date_cdata(Cdata, []), + _attrs = _xmlns_attrs, + {xmlel, <<"date">>, _attrs, _els}. + +decode_register_date_cdata(<<>>) -> none; +decode_register_date_cdata(_val) -> _val. + +encode_register_date_cdata(none, _acc) -> _acc; +encode_register_date_cdata(_val, _acc) -> + [{xmlcdata, _val} | _acc]. + +decode_register_misc({xmlel, <<"misc">>, _attrs, + _els}) -> + Cdata = decode_register_misc_els(_els, <<>>), Cdata. + +decode_register_misc_els([], Cdata) -> + decode_register_misc_cdata(Cdata); +decode_register_misc_els([{xmlcdata, _data} | _els], + Cdata) -> + decode_register_misc_els(_els, + <<Cdata/binary, _data/binary>>); +decode_register_misc_els([_ | _els], Cdata) -> + decode_register_misc_els(_els, Cdata). + +encode_register_misc(Cdata, _xmlns_attrs) -> + _els = encode_register_misc_cdata(Cdata, []), + _attrs = _xmlns_attrs, + {xmlel, <<"misc">>, _attrs, _els}. + +decode_register_misc_cdata(<<>>) -> none; +decode_register_misc_cdata(_val) -> _val. + +encode_register_misc_cdata(none, _acc) -> _acc; +encode_register_misc_cdata(_val, _acc) -> + [{xmlcdata, _val} | _acc]. + +decode_register_text({xmlel, <<"text">>, _attrs, + _els}) -> + Cdata = decode_register_text_els(_els, <<>>), Cdata. + +decode_register_text_els([], Cdata) -> + decode_register_text_cdata(Cdata); +decode_register_text_els([{xmlcdata, _data} | _els], + Cdata) -> + decode_register_text_els(_els, + <<Cdata/binary, _data/binary>>); +decode_register_text_els([_ | _els], Cdata) -> + decode_register_text_els(_els, Cdata). + +encode_register_text(Cdata, _xmlns_attrs) -> + _els = encode_register_text_cdata(Cdata, []), + _attrs = _xmlns_attrs, + {xmlel, <<"text">>, _attrs, _els}. + +decode_register_text_cdata(<<>>) -> none; +decode_register_text_cdata(_val) -> _val. + +encode_register_text_cdata(none, _acc) -> _acc; +encode_register_text_cdata(_val, _acc) -> + [{xmlcdata, _val} | _acc]. + +decode_register_key({xmlel, <<"key">>, _attrs, _els}) -> + Cdata = decode_register_key_els(_els, <<>>), Cdata. + +decode_register_key_els([], Cdata) -> + decode_register_key_cdata(Cdata); +decode_register_key_els([{xmlcdata, _data} | _els], + Cdata) -> + decode_register_key_els(_els, + <<Cdata/binary, _data/binary>>); +decode_register_key_els([_ | _els], Cdata) -> + decode_register_key_els(_els, Cdata). + +encode_register_key(Cdata, _xmlns_attrs) -> + _els = encode_register_key_cdata(Cdata, []), + _attrs = _xmlns_attrs, + {xmlel, <<"key">>, _attrs, _els}. + +decode_register_key_cdata(<<>>) -> none; +decode_register_key_cdata(_val) -> _val. + +encode_register_key_cdata(none, _acc) -> _acc; +encode_register_key_cdata(_val, _acc) -> + [{xmlcdata, _val} | _acc]. + +decode_register({xmlel, <<"query">>, _attrs, _els}) -> + {Zip, Misc, Address, Instructions, Text, Last, First, + Password, Registered, Date, Phone, State, Name, + Username, Key, City, Nick, Url, Email} = + decode_register_els(_els, undefined, undefined, + undefined, undefined, undefined, undefined, + undefined, undefined, false, undefined, undefined, + undefined, undefined, undefined, undefined, + undefined, undefined, undefined, undefined), + {register, Registered, Instructions, Username, Nick, + Password, Name, First, Last, Email, Address, City, + State, Zip, Phone, Url, Date, Misc, Text, Key}. + +decode_register_els([], Zip, Misc, Address, + Instructions, Text, Last, First, Password, Registered, + Date, Phone, State, Name, Username, Key, City, Nick, + Url, Email) -> + {Zip, Misc, Address, Instructions, Text, Last, First, + Password, Registered, Date, Phone, State, Name, + Username, Key, City, Nick, Url, Email}; +decode_register_els([{xmlel, <<"registered">>, _attrs, + _} = + _el + | _els], + Zip, Misc, Address, Instructions, Text, Last, First, + Password, Registered, Date, Phone, State, Name, + Username, Key, City, Nick, Url, Email) -> + _xmlns = xml:get_attr_s(<<"xmlns">>, _attrs), + if _xmlns == <<>>; _xmlns == <<"jabber:iq:register">> -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + decode_register_registered(_el), Date, Phone, + State, Name, Username, Key, City, Nick, Url, + Email); + true -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, Phone, State, Name, Username, + Key, City, Nick, Url, Email) + end; +decode_register_els([{xmlel, <<"instructions">>, _attrs, + _} = + _el + | _els], + Zip, Misc, Address, Instructions, Text, Last, First, + Password, Registered, Date, Phone, State, Name, + Username, Key, City, Nick, Url, Email) -> + _xmlns = xml:get_attr_s(<<"xmlns">>, _attrs), + if _xmlns == <<>>; _xmlns == <<"jabber:iq:register">> -> + decode_register_els(_els, Zip, Misc, Address, + decode_register_instructions(_el), Text, Last, + First, Password, Registered, Date, Phone, State, + Name, Username, Key, City, Nick, Url, Email); + true -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, Phone, State, Name, Username, + Key, City, Nick, Url, Email) + end; +decode_register_els([{xmlel, <<"username">>, _attrs, + _} = + _el + | _els], + Zip, Misc, Address, Instructions, Text, Last, First, + Password, Registered, Date, Phone, State, Name, + Username, Key, City, Nick, Url, Email) -> + _xmlns = xml:get_attr_s(<<"xmlns">>, _attrs), + if _xmlns == <<>>; _xmlns == <<"jabber:iq:register">> -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, Phone, State, Name, + decode_register_username(_el), Key, City, Nick, + Url, Email); + true -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, Phone, State, Name, Username, + Key, City, Nick, Url, Email) + end; +decode_register_els([{xmlel, <<"nick">>, _attrs, _} = + _el + | _els], + Zip, Misc, Address, Instructions, Text, Last, First, + Password, Registered, Date, Phone, State, Name, + Username, Key, City, Nick, Url, Email) -> + _xmlns = xml:get_attr_s(<<"xmlns">>, _attrs), + if _xmlns == <<>>; _xmlns == <<"jabber:iq:register">> -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, Phone, State, Name, Username, + Key, City, decode_register_nick(_el), Url, + Email); + true -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, Phone, State, Name, Username, + Key, City, Nick, Url, Email) + end; +decode_register_els([{xmlel, <<"password">>, _attrs, + _} = + _el + | _els], + Zip, Misc, Address, Instructions, Text, Last, First, + Password, Registered, Date, Phone, State, Name, + Username, Key, City, Nick, Url, Email) -> + _xmlns = xml:get_attr_s(<<"xmlns">>, _attrs), + if _xmlns == <<>>; _xmlns == <<"jabber:iq:register">> -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, + decode_register_password(_el), Registered, Date, + Phone, State, Name, Username, Key, City, Nick, + Url, Email); + true -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, Phone, State, Name, Username, + Key, City, Nick, Url, Email) + end; +decode_register_els([{xmlel, <<"name">>, _attrs, _} = + _el + | _els], + Zip, Misc, Address, Instructions, Text, Last, First, + Password, Registered, Date, Phone, State, Name, + Username, Key, City, Nick, Url, Email) -> + _xmlns = xml:get_attr_s(<<"xmlns">>, _attrs), + if _xmlns == <<>>; _xmlns == <<"jabber:iq:register">> -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, Phone, State, + decode_register_name(_el), Username, Key, City, + Nick, Url, Email); + true -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, Phone, State, Name, Username, + Key, City, Nick, Url, Email) + end; +decode_register_els([{xmlel, <<"first">>, _attrs, _} = + _el + | _els], + Zip, Misc, Address, Instructions, Text, Last, First, + Password, Registered, Date, Phone, State, Name, + Username, Key, City, Nick, Url, Email) -> + _xmlns = xml:get_attr_s(<<"xmlns">>, _attrs), + if _xmlns == <<>>; _xmlns == <<"jabber:iq:register">> -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, + decode_register_first(_el), Password, Registered, + Date, Phone, State, Name, Username, Key, City, + Nick, Url, Email); + true -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, Phone, State, Name, Username, + Key, City, Nick, Url, Email) + end; +decode_register_els([{xmlel, <<"last">>, _attrs, _} = + _el + | _els], + Zip, Misc, Address, Instructions, Text, Last, First, + Password, Registered, Date, Phone, State, Name, + Username, Key, City, Nick, Url, Email) -> + _xmlns = xml:get_attr_s(<<"xmlns">>, _attrs), + if _xmlns == <<>>; _xmlns == <<"jabber:iq:register">> -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, decode_register_last(_el), + First, Password, Registered, Date, Phone, State, + Name, Username, Key, City, Nick, Url, Email); + true -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, Phone, State, Name, Username, + Key, City, Nick, Url, Email) + end; +decode_register_els([{xmlel, <<"email">>, _attrs, _} = + _el + | _els], + Zip, Misc, Address, Instructions, Text, Last, First, + Password, Registered, Date, Phone, State, Name, + Username, Key, City, Nick, Url, Email) -> + _xmlns = xml:get_attr_s(<<"xmlns">>, _attrs), + if _xmlns == <<>>; _xmlns == <<"jabber:iq:register">> -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, Phone, State, Name, Username, + Key, City, Nick, Url, + decode_register_email(_el)); + true -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, Phone, State, Name, Username, + Key, City, Nick, Url, Email) + end; +decode_register_els([{xmlel, <<"address">>, _attrs, _} = + _el + | _els], + Zip, Misc, Address, Instructions, Text, Last, First, + Password, Registered, Date, Phone, State, Name, + Username, Key, City, Nick, Url, Email) -> + _xmlns = xml:get_attr_s(<<"xmlns">>, _attrs), + if _xmlns == <<>>; _xmlns == <<"jabber:iq:register">> -> + decode_register_els(_els, Zip, Misc, + decode_register_address(_el), Instructions, Text, + Last, First, Password, Registered, Date, Phone, + State, Name, Username, Key, City, Nick, Url, + Email); + true -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, Phone, State, Name, Username, + Key, City, Nick, Url, Email) + end; +decode_register_els([{xmlel, <<"city">>, _attrs, _} = + _el + | _els], + Zip, Misc, Address, Instructions, Text, Last, First, + Password, Registered, Date, Phone, State, Name, + Username, Key, City, Nick, Url, Email) -> + _xmlns = xml:get_attr_s(<<"xmlns">>, _attrs), + if _xmlns == <<>>; _xmlns == <<"jabber:iq:register">> -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, Phone, State, Name, Username, + Key, decode_register_city(_el), Nick, Url, + Email); + true -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, Phone, State, Name, Username, + Key, City, Nick, Url, Email) + end; +decode_register_els([{xmlel, <<"state">>, _attrs, _} = + _el + | _els], + Zip, Misc, Address, Instructions, Text, Last, First, + Password, Registered, Date, Phone, State, Name, + Username, Key, City, Nick, Url, Email) -> + _xmlns = xml:get_attr_s(<<"xmlns">>, _attrs), + if _xmlns == <<>>; _xmlns == <<"jabber:iq:register">> -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, Phone, + decode_register_state(_el), Name, Username, Key, + City, Nick, Url, Email); + true -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, Phone, State, Name, Username, + Key, City, Nick, Url, Email) + end; +decode_register_els([{xmlel, <<"zip">>, _attrs, _} = _el + | _els], + Zip, Misc, Address, Instructions, Text, Last, First, + Password, Registered, Date, Phone, State, Name, + Username, Key, City, Nick, Url, Email) -> + _xmlns = xml:get_attr_s(<<"xmlns">>, _attrs), + if _xmlns == <<>>; _xmlns == <<"jabber:iq:register">> -> + decode_register_els(_els, decode_register_zip(_el), + Misc, Address, Instructions, Text, Last, First, + Password, Registered, Date, Phone, State, Name, + Username, Key, City, Nick, Url, Email); + true -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, Phone, State, Name, Username, + Key, City, Nick, Url, Email) + end; +decode_register_els([{xmlel, <<"phone">>, _attrs, _} = + _el + | _els], + Zip, Misc, Address, Instructions, Text, Last, First, + Password, Registered, Date, Phone, State, Name, + Username, Key, City, Nick, Url, Email) -> + _xmlns = xml:get_attr_s(<<"xmlns">>, _attrs), + if _xmlns == <<>>; _xmlns == <<"jabber:iq:register">> -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, decode_register_phone(_el), + State, Name, Username, Key, City, Nick, Url, + Email); + true -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, Phone, State, Name, Username, + Key, City, Nick, Url, Email) + end; +decode_register_els([{xmlel, <<"url">>, _attrs, _} = _el + | _els], + Zip, Misc, Address, Instructions, Text, Last, First, + Password, Registered, Date, Phone, State, Name, + Username, Key, City, Nick, Url, Email) -> + _xmlns = xml:get_attr_s(<<"xmlns">>, _attrs), + if _xmlns == <<>>; _xmlns == <<"jabber:iq:register">> -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, Phone, State, Name, Username, + Key, City, Nick, decode_register_url(_el), + Email); + true -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, Phone, State, Name, Username, + Key, City, Nick, Url, Email) + end; +decode_register_els([{xmlel, <<"date">>, _attrs, _} = + _el + | _els], + Zip, Misc, Address, Instructions, Text, Last, First, + Password, Registered, Date, Phone, State, Name, + Username, Key, City, Nick, Url, Email) -> + _xmlns = xml:get_attr_s(<<"xmlns">>, _attrs), + if _xmlns == <<>>; _xmlns == <<"jabber:iq:register">> -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, decode_register_date(_el), Phone, + State, Name, Username, Key, City, Nick, Url, + Email); + true -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, Phone, State, Name, Username, + Key, City, Nick, Url, Email) + end; +decode_register_els([{xmlel, <<"misc">>, _attrs, _} = + _el + | _els], + Zip, Misc, Address, Instructions, Text, Last, First, + Password, Registered, Date, Phone, State, Name, + Username, Key, City, Nick, Url, Email) -> + _xmlns = xml:get_attr_s(<<"xmlns">>, _attrs), + if _xmlns == <<>>; _xmlns == <<"jabber:iq:register">> -> + decode_register_els(_els, Zip, + decode_register_misc(_el), Address, Instructions, + Text, Last, First, Password, Registered, Date, + Phone, State, Name, Username, Key, City, Nick, + Url, Email); + true -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, Phone, State, Name, Username, + Key, City, Nick, Url, Email) + end; +decode_register_els([{xmlel, <<"text">>, _attrs, _} = + _el + | _els], + Zip, Misc, Address, Instructions, Text, Last, First, + Password, Registered, Date, Phone, State, Name, + Username, Key, City, Nick, Url, Email) -> + _xmlns = xml:get_attr_s(<<"xmlns">>, _attrs), + if _xmlns == <<>>; _xmlns == <<"jabber:iq:register">> -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, decode_register_text(_el), Last, + First, Password, Registered, Date, Phone, State, + Name, Username, Key, City, Nick, Url, Email); + true -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, Phone, State, Name, Username, + Key, City, Nick, Url, Email) + end; +decode_register_els([{xmlel, <<"key">>, _attrs, _} = _el + | _els], + Zip, Misc, Address, Instructions, Text, Last, First, + Password, Registered, Date, Phone, State, Name, + Username, Key, City, Nick, Url, Email) -> + _xmlns = xml:get_attr_s(<<"xmlns">>, _attrs), + if _xmlns == <<>>; _xmlns == <<"jabber:iq:register">> -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, Phone, State, Name, Username, + decode_register_key(_el), City, Nick, Url, + Email); + true -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, + Registered, Date, Phone, State, Name, Username, + Key, City, Nick, Url, Email) + end; +decode_register_els([_ | _els], Zip, Misc, Address, + Instructions, Text, Last, First, Password, Registered, + Date, Phone, State, Name, Username, Key, City, Nick, + Url, Email) -> + decode_register_els(_els, Zip, Misc, Address, + Instructions, Text, Last, First, Password, Registered, + Date, Phone, State, Name, Username, Key, City, Nick, + Url, Email). + +encode_register({register, Registered, Instructions, + Username, Nick, Password, Name, First, Last, Email, + Address, City, State, Zip, Phone, Url, Date, Misc, Text, + Key}, + _xmlns_attrs) -> + _els = 'encode_register_$email'(Email, + 'encode_register_$url'(Url, + 'encode_register_$nick'(Nick, + 'encode_register_$city'(City, + 'encode_register_$key'(Key, + 'encode_register_$username'(Username, + 'encode_register_$name'(Name, + 'encode_register_$state'(State, + 'encode_register_$phone'(Phone, + 'encode_register_$date'(Date, + 'encode_register_$registered'(Registered, + 'encode_register_$password'(Password, + 'encode_register_$first'(First, + 'encode_register_$last'(Last, + 'encode_register_$text'(Text, + 'encode_register_$instructions'(Instructions, + 'encode_register_$address'(Address, + 'encode_register_$misc'(Misc, + 'encode_register_$zip'(Zip, + []))))))))))))))))))), + _attrs = _xmlns_attrs, + {xmlel, <<"query">>, _attrs, _els}. + +'encode_register_$zip'(undefined, _acc) -> _acc; +'encode_register_$zip'(Zip, _acc) -> + [encode_register_zip(Zip, []) | _acc]. + +'encode_register_$misc'(undefined, _acc) -> _acc; +'encode_register_$misc'(Misc, _acc) -> + [encode_register_misc(Misc, []) | _acc]. + +'encode_register_$address'(undefined, _acc) -> _acc; +'encode_register_$address'(Address, _acc) -> + [encode_register_address(Address, []) | _acc]. + +'encode_register_$instructions'(undefined, _acc) -> + _acc; +'encode_register_$instructions'(Instructions, _acc) -> + [encode_register_instructions(Instructions, []) | _acc]. + +'encode_register_$text'(undefined, _acc) -> _acc; +'encode_register_$text'(Text, _acc) -> + [encode_register_text(Text, []) | _acc]. + +'encode_register_$last'(undefined, _acc) -> _acc; +'encode_register_$last'(Last, _acc) -> + [encode_register_last(Last, []) | _acc]. + +'encode_register_$first'(undefined, _acc) -> _acc; +'encode_register_$first'(First, _acc) -> + [encode_register_first(First, []) | _acc]. + +'encode_register_$password'(undefined, _acc) -> _acc; +'encode_register_$password'(Password, _acc) -> + [encode_register_password(Password, []) | _acc]. + +'encode_register_$registered'(false, _acc) -> _acc; +'encode_register_$registered'(Registered, _acc) -> + [encode_register_registered(Registered, []) | _acc]. + +'encode_register_$date'(undefined, _acc) -> _acc; +'encode_register_$date'(Date, _acc) -> + [encode_register_date(Date, []) | _acc]. + +'encode_register_$phone'(undefined, _acc) -> _acc; +'encode_register_$phone'(Phone, _acc) -> + [encode_register_phone(Phone, []) | _acc]. + +'encode_register_$state'(undefined, _acc) -> _acc; +'encode_register_$state'(State, _acc) -> + [encode_register_state(State, []) | _acc]. + +'encode_register_$name'(undefined, _acc) -> _acc; +'encode_register_$name'(Name, _acc) -> + [encode_register_name(Name, []) | _acc]. + +'encode_register_$username'(undefined, _acc) -> _acc; +'encode_register_$username'(Username, _acc) -> + [encode_register_username(Username, []) | _acc]. + +'encode_register_$key'(undefined, _acc) -> _acc; +'encode_register_$key'(Key, _acc) -> + [encode_register_key(Key, []) | _acc]. + +'encode_register_$city'(undefined, _acc) -> _acc; +'encode_register_$city'(City, _acc) -> + [encode_register_city(City, []) | _acc]. + +'encode_register_$nick'(undefined, _acc) -> _acc; +'encode_register_$nick'(Nick, _acc) -> + [encode_register_nick(Nick, []) | _acc]. + +'encode_register_$url'(undefined, _acc) -> _acc; +'encode_register_$url'(Url, _acc) -> + [encode_register_url(Url, []) | _acc]. + +'encode_register_$email'(undefined, _acc) -> _acc; +'encode_register_$email'(Email, _acc) -> + [encode_register_email(Email, []) | _acc]. + decode_session({xmlel, <<"session">>, _attrs, _els}) -> {session}. @@ -10454,3 +11459,50 @@ decode_delay_attr_from(_val) -> encode_delay_attr_from(undefined, _acc) -> _acc; encode_delay_attr_from(_val, _acc) -> [{<<"from">>, enc_jid(_val)} | _acc]. + +decode_legacy_delay({xmlel, <<"x">>, _attrs, _els}) -> + {Stamp, From} = decode_legacy_delay_attrs(_attrs, + undefined, undefined), + {legacy_delay, Stamp, From}. + +decode_legacy_delay_attrs([{<<"stamp">>, _val} + | _attrs], + _Stamp, From) -> + decode_legacy_delay_attrs(_attrs, _val, From); +decode_legacy_delay_attrs([{<<"from">>, _val} | _attrs], + Stamp, _From) -> + decode_legacy_delay_attrs(_attrs, Stamp, _val); +decode_legacy_delay_attrs([_ | _attrs], Stamp, From) -> + decode_legacy_delay_attrs(_attrs, Stamp, From); +decode_legacy_delay_attrs([], Stamp, From) -> + {decode_legacy_delay_attr_stamp(Stamp), + decode_legacy_delay_attr_from(From)}. + +encode_legacy_delay({legacy_delay, Stamp, From}, + _xmlns_attrs) -> + _els = [], + _attrs = encode_legacy_delay_attr_from(From, + encode_legacy_delay_attr_stamp(Stamp, + _xmlns_attrs)), + {xmlel, <<"x">>, _attrs, _els}. + +decode_legacy_delay_attr_stamp(undefined) -> + erlang:error({missing_attr, <<"stamp">>, <<"x">>, + <<"jabber:x:delay">>}); +decode_legacy_delay_attr_stamp(_val) -> _val. + +encode_legacy_delay_attr_stamp(_val, _acc) -> + [{<<"stamp">>, _val} | _acc]. + +decode_legacy_delay_attr_from(undefined) -> undefined; +decode_legacy_delay_attr_from(_val) -> + case catch dec_jid(_val) of + {'EXIT', _} -> + erlang:error({bad_attr_value, <<"from">>, <<"x">>, + <<"jabber:x:delay">>}); + _res -> _res + end. + +encode_legacy_delay_attr_from(undefined, _acc) -> _acc; +encode_legacy_delay_attr_from(_val, _acc) -> + [{<<"from">>, enc_jid(_val)} | _acc]. diff --git a/tools/xmpp_codec.hrl b/tools/xmpp_codec.hrl index 7643ce632..75060b1ee 100644 --- a/tools/xmpp_codec.hrl +++ b/tools/xmpp_codec.hrl @@ -1,3 +1,7 @@ +%% Created automatically by XML generator (xml_gen.erl) +%% Source: xmpp_codec.spec +%% Date: Fri, 14 Jun 2013 08:43:04 GMT + -record(last, {seconds, text}). -record(version, @@ -92,7 +96,12 @@ -record(caps, {hash, node, ver}). --record(register_feature, {}). +-record(feature_register, {}). + +-record(register, + {registered = false, instructions, username, nick, + password, name, first, last, email, address, city, + state, zip, phone, url, date, misc, text, key}). -record(session, {}). @@ -176,3 +185,5 @@ {subscriptions, affiliations, publish, subscribe}). -record(delay, {stamp, from}). + +-record(legacy_delay, {stamp, from}). diff --git a/tools/xmpp_codec.spec b/tools/xmpp_codec.spec index efbe7b0b5..1e55912cb 100644 --- a/tools/xmpp_codec.spec +++ b/tools/xmpp_codec.spec @@ -778,10 +778,151 @@ enc = {base64, encode, []}, dec = {base64, decode, []}}]}}. -{register_feature, +{feature_register, #elem{name = <<"register">>, xmlns = <<"http://jabber.org/features/iq-register">>, - result = {register_feature}}}. + result = {feature_register}}}. + +{register_registered, + #elem{name = <<"registered">>, + xmlns = <<"jabber:iq:register">>, + result = true}}. +{register_instructions, + #elem{name = <<"instructions">>, + xmlns = <<"jabber:iq:register">>, + result = '$cdata'}}. +{register_username, + #elem{name = <<"username">>, + xmlns = <<"jabber:iq:register">>, + cdata = #cdata{default = none}, + result = '$cdata'}}. +{register_nick, + #elem{name = <<"nick">>, + xmlns = <<"jabber:iq:register">>, + cdata = #cdata{default = none}, + result = '$cdata'}}. +{register_password, + #elem{name = <<"password">>, + xmlns = <<"jabber:iq:register">>, + cdata = #cdata{default = none}, + result = '$cdata'}}. +{register_name, + #elem{name = <<"name">>, + xmlns = <<"jabber:iq:register">>, + cdata = #cdata{default = none}, + result = '$cdata'}}. +{register_first, + #elem{name = <<"first">>, + xmlns = <<"jabber:iq:register">>, + cdata = #cdata{default = none}, + result = '$cdata'}}. +{register_last, + #elem{name = <<"last">>, + xmlns = <<"jabber:iq:register">>, + cdata = #cdata{default = none}, + result = '$cdata'}}. +{register_email, + #elem{name = <<"email">>, + xmlns = <<"jabber:iq:register">>, + cdata = #cdata{default = none}, + result = '$cdata'}}. +{register_address, + #elem{name = <<"address">>, + xmlns = <<"jabber:iq:register">>, + cdata = #cdata{default = none}, + result = '$cdata'}}. +{register_city, + #elem{name = <<"city">>, + xmlns = <<"jabber:iq:register">>, + cdata = #cdata{default = none}, + result = '$cdata'}}. +{register_state, + #elem{name = <<"state">>, + xmlns = <<"jabber:iq:register">>, + cdata = #cdata{default = none}, + result = '$cdata'}}. +{register_zip, + #elem{name = <<"zip">>, + xmlns = <<"jabber:iq:register">>, + cdata = #cdata{default = none}, + result = '$cdata'}}. +{register_phone, + #elem{name = <<"phone">>, + xmlns = <<"jabber:iq:register">>, + cdata = #cdata{default = none}, + result = '$cdata'}}. +{register_url, + #elem{name = <<"url">>, + xmlns = <<"jabber:iq:register">>, + cdata = #cdata{default = none}, + result = '$cdata'}}. +{register_date, + #elem{name = <<"date">>, + xmlns = <<"jabber:iq:register">>, + cdata = #cdata{default = none}, + result = '$cdata'}}. +{register_misc, + #elem{name = <<"misc">>, + xmlns = <<"jabber:iq:register">>, + cdata = #cdata{default = none}, + result = '$cdata'}}. +{register_text, + #elem{name = <<"text">>, + xmlns = <<"jabber:iq:register">>, + cdata = #cdata{default = none}, + result = '$cdata'}}. +{register_key, + #elem{name = <<"key">>, + xmlns = <<"jabber:iq:register">>, + cdata = #cdata{default = none}, + result = '$cdata'}}. + +{register, + #elem{name = <<"query">>, + xmlns = <<"jabber:iq:register">>, + result = {register, '$registered', '$instructions', + '$username', '$nick', '$password', '$name', + '$first', '$last', '$email', '$address', + '$city', '$state', '$zip', '$phone', '$url', + '$date', '$misc', '$text', '$key'}, + refs = [#ref{name = register_registered, min = 0, max = 1, + default = false, label = '$registered'}, + #ref{name = register_instructions, min = 0, max = 1, + label = '$instructions'}, + #ref{name = register_username, min = 0, max = 1, + label = '$username'}, + #ref{name = register_nick, min = 0, max = 1, + label = '$nick'}, + #ref{name = register_password, min = 0, max = 1, + label = '$password'}, + #ref{name = register_name, min = 0, max = 1, + label = '$name'}, + #ref{name = register_first, min = 0, max = 1, + label = '$first'}, + #ref{name = register_last, min = 0, max = 1, + label = '$last'}, + #ref{name = register_email, min = 0, max = 1, + label = '$email'}, + #ref{name = register_address, min = 0, max = 1, + label = '$address'}, + #ref{name = register_city, min = 0, max = 1, + label = '$city'}, + #ref{name = register_state, min = 0, max = 1, + label = '$state'}, + #ref{name = register_zip, min = 0, max = 1, + label = '$zip'}, + #ref{name = register_phone, min = 0, max = 1, + label = '$phone'}, + #ref{name = register_url, min = 0, max = 1, + label = '$url'}, + #ref{name = register_date, min = 0, max = 1, + label = '$date'}, + #ref{name = register_misc, min = 0, max = 1, + label = '$misc'}, + #ref{name = register_text, min = 0, max = 1, + label = '$text'}, + #ref{name = register_key, min = 0, max = 1, + label = '$key'}]}}. {session, #elem{name = <<"session">>, @@ -1506,6 +1647,16 @@ dec = {dec_jid, []}, enc = {enc_jid, []}}]}}. +{legacy_delay, + #elem{name = <<"x">>, + xmlns = <<"jabber:x:delay">>, + result = {legacy_delay, '$stamp', '$from'}, + attrs = [#attr{name = <<"stamp">>, + required = true}, + #attr{name = <<"from">>, + dec = {dec_jid, []}, + enc = {enc_jid, []}}]}}. + dec_tzo(Val) -> [H1, M1] = str:tokens(Val, <<":">>), H = erlang:binary_to_integer(H1), |