diff --git a/Makefile.in b/Makefile.in index b7c229fcc..00fd4f62c 100644 --- a/Makefile.in +++ b/Makefile.in @@ -108,14 +108,6 @@ edoc: $(ERL) -noinput +B -eval \ 'case edoc:application(ejabberd, ".", []) of ok -> halt(0); error -> halt(1) end.' -spec: - $(ERL) -noinput +B -pa ebin -pa deps/*/ebin -eval \ - 'case fxml_gen:compile("specs/xmpp_codec.spec", [{add_type_specs, xmpp_element}, {erl_dir, "src"}, {hrl_dir, "include"}]) of ok -> halt(0); _ -> halt(1) end.' - -xdata: - $(ERL) -noinput +B -pa ebin -pa deps/*/ebin -eval \ - 'case xdata_codec:compile("specs", [{erl_dir, "src"}, {hrl_dir, "include"}]) of ok -> halt(0); _ -> halt(1) end.' - JOIN_PATHS=$(if $(wordlist 2,1000,$(1)),$(firstword $(1))/$(call JOIN_PATHS,$(wordlist 2,1000,$(1))),$(1)) VERSIONED_DEP=$(if $(DEP_$(1)_VERSION),$(DEP_$(1)_VERSION),$(1)) @@ -347,5 +339,5 @@ quicktest: $(REBAR) skip_deps=true ct suites=elixir .PHONY: src edoc dialyzer Makefile TAGS clean clean-rel distclean rel \ - install uninstall uninstall-binary uninstall-all translations deps test spec \ + install uninstall uninstall-binary uninstall-all translations deps test \ quicktest erlang_plt deps_plt ejabberd_plt diff --git a/include/flex_offline.hrl b/include/flex_offline.hrl deleted file mode 100644 index 74a38fbb3..000000000 --- a/include/flex_offline.hrl +++ /dev/null @@ -1,10 +0,0 @@ -%% Created automatically by xdata generator (xdata_codec.erl) -%% Source: flex_offline.xdata -%% Form type: http://jabber.org/protocol/offline -%% Document: XEP-0013 - - --type property() :: {'number_of_messages', non_neg_integer()}. --type result() :: [property()]. - --type form() :: [property() | xdata_field()]. diff --git a/include/jid.hrl b/include/jid.hrl deleted file mode 100644 index 965985c31..000000000 --- a/include/jid.hrl +++ /dev/null @@ -1,17 +0,0 @@ -%%%------------------------------------------------------------------- -%%% @author Evgeny Khramtsov -%%% @copyright (C) 2016, Evgeny Khramtsov -%%% @doc -%%% -%%% @end -%%% Created : 10 Jul 2016 by Evgeny Khramtsov -%%%------------------------------------------------------------------- --record(jid, {user = <<"">> :: binary(), - server = <<"">> :: binary(), - resource = <<"">> :: binary(), - luser = <<"">> :: binary(), - lserver = <<"">> :: binary(), - lresource = <<"">> :: binary()}). - --type(jid() :: #jid{}). --type(ljid() :: {binary(), binary(), binary()}). diff --git a/include/mam_query.hrl b/include/mam_query.hrl deleted file mode 100644 index 4ec48c05e..000000000 --- a/include/mam_query.hrl +++ /dev/null @@ -1,13 +0,0 @@ -%% Created automatically by xdata generator (xdata_codec.erl) -%% Source: mam_query.xdata -%% Form type: urn:xmpp:mam:1 -%% Document: XEP-0313 - - --type property() :: {'with', jid:jid()} | - {'start', erlang:timestamp()} | - {'end', erlang:timestamp()} | - {'withtext', binary()}. --type result() :: [property()]. - --type form() :: [property() | xdata_field()]. diff --git a/include/muc_register.hrl b/include/muc_register.hrl deleted file mode 100644 index 0cfc928c2..000000000 --- a/include/muc_register.hrl +++ /dev/null @@ -1,16 +0,0 @@ -%% Created automatically by xdata generator (xdata_codec.erl) -%% Source: muc_register.xdata -%% Form type: http://jabber.org/protocol/muc#register -%% Document: XEP-0045 - - --type property() :: {'allow', boolean()} | - {'email', binary()} | - {'faqentry', [binary()]} | - {'first', binary()} | - {'last', binary()} | - {'roomnick', binary()} | - {'url', binary()}. --type result() :: [property()]. - --type form() :: [property() | xdata_field()]. diff --git a/include/muc_request.hrl b/include/muc_request.hrl deleted file mode 100644 index bc14be35f..000000000 --- a/include/muc_request.hrl +++ /dev/null @@ -1,16 +0,0 @@ -%% Created automatically by xdata generator (xdata_codec.erl) -%% Source: muc_request.xdata -%% Form type: http://jabber.org/protocol/muc#request -%% Document: XEP-0045 - - --type property() :: {'role', participant} | - {'jid', jid:jid()} | - {'roomnick', binary()} | - {'request_allow', boolean()}. --type result() :: [property()]. - --type options(T) :: [{binary(), T}]. --type property_with_options() :: - {'role', participant, options(participant)}. --type form() :: [property() | property_with_options() | xdata_field()]. diff --git a/include/muc_roomconfig.hrl b/include/muc_roomconfig.hrl deleted file mode 100644 index 89cfc3346..000000000 --- a/include/muc_roomconfig.hrl +++ /dev/null @@ -1,55 +0,0 @@ -%% Created automatically by xdata generator (xdata_codec.erl) -%% Source: muc_roomconfig.xdata -%% Form type: http://jabber.org/protocol/muc#roomconfig -%% Document: XEP-0045 - --type 'allow_private_messages_from_visitors'() :: nobody | moderators | anyone. --type 'maxusers'() :: none | non_neg_integer(). --type 'presencebroadcast'() :: moderator | participant | visitor. --type 'whois'() :: moderators | anyone. - --type property() :: {'maxhistoryfetch', binary()} | - {'allowpm', binary()} | - {'allow_private_messages', boolean()} | - {'allow_private_messages_from_visitors', 'allow_private_messages_from_visitors'()} | - {'allow_visitor_status', boolean()} | - {'allow_visitor_nickchange', boolean()} | - {'allow_voice_requests', boolean()} | - {'allow_subscription', boolean()} | - {'voice_request_min_interval', non_neg_integer()} | - {'captcha_protected', boolean()} | - {'captcha_whitelist', [jid:jid()]} | - {'allow_query_users', boolean()} | - {'allowinvites', boolean()} | - {'changesubject', boolean()} | - {'enablelogging', boolean()} | - {'getmemberlist', [binary()]} | - {'lang', binary()} | - {'pubsub', binary()} | - {'maxusers', 'maxusers'()} | - {'membersonly', boolean()} | - {'moderatedroom', boolean()} | - {'members_by_default', boolean()} | - {'passwordprotectedroom', boolean()} | - {'persistentroom', boolean()} | - {'presencebroadcast', ['presencebroadcast'()]} | - {'publicroom', boolean()} | - {'public_list', boolean()} | - {'roomadmins', [jid:jid()]} | - {'roomdesc', binary()} | - {'roomname', binary()} | - {'roomowners', [jid:jid()]} | - {'roomsecret', binary()} | - {'whois', 'whois'()} | - {'mam', boolean()}. --type result() :: [property()]. - --type options(T) :: [{binary(), T}]. --type property_with_options() :: - {'allowpm', binary(), options(binary())} | - {'allow_private_messages_from_visitors', 'allow_private_messages_from_visitors'(), options('allow_private_messages_from_visitors'())} | - {'getmemberlist', [binary()], options(binary())} | - {'maxusers', 'maxusers'(), options('maxusers'())} | - {'presencebroadcast', ['presencebroadcast'()], options('presencebroadcast'())} | - {'whois', 'whois'(), options('whois'())}. --type form() :: [property() | property_with_options() | xdata_field()]. diff --git a/include/muc_roominfo.hrl b/include/muc_roominfo.hrl deleted file mode 100644 index cf4f4ebf0..000000000 --- a/include/muc_roominfo.hrl +++ /dev/null @@ -1,18 +0,0 @@ -%% Created automatically by xdata generator (xdata_codec.erl) -%% Source: muc_roominfo.xdata -%% Form type: http://jabber.org/protocol/muc#roominfo -%% Document: XEP-0045 - - --type property() :: {'maxhistoryfetch', non_neg_integer()} | - {'contactjid', [jid:jid()]} | - {'description', binary()} | - {'lang', binary()} | - {'ldapgroup', binary()} | - {'logs', binary()} | - {'occupants', non_neg_integer()} | - {'subject', binary()} | - {'subjectmod', boolean()}. --type result() :: [property()]. - --type form() :: [property() | xdata_field()]. diff --git a/include/ns.hrl b/include/ns.hrl deleted file mode 100644 index d94c2a95f..000000000 --- a/include/ns.hrl +++ /dev/null @@ -1,182 +0,0 @@ -%%%---------------------------------------------------------------------- -%%% -%%% ejabberd, Copyright (C) 2002-2016 ProcessOne -%%% -%%% This program is free software; you can redistribute it and/or -%%% modify it under the terms of the GNU General Public License as -%%% published by the Free Software Foundation; either version 2 of the -%%% License, or (at your option) any later version. -%%% -%%% This program is distributed in the hope that it will be useful, -%%% but WITHOUT ANY WARRANTY; without even the implied warranty of -%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%%% General Public License for more details. -%%% -%%% You should have received a copy of the GNU General Public License along -%%% with this program; if not, write to the Free Software Foundation, Inc., -%%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -%%% -%%%---------------------------------------------------------------------- - --define(NS_COMPONENT, <<"jabber:component:accept">>). --define(NS_SERVER, <<"jabber:server">>). --define(NS_SERVER_DIALBACK, <<"jabber:server:dialback">>). --define(NS_CLIENT, <<"jabber:client">>). --define(NS_DISCO_ITEMS, - <<"http://jabber.org/protocol/disco#items">>). --define(NS_DISCO_INFO, - <<"http://jabber.org/protocol/disco#info">>). --define(NS_VCARD, <<"vcard-temp">>). --define(NS_VCARD_UPDATE, <<"vcard-temp:x:update">>). --define(NS_AUTH, <<"jabber:iq:auth">>). --define(NS_AUTH_ERROR, <<"jabber:iq:auth:error">>). --define(NS_REGISTER, <<"jabber:iq:register">>). --define(NS_SEARCH, <<"jabber:iq:search">>). --define(NS_ROSTER, <<"jabber:iq:roster">>). --define(NS_ROSTER_VER, - <<"urn:xmpp:features:rosterver">>). --define(NS_PRIVACY, <<"jabber:iq:privacy">>). --define(NS_BLOCKING, <<"urn:xmpp:blocking">>). --define(NS_PRIVATE, <<"jabber:iq:private">>). --define(NS_VERSION, <<"jabber:iq:version">>). --define(NS_TIME, <<"urn:xmpp:time">>). --define(NS_LAST, <<"jabber:iq:last">>). --define(NS_XDATA, <<"jabber:x:data">>). --define(NS_IQDATA, <<"jabber:iq:data">>). --define(NS_DELAY, <<"urn:xmpp:delay">>). --define(NS_HINTS, <<"urn:xmpp:hints">>). --define(NS_EXPIRE, <<"jabber:x:expire">>). --define(NS_EVENT, <<"jabber:x:event">>). --define(NS_CHATSTATES, - <<"http://jabber.org/protocol/chatstates">>). --define(NS_XCONFERENCE, <<"jabber:x:conference">>). --define(NS_STATS, - <<"http://jabber.org/protocol/stats">>). --define(NS_MUC, <<"http://jabber.org/protocol/muc">>). --define(NS_MUC_USER, - <<"http://jabber.org/protocol/muc#user">>). --define(NS_MUC_ADMIN, - <<"http://jabber.org/protocol/muc#admin">>). --define(NS_MUC_OWNER, - <<"http://jabber.org/protocol/muc#owner">>). --define(NS_MUC_UNIQUE, - <<"http://jabber.org/protocol/muc#unique">>). --define(NS_PUBSUB, - <<"http://jabber.org/protocol/pubsub">>). --define(NS_PUBSUB_EVENT, - <<"http://jabber.org/protocol/pubsub#event">>). --define(NS_PUBSUB_META_DATA, - <<"http://jabber.org/protocol/pubsub#meta-data">>). --define(NS_PUBSUB_OWNER, - <<"http://jabber.org/protocol/pubsub#owner">>). --define(NS_PUBSUB_NMI, - <<"http://jabber.org/protocol/pubsub#node-meta-info">>). --define(NS_PUBSUB_ERRORS, - <<"http://jabber.org/protocol/pubsub#errors">>). --define(NS_PUBSUB_NODE_CONFIG, - <<"http://jabber.org/protocol/pubsub#node_config">>). --define(NS_PUBSUB_SUB_OPTIONS, - <<"http://jabber.org/protocol/pubsub#subscribe_options">>). --define(NS_PUBSUB_SUBSCRIBE_OPTIONS, - <<"http://jabber.org/protocol/pubsub#subscribe_options">>). --define(NS_PUBSUB_PUBLISH_OPTIONS, - <<"http://jabber.org/protocol/pubsub#publish_options">>). --define(NS_PUBSUB_SUB_AUTH, - <<"http://jabber.org/protocol/pubsub#subscribe_authorization">>). --define(NS_PUBSUB_GET_PENDING, - <<"http://jabber.org/protocol/pubsub#get-pending">>). --define(NS_COMMANDS, - <<"http://jabber.org/protocol/commands">>). --define(NS_BYTESTREAMS, - <<"http://jabber.org/protocol/bytestreams">>). --define(NS_ADMIN, - <<"http://jabber.org/protocol/admin">>). --define(NS_ADMIN_ANNOUNCE, - <<"http://jabber.org/protocol/admin#announce">>). --define(NS_ADMIN_ANNOUNCE_ALL, - <<"http://jabber.org/protocol/admin#announce-all">>). --define(NS_ADMIN_SET_MOTD, - <<"http://jabber.org/protocol/admin#set-motd">>). --define(NS_ADMIN_EDIT_MOTD, - <<"http://jabber.org/protocol/admin#edit-motd">>). --define(NS_ADMIN_DELETE_MOTD, - <<"http://jabber.org/protocol/admin#delete-motd">>). --define(NS_ADMIN_ANNOUNCE_ALLHOSTS, - <<"http://jabber.org/protocol/admin#announce-allhosts">>). --define(NS_ADMIN_ANNOUNCE_ALL_ALLHOSTS, - <<"http://jabber.org/protocol/admin#announce-all-allhosts">>). --define(NS_ADMIN_SET_MOTD_ALLHOSTS, - <<"http://jabber.org/protocol/admin#set-motd-allhosts">>). --define(NS_ADMIN_EDIT_MOTD_ALLHOSTS, - <<"http://jabber.org/protocol/admin#edit-motd-allhosts">>). --define(NS_ADMIN_DELETE_MOTD_ALLHOSTS, - <<"http://jabber.org/protocol/admin#delete-motd-allhosts">>). --define(NS_SERVERINFO, - <<"http://jabber.org/network/serverinfo">>). --define(NS_RSM, <<"http://jabber.org/protocol/rsm">>). --define(NS_EJABBERD_CONFIG, <<"ejabberd:config">>). --define(NS_STREAM, - <<"http://etherx.jabber.org/streams">>). --define(NS_STANZAS, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>). --define(NS_STREAMS, - <<"urn:ietf:params:xml:ns:xmpp-streams">>). --define(NS_TLS, <<"urn:ietf:params:xml:ns:xmpp-tls">>). --define(NS_SASL, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>). --define(NS_SESSION, - <<"urn:ietf:params:xml:ns:xmpp-session">>). --define(NS_BIND, - <<"urn:ietf:params:xml:ns:xmpp-bind">>). --define(NS_FEATURE_IQAUTH, - <<"http://jabber.org/features/iq-auth">>). --define(NS_FEATURE_IQREGISTER, - <<"http://jabber.org/features/iq-register">>). --define(NS_FEATURE_COMPRESS, - <<"http://jabber.org/features/compress">>). --define(NS_FEATURE_MSGOFFLINE, <<"msgoffline">>). --define(NS_FLEX_OFFLINE, <<"http://jabber.org/protocol/offline">>). --define(NS_COMPRESS, - <<"http://jabber.org/protocol/compress">>). --define(NS_CAPS, <<"http://jabber.org/protocol/caps">>). --define(NS_SHIM, <<"http://jabber.org/protocol/shim">>). --define(NS_ADDRESS, - <<"http://jabber.org/protocol/address">>). --define(NS_OOB, <<"jabber:x:oob">>). --define(NS_CAPTCHA, <<"urn:xmpp:captcha">>). --define(NS_MEDIA, <<"urn:xmpp:media-element">>). --define(NS_BOB, <<"urn:xmpp:bob">>). --define(NS_MAM_TMP, <<"urn:xmpp:mam:tmp">>). --define(NS_MAM_0, <<"urn:xmpp:mam:0">>). --define(NS_MAM_1, <<"urn:xmpp:mam:1">>). --define(NS_SID_0, <<"urn:xmpp:sid:0">>). --define(NS_PING, <<"urn:xmpp:ping">>). --define(NS_CARBONS_2, <<"urn:xmpp:carbons:2">>). --define(NS_CARBONS_1, <<"urn:xmpp:carbons:1">>). --define(NS_FORWARD, <<"urn:xmpp:forward:0">>). --define(NS_CLIENT_STATE, <<"urn:xmpp:csi:0">>). --define(NS_STREAM_MGMT_2, <<"urn:xmpp:sm:2">>). --define(NS_STREAM_MGMT_3, <<"urn:xmpp:sm:3">>). --define(NS_HTTP_UPLOAD, <<"urn:xmpp:http:upload">>). --define(NS_HTTP_UPLOAD_OLD, <<"eu:siacs:conversations:http:upload">>). --define(NS_THUMBS_1, <<"urn:xmpp:thumbs:1">>). --define(NS_NICK, <<"http://jabber.org/protocol/nick">>). --define(NS_SIC_0, <<"urn:xmpp:sic:0">>). --define(NS_SIC_1, <<"urn:xmpp:sic:1">>). --define(NS_MIX_0, <<"urn:xmpp:mix:0">>). --define(NS_MIX_SERVICEINFO_0, <<"urn:xmpp:mix:0#serviceinfo">>). --define(NS_MIX_NODES_MESSAGES, <<"urn:xmpp:mix:nodes:messages">>). --define(NS_MIX_NODES_PRESENCE, <<"urn:xmpp:mix:nodes:presence">>). --define(NS_MIX_NODES_PARTICIPANTS, <<"urn:xmpp:mix:nodes:participants">>). --define(NS_MIX_NODES_SUBJECT, <<"urn:xmpp:mix:nodes:subject">>). --define(NS_MIX_NODES_CONFIG, <<"urn:xmpp:mix:nodes:config">>). --define(NS_PRIVILEGE, <<"urn:xmpp:privilege:1">>). --define(NS_DELEGATION, <<"urn:xmpp:delegation:1">>). --define(NS_MUCSUB, <<"urn:xmpp:mucsub:0">>). --define(NS_MUCSUB_NODES_PRESENCE, <<"urn:xmpp:mucsub:nodes:presence">>). --define(NS_MUCSUB_NODES_MESSAGES, <<"urn:xmpp:mucsub:nodes:messages">>). --define(NS_MUCSUB_NODES_PARTICIPANTS, <<"urn:xmpp:mucsub:nodes:participants">>). --define(NS_MUCSUB_NODES_AFFILIATIONS, <<"urn:xmpp:mucsub:nodes:affiliations">>). --define(NS_MUCSUB_NODES_SUBJECT, <<"urn:xmpp:mucsub:nodes:subject">>). --define(NS_MUCSUB_NODES_CONFIG, <<"urn:xmpp:mucsub:nodes:config">>). --define(NS_MUCSUB_NODES_SYSTEM, <<"urn:xmpp:mucsub:nodes:system">>). diff --git a/include/pubsub_get_pending.hrl b/include/pubsub_get_pending.hrl deleted file mode 100644 index 4ddf9bad0..000000000 --- a/include/pubsub_get_pending.hrl +++ /dev/null @@ -1,13 +0,0 @@ -%% Created automatically by xdata generator (xdata_codec.erl) -%% Source: pubsub_get_pending.xdata -%% Form type: http://jabber.org/protocol/pubsub#subscribe_authorization -%% Document: XEP-0060 - - --type property() :: {'node', binary()}. --type result() :: [property()]. - --type options(T) :: [{binary(), T}]. --type property_with_options() :: - {'node', binary(), options(binary())}. --type form() :: [property() | property_with_options() | xdata_field()]. diff --git a/include/pubsub_node_config.hrl b/include/pubsub_node_config.hrl deleted file mode 100644 index e1519cdc0..000000000 --- a/include/pubsub_node_config.hrl +++ /dev/null @@ -1,60 +0,0 @@ -%% Created automatically by xdata generator (xdata_codec.erl) -%% Source: pubsub_node_config.xdata -%% Form type: http://jabber.org/protocol/pubsub#node_config -%% Document: XEP-0060 - --type 'access_model'() :: authorize | open | presence | roster | whitelist. --type 'children_association_policy'() :: all | owners | whitelist. --type 'itemreply'() :: owner | publisher | none. --type 'node_type'() :: leaf | collection. --type 'notification_type'() :: normal | headline. --type 'publish_model'() :: publishers | subscribers | open. --type 'send_last_published_item'() :: never | on_sub | on_sub_and_presence. - --type property() :: {'access_model', 'access_model'()} | - {'body_xslt', binary()} | - {'children_association_policy', 'children_association_policy'()} | - {'children_association_whitelist', [jid:jid()]} | - {'children', [binary()]} | - {'children_max', binary()} | - {'collection', [binary()]} | - {'contact', [jid:jid()]} | - {'dataform_xslt', binary()} | - {'deliver_notifications', boolean()} | - {'deliver_payloads', boolean()} | - {'description', binary()} | - {'item_expire', binary()} | - {'itemreply', 'itemreply'()} | - {'language', binary()} | - {'max_items', non_neg_integer()} | - {'max_payload_size', non_neg_integer()} | - {'node_type', 'node_type'()} | - {'notification_type', 'notification_type'()} | - {'notify_config', boolean()} | - {'notify_delete', boolean()} | - {'notify_retract', boolean()} | - {'notify_sub', boolean()} | - {'persist_items', boolean()} | - {'presence_based_delivery', boolean()} | - {'publish_model', 'publish_model'()} | - {'purge_offline', boolean()} | - {'roster_groups_allowed', [binary()]} | - {'send_last_published_item', 'send_last_published_item'()} | - {'tempsub', boolean()} | - {'subscribe', boolean()} | - {'title', binary()} | - {'type', binary()}. --type result() :: [property()]. - --type options(T) :: [{binary(), T}]. --type property_with_options() :: - {'access_model', 'access_model'(), options('access_model'())} | - {'children_association_policy', 'children_association_policy'(), options('children_association_policy'())} | - {'itemreply', 'itemreply'(), options('itemreply'())} | - {'language', binary(), options(binary())} | - {'node_type', 'node_type'(), options('node_type'())} | - {'notification_type', 'notification_type'(), options('notification_type'())} | - {'publish_model', 'publish_model'(), options('publish_model'())} | - {'roster_groups_allowed', [binary()], options(binary())} | - {'send_last_published_item', 'send_last_published_item'(), options('send_last_published_item'())}. --type form() :: [property() | property_with_options() | xdata_field()]. diff --git a/include/pubsub_publish_options.hrl b/include/pubsub_publish_options.hrl deleted file mode 100644 index 3b04b4826..000000000 --- a/include/pubsub_publish_options.hrl +++ /dev/null @@ -1,14 +0,0 @@ -%% Created automatically by xdata generator (xdata_codec.erl) -%% Source: pubsub_publish_options.xdata -%% Form type: http://jabber.org/protocol/pubsub#publish-options -%% Document: XEP-0060 - --type 'access_model'() :: authorize | open | presence | roster | whitelist. - --type property() :: {'access_model', 'access_model'()}. --type result() :: [property()]. - --type options(T) :: [{binary(), T}]. --type property_with_options() :: - {'access_model', 'access_model'(), options('access_model'())}. --type form() :: [property() | property_with_options() | xdata_field()]. diff --git a/include/pubsub_subscribe_authorization.hrl b/include/pubsub_subscribe_authorization.hrl deleted file mode 100644 index fb67ab47a..000000000 --- a/include/pubsub_subscribe_authorization.hrl +++ /dev/null @@ -1,13 +0,0 @@ -%% Created automatically by xdata generator (xdata_codec.erl) -%% Source: pubsub_subscribe_authorization.xdata -%% Form type: http://jabber.org/protocol/pubsub#subscribe_authorization -%% Document: XEP-0060 - - --type property() :: {'allow', boolean()} | - {'node', binary()} | - {'subscriber_jid', jid:jid()} | - {'subid', binary()}. --type result() :: [property()]. - --type form() :: [property() | xdata_field()]. diff --git a/include/pubsub_subscribe_options.hrl b/include/pubsub_subscribe_options.hrl deleted file mode 100644 index 9a05822a5..000000000 --- a/include/pubsub_subscribe_options.hrl +++ /dev/null @@ -1,25 +0,0 @@ -%% Created automatically by xdata generator (xdata_codec.erl) -%% Source: pubsub_subscribe_options.xdata -%% Form type: http://jabber.org/protocol/pubsub#subscribe_options -%% Document: XEP-0060 - --type 'show-values'() :: away | chat | dnd | online | xa. --type 'subscription_type'() :: items | nodes. --type 'subscription_depth'() :: 1 | all. - --type property() :: {'deliver', boolean()} | - {'digest', boolean()} | - {'digest_frequency', binary()} | - {'expire', binary()} | - {'include_body', boolean()} | - {'show-values', ['show-values'()]} | - {'subscription_type', 'subscription_type'()} | - {'subscription_depth', 'subscription_depth'()}. --type result() :: [property()]. - --type options(T) :: [{binary(), T}]. --type property_with_options() :: - {'show-values', ['show-values'()], options('show-values'())} | - {'subscription_type', 'subscription_type'(), options('subscription_type'())} | - {'subscription_depth', 'subscription_depth'(), options('subscription_depth'())}. --type form() :: [property() | property_with_options() | xdata_field()]. diff --git a/include/xmpp.hrl b/include/xmpp.hrl deleted file mode 100644 index f8a61590f..000000000 --- a/include/xmpp.hrl +++ /dev/null @@ -1,25 +0,0 @@ -%%%------------------------------------------------------------------- -%%% @author Evgeny Khramtsov -%%% @copyright (C) 2015, Evgeny Khramtsov -%%% @doc -%%% -%%% @end -%%% Created : 10 Dec 2015 by Evgeny Khramtsov -%%%------------------------------------------------------------------- --include("ns.hrl"). --include("jid.hrl"). --include("xmpp_codec.hrl"). --include("fxml.hrl"). - --type iq_type() :: get | set | result | error. --type message_type() :: chat | error | groupchat | headline | normal. --type presence_type() :: available | error | probe | subscribe | - subscribed | unavailable | unsubscribe | - unsubscribed. - --type stanza() :: iq() | presence() | message(). - --define(is_stanza(Pkt), - (is_record(Pkt, iq) or - is_record(Pkt, message) or - is_record(Pkt, presence))). diff --git a/include/xmpp_codec.hrl b/include/xmpp_codec.hrl deleted file mode 100644 index 03421d98d..000000000 --- a/include/xmpp_codec.hrl +++ /dev/null @@ -1,1092 +0,0 @@ -%% Created automatically by XML generator (fxml_gen.erl) -%% Source: xmpp_codec.spec - --record(vcard_xupdate, {us = {<<>>, <<>>} :: {binary(), binary()}, - hash :: binary()}). --type vcard_xupdate() :: #vcard_xupdate{}. - --record(ps_affiliation, {xmlns = <<>> :: binary(), - node = <<>> :: binary(), - type :: member | none | outcast | - owner | publisher | publish_only, - jid :: jid:jid()}). --type ps_affiliation() :: #ps_affiliation{}. - --type ps_error_type() :: 'closed-node' | 'configuration-required' | - 'invalid-jid' | 'invalid-options' | - 'invalid-payload' | 'invalid-subid' | - 'item-forbidden' | 'item-required' | 'jid-required' | - 'max-items-exceeded' | 'max-nodes-exceeded' | - 'nodeid-required' | 'not-in-roster-group' | - 'not-subscribed' | 'payload-too-big' | - 'payload-required' | 'pending-subscription' | - 'presence-subscription-required' | 'subid-required' | - 'too-many-subscriptions' | 'unsupported' | - 'unsupported-access-model'. --type ps_feature() :: 'access-authorize' | 'access-open' | - 'access-presence' | 'access-roster' | - 'access-whitelist' | 'auto-create' | - 'auto-subscribe' | 'collections' | 'config-node' | - 'create-and-configure' | 'create-nodes' | - 'delete-items' | 'delete-nodes' | - 'filtered-notifications' | 'get-pending' | - 'instant-nodes' | 'item-ids' | 'last-published' | - 'leased-subscription' | 'manage-subscriptions' | - 'member-affiliation' | 'meta-data' | - 'modify-affiliations' | 'multi-collection' | - 'multi-subscribe' | 'outcast-affiliation' | - 'persistent-items' | 'presence-notifications' | - 'presence-subscribe' | 'publish' | - 'publish-options' | 'publish-only-affiliation' | - 'publisher-affiliation' | 'purge-nodes' | - 'retract-items' | 'retrieve-affiliations' | - 'retrieve-default' | 'retrieve-items' | - 'retrieve-subscriptions' | 'subscribe' | - 'subscription-options' | 'subscription-notifications'. --record(ps_error, {type :: ps_error_type(), feature :: ps_feature()}). --type ps_error() :: #ps_error{}. - --record(chatstate, {type :: active | composing | gone | inactive | paused}). --type chatstate() :: #chatstate{}. - --record(csi, {type :: active | inactive}). --type csi() :: #csi{}. - --record(hint, {type :: 'no-copy' | 'no-store' | 'no-storage' | 'store' | - 'no-permanent-store' | 'no-permanent-storage'}). --type hint() :: #hint{}. - --record(iq, {id = <<>> :: binary(), - type :: 'error' | 'get' | 'result' | 'set', - lang = <<>> :: binary(), - from :: jid:jid(), - to :: jid:jid(), - sub_els = [] :: [xmpp_element() | fxml:xmlel()]}). --type iq() :: #iq{}. - --record(feature_register, {}). --type feature_register() :: #feature_register{}. - --record(adhoc_note, {type = info :: 'error' | 'info' | 'warn', - data = <<>> :: binary()}). --type adhoc_note() :: #adhoc_note{}. - --record(address, {type :: 'bcc' | 'cc' | 'noreply' | 'ofrom' | 'replyroom' | 'replyto' | 'to', - jid :: jid:jid(), - desc = <<>> :: binary(), - node = <<>> :: binary(), - delivered :: boolean()}). --type address() :: #address{}. - --record(sasl_success, {text = <<>> :: binary()}). --type sasl_success() :: #sasl_success{}. - --record(mam_result, {xmlns = <<>> :: binary(), - queryid = <<>> :: binary(), - id = <<>> :: binary(), - sub_els = [] :: [xmpp_element() | fxml:xmlel()]}). --type mam_result() :: #mam_result{}. - --record(rsm_first, {index :: non_neg_integer(), - data = <<>> :: binary()}). --type rsm_first() :: #rsm_first{}. - --record(text, {lang = <<>> :: binary(), - data = <<>> :: binary()}). --type text() :: #text{}. - --record(streamhost, {jid :: jid:jid(), - host = <<>> :: binary(), - port = 1080 :: non_neg_integer()}). --type streamhost() :: #streamhost{}. - --record(sm_resume, {h :: non_neg_integer(), - previd = <<>> :: binary(), - xmlns = <<>> :: binary()}). --type sm_resume() :: #sm_resume{}. - --record(carbons_enable, {}). --type carbons_enable() :: #carbons_enable{}. - --record(carbons_private, {}). --type carbons_private() :: #carbons_private{}. - --record(expire, {seconds :: non_neg_integer(), - stored :: non_neg_integer()}). --type expire() :: #expire{}. - --record(muc_unsubscribe, {}). --type muc_unsubscribe() :: #muc_unsubscribe{}. - --record(ps_unsubscribe, {node = <<>> :: binary(), - jid :: jid:jid(), - subid = <<>> :: binary()}). --type ps_unsubscribe() :: #ps_unsubscribe{}. - --record(mix_leave, {}). --type mix_leave() :: #mix_leave{}. - --record(ping, {}). --type ping() :: #ping{}. - --record(delay, {stamp :: erlang:timestamp(), - from :: jid:jid(), - desc = <<>> :: binary()}). --type delay() :: #delay{}. - --record(muc_history, {maxchars :: non_neg_integer(), - maxstanzas :: non_neg_integer(), - seconds :: non_neg_integer(), - since :: erlang:timestamp()}). --type muc_history() :: #muc_history{}. - --record(thumbnail, {uri = <<>> :: binary(), - 'media-type' = <<>> :: binary(), - width :: non_neg_integer(), - height :: non_neg_integer()}). --type thumbnail() :: #thumbnail{}. - --record(privilege_perm, {access :: 'message' | 'presence' | 'roster', - type :: 'both' | 'get' | 'managed_entity' | 'none' | 'outgoing' | 'roster' | 'set'}). --type privilege_perm() :: #privilege_perm{}. - --record(muc_decline, {reason = <<>> :: binary(), - from :: jid:jid(), - to :: jid:jid()}). --type muc_decline() :: #muc_decline{}. - --record(sm_a, {h :: non_neg_integer(), - xmlns = <<>> :: binary()}). --type sm_a() :: #sm_a{}. - --record(stream_start, {from :: jid:jid(), - to :: jid:jid(), - id = <<>> :: binary(), - version :: {non_neg_integer(),non_neg_integer()}, - xmlns = <<>> :: binary(), - stream_xmlns = <<>> :: binary(), - db_xmlns = <<>> :: binary(), - lang = <<>> :: binary()}). --type stream_start() :: #stream_start{}. - --record(muc_subscribe, {nick = <<>> :: binary(), - events = [] :: [binary()]}). --type muc_subscribe() :: #muc_subscribe{}. - --record(stanza_id, {by :: jid:jid(), - id = <<>> :: binary()}). --type stanza_id() :: #stanza_id{}. - --record(starttls_proceed, {}). --type starttls_proceed() :: #starttls_proceed{}. - --record(forwarded, {delay :: #delay{}, - xml_els = [] :: [fxml:xmlel()]}). --type forwarded() :: #forwarded{}. - --record(privilege, {perms = [] :: [#privilege_perm{}], - forwarded :: #forwarded{}}). --type privilege() :: #privilege{}. - --record(client_id, {id = <<>> :: binary()}). --type client_id() :: #client_id{}. - --record(sm_resumed, {h :: non_neg_integer(), - previd = <<>> :: binary(), - xmlns = <<>> :: binary()}). --type sm_resumed() :: #sm_resumed{}. - --record(sm_enable, {max :: non_neg_integer(), - resume = false :: boolean(), - xmlns = <<>> :: binary()}). --type sm_enable() :: #sm_enable{}. - --record(starttls_failure, {}). --type starttls_failure() :: #starttls_failure{}. - --record(sasl_challenge, {text = <<>> :: binary()}). --type sasl_challenge() :: #sasl_challenge{}. - --record(handshake, {data = <<>> :: binary()}). --type handshake() :: #handshake{}. - --record(gone, {uri = <<>> :: binary()}). --type gone() :: #gone{}. - --record(x_conference, {jid :: jid:jid(), - password = <<>> :: binary(), - reason = <<>> :: binary(), - continue :: boolean(), - thread = <<>> :: binary()}). --type x_conference() :: #x_conference{}. - --record(private, {xml_els = [] :: [fxml:xmlel()]}). --type private() :: #private{}. - --record(delegation_query, {to :: jid:jid(), - delegate = [] :: [binary()]}). --type delegation_query() :: #delegation_query{}. - --record(db_verify, {from = <<>> :: binary(), - to = <<>> :: binary(), - id = <<>> :: binary(), - type :: 'error' | 'invalid' | 'valid', - key = <<>> :: binary(), - sub_els = [] :: [xmpp_element() | fxml:xmlel()]}). --type db_verify() :: #db_verify{}. - --record(nick, {name = <<>> :: binary()}). --type nick() :: #nick{}. - --record(p1_ack, {}). --type p1_ack() :: #p1_ack{}. - --record(feature_sm, {xmlns = <<>> :: binary()}). --type feature_sm() :: #feature_sm{}. - --record(ps_item, {xmlns = <<>> :: binary(), - id = <<>> :: binary(), - xml_els = [] :: [fxml:xmlel()], - node = <<>> :: binary(), - publisher = <<>> :: binary()}). --type ps_item() :: #ps_item{}. - --record(ps_publish, {node = <<>> :: binary(), - items = [] :: [#ps_item{}]}). --type ps_publish() :: #ps_publish{}. - --record(roster_item, {jid :: jid:jid(), - name = <<>> :: binary(), - groups = [] :: [binary()], - subscription = none :: 'both' | 'from' | 'none' | 'remove' | 'to', - ask :: 'subscribe'}). --type roster_item() :: #roster_item{}. - --record(roster_query, {items = [] :: [#roster_item{}], - ver :: binary()}). --type roster_query() :: #roster_query{}. - --record(sm_r, {xmlns = <<>> :: binary()}). --type sm_r() :: #sm_r{}. - --record(muc_actor, {jid :: jid:jid(), - nick = <<>> :: binary()}). --type muc_actor() :: #muc_actor{}. - --record(stat_error, {code :: integer(), - reason = <<>> :: binary()}). --type stat_error() :: #stat_error{}. - --record(stat, {name = <<>> :: binary(), - units = <<>> :: binary(), - value = <<>> :: binary(), - error :: #stat_error{}}). --type stat() :: #stat{}. - --record(addresses, {list = [] :: [#address{}]}). --type addresses() :: #addresses{}. - --record('see-other-host', {host :: binary() | inet:ip_address() | {binary() | inet:ip_address(),non_neg_integer()}}). --type 'see-other-host'() :: #'see-other-host'{}. - --record(compress, {methods = [] :: [binary()]}). --type compress() :: #compress{}. - --record(starttls, {required = false :: boolean()}). --type starttls() :: #starttls{}. - --record(last, {seconds :: non_neg_integer(), - status = <<>> :: binary()}). --type last() :: #last{}. - --record(redirect, {uri = <<>> :: binary()}). --type redirect() :: #redirect{}. - --record(sm_enabled, {id = <<>> :: binary(), - location = <<>> :: binary(), - max :: non_neg_integer(), - resume = false :: boolean(), - xmlns = <<>> :: binary()}). --type sm_enabled() :: #sm_enabled{}. - --record(muc_unique, {name = <<>> :: binary()}). --type muc_unique() :: #muc_unique{}. - --record(sasl_response, {text = <<>> :: binary()}). --type sasl_response() :: #sasl_response{}. - --record(legacy_auth, {username :: binary(), - password :: binary(), - digest :: binary(), - resource :: binary()}). --type legacy_auth() :: #legacy_auth{}. - --record(ps_subscribe, {node = <<>> :: binary(), - jid :: jid:jid()}). --type ps_subscribe() :: #ps_subscribe{}. - --record(message, {id = <<>> :: binary(), - type = normal :: 'chat' | 'error' | 'groupchat' | 'headline' | 'normal', - lang = <<>> :: binary(), - from :: jid:jid(), - to :: jid:jid(), - subject = [] :: [#text{}], - body = [] :: [#text{}], - thread :: binary(), - sub_els = [] :: [xmpp_element() | fxml:xmlel()]}). --type message() :: #message{}. - --record(sasl_auth, {mechanism = <<>> :: binary(), - text = <<>> :: binary()}). --type sasl_auth() :: #sasl_auth{}. - --record(p1_push, {}). --type p1_push() :: #p1_push{}. - --record(feature_csi, {xmlns = <<>> :: binary()}). --type feature_csi() :: #feature_csi{}. - --record(disco_item, {jid :: jid:jid(), - name = <<>> :: binary(), - node = <<>> :: binary()}). --type disco_item() :: #disco_item{}. - --record(unblock, {items = [] :: [jid:jid()]}). --type unblock() :: #unblock{}. - --record(block, {items = [] :: [jid:jid()]}). --type block() :: #block{}. - --record(compression, {methods = [] :: [binary()]}). --type compression() :: #compression{}. - --record(muc_subscriptions, {list = [] :: [jid:jid()]}). --type muc_subscriptions() :: #muc_subscriptions{}. - --record(ps_subscription, {xmlns = <<>> :: binary(), - jid :: jid:jid(), - type :: 'none' | 'pending' | 'subscribed' | 'unconfigured', - node = <<>> :: binary(), - subid = <<>> :: binary(), - expiry :: erlang:timestamp()}). --type ps_subscription() :: #ps_subscription{}. - --record(bob_data, {cid = <<>> :: binary(), - 'max-age' :: non_neg_integer(), - type = <<>> :: binary(), - data = <<>> :: binary()}). --type bob_data() :: #bob_data{}. - --record(muc_item, {actor :: #muc_actor{}, - continue :: binary(), - reason = <<>> :: binary(), - affiliation :: 'admin' | 'member' | 'none' | 'outcast' | 'owner', - role :: 'moderator' | 'none' | 'participant' | 'visitor', - jid :: jid:jid(), - nick = <<>> :: binary()}). --type muc_item() :: #muc_item{}. - --record(muc_admin, {items = [] :: [#muc_item{}]}). --type muc_admin() :: #muc_admin{}. - --record(shim, {headers = [] :: [{binary(),binary()}]}). --type shim() :: #shim{}. - --record(mam_prefs, {xmlns = <<>> :: binary(), - default :: 'always' | 'never' | 'roster', - always :: [jid:jid()], - never :: [jid:jid()]}). --type mam_prefs() :: #mam_prefs{}. - --record(caps, {node = <<>> :: binary(), - version = <<>> :: binary(), - hash = <<>> :: binary(), - exts = [] :: [binary()]}). --type caps() :: #caps{}. - --record(muc, {history :: #muc_history{}, - password :: binary()}). --type muc() :: #muc{}. - --record(stream_features, {sub_els = [] :: [xmpp_element() | fxml:xmlel()]}). --type stream_features() :: #stream_features{}. - --record(stats, {list = [] :: [#stat{}], - node = <<>> :: binary()}). --type stats() :: #stats{}. - --record(ps_items, {xmlns = <<>> :: binary(), - node = <<>> :: binary(), - items = [] :: [#ps_item{}], - max_items :: non_neg_integer(), - subid = <<>> :: binary(), - retract :: binary()}). --type ps_items() :: #ps_items{}. - --record(presence, {id = <<>> :: binary(), - type = available :: 'available' | 'error' | 'probe' | 'subscribe' | 'subscribed' | 'unavailable' | 'unsubscribe' | 'unsubscribed', - lang = <<>> :: binary(), - from :: jid:jid(), - to :: jid:jid(), - show :: 'away' | 'chat' | 'dnd' | 'xa', - status = [] :: [#text{}], - priority :: integer(), - sub_els = [] :: [xmpp_element() | fxml:xmlel()]}). --type presence() :: #presence{}. - --record(sic, {ip :: inet:ip_address(), - port :: non_neg_integer(), - xmlns = <<>> :: binary()}). --type sic() :: #sic{}. - --record(carbons_sent, {forwarded :: #forwarded{}}). --type carbons_sent() :: #carbons_sent{}. - --record(mam_archived, {by :: jid:jid(), - id = <<>> :: binary()}). --type mam_archived() :: #mam_archived{}. - --record(p1_rebind, {}). --type p1_rebind() :: #p1_rebind{}. - --record(compress_failure, {reason :: 'processing-failed' | 'setup-failed' | 'unsupported-method'}). --type compress_failure() :: #compress_failure{}. - --record(sasl_abort, {}). --type sasl_abort() :: #sasl_abort{}. - --record(xevent, {offline = false :: boolean(), - delivered = false :: boolean(), - displayed = false :: boolean(), - composing = false :: boolean(), - id :: binary()}). --type xevent() :: #xevent{}. - --record(vcard_email, {home = false :: boolean(), - work = false :: boolean(), - internet = false :: boolean(), - pref = false :: boolean(), - x400 = false :: boolean(), - userid :: binary()}). --type vcard_email() :: #vcard_email{}. - --record(db_result, {from = <<>> :: binary(), - to = <<>> :: binary(), - type :: 'error' | 'invalid' | 'valid', - key = <<>> :: binary(), - sub_els = [] :: [xmpp_element() | fxml:xmlel()]}). --type db_result() :: #db_result{}. - --record(carbons_received, {forwarded :: #forwarded{}}). --type carbons_received() :: #carbons_received{}. - --record(ps_retract, {node = <<>> :: binary(), - notify = false :: boolean(), - items = [] :: [#ps_item{}]}). --type ps_retract() :: #ps_retract{}. - --record(upload_slot, {get :: binary(), - put :: binary(), - xmlns = <<>> :: binary()}). --type upload_slot() :: #upload_slot{}. - --record(mix_participant, {jid :: jid:jid(), - nick = <<>> :: binary()}). --type mix_participant() :: #mix_participant{}. - --record(vcard_geo, {lat :: binary(), - lon :: binary()}). --type vcard_geo() :: #vcard_geo{}. - --record(compressed, {}). --type compressed() :: #compressed{}. - --record(sasl_failure, {reason :: 'aborted' | 'account-disabled' | 'bad-protocol' | 'credentials-expired' | 'encryption-required' | 'incorrect-encoding' | 'invalid-authzid' | 'invalid-mechanism' | 'malformed-request' | 'mechanism-too-weak' | 'not-authorized' | 'temporary-auth-failure', - text = [] :: [#text{}]}). --type sasl_failure() :: #sasl_failure{}. - --record(block_list, {items = [] :: [jid:jid()]}). --type block_list() :: #block_list{}. - --record(upload_request, {filename :: binary(), - size :: non_neg_integer(), - 'content-type' = <<>> :: binary(), - xmlns = <<>> :: binary()}). --type upload_request() :: #upload_request{}. - --record(xdata_option, {label = <<>> :: binary(), - value :: binary()}). --type xdata_option() :: #xdata_option{}. - --record(xdata_field, {label = <<>> :: binary(), - type :: 'boolean' | 'fixed' | 'hidden' | 'jid-multi' | 'jid-single' | 'list-multi' | 'list-single' | 'text-multi' | 'text-private' | 'text-single', - var = <<>> :: binary(), - required = false :: boolean(), - desc = <<>> :: binary(), - values = [] :: [binary()], - options = [] :: [#xdata_option{}], - sub_els = [] :: [xmpp_element() | fxml:xmlel()]}). --type xdata_field() :: #xdata_field{}. - --record(version, {name :: binary(), - ver :: binary(), - os :: binary()}). --type version() :: #version{}. - --record(bind, {jid :: jid:jid(), - resource = <<>> :: binary()}). --type bind() :: #bind{}. - --record(rosterver_feature, {}). --type rosterver_feature() :: #rosterver_feature{}. - --record(muc_invite, {reason = <<>> :: binary(), - from :: jid:jid(), - to :: jid:jid(), - continue :: binary()}). --type muc_invite() :: #muc_invite{}. - --record(delegated, {ns = <<>> :: binary(), - attrs = [] :: [binary()]}). --type delegated() :: #delegated{}. - --record(carbons_disable, {}). --type carbons_disable() :: #carbons_disable{}. - --record(bytestreams, {hosts = [] :: [#streamhost{}], - used :: jid:jid(), - activate :: jid:jid(), - dstaddr = <<>> :: binary(), - mode = tcp :: 'tcp' | 'udp', - sid = <<>> :: binary()}). --type bytestreams() :: #bytestreams{}. - --record(adhoc_actions, {execute :: 'complete' | 'next' | 'prev', - prev = false :: boolean(), - next = false :: boolean(), - complete = false :: boolean()}). --type adhoc_actions() :: #adhoc_actions{}. - --record(vcard_org, {name :: binary(), - units = [] :: [binary()]}). --type vcard_org() :: #vcard_org{}. - --record(rsm_set, {'after' :: binary(), - before :: binary(), - count :: non_neg_integer(), - first :: #rsm_first{}, - index :: non_neg_integer(), - last :: binary(), - max :: non_neg_integer()}). --type rsm_set() :: #rsm_set{}. - --record(mam_fin, {xmlns = <<>> :: binary(), - id = <<>> :: binary(), - rsm :: #rsm_set{}, - stable :: boolean(), - complete :: boolean()}). --type mam_fin() :: #mam_fin{}. - --record(disco_items, {node = <<>> :: binary(), - items = [] :: [#disco_item{}], - rsm :: #rsm_set{}}). --type disco_items() :: #disco_items{}. - --record(vcard_tel, {home = false :: boolean(), - work = false :: boolean(), - voice = false :: boolean(), - fax = false :: boolean(), - pager = false :: boolean(), - msg = false :: boolean(), - cell = false :: boolean(), - video = false :: boolean(), - bbs = false :: boolean(), - modem = false :: boolean(), - isdn = false :: boolean(), - pcs = false :: boolean(), - pref = false :: boolean(), - number :: binary()}). --type vcard_tel() :: #vcard_tel{}. - --record(media_uri, {type = <<>> :: binary(), - uri = <<>> :: binary()}). --type media_uri() :: #media_uri{}. - --record(media, {height :: non_neg_integer(), - width :: non_neg_integer(), - uri = [] :: [#media_uri{}]}). --type media() :: #media{}. - --record(muc_destroy, {xmlns = <<>> :: binary(), - jid :: jid:jid(), - reason = <<>> :: binary(), - password :: binary()}). --type muc_destroy() :: #muc_destroy{}. - --record(muc_user, {decline :: #muc_decline{}, - destroy :: #muc_destroy{}, - invites = [] :: [#muc_invite{}], - items = [] :: [#muc_item{}], - status_codes = [] :: [pos_integer()], - password :: binary()}). --type muc_user() :: #muc_user{}. - --record(vcard_key, {type :: binary(), - cred :: binary()}). --type vcard_key() :: #vcard_key{}. - --record(vcard_name, {family :: binary(), - given :: binary(), - middle :: binary(), - prefix :: binary(), - suffix :: binary()}). --type vcard_name() :: #vcard_name{}. - --record(identity, {category = <<>> :: binary(), - type = <<>> :: binary(), - lang = <<>> :: binary(), - name = <<>> :: binary()}). --type identity() :: #identity{}. - --record(bookmark_conference, {name = <<>> :: binary(), - jid :: jid:jid(), - autojoin = false :: boolean(), - nick :: binary(), - password :: binary()}). --type bookmark_conference() :: #bookmark_conference{}. - --record(xmpp_session, {optional = false :: boolean()}). --type xmpp_session() :: #xmpp_session{}. - --record(bookmark_url, {name = <<>> :: binary(), - url = <<>> :: binary()}). --type bookmark_url() :: #bookmark_url{}. - --record(bookmark_storage, {conference = [] :: [#bookmark_conference{}], - url = [] :: [#bookmark_url{}]}). --type bookmark_storage() :: #bookmark_storage{}. - --record(oob_x, {url :: binary(), - desc = <<>> :: binary(), - sid = <<>> :: binary()}). --type oob_x() :: #oob_x{}. - --record(vcard_sound, {phonetic :: binary(), - binval :: binary(), - extval :: binary()}). --type vcard_sound() :: #vcard_sound{}. - --record(vcard_photo, {type :: binary(), - binval :: binary(), - extval :: binary()}). --type vcard_photo() :: #vcard_photo{}. - --record(vcard_label, {home = false :: boolean(), - work = false :: boolean(), - postal = false :: boolean(), - parcel = false :: boolean(), - dom = false :: boolean(), - intl = false :: boolean(), - pref = false :: boolean(), - line = [] :: [binary()]}). --type vcard_label() :: #vcard_label{}. - --record(vcard_adr, {home = false :: boolean(), - work = false :: boolean(), - postal = false :: boolean(), - parcel = false :: boolean(), - dom = false :: boolean(), - intl = false :: boolean(), - pref = false :: boolean(), - pobox :: binary(), - extadd :: binary(), - street :: binary(), - locality :: binary(), - region :: binary(), - pcode :: binary(), - ctry :: binary()}). --type vcard_adr() :: #vcard_adr{}. - --record(search_item, {jid :: jid:jid(), - first :: binary(), - last :: binary(), - nick :: binary(), - email :: binary()}). --type search_item() :: #search_item{}. - --record(xdata, {type :: 'cancel' | 'form' | 'result' | 'submit', - instructions = [] :: [binary()], - title :: binary(), - reported :: [#xdata_field{}], - items = [] :: [[#xdata_field{}]], - fields = [] :: [#xdata_field{}]}). --type xdata() :: #xdata{}. - --record(xcaptcha, {xdata :: #xdata{}}). --type xcaptcha() :: #xcaptcha{}. - --record(adhoc_command, {node = <<>> :: binary(), - action = execute :: 'cancel' | 'complete' | 'execute' | 'next' | 'prev', - sid = <<>> :: binary(), - status :: 'canceled' | 'completed' | 'executing', - lang = <<>> :: binary(), - actions :: #adhoc_actions{}, - notes = [] :: [#adhoc_note{}], - xdata :: #xdata{}}). --type adhoc_command() :: #adhoc_command{}. - --record(search, {instructions :: binary(), - first :: binary(), - last :: binary(), - nick :: binary(), - email :: binary(), - items = [] :: [#search_item{}], - xdata :: #xdata{}}). --type search() :: #search{}. - --record(mam_query, {xmlns = <<>> :: binary(), - id = <<>> :: binary(), - start :: erlang:timestamp(), - 'end' :: erlang:timestamp(), - with :: jid:jid(), - withtext :: binary(), - rsm :: #rsm_set{}, - xdata :: #xdata{}}). --type mam_query() :: #mam_query{}. - --record(pubsub_owner, {affiliations :: {binary(),[#ps_affiliation{}]}, - configure :: {binary(),'undefined' | #xdata{}}, - default :: {binary(),'undefined' | #xdata{}}, - delete :: {binary(),binary()}, - purge :: binary(), - subscriptions :: {binary(),[#ps_subscription{}]}}). --type pubsub_owner() :: #pubsub_owner{}. - --record(ps_options, {node = <<>> :: binary(), - jid :: jid:jid(), - subid = <<>> :: binary(), - xdata :: #xdata{}}). --type ps_options() :: #ps_options{}. - --record(pubsub, {subscriptions :: {binary(),[#ps_subscription{}]}, - subscription :: #ps_subscription{}, - affiliations :: {binary(),[#ps_affiliation{}]}, - publish :: #ps_publish{}, - publish_options :: #xdata{}, - subscribe :: #ps_subscribe{}, - unsubscribe :: #ps_unsubscribe{}, - options :: #ps_options{}, - items :: #ps_items{}, - retract :: #ps_retract{}, - create :: binary(), - configure :: {binary(),'undefined' | #xdata{}}, - default :: {binary(),'undefined' | #xdata{}}, - delete :: {binary(),binary()}, - purge :: binary(), - rsm :: #rsm_set{}}). --type pubsub() :: #pubsub{}. - --record(ps_event, {items :: #ps_items{}, - purge :: binary(), - subscription :: #ps_subscription{}, - delete :: {binary(),binary()}, - create :: binary(), - configuration :: {binary(),'undefined' | #xdata{}}}). --type ps_event() :: #ps_event{}. - --record(register, {registered = false :: boolean(), - remove = false :: boolean(), - instructions :: binary(), - username :: binary(), - nick :: binary(), - password :: binary(), - name :: binary(), - first :: binary(), - last :: binary(), - email :: binary(), - address :: binary(), - city :: binary(), - state :: binary(), - zip :: binary(), - phone :: binary(), - url :: binary(), - date :: binary(), - misc :: binary(), - text :: binary(), - key :: binary(), - xdata :: #xdata{}, - sub_els = [] :: [xmpp_element() | fxml:xmlel()]}). --type register() :: #register{}. - --record(disco_info, {node = <<>> :: binary(), - identities = [] :: [#identity{}], - features = [] :: [binary()], - xdata = [] :: [#xdata{}]}). --type disco_info() :: #disco_info{}. - --record(offline_item, {node = <<>> :: binary(), - action :: 'remove' | 'view'}). --type offline_item() :: #offline_item{}. - --record(offline, {items = [] :: [#offline_item{}], - purge = false :: boolean(), - fetch = false :: boolean()}). --type offline() :: #offline{}. - --record(muc_owner, {destroy :: #muc_destroy{}, - config :: #xdata{}, - items = [] :: [#muc_item{}]}). --type muc_owner() :: #muc_owner{}. - --record(sasl_mechanisms, {list = [] :: [binary()]}). --type sasl_mechanisms() :: #sasl_mechanisms{}. - --record(sm_failed, {reason :: atom() | #gone{} | #redirect{}, - h :: non_neg_integer(), - xmlns = <<>> :: binary()}). --type sm_failed() :: #sm_failed{}. - --record(stanza_error, {type :: 'auth' | 'cancel' | 'continue' | 'modify' | 'wait', - code :: non_neg_integer(), - by = <<>> :: binary(), - reason :: atom() | #gone{} | #redirect{}, - text :: #text{}, - sub_els = [] :: [xmpp_element() | fxml:xmlel()]}). --type stanza_error() :: #stanza_error{}. - --record(delegation, {delegated = [] :: [#delegated{}], - forwarded :: #forwarded{}}). --type delegation() :: #delegation{}. - --record(mix_join, {jid :: jid:jid(), - subscribe = [] :: [binary()]}). --type mix_join() :: #mix_join{}. - --record(privacy_item, {order :: non_neg_integer(), - action :: 'allow' | 'deny', - type :: 'group' | 'jid' | 'subscription', - value = <<>> :: binary(), - message = false :: boolean(), - iq = false :: boolean(), - presence_in = false :: boolean(), - presence_out = false :: boolean()}). --type privacy_item() :: #privacy_item{}. - --record(privacy_list, {name = <<>> :: binary(), - items = [] :: [#privacy_item{}]}). --type privacy_list() :: #privacy_list{}. - --record(privacy_query, {lists = [] :: [#privacy_list{}], - default :: 'none' | binary(), - active :: 'none' | binary()}). --type privacy_query() :: #privacy_query{}. - --record(stream_error, {reason :: atom() | #'see-other-host'{}, - text :: #text{}}). --type stream_error() :: #stream_error{}. - --record(vcard_logo, {type :: binary(), - binval :: binary(), - extval :: binary()}). --type vcard_logo() :: #vcard_logo{}. - --record(vcard_temp, {version :: binary(), - fn :: binary(), - n :: #vcard_name{}, - nickname :: binary(), - photo :: #vcard_photo{}, - bday :: binary(), - adr = [] :: [#vcard_adr{}], - label = [] :: [#vcard_label{}], - tel = [] :: [#vcard_tel{}], - email = [] :: [#vcard_email{}], - jabberid :: binary(), - mailer :: binary(), - tz :: binary(), - geo :: #vcard_geo{}, - title :: binary(), - role :: binary(), - logo :: #vcard_logo{}, - org :: #vcard_org{}, - categories = [] :: [binary()], - note :: binary(), - prodid :: binary(), - rev :: binary(), - sort_string :: binary(), - sound :: #vcard_sound{}, - uid :: binary(), - url :: binary(), - class :: 'confidential' | 'private' | 'public', - key :: #vcard_key{}, - desc :: binary()}). --type vcard_temp() :: #vcard_temp{}. - --record(time, {tzo :: {integer(),integer()}, - utc :: erlang:timestamp()}). --type time() :: #time{}. - --type xmpp_element() :: compression() | - ps_subscription() | - xdata_option() | - version() | - sm_a() | - bob_data() | - media() | - stanza_id() | - starttls_proceed() | - forwarded() | - client_id() | - sm_resumed() | - xevent() | - privacy_list() | - carbons_sent() | - mam_archived() | - p1_rebind() | - sasl_abort() | - db_result() | - carbons_received() | - upload_slot() | - mix_participant() | - compressed() | - block_list() | - delegated() | - rsm_set() | - 'see-other-host'() | - hint() | - stream_start() | - text() | - vcard_org() | - shim() | - search_item() | - offline_item() | - feature_sm() | - roster_item() | - muc_item() | - vcard_temp() | - address() | - sasl_success() | - addresses() | - muc_subscriptions() | - disco_items() | - compress() | - bytestreams() | - adhoc_actions() | - privacy_query() | - muc_history() | - identity() | - feature_csi() | - delay() | - thumbnail() | - vcard_tel() | - vcard_geo() | - vcard_photo() | - pubsub_owner() | - pubsub() | - muc_owner() | - muc_actor() | - ps_error() | - starttls_failure() | - sasl_challenge() | - x_conference() | - private() | - sasl_failure() | - vcard_name() | - adhoc_note() | - rosterver_feature() | - muc_invite() | - vcard_xupdate() | - carbons_disable() | - bookmark_conference() | - offline() | - time() | - ps_subscribe() | - sm_enable() | - handshake() | - compress_failure() | - bookmark_storage() | - muc_decline() | - legacy_auth() | - search() | - ps_publish() | - nick() | - p1_ack() | - block() | - delegation() | - mix_join() | - xmpp_session() | - xdata() | - iq() | - xcaptcha() | - streamhost() | - bind() | - ps_retract() | - last() | - redirect() | - sm_enabled() | - vcard_sound() | - ps_event() | - mam_result() | - rsm_first() | - stat() | - upload_request() | - xdata_field() | - adhoc_command() | - sm_failed() | - ping() | - privilege_perm() | - privacy_item() | - disco_item() | - ps_item() | - mam_prefs() | - sasl_mechanisms() | - caps() | - muc() | - stream_features() | - stats() | - ps_items() | - sic() | - ps_options() | - starttls() | - db_verify() | - roster_query() | - media_uri() | - muc_destroy() | - vcard_key() | - csi() | - delegation_query() | - mam_query() | - bookmark_url() | - vcard_email() | - vcard_label() | - vcard_logo() | - disco_info() | - feature_register() | - register() | - sm_r() | - stat_error() | - stanza_error() | - stream_error() | - muc_user() | - vcard_adr() | - gone() | - carbons_private() | - mix_leave() | - muc_subscribe() | - privilege() | - muc_unique() | - sasl_response() | - message() | - presence() | - sm_resume() | - carbons_enable() | - expire() | - muc_unsubscribe() | - ps_unsubscribe() | - chatstate() | - sasl_auth() | - p1_push() | - oob_x() | - unblock() | - muc_admin() | - ps_affiliation() | - mam_fin(). diff --git a/rebar.config b/rebar.config index f9af6a568..0fa157e7a 100644 --- a/rebar.config +++ b/rebar.config @@ -13,6 +13,7 @@ {fast_tls, ".*", {git, "https://github.com/processone/fast_tls", {tag, "1.0.7"}}}, {stringprep, ".*", {git, "https://github.com/processone/stringprep", {tag, "1.0.6"}}}, {fast_xml, ".*", {git, "https://github.com/processone/fast_xml", {tag, "1.1.16"}}}, + {xmpp, ".*", {git, "https://github.com/processone/xmpp", {tag, "1.0.2"}}}, {stun, ".*", {git, "https://github.com/processone/stun", {tag, "1.0.7"}}}, {esip, ".*", {git, "https://github.com/processone/esip", {tag, "1.0.8"}}}, {fast_yaml, ".*", {git, "https://github.com/processone/fast_yaml", {tag, "1.0.6"}}}, @@ -55,6 +56,7 @@ luerl, stun, fast_yaml, + xmpp, p1_utils, p1_mysql, p1_pgsql, @@ -65,7 +67,9 @@ {erl_first_files, ["src/ejabberd_config.erl", "src/gen_mod.erl"]}. {erl_opts, [nowarn_deprecated_function, - {i, "include"}, {i, "deps/fast_xml/include"}, + {i, "include"}, + {i, "deps/fast_xml/include"}, + {i, "deps/xmpp/include"}, {if_var_false, debug, no_debug_info}, {if_var_true, debug, debug_info}, {if_var_true, roster_gateway_workaround, {d, 'ROSTER_GATWAY_WORKAROUND'}}, @@ -113,8 +117,10 @@ {if_var_false, elixir, "(\"Elixir.*\":_/_)"}, {if_var_false, redis, "(\"eredis\":_/_)"}]}. -{eunit_compile_opts, [{i, "tools"}, {i, "include"}, - {i, "deps/fast_xml/include"}]}. +{eunit_compile_opts, [{i, "tools"}, + {i, "include"}, + {i, "deps/fast_xml/include"}, + {i, "deps/xmpp/include"}]}. {if_version_above, "17", {cover_enabled, true}}. {cover_export_enabled, true}. diff --git a/specs/flex_offline.cfg b/specs/flex_offline.cfg deleted file mode 100644 index 5d5b2685e..000000000 --- a/specs/flex_offline.cfg +++ /dev/null @@ -1 +0,0 @@ -[{decode, [{<<"number_of_messages">>, {dec_int, [0, infinity]}}]}]. diff --git a/specs/flex_offline.xdata b/specs/flex_offline.xdata deleted file mode 100644 index d0c786289..000000000 --- a/specs/flex_offline.xdata +++ /dev/null @@ -1,12 +0,0 @@ - - http://jabber.org/protocol/offline - XEP-0013 - - Service Discovery extension for number of messages - in an offline message queue. - - - diff --git a/specs/mam_query.cfg b/specs/mam_query.cfg deleted file mode 100644 index a8921a52b..000000000 --- a/specs/mam_query.cfg +++ /dev/null @@ -1,9 +0,0 @@ -[{decode, [{<<"start">>, {xmpp_util, decode_timestamp, []}}, - {<<"end">>, {xmpp_util, decode_timestamp, []}}]}, - {specs, [{<<"start">>, "erlang:timestamp()"}, - {<<"end">>, "erlang:timestamp()"}]}]. - -%% Local Variables: -%% mode: erlang -%% End: -%% vim: set filetype=erlang tabstop=8: diff --git a/specs/mam_query.xdata b/specs/mam_query.xdata deleted file mode 100644 index 58fad41cd..000000000 --- a/specs/mam_query.xdata +++ /dev/null @@ -1,23 +0,0 @@ - - urn:xmpp:mam:1 - XEP-0313 - Form to query message archives - - - - - - - diff --git a/specs/muc_register.cfg b/specs/muc_register.cfg deleted file mode 100644 index 3efd0cf0b..000000000 --- a/specs/muc_register.cfg +++ /dev/null @@ -1,2 +0,0 @@ -[{prefix, <<"muc#register_">>}, - {required, [<<"muc#register_roomnick">>]}]. diff --git a/specs/muc_register.xdata b/specs/muc_register.xdata deleted file mode 100644 index e808b44e0..000000000 --- a/specs/muc_register.xdata +++ /dev/null @@ -1,37 +0,0 @@ - - http://jabber.org/protocol/muc#register - XEP-0045 - - Forms enabling user registration with a - Multi-User Chat (MUC) room or admin approval - of user registration requests. - - - - - - - - - diff --git a/specs/muc_request.cfg b/specs/muc_request.cfg deleted file mode 100644 index 4811b32e2..000000000 --- a/specs/muc_request.cfg +++ /dev/null @@ -1,2 +0,0 @@ -[{prefix, <<"muc#">>}, - {required, [<<"muc#role">>]}]. diff --git a/specs/muc_request.xdata b/specs/muc_request.xdata deleted file mode 100644 index 64fa1388b..000000000 --- a/specs/muc_request.xdata +++ /dev/null @@ -1,31 +0,0 @@ - - http://jabber.org/protocol/muc#request - XEP-0045 - - Forms enabling voice requests in a - Multi-User Chat (MUC) room or admin - approval of such requests. - - - - - - - - - - diff --git a/specs/muc_roomconfig.cfg b/specs/muc_roomconfig.cfg deleted file mode 100644 index de16099d5..000000000 --- a/specs/muc_roomconfig.cfg +++ /dev/null @@ -1,11 +0,0 @@ -[{prefix, <<"muc#roomconfig_">>}, - {prefix, <<"muc#">>}, - {decode, [{<<"muc#roomconfig_maxusers">>, - {dec_enum_int, [[none], 0, infinity]}}, - {<<"voice_request_min_interval">>, - {dec_int, [0, infinity]}}]}]. - -%% Local Variables: -%% mode: erlang -%% End: -%% vim: set filetype=erlang tabstop=8: diff --git a/specs/muc_roomconfig.xdata b/specs/muc_roomconfig.xdata deleted file mode 100644 index cab6465dc..000000000 --- a/specs/muc_roomconfig.xdata +++ /dev/null @@ -1,192 +0,0 @@ - - http://jabber.org/protocol/muc#roomconfig - XEP-0045 - - Forms enabling creation and configuration of - a Multi-User Chat (MUC) room. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/specs/muc_roominfo.cfg b/specs/muc_roominfo.cfg deleted file mode 100644 index 98a985e7b..000000000 --- a/specs/muc_roominfo.cfg +++ /dev/null @@ -1,11 +0,0 @@ -[{prefix, <<"muc#roominfo_">>}, - {prefix, <<"muc#">>}, - {decode, [{<<"muc#maxhistoryfetch">>, - {dec_int, [0, infinity]}}, - {<<"muc#roominfo_occupants">>, - {dec_int, [0, infinity]}}]}]. - -%% Local Variables: -%% mode: erlang -%% End: -%% vim: set filetype=erlang tabstop=8: diff --git a/specs/muc_roominfo.xdata b/specs/muc_roominfo.xdata deleted file mode 100644 index 70f696383..000000000 --- a/specs/muc_roominfo.xdata +++ /dev/null @@ -1,55 +0,0 @@ - - http://jabber.org/protocol/muc#roominfo - XEP-0045 - - Forms enabling the communication of extended service discovery - information about a Multi-User Chat (MUC) room. - - - - - - - - - - - - - diff --git a/specs/pubsub_get_pending.cfg b/specs/pubsub_get_pending.cfg deleted file mode 100644 index 4ae57ac88..000000000 --- a/specs/pubsub_get_pending.cfg +++ /dev/null @@ -1,7 +0,0 @@ -[{prefix, <<"pubsub#">>}, - {required, [<<"pubsub#node">>]}]. - -%% Local Variables: -%% mode: erlang -%% End: -%% vim: set filetype=erlang tabstop=8: diff --git a/specs/pubsub_get_pending.xdata b/specs/pubsub_get_pending.xdata deleted file mode 100644 index 1a6f55297..000000000 --- a/specs/pubsub_get_pending.xdata +++ /dev/null @@ -1,15 +0,0 @@ - - http://jabber.org/protocol/pubsub#subscribe_authorization - XEP-0060 - Forms enabling authorization of subscriptions to pubsub nodes - - - - diff --git a/specs/pubsub_node_config.cfg b/specs/pubsub_node_config.cfg deleted file mode 100644 index f3bf72d2d..000000000 --- a/specs/pubsub_node_config.cfg +++ /dev/null @@ -1,8 +0,0 @@ -[{prefix, <<"pubsub#">>}, - {decode, [{<<"pubsub#max_items">>, {dec_int, [0,infinity]}}, - {<<"pubsub#max_payload_size">>, {dec_int, [0,infinity]}}]}]. - -%% Local Variables: -%% mode: erlang -%% End: -%% vim: set filetype=erlang tabstop=8: diff --git a/specs/pubsub_node_config.xdata b/specs/pubsub_node_config.xdata deleted file mode 100644 index 1691808f7..000000000 --- a/specs/pubsub_node_config.xdata +++ /dev/null @@ -1,189 +0,0 @@ - - http://jabber.org/protocol/pubsub#node_config - XEP-0060 - Forms enabling configuration of pubsub nodes - - - - - - - - - - - - - - - - - - - - - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - - - - - - diff --git a/specs/pubsub_publish_options.cfg b/specs/pubsub_publish_options.cfg deleted file mode 100644 index 2a853e834..000000000 --- a/specs/pubsub_publish_options.cfg +++ /dev/null @@ -1,6 +0,0 @@ -[{prefix, <<"pubsub#">>}]. - -%% Local Variables: -%% mode: erlang -%% End: -%% vim: set filetype=erlang tabstop=8: diff --git a/specs/pubsub_publish_options.xdata b/specs/pubsub_publish_options.xdata deleted file mode 100644 index 26cac6ad5..000000000 --- a/specs/pubsub_publish_options.xdata +++ /dev/null @@ -1,34 +0,0 @@ - - http://jabber.org/protocol/pubsub#publish-options - XEP-0060 - - Forms enabling publication with options; each field must specify whether it - defines METADATA to be attached to the item, a per-item OVERRIDE of the node - configuration, or a PRECONDITION to be checked against the node configuration. - - - - - - - - - - - diff --git a/specs/pubsub_subscribe_authorization.cfg b/specs/pubsub_subscribe_authorization.cfg deleted file mode 100644 index 1f38fdb27..000000000 --- a/specs/pubsub_subscribe_authorization.cfg +++ /dev/null @@ -1,7 +0,0 @@ -[{prefix, <<"pubsub#">>}, - {required, [<<"pubsub#node">>, <<"pubsub#subscriber_jid">>, <<"pubsub#allow">>]}]. - -%% Local Variables: -%% mode: erlang -%% End: -%% vim: set filetype=erlang tabstop=8: diff --git a/specs/pubsub_subscribe_authorization.xdata b/specs/pubsub_subscribe_authorization.xdata deleted file mode 100644 index 250d8754b..000000000 --- a/specs/pubsub_subscribe_authorization.xdata +++ /dev/null @@ -1,27 +0,0 @@ - - http://jabber.org/protocol/pubsub#subscribe_authorization - XEP-0060 - Forms enabling authorization of subscriptions to pubsub nodes - - - - - - - diff --git a/specs/pubsub_subscribe_options.cfg b/specs/pubsub_subscribe_options.cfg deleted file mode 100644 index e4ac06ad9..000000000 --- a/specs/pubsub_subscribe_options.cfg +++ /dev/null @@ -1 +0,0 @@ -[{prefix, <<"pubsub#">>}]. diff --git a/specs/pubsub_subscribe_options.xdata b/specs/pubsub_subscribe_options.xdata deleted file mode 100644 index 59b134676..000000000 --- a/specs/pubsub_subscribe_options.xdata +++ /dev/null @@ -1,70 +0,0 @@ - - http://jabber.org/protocol/pubsub#subscribe_options - XEP-0060 - Forms enabling configuration of subscription options for pubsub nodes - - - - - - - - - - - - - - - - - - - - - diff --git a/specs/xmpp_codec.spec b/specs/xmpp_codec.spec deleted file mode 100644 index 0aa124ec8..000000000 --- a/specs/xmpp_codec.spec +++ /dev/null @@ -1,3588 +0,0 @@ --xml(last, - #elem{name = <<"query">>, - xmlns = <<"jabber:iq:last">>, - result = {last, '$seconds', '$status'}, - attrs = [#attr{name = <<"seconds">>, - enc = {enc_int, []}, - dec = {dec_int, [0, infinity]}}], - cdata = #cdata{default = <<"">>, label = '$status'}}). - --xml(version_name, - #elem{name = <<"name">>, - xmlns = <<"jabber:iq:version">>, - result = '$cdata', - cdata = #cdata{label = '$cdata', required = true}}). - --xml(version_ver, - #elem{name = <<"version">>, - xmlns = <<"jabber:iq:version">>, - result = '$cdata', - cdata = #cdata{label = '$cdata', required = true}}). - --xml(version_os, - #elem{name = <<"os">>, - xmlns = <<"jabber:iq:version">>, - result = '$cdata', - cdata = #cdata{label = '$cdata', required = true}}). - --xml(version, - #elem{name = <<"query">>, - xmlns = <<"jabber:iq:version">>, - result = {version, '$name', '$ver', '$os'}, - refs = [#ref{name = version_name, - label = '$name', - min = 0, max = 1}, - #ref{name = version_ver, - label = '$ver', - min = 0, max = 1}, - #ref{name = version_os, - label = '$os', - min = 0, max = 1}]}). - --xml(roster_group, - #elem{name = <<"group">>, - xmlns = <<"jabber:iq:roster">>, - result = '$cdata', - cdata = #cdata{required = true, label = '$cdata'}}). - --xml(roster_item, - #elem{name = <<"item">>, - xmlns = <<"jabber:iq:roster">>, - result = {roster_item, '$jid', '$name', - '$groups', '$subscription', '$ask'}, - attrs = [#attr{name = <<"jid">>, - required = true, - dec = {dec_jid, []}, - enc = {enc_jid, []}}, - #attr{name = <<"name">>, - default = <<"">>}, - #attr{name = <<"subscription">>, - default = none, - enc = {enc_enum, []}, - dec = {dec_enum, [[none,to,from,both,remove]]}}, - #attr{name = <<"ask">>, - enc = {enc_enum, []}, - dec = {dec_enum, [[subscribe]]}}], - refs = [#ref{name = roster_group, label = '$groups'}]}). - --xml(roster_query, - #elem{name = <<"query">>, - xmlns = <<"jabber:iq:roster">>, - result = {roster_query, '$items', '$ver'}, - attrs = [#attr{name = <<"ver">>, default = undefined}], - refs = [#ref{name = roster_item, label = '$items'}]}). - --xml(rosterver_feature, - #elem{name = <<"ver">>, - xmlns = <<"urn:xmpp:features:rosterver">>, - result = {rosterver_feature}}). - --xml(privacy_message, #elem{name = <<"message">>, xmlns = <<"jabber:iq:privacy">>, - result = true}). --xml(privacy_iq, #elem{name = <<"iq">>, xmlns = <<"jabber:iq:privacy">>, - result = true}). --xml(privacy_presence_in, #elem{name = <<"presence-in">>, - xmlns = <<"jabber:iq:privacy">>, - result = true}). --xml(privacy_presence_out, #elem{name = <<"presence-out">>, - xmlns = <<"jabber:iq:privacy">>, - result = true}). - --xml(privacy_item, - #elem{name = <<"item">>, - xmlns = <<"jabber:iq:privacy">>, - result = {privacy_item, '$order', '$action', '$type', '$value', - '$message', '$iq', '$presence_in', '$presence_out'}, - attrs = [#attr{name = <<"action">>, - required = true, - dec = {dec_enum, [[allow, deny]]}, - enc = {enc_enum, []}}, - #attr{name = <<"order">>, - required = true, - dec = {dec_int, [0, infinity]}, - enc = {enc_int, []}}, - #attr{name = <<"type">>, - dec = {dec_enum, [[group, jid, subscription]]}, - enc = {enc_enum, []}}, - #attr{name = <<"value">>}], - refs = [#ref{name = privacy_message, default = false, - min = 0, max = 1, label = '$message'}, - #ref{name = privacy_iq, default = false, - min = 0, max = 1, label = '$iq'}, - #ref{name = privacy_presence_in, default = false, - min = 0, max = 1, label = '$presence_in'}, - #ref{name = privacy_presence_out, default = false, - min = 0, max = 1, label = '$presence_out'}]}). - --xml(privacy_list, - #elem{name = <<"list">>, - xmlns = <<"jabber:iq:privacy">>, - result = {privacy_list, '$name', '$items'}, - attrs = [#attr{name = <<"name">>, - required = true}], - refs = [#ref{name = privacy_item, - label = '$items'}]}). - --xml(privacy_default_list, - #elem{name = <<"default">>, - xmlns = <<"jabber:iq:privacy">>, - result = '$name', - attrs = [#attr{name = <<"name">>, - default = none}]}). - --xml(privacy_active_list, - #elem{name = <<"active">>, - xmlns = <<"jabber:iq:privacy">>, - result = '$name', - attrs = [#attr{name = <<"name">>, - default = none}]}). - --xml(privacy, - #elem{name = <<"query">>, - xmlns = <<"jabber:iq:privacy">>, - result = {privacy_query, '$lists', '$default', '$active'}, - refs = [#ref{name = privacy_list, - label = '$lists'}, - #ref{name = privacy_default_list, - min = 0, max = 1, - label = '$default'}, - #ref{name = privacy_active_list, - min = 0, max = 1, - label = '$active'}]}). - --xml(block_item, - #elem{name = <<"item">>, - xmlns = <<"urn:xmpp:blocking">>, - result = '$jid', - attrs = [#attr{name = <<"jid">>, - required = true, - dec = {dec_jid, []}, - enc = {enc_jid, []}}]}). - --xml(block, - #elem{name = <<"block">>, - xmlns = <<"urn:xmpp:blocking">>, - result = {block, '$items'}, - refs = [#ref{name = block_item, - label = '$items'}]}). - --xml(unblock, - #elem{name = <<"unblock">>, - xmlns = <<"urn:xmpp:blocking">>, - result = {unblock, '$items'}, - refs = [#ref{name = block_item, - label = '$items'}]}). - --xml(block_list, - #elem{name = <<"blocklist">>, - xmlns = <<"urn:xmpp:blocking">>, - result = {block_list, '$items'}, - refs = [#ref{name = block_item, - label = '$items'}]}). - --xml(disco_identity, - #elem{name = <<"identity">>, - xmlns = <<"http://jabber.org/protocol/disco#info">>, - result = {identity, '$category', '$type', '$lang', '$name'}, - attrs = [#attr{name = <<"category">>, - required = true}, - #attr{name = <<"type">>, - required = true}, - #attr{name = <<"xml:lang">>, - label = '$lang'}, - #attr{name = <<"name">>}]}). - --xml(disco_feature, - #elem{name = <<"feature">>, - xmlns = <<"http://jabber.org/protocol/disco#info">>, - result = '$var', - attrs = [#attr{name = <<"var">>, - required = true}]}). - --xml(disco_info, - #elem{name = <<"query">>, - xmlns = <<"http://jabber.org/protocol/disco#info">>, - result = {disco_info, '$node', '$identities', '$features', '$xdata'}, - attrs = [#attr{name = <<"node">>}], - refs = [#ref{name = disco_identity, - label = '$identities'}, - #ref{name = disco_feature, - label = '$features'}, - #ref{name = xdata, - label = '$xdata'}]}). - --xml(disco_item, - #elem{name = <<"item">>, - xmlns = <<"http://jabber.org/protocol/disco#items">>, - result = {disco_item, '$jid', '$name', '$node'}, - attrs = [#attr{name = <<"jid">>, - dec = {dec_jid, []}, - enc = {enc_jid, []}, - required = true}, - #attr{name = <<"name">>}, - #attr{name = <<"node">>}]}). --xml(disco_items, - #elem{name = <<"query">>, - xmlns = <<"http://jabber.org/protocol/disco#items">>, - result = {disco_items, '$node', '$items', '$rsm'}, - attrs = [#attr{name = <<"node">>}], - refs = [#ref{name = disco_item, - label = '$items'}, - #ref{name = rsm_set, min = 0, max = 1, - label = '$rsm'}]}). - --xml(private, - #elem{name = <<"query">>, - xmlns = <<"jabber:iq:private">>, - result = {private, '$_xmls'}}). - --xml(conference_nick, - #elem{name = <<"nick">>, - xmlns = <<"storage:bookmarks">>, - result = '$cdata'}). - --xml(conference_password, - #elem{name = <<"password">>, - xmlns = <<"storage:bookmarks">>, - result = '$cdata'}). - --xml(bookmark_conference, - #elem{name = <<"conference">>, - xmlns = <<"storage:bookmarks">>, - result = {bookmark_conference, '$name', '$jid', - '$autojoin', '$nick', '$password'}, - attrs = [#attr{name = <<"name">>, - required = true}, - #attr{name = <<"jid">>, - required = true, - dec = {dec_jid, []}, - enc = {enc_jid, []}}, - #attr{name = <<"autojoin">>, - default = false, - dec = {dec_bool, []}, - enc = {enc_bool, []}}], - refs = [#ref{name = conference_nick, - label = '$nick', - min = 0, max = 1}, - #ref{name = conference_password, - label = '$password', - min = 0, max = 1}]}). - --xml(bookmark_url, - #elem{name = <<"url">>, - xmlns = <<"storage:bookmarks">>, - result = {bookmark_url, '$name', '$url'}, - attrs = [#attr{name = <<"name">>, - required = true}, - #attr{name = <<"url">>, - required = true}]}). - --xml(bookmarks_storage, - #elem{name = <<"storage">>, - xmlns = <<"storage:bookmarks">>, - result = {bookmark_storage, '$conference', '$url'}, - refs = [#ref{name = bookmark_conference, - label = '$conference'}, - #ref{name = bookmark_url, - label = '$url'}]}). - --xml(stat_error, - #elem{name = <<"error">>, - xmlns = <<"http://jabber.org/protocol/stats">>, - result = {stat_error, '$code', '$reason'}, - cdata = #cdata{default = <<"">>, label = '$reason'}, - attrs = [#attr{name = <<"code">>, - required = true, - enc = {enc_int, []}, - dec = {dec_int, []}}]}). - --xml(stat, - #elem{name = <<"stat">>, - xmlns = <<"http://jabber.org/protocol/stats">>, - result = {stat, '$name', '$units', '$value', '$error'}, - attrs = [#attr{name = <<"name">>, - required = true}, - #attr{name = <<"units">>, default = <<"">>}, - #attr{name = <<"value">>, default = <<"">>}], - refs = [#ref{name = stat_error, label = '$error', - min = 0, max = 1}]}). - --xml(stats, - #elem{name = <<"query">>, - xmlns = <<"http://jabber.org/protocol/stats">>, - result = {stats, '$list', '$node'}, - attrs = [#attr{name = <<"node">>, default = <<"">>}], - refs = [#ref{name = stat, label = '$list'}]}). - --xml(iq, - #elem{name = <<"iq">>, - xmlns = [<<"jabber:client">>, <<"jabber:server">>, - <<"jabber:component:accept">>], - result = {iq, '$id', '$type', '$lang', '$from', '$to', '$_els'}, - attrs = [#attr{name = <<"id">>, - required = true}, - #attr{name = <<"type">>, - required = true, - enc = {enc_enum, []}, - dec = {dec_enum, [[get, set, result, error]]}}, - #attr{name = <<"from">>, - dec = {dec_jid, []}, - enc = {enc_jid, []}}, - #attr{name = <<"to">>, - dec = {dec_jid, []}, - enc = {enc_jid, []}}, - #attr{name = <<"xml:lang">>, - label = '$lang'}]}). - --xml(message_subject, - #elem{name = <<"subject">>, - xmlns = [<<"jabber:client">>, <<"jabber:server">>, - <<"jabber:component:accept">>], - result = {text, '$lang', '$data'}, - cdata = #cdata{label = '$data'}, - attrs = [#attr{name = <<"xml:lang">>, label = '$lang'}]}). - --xml(message_body, - #elem{name = <<"body">>, - xmlns = [<<"jabber:client">>, <<"jabber:server">>, - <<"jabber:component:accept">>], - result = {text, '$lang', '$data'}, - cdata = #cdata{label = '$data'}, - attrs = [#attr{name = <<"xml:lang">>, label = '$lang'}]}). - --xml(message_thread, - #elem{name = <<"thread">>, - xmlns = [<<"jabber:client">>, <<"jabber:server">>, - <<"jabber:component:accept">>], - result = '$cdata'}). - --xml(message, - #elem{name = <<"message">>, - xmlns = [<<"jabber:client">>, <<"jabber:server">>, - <<"jabber:component:accept">>], - result = {message, '$id', '$type', '$lang', '$from', '$to', - '$subject', '$body', '$thread', '$_els'}, - attrs = [#attr{name = <<"id">>}, - #attr{name = <<"type">>, - default = normal, - enc = {enc_enum, []}, - dec = {dec_enum, [[chat, normal, groupchat, - headline, error]]}}, - #attr{name = <<"from">>, - dec = {dec_jid, []}, - enc = {enc_jid, []}}, - #attr{name = <<"to">>, - dec = {dec_jid, []}, - enc = {enc_jid, []}}, - #attr{name = <<"xml:lang">>, - label = '$lang'}], - refs = [#ref{name = message_subject, label = '$subject'}, - #ref{name = message_thread, min = 0, max = 1, label = '$thread'}, - #ref{name = message_body, label = '$body'}]}). - --xml(presence_show, - #elem{name = <<"show">>, - xmlns = [<<"jabber:client">>, <<"jabber:server">>, - <<"jabber:component:accept">>], - result = '$cdata', - cdata = #cdata{enc = {enc_enum, []}, - dec = {dec_enum, [[away, chat, dnd, xa]]}}}). - --xml(presence_status, - #elem{name = <<"status">>, - xmlns = [<<"jabber:client">>, <<"jabber:server">>, - <<"jabber:component:accept">>], - result = {text, '$lang', '$data'}, - cdata = #cdata{label = '$data'}, - attrs = [#attr{name = <<"xml:lang">>, - label = '$lang'}]}). - --xml(presence_priority, - #elem{name = <<"priority">>, - xmlns = [<<"jabber:client">>, <<"jabber:server">>, - <<"jabber:component:accept">>], - result = '$cdata', - cdata = #cdata{enc = {enc_int, []}, - dec = {dec_int, []}}}). - --xml(presence, - #elem{name = <<"presence">>, - xmlns = [<<"jabber:client">>, <<"jabber:server">>, - <<"jabber:component:accept">>], - result = {presence, '$id', '$type', '$lang', '$from', '$to', - '$show', '$status', '$priority', '$_els'}, - attrs = [#attr{name = <<"id">>}, - #attr{name = <<"type">>, - default = available, - enc = {enc_enum, []}, - dec = {dec_enum, [[unavailable, subscribe, subscribed, - unsubscribe, unsubscribed, - available, probe, error]]}}, - #attr{name = <<"from">>, - dec = {dec_jid, []}, - enc = {enc_jid, []}}, - #attr{name = <<"to">>, - dec = {dec_jid, []}, - enc = {enc_jid, []}}, - #attr{name = <<"xml:lang">>, - label = '$lang'}], - refs = [#ref{name = presence_show, min = 0, max = 1, label = '$show'}, - #ref{name = presence_status, label = '$status'}, - #ref{name = presence_priority, min = 0, max = 1, - label = '$priority'}]}). - --xml(error_bad_request, - #elem{name = <<"bad-request">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - result = 'bad-request'}). --xml(error_conflict, - #elem{name = <<"conflict">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - result = 'conflict'}). --xml(error_feature_not_implemented, - #elem{name = <<"feature-not-implemented">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - result = 'feature-not-implemented'}). --xml(error_forbidden, - #elem{name = <<"forbidden">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - result = 'forbidden'}). --xml(error_gone, - #elem{name = <<"gone">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - cdata = #cdata{label = '$uri'}, - result = {'gone', '$uri'}}). --xml(error_internal_server_error, - #elem{name = <<"internal-server-error">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - result = 'internal-server-error'}). --xml(error_item_not_found, - #elem{name = <<"item-not-found">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - result = 'item-not-found'}). --xml(error_jid_malformed, - #elem{name = <<"jid-malformed">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - result = 'jid-malformed'}). --xml(error_not_acceptable, - #elem{name = <<"not-acceptable">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - result = 'not-acceptable'}). --xml(error_not_allowed, - #elem{name = <<"not-allowed">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - result = 'not-allowed'}). --xml(error_not_authorized, - #elem{name = <<"not-authorized">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - result = 'not-authorized'}). --xml(error_payment_required, - #elem{name = <<"payment-required">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - result = 'payment-required'}). --xml(error_policy_violation, - #elem{name = <<"policy-violation">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - result = 'policy-violation'}). --xml(error_recipient_unavailable, - #elem{name = <<"recipient-unavailable">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - result = 'recipient-unavailable'}). --xml(error_redirect, - #elem{name = <<"redirect">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - cdata = #cdata{label = '$uri'}, - result = {'redirect', '$uri'}}). --xml(error_registration_required, - #elem{name = <<"registration-required">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - result = 'registration-required'}). --xml(error_remote_server_not_found, - #elem{name = <<"remote-server-not-found">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - result = 'remote-server-not-found'}). --xml(error_remote_server_timeout, - #elem{name = <<"remote-server-timeout">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - result = 'remote-server-timeout'}). --xml(error_resource_constraint, - #elem{name = <<"resource-constraint">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - result = 'resource-constraint'}). --xml(error_service_unavailable, - #elem{name = <<"service-unavailable">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - result = 'service-unavailable'}). --xml(error_subscription_required, - #elem{name = <<"subscription-required">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - result = 'subscription-required'}). --xml(error_undefined_condition, - #elem{name = <<"undefined-condition">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - result = 'undefined-condition'}). --xml(error_unexpected_request, - #elem{name = <<"unexpected-request">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - result = 'unexpected-request'}). - --xml(error_text, - #elem{name = <<"text">>, - result = {text, '$lang', '$data'}, - cdata = #cdata{label = '$data'}, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - attrs = [#attr{name = <<"xml:lang">>, - label = '$lang'}]}). - --xml(error, - #elem{name = <<"error">>, - xmlns = [<<"jabber:client">>, <<"jabber:server">>, - <<"jabber:component:accept">>], - result = {stanza_error, '$type', '$code', '$by', '$reason', '$text', '$_els'}, - attrs = [#attr{name = <<"type">>, - label = '$type', - required = true, - dec = {dec_enum, [[auth, cancel, continue, - modify, wait]]}, - enc = {enc_enum, []}}, - #attr{name = <<"code">>, - label = '$code', - enc = {enc_int, []}, - dec = {dec_int, [0, infinity]}}, - #attr{name = <<"by">>}], - refs = [#ref{name = error_text, - min = 0, max = 1, label = '$text'}, - #ref{name = error_bad_request, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_conflict, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_feature_not_implemented, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_forbidden, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_gone, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_internal_server_error, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_item_not_found, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_jid_malformed, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_not_acceptable, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_not_allowed, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_not_authorized, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_payment_required, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_policy_violation, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_recipient_unavailable, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_redirect, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_registration_required, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_remote_server_not_found, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_remote_server_timeout, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_resource_constraint, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_service_unavailable, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_subscription_required, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_undefined_condition, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_unexpected_request, - min = 0, max = 1, label = '$reason'}]}). - --xml(bind_jid, - #elem{name = <<"jid">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-bind">>, - result = '$cdata', - cdata = #cdata{dec = {dec_jid, []}, - enc = {enc_jid, []}}}). - --xml(bind_resource, - #elem{name = <<"resource">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-bind">>, - result = '$cdata', - cdata = #cdata{dec = {resourceprep, []}, - enc = {resourceprep, []}}}). - --xml(bind, #elem{name = <<"bind">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-bind">>, - result = {bind, '$jid', '$resource'}, - refs = [#ref{name = bind_jid, - label = '$jid', - min = 0, max = 1}, - #ref{name = bind_resource, - min = 0, max = 1, - default = <<"">>, - label = '$resource'}]}). - --xml(legacy_auth_username, - #elem{name = <<"username">>, - xmlns = <<"jabber:iq:auth">>, - result = '$cdata'}). --xml(legacy_auth_password, - #elem{name = <<"password">>, - xmlns = <<"jabber:iq:auth">>, - result = '$cdata'}). --xml(legacy_auth_digest, - #elem{name = <<"digest">>, - xmlns = <<"jabber:iq:auth">>, - result = '$cdata'}). --xml(legacy_auth_resource, - #elem{name = <<"resource">>, - xmlns = <<"jabber:iq:auth">>, - result = '$cdata'}). - --xml(legacy_auth, - #elem{name = <<"query">>, - xmlns = <<"jabber:iq:auth">>, - result = {legacy_auth, '$username', '$password', - '$digest', '$resource'}, - refs = [#ref{name = legacy_auth_username, min = 0, max = 1, - label = '$username'}, - #ref{name = legacy_auth_password, min = 0, max = 1, - label = '$password'}, - #ref{name = legacy_auth_digest, min = 0, max = 1, - label = '$digest'}, - #ref{name = legacy_auth_resource, min = 0, max = 1, - label = '$resource'}]}). - --xml(sasl_auth, - #elem{name = <<"auth">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>, - cdata = #cdata{label = '$text', - dec = {base64, mime_decode, []}, - enc = {base64, encode, []}}, - result = {sasl_auth, '$mechanism', '$text'}, - attrs = [#attr{name = <<"mechanism">>, - required = true}]}). - --xml(sasl_abort, - #elem{name = <<"abort">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>, - result = {sasl_abort}}). - --xml(sasl_challenge, - #elem{name = <<"challenge">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>, - cdata = #cdata{label = '$text', - dec = {base64, mime_decode, []}, - enc = {base64, encode, []}}, - result = {sasl_challenge, '$text'}}). - --xml(sasl_response, - #elem{name = <<"response">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>, - cdata = #cdata{label = '$text', - dec = {base64, mime_decode, []}, - enc = {base64, encode, []}}, - result = {sasl_response, '$text'}}). - --xml(sasl_success, - #elem{name = <<"success">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>, - cdata = #cdata{label = '$text', - dec = {base64, mime_decode, []}, - enc = {base64, encode, []}}, - result = {sasl_success, '$text'}}). - --xml(sasl_failure_text, - #elem{name = <<"text">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>, - result = {text, '$lang', '$data'}, - cdata = #cdata{label = '$data'}, - attrs = [#attr{name = <<"xml:lang">>, - label = '$lang'}]}). - --xml(sasl_failure_aborted, - #elem{name = <<"aborted">>, - result = 'aborted', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>}). --xml(sasl_failure_account_disabled, - #elem{name = <<"account-disabled">>, - result = 'account-disabled', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>}). --xml(sasl_failure_credentials_expired, - #elem{name = <<"credentials-expired">>, - result = 'credentials-expired', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>}). --xml(sasl_failure_encryption_required, - #elem{name = <<"encryption-required">>, - result = 'encryption-required', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>}). --xml(sasl_failure_incorrect_encoding, - #elem{name = <<"incorrect-encoding">>, - result = 'incorrect-encoding', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>}). --xml(sasl_failure_invalid_authzid, - #elem{name = <<"invalid-authzid">>, - result = 'invalid-authzid', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>}). --xml(sasl_failure_invalid_mechanism, - #elem{name = <<"invalid-mechanism">>, - result = 'invalid-mechanism', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>}). --xml(sasl_failure_malformed_request, - #elem{name = <<"malformed-request">>, - result = 'malformed-request', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>}). --xml(sasl_failure_mechanism_too_weak, - #elem{name = <<"mechanism-too-weak">>, - result = 'mechanism-too-weak', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>}). --xml(sasl_failure_not_authorized, - #elem{name = <<"not-authorized">>, - result = 'not-authorized', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>}). --xml(sasl_failure_bad_protocol, - #elem{name = <<"bad-protocol">>, - result = 'bad-protocol', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>}). --xml(sasl_failure_temporary_auth_failure, - #elem{name = <<"temporary-auth-failure">>, - result = 'temporary-auth-failure', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>}). - --xml(sasl_failure, - #elem{name = <<"failure">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>, - result = {sasl_failure, '$reason', '$text'}, - refs = [#ref{name = sasl_failure_text, - label = '$text'}, - #ref{name = sasl_failure_aborted, - min = 0, max = 1, label = '$reason'}, - #ref{name = sasl_failure_account_disabled, - min = 0, max = 1, label = '$reason'}, - #ref{name = sasl_failure_credentials_expired, - min = 0, max = 1, label = '$reason'}, - #ref{name = sasl_failure_encryption_required, - min = 0, max = 1, label = '$reason'}, - #ref{name = sasl_failure_incorrect_encoding, - min = 0, max = 1, label = '$reason'}, - #ref{name = sasl_failure_invalid_authzid, - min = 0, max = 1, label = '$reason'}, - #ref{name = sasl_failure_invalid_mechanism, - min = 0, max = 1, label = '$reason'}, - #ref{name = sasl_failure_malformed_request, - min = 0, max = 1, label = '$reason'}, - #ref{name = sasl_failure_mechanism_too_weak, - min = 0, max = 1, label = '$reason'}, - #ref{name = sasl_failure_not_authorized, - min = 0, max = 1, label = '$reason'}, - #ref{name = sasl_failure_bad_protocol, - min = 0, max = 1, label = '$reason'}, - #ref{name = sasl_failure_temporary_auth_failure, - min = 0, max = 1, label = '$reason'}]}). - --xml(sasl_mechanism, - #elem{name = <<"mechanism">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>, - result = '$cdata'}). - --xml(sasl_mechanisms, - #elem{name = <<"mechanisms">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>, - result = {sasl_mechanisms, '$list'}, - refs = [#ref{name = sasl_mechanism, - label = '$list'}]}). - --xml(starttls_required, - #elem{name = <<"required">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-tls">>, - result = true}). - --xml(starttls, - #elem{name = <<"starttls">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-tls">>, - result = {starttls, '$required'}, - refs = [#ref{name = starttls_required, - label = '$required', - min = 0, max = 1, - default = false}]}). - --xml(starttls_proceed, - #elem{name = <<"proceed">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-tls">>, - result = {starttls_proceed}}). - --xml(starttls_failure, - #elem{name = <<"failure">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-tls">>, - result = {starttls_failure}}). - --xml(compress_failure_setup_failed, - #elem{name = <<"setup-failed">>, - xmlns = <<"http://jabber.org/protocol/compress">>, - result = 'setup-failed'}). --xml(compress_failure_processing_failed, - #elem{name = <<"processing-failed">>, - xmlns = <<"http://jabber.org/protocol/compress">>, - result = 'processing-failed'}). --xml(compress_failure_unsupported_method, - #elem{name = <<"unsupported-method">>, - xmlns = <<"http://jabber.org/protocol/compress">>, - result = 'unsupported-method'}). - --xml(compress_failure, - #elem{name = <<"failure">>, - xmlns = <<"http://jabber.org/protocol/compress">>, - result = {compress_failure, '$reason'}, - refs = [#ref{name = compress_failure_setup_failed, - min = 0, max = 1, label = '$reason'}, - #ref{name = compress_failure_processing_failed, - min = 0, max = 1, label = '$reason'}, - #ref{name = compress_failure_unsupported_method, - min = 0, max = 1, label = '$reason'}]}). - --xml(compress_method, - #elem{name = <<"method">>, - xmlns = <<"http://jabber.org/protocol/compress">>, - result = '$cdata'}). - --xml(compress, - #elem{name = <<"compress">>, - xmlns = <<"http://jabber.org/protocol/compress">>, - result = {compress, '$methods'}, - refs = [#ref{name = compress_method, - label = '$methods'}]}). - --xml(compressed, - #elem{name = <<"compressed">>, - xmlns = <<"http://jabber.org/protocol/compress">>, - result = {compressed}}). - --xml(compression_method, - #elem{name = <<"method">>, - xmlns = <<"http://jabber.org/features/compress">>, - result = '$cdata'}). - --xml(compression, - #elem{name = <<"compression">>, - xmlns = <<"http://jabber.org/features/compress">>, - result = {compression, '$methods'}, - refs = [#ref{name = compression_method, label = '$methods'}]}). - --xml(stream_features, - #elem{name = <<"stream:features">>, - xmlns = [<<"jabber:client">>, <<"jabber:server">>], - result = {stream_features, '$_els'}}). - --xml(p1_push, - #elem{name = <<"push">>, - result = {p1_push}, - xmlns = <<"p1:push">>}). - --xml(p1_rebind, - #elem{name = <<"rebind">>, - result = {p1_rebind}, - xmlns = <<"p1:rebind">>}). - --xml(p1_ack, - #elem{name = <<"ack">>, - result = {p1_ack}, - xmlns = <<"p1:ack">>}). - --xml(caps, - #elem{name = <<"c">>, - xmlns = <<"http://jabber.org/protocol/caps">>, - result = {caps, '$node', '$version', '$hash', '$exts'}, - attrs = [#attr{name = <<"hash">>}, - #attr{name = <<"node">>}, - #attr{name = <<"ext">>, - label = '$exts', - default = [], - dec = {re, split, ["\\h+"]}, - enc = {join, [$ ]}}, - #attr{name = <<"ver">>, - label = '$version'}]}). - --xml(feature_register, - #elem{name = <<"register">>, - xmlns = <<"http://jabber.org/features/iq-register">>, - result = {feature_register}}). - --xml(register_registered, - #elem{name = <<"registered">>, - xmlns = <<"jabber:iq:register">>, - result = true}). --xml(register_remove, - #elem{name = <<"remove">>, - xmlns = <<"jabber:iq:register">>, - result = true}). --xml(register_instructions, - #elem{name = <<"instructions">>, - xmlns = <<"jabber:iq:register">>, - result = '$cdata'}). --xml(register_username, - #elem{name = <<"username">>, - xmlns = <<"jabber:iq:register">>, - result = '$cdata'}). --xml(register_nick, - #elem{name = <<"nick">>, - xmlns = <<"jabber:iq:register">>, - result = '$cdata'}). --xml(register_password, - #elem{name = <<"password">>, - xmlns = <<"jabber:iq:register">>, - result = '$cdata'}). --xml(register_name, - #elem{name = <<"name">>, - xmlns = <<"jabber:iq:register">>, - result = '$cdata'}). --xml(register_first, - #elem{name = <<"first">>, - xmlns = <<"jabber:iq:register">>, - result = '$cdata'}). --xml(register_last, - #elem{name = <<"last">>, - xmlns = <<"jabber:iq:register">>, - result = '$cdata'}). --xml(register_email, - #elem{name = <<"email">>, - xmlns = <<"jabber:iq:register">>, - result = '$cdata'}). --xml(register_address, - #elem{name = <<"address">>, - xmlns = <<"jabber:iq:register">>, - result = '$cdata'}). --xml(register_city, - #elem{name = <<"city">>, - xmlns = <<"jabber:iq:register">>, - result = '$cdata'}). --xml(register_state, - #elem{name = <<"state">>, - xmlns = <<"jabber:iq:register">>, - result = '$cdata'}). --xml(register_zip, - #elem{name = <<"zip">>, - xmlns = <<"jabber:iq:register">>, - result = '$cdata'}). --xml(register_phone, - #elem{name = <<"phone">>, - xmlns = <<"jabber:iq:register">>, - result = '$cdata'}). --xml(register_url, - #elem{name = <<"url">>, - xmlns = <<"jabber:iq:register">>, - result = '$cdata'}). --xml(register_date, - #elem{name = <<"date">>, - xmlns = <<"jabber:iq:register">>, - result = '$cdata'}). --xml(register_misc, - #elem{name = <<"misc">>, - xmlns = <<"jabber:iq:register">>, - result = '$cdata'}). --xml(register_text, - #elem{name = <<"text">>, - xmlns = <<"jabber:iq:register">>, - result = '$cdata'}). --xml(register_key, - #elem{name = <<"key">>, - xmlns = <<"jabber:iq:register">>, - result = '$cdata'}). - --xml(register, - #elem{name = <<"query">>, - xmlns = <<"jabber:iq:register">>, - result = {register, '$registered', '$remove', '$instructions', - '$username', '$nick', '$password', '$name', - '$first', '$last', '$email', '$address', - '$city', '$state', '$zip', '$phone', '$url', - '$date', '$misc', '$text', '$key', '$xdata', '$_els'}, - refs = [#ref{name = xdata, min = 0, max = 1, - label = '$xdata'}, - #ref{name = register_registered, min = 0, max = 1, - default = false, label = '$registered'}, - #ref{name = register_remove, min = 0, max = 1, - default = false, label = '$remove'}, - #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'}]}). - --xml(session_optional, - #elem{name = <<"optional">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-session">>, - result = true}). - --xml(session, - #elem{name = <<"session">>, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-session">>, - result = {xmpp_session, '$optional'}, - refs = [#ref{name = session_optional, - min = 0, max = 1, default = false, - label = '$optional'}]}). - --xml(ping, - #elem{name = <<"ping">>, - xmlns = <<"urn:xmpp:ping">>, - result = {ping}}). - --xml(time_utc, - #elem{name = <<"utc">>, - xmlns = <<"urn:xmpp:time">>, - result = '$cdata', - cdata = #cdata{dec = {dec_utc, []}, - enc = {enc_utc, []}}}). - --xml(time_tzo, - #elem{name = <<"tzo">>, - xmlns = <<"urn:xmpp:time">>, - result = '$cdata', - cdata = #cdata{dec = {dec_tzo, []}, - enc = {enc_tzo, []}}}). - --xml(time, - #elem{name = <<"time">>, - xmlns = <<"urn:xmpp:time">>, - result = {time, '$tzo', '$utc'}, - refs = [#ref{name = time_tzo, - label = '$tzo', - min = 0, max = 1}, - #ref{name = time_utc, - label = '$utc', - min = 0, max = 1}]}). - --xml(stream_error_text, - #elem{name = <<"text">>, - result = {text, '$lang', '$data'}, - cdata = #cdata{label = '$data'}, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>, - attrs = [#attr{name = <<"xml:lang">>, - label = '$lang'}]}). - --xml(stream_error_bad_format, - #elem{name = <<"bad-format">>, - result = 'bad-format', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). --xml(stream_error_bad_namespace_prefix, - #elem{name = <<"bad-namespace-prefix">>, - result = 'bad-namespace-prefix', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). --xml(stream_error_conflict, - #elem{name = <<"conflict">>, - result = 'conflict', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). --xml(stream_error_connection_timeout, - #elem{name = <<"connection-timeout">>, - result = 'connection-timeout', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). --xml(stream_error_host_gone, - #elem{name = <<"host-gone">>, - result = 'host-gone', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). --xml(stream_error_host_unknown, - #elem{name = <<"host-unknown">>, - result = 'host-unknown', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). --xml(stream_error_improper_addressing, - #elem{name = <<"improper-addressing">>, - result = 'improper-addressing', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). --xml(stream_error_internal_server_error, - #elem{name = <<"internal-server-error">>, - result = 'internal-server-error', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). --xml(stream_error_invalid_from, - #elem{name = <<"invalid-from">>, - result = 'invalid-from', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). --xml(stream_error_invalid_id, - #elem{name = <<"invalid-id">>, - result = 'invalid-id', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). --xml(stream_error_invalid_namespace, - #elem{name = <<"invalid-namespace">>, - result = 'invalid-namespace', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). --xml(stream_error_invalid_xml, - #elem{name = <<"invalid-xml">>, - result = 'invalid-xml', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). --xml(stream_error_not_authorized, - #elem{name = <<"not-authorized">>, - result = 'not-authorized', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). --xml(stream_error_not_well_formed, - #elem{name = <<"not-well-formed">>, - result = 'not-well-formed', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). --xml(stream_error_policy_violation, - #elem{name = <<"policy-violation">>, - result = 'policy-violation', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). --xml(stream_error_remote_connection_failed, - #elem{name = <<"remote-connection-failed">>, - result = 'remote-connection-failed', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). --xml(stream_error_reset, - #elem{name = <<"reset">>, - result = 'reset', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). --xml(stream_error_resource_constraint, - #elem{name = <<"resource-constraint">>, - result = 'resource-constraint', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). --xml(stream_error_restricted_xml, - #elem{name = <<"restricted-xml">>, - result = 'restricted-xml', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). --xml(stream_error_see_other_host, - #elem{name = <<"see-other-host">>, - cdata = #cdata{required = true, label = '$host', - dec = {dec_host_port, []}, - enc = {enc_host_port, []}}, - result = {'see-other-host', '$host'}, - xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). --xml(stream_error_system_shutdown, - #elem{name = <<"system-shutdown">>, - result = 'system-shutdown', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). --xml(stream_error_undefined_condition, - #elem{name = <<"undefined-condition">>, - result = 'undefined-condition', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). --xml(stream_error_unsupported_encoding, - #elem{name = <<"unsupported-encoding">>, - result = 'unsupported-encoding', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). --xml(stream_error_unsupported_stanza_type, - #elem{name = <<"unsupported-stanza-type">>, - result = 'unsupported-stanza-type', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). --xml(stream_error_unsupported_version, - #elem{name = <<"unsupported-version">>, - result = 'unsupported-version', - xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). - --xml(stream_error, - #elem{name = <<"stream:error">>, - xmlns = [<<"jabber:client">>, <<"jabber:server">>, - <<"jabber:component:accept">>], - result = {stream_error, '$reason', '$text'}, - refs = [#ref{name = stream_error_text, - label = '$text', - min = 0, max = 1}, - #ref{name = stream_error_bad_format, - min = 0, max = 1, label = '$reason'}, - #ref{name = stream_error_bad_namespace_prefix, - min = 0, max = 1, label = '$reason'}, - #ref{name = stream_error_conflict, - min = 0, max = 1, label = '$reason'}, - #ref{name = stream_error_connection_timeout, - min = 0, max = 1, label = '$reason'}, - #ref{name = stream_error_host_gone, - min = 0, max = 1, label = '$reason'}, - #ref{name = stream_error_host_unknown, - min = 0, max = 1, label = '$reason'}, - #ref{name = stream_error_improper_addressing, - min = 0, max = 1, label = '$reason'}, - #ref{name = stream_error_internal_server_error, - min = 0, max = 1, label = '$reason'}, - #ref{name = stream_error_invalid_from, - min = 0, max = 1, label = '$reason'}, - #ref{name = stream_error_invalid_id, - min = 0, max = 1, label = '$reason'}, - #ref{name = stream_error_invalid_namespace, - min = 0, max = 1, label = '$reason'}, - #ref{name = stream_error_invalid_xml, - min = 0, max = 1, label = '$reason'}, - #ref{name = stream_error_not_authorized, - min = 0, max = 1, label = '$reason'}, - #ref{name = stream_error_not_well_formed, - min = 0, max = 1, label = '$reason'}, - #ref{name = stream_error_policy_violation, - min = 0, max = 1, label = '$reason'}, - #ref{name = stream_error_remote_connection_failed, - min = 0, max = 1, label = '$reason'}, - #ref{name = stream_error_reset, - min = 0, max = 1, label = '$reason'}, - #ref{name = stream_error_resource_constraint, - min = 0, max = 1, label = '$reason'}, - #ref{name = stream_error_restricted_xml, - min = 0, max = 1, label = '$reason'}, - #ref{name = stream_error_see_other_host, - min = 0, max = 1, label = '$reason'}, - #ref{name = stream_error_system_shutdown, - min = 0, max = 1, label = '$reason'}, - #ref{name = stream_error_undefined_condition, - min = 0, max = 1, label = '$reason'}, - #ref{name = stream_error_unsupported_encoding, - min = 0, max = 1, label = '$reason'}, - #ref{name = stream_error_unsupported_stanza_type, - min = 0, max = 1, label = '$reason'}, - #ref{name = stream_error_unsupported_version, - min = 0, max = 1, label = '$reason'} - ]}). - --xml(vcard_HOME, #elem{name = <<"HOME">>, xmlns = <<"vcard-temp">>, result = true}). --xml(vcard_WORK, #elem{name = <<"WORK">>, xmlns = <<"vcard-temp">>, result = true}). --xml(vcard_VOICE, #elem{name = <<"VOICE">>, xmlns = <<"vcard-temp">>, result = true}). --xml(vcard_FAX, #elem{name = <<"FAX">>, xmlns = <<"vcard-temp">>, result = true}). --xml(vcard_PAGER, #elem{name = <<"PAGER">>, xmlns = <<"vcard-temp">>, result = true}). --xml(vcard_MSG, #elem{name = <<"MSG">>, xmlns = <<"vcard-temp">>, result = true}). --xml(vcard_CELL, #elem{name = <<"CELL">>, xmlns = <<"vcard-temp">>, result = true}). --xml(vcard_VIDEO, #elem{name = <<"VIDEO">>, xmlns = <<"vcard-temp">>, result = true}). --xml(vcard_BBS, #elem{name = <<"BBS">>, xmlns = <<"vcard-temp">>, result = true}). --xml(vcard_MODEM, #elem{name = <<"MODEM">>, xmlns = <<"vcard-temp">>, result = true}). --xml(vcard_ISDN, #elem{name = <<"ISDN">>, xmlns = <<"vcard-temp">>, result = true}). --xml(vcard_PCS, #elem{name = <<"PCS">>, xmlns = <<"vcard-temp">>, result = true}). --xml(vcard_POSTAL, #elem{name = <<"POSTAL">>, xmlns = <<"vcard-temp">>, result = true}). --xml(vcard_PARCEL, #elem{name = <<"PARCEL">>, xmlns = <<"vcard-temp">>, result = true}). --xml(vcard_DOM, #elem{name = <<"DOM">>, xmlns = <<"vcard-temp">>, result = true}). --xml(vcard_INTL, #elem{name = <<"INTL">>, xmlns = <<"vcard-temp">>, result = true}). --xml(vcard_PREF, #elem{name = <<"PREF">>, xmlns = <<"vcard-temp">>, result = true}). --xml(vcard_INTERNET, #elem{name = <<"INTERNET">>, xmlns = <<"vcard-temp">>, result = true}). --xml(vcard_X400, #elem{name = <<"X400">>, xmlns = <<"vcard-temp">>, result = true}). --xml(vcard_FAMILY, #elem{name = <<"FAMILY">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_GIVEN, #elem{name = <<"GIVEN">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_MIDDLE, #elem{name = <<"MIDDLE">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_PREFIX, #elem{name = <<"PREFIX">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_SUFFIX, #elem{name = <<"SUFFIX">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_POBOX, #elem{name = <<"POBOX">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_EXTADD, #elem{name = <<"EXTADD">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_STREET, #elem{name = <<"STREET">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_LOCALITY, #elem{name = <<"LOCALITY">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_REGION, #elem{name = <<"REGION">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_PCODE, #elem{name = <<"PCODE">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_CTRY, #elem{name = <<"CTRY">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_LINE, #elem{name = <<"LINE">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_NUMBER, #elem{name = <<"NUMBER">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_USERID, #elem{name = <<"USERID">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_LAT, #elem{name = <<"LAT">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_LON, #elem{name = <<"LON">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_ORGNAME, #elem{name = <<"ORGNAME">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_ORGUNIT, #elem{name = <<"ORGUNIT">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_PHONETIC, #elem{name = <<"PHONETIC">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_CRED, #elem{name = <<"CRED">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_VERSION, #elem{name = <<"VERSION">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_FN, #elem{name = <<"FN">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_NICKNAME, #elem{name = <<"NICKNAME">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_BDAY, #elem{name = <<"BDAY">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_JABBERID, #elem{name = <<"JABBERID">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_MAILER, #elem{name = <<"MAILER">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_TZ, #elem{name = <<"TZ">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_TITLE, #elem{name = <<"TITLE">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_ROLE, #elem{name = <<"ROLE">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_KEYWORD, #elem{name = <<"KEYWORD">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_NOTE, #elem{name = <<"NOTE">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_PRODID, #elem{name = <<"PRODID">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_REV, #elem{name = <<"REV">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_SORT_STRING, #elem{name = <<"SORT-STRING">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_UID, #elem{name = <<"UID">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_URL, #elem{name = <<"URL">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_DESC, #elem{name = <<"DESC">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_TYPE, #elem{name = <<"TYPE">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_EXTVAL, #elem{name = <<"EXTVAL">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). --xml(vcard_PUBLIC, #elem{name = <<"PUBLIC">>, xmlns = <<"vcard-temp">>, result = public}). --xml(vcard_PRIVATE, #elem{name = <<"PRIVATE">>, xmlns = <<"vcard-temp">>, result = private}). --xml(vcard_CONFIDENTIAL, #elem{name = <<"CONFIDENTIAL">>, xmlns = <<"vcard-temp">>, result = confidential}). - --xml(vcard_N, - #elem{name = <<"N">>, - xmlns = <<"vcard-temp">>, - result = {vcard_name, '$family', '$given', '$middle', - '$prefix', '$suffix'}, - refs = [#ref{name = vcard_FAMILY, min = 0, max = 1, label = '$family'}, - #ref{name = vcard_GIVEN, min = 0, max = 1, label = '$given'}, - #ref{name = vcard_MIDDLE, min = 0, max = 1, label = '$middle'}, - #ref{name = vcard_PREFIX, min = 0, max = 1, label = '$prefix'}, - #ref{name = vcard_SUFFIX, min = 0, max = 1, label = '$suffix'}]}). - --xml(vcard_ADR, - #elem{name = <<"ADR">>, - xmlns = <<"vcard-temp">>, - result = {vcard_adr, '$home', '$work', '$postal', '$parcel', - '$dom', '$intl', '$pref', '$pobox', '$extadd', '$street', - '$locality', '$region', '$pcode', '$ctry'}, - refs = [#ref{name = vcard_HOME, default = false, - min = 0, max = 1, label = '$home'}, - #ref{name = vcard_WORK, default = false, - min = 0, max = 1, label = '$work'}, - #ref{name = vcard_POSTAL, default = false, - min = 0, max = 1, label = '$postal'}, - #ref{name = vcard_PARCEL, default = false, - min = 0, max = 1, label = '$parcel'}, - #ref{name = vcard_DOM, default = false, - min = 0, max = 1, label = '$dom'}, - #ref{name = vcard_INTL, default = false, - min = 0, max = 1, label = '$intl'}, - #ref{name = vcard_PREF, default = false, - min = 0, max = 1, label = '$pref'}, - #ref{name = vcard_POBOX, min = 0, max = 1, label = '$pobox'}, - #ref{name = vcard_EXTADD, min = 0, max = 1, label = '$extadd'}, - #ref{name = vcard_STREET, min = 0, max = 1, label = '$street'}, - #ref{name = vcard_LOCALITY, min = 0, max = 1, label = '$locality'}, - #ref{name = vcard_REGION, min = 0, max = 1, label = '$region'}, - #ref{name = vcard_PCODE, min = 0, max = 1, label = '$pcode'}, - #ref{name = vcard_CTRY, min = 0, max = 1, label = '$ctry'}]}). - --xml(vcard_LABEL, - #elem{name = <<"LABEL">>, - xmlns = <<"vcard-temp">>, - result = {vcard_label, '$home', '$work', '$postal', '$parcel', - '$dom', '$intl', '$pref', '$line'}, - refs = [#ref{name = vcard_HOME, default = false, - min = 0, max = 1, label = '$home'}, - #ref{name = vcard_WORK, default = false, - min = 0, max = 1, label = '$work'}, - #ref{name = vcard_POSTAL, default = false, - min = 0, max = 1, label = '$postal'}, - #ref{name = vcard_PARCEL, default = false, - min = 0, max = 1, label = '$parcel'}, - #ref{name = vcard_DOM, default = false, - min = 0, max = 1, label = '$dom'}, - #ref{name = vcard_INTL, default = false, - min = 0, max = 1, label = '$intl'}, - #ref{name = vcard_PREF, default = false, - min = 0, max = 1, label = '$pref'}, - #ref{name = vcard_LINE, label = '$line'}]}). - --xml(vcard_TEL, - #elem{name = <<"TEL">>, - xmlns = <<"vcard-temp">>, - result = {vcard_tel, '$home', '$work', '$voice', '$fax', - '$pager', '$msg', '$cell', '$video', '$bbs', - '$modem', '$isdn', '$pcs', '$pref', '$number'}, - refs = [#ref{name = vcard_HOME, default = false, - min = 0, max = 1, label = '$home'}, - #ref{name = vcard_WORK, default = false, - min = 0, max = 1, label = '$work'}, - #ref{name = vcard_VOICE, default = false, - min = 0, max = 1, label = '$voice'}, - #ref{name = vcard_FAX, default = false, - min = 0, max = 1, label = '$fax'}, - #ref{name = vcard_PAGER, default = false, - min = 0, max = 1, label = '$pager'}, - #ref{name = vcard_MSG, default = false, - min = 0, max = 1, label = '$msg'}, - #ref{name = vcard_CELL, default = false, - min = 0, max = 1, label = '$cell'}, - #ref{name = vcard_VIDEO, default = false, - min = 0, max = 1, label = '$video'}, - #ref{name = vcard_BBS, default = false, - min = 0, max = 1, label = '$bbs'}, - #ref{name = vcard_MODEM, default = false, - min = 0, max = 1, label = '$modem'}, - #ref{name = vcard_ISDN, default = false, - min = 0, max = 1, label = '$isdn'}, - #ref{name = vcard_PCS, default = false, - min = 0, max = 1, label = '$pcs'}, - #ref{name = vcard_PREF, default = false, - min = 0, max = 1, label = '$pref'}, - #ref{name = vcard_NUMBER, - min = 0, max = 1, label = '$number'}]}). - --xml(vcard_EMAIL, - #elem{name = <<"EMAIL">>, - xmlns = <<"vcard-temp">>, - result = {vcard_email, '$home', '$work', - '$internet', '$pref', '$x400', '$userid'}, - refs = [#ref{name = vcard_HOME, default = false, - min = 0, max = 1, label = '$home'}, - #ref{name = vcard_WORK, default = false, - min = 0, max = 1, label = '$work'}, - #ref{name = vcard_INTERNET, default = false, - min = 0, max = 1, label = '$internet'}, - #ref{name = vcard_PREF, default = false, - min = 0, max = 1, label = '$pref'}, - #ref{name = vcard_X400, default = false, - min = 0, max = 1, label = '$x400'}, - #ref{name = vcard_USERID, - min = 0, max = 1, label = '$userid'}]}). - --xml(vcard_GEO, - #elem{name = <<"GEO">>, - xmlns = <<"vcard-temp">>, - result = {vcard_geo, '$lat', '$lon'}, - refs = [#ref{name = vcard_LAT, min = 0, max = 1, label = '$lat'}, - #ref{name = vcard_LON, min = 0, max = 1, label = '$lon'}]}). - --xml(vcard_BINVAL, - #elem{name = <<"BINVAL">>, - xmlns = <<"vcard-temp">>, - cdata = #cdata{dec = {base64, decode, []}, - enc = {base64, encode, []}}, - result = '$cdata'}). - --xml(vcard_LOGO, - #elem{name = <<"LOGO">>, - xmlns = <<"vcard-temp">>, - result = {vcard_logo, '$type', '$binval', '$extval'}, - refs = [#ref{name = vcard_TYPE, min = 0, max = 1, label = '$type'}, - #ref{name = vcard_BINVAL, min = 0, max = 1, label = '$binval'}, - #ref{name = vcard_EXTVAL, min = 0, max = 1, label = '$extval'}]}). - --xml(vcard_PHOTO, - #elem{name = <<"PHOTO">>, - xmlns = <<"vcard-temp">>, - result = {vcard_photo, '$type', '$binval', '$extval'}, - refs = [#ref{name = vcard_TYPE, min = 0, max = 1, label = '$type'}, - #ref{name = vcard_BINVAL, min = 0, max = 1, label = '$binval'}, - #ref{name = vcard_EXTVAL, min = 0, max = 1, label = '$extval'}]}). - --xml(vcard_ORG, - #elem{name = <<"ORG">>, - xmlns = <<"vcard-temp">>, - result = {vcard_org, '$name', '$units'}, - refs = [#ref{name = vcard_ORGNAME, - label = '$name', - min = 0, max = 1}, - #ref{name = vcard_ORGUNIT, - label = '$units'}]}). - --xml(vcard_SOUND, - #elem{name = <<"SOUND">>, - xmlns = <<"vcard-temp">>, - result = {vcard_sound, '$phonetic', '$binval', '$extval'}, - refs = [#ref{name = vcard_BINVAL, min = 0, max = 1, label = '$binval'}, - #ref{name = vcard_EXTVAL, min = 0, max = 1, label = '$extval'}, - #ref{name = vcard_PHONETIC, min = 0, max = 1, label = '$phonetic'}]}). - --xml(vcard_KEY, - #elem{name = <<"KEY">>, - xmlns = <<"vcard-temp">>, - result = {vcard_key, '$type', '$cred'}, - refs = [#ref{name = vcard_TYPE, min = 0, max = 1, label = '$type'}, - #ref{name = vcard_CRED, min = 0, max = 1, label = '$cred'}]}). - --xml(vcard_CATEGORIES, - #elem{name = <<"CATEGORIES">>, - xmlns = <<"vcard-temp">>, - result = '$keywords', - refs = [#ref{name = vcard_KEYWORD, label = '$keywords'}]}). - --xml(vcard_CLASS, - #elem{name = <<"CLASS">>, - xmlns = <<"vcard-temp">>, - result = '$class', - refs = [#ref{name = vcard_PUBLIC, min = 0, max = 1, label = '$class'}, - #ref{name = vcard_PRIVATE, min = 0, max = 1, label = '$class'}, - #ref{name = vcard_CONFIDENTIAL, min = 0, max = 1, label = '$class'}]}). - -%% {vcard_AGENT, -%% #elem{name = <<"AGENT">>, -%% xmlns = <<"vcard-temp">>, -%% result = {vcard_agent, '$vcard', '$extval'}, -%% refs = [#ref{name = vcard, min = 0, max = 1, label = '$vcard'}, -%% #ref{name = vcard_EXTVAL, min = 0, max = 1, label = '$extval'}]}). - --xml(vcard_temp, - #elem{name = <<"vCard">>, - xmlns = <<"vcard-temp">>, - result = {vcard_temp, '$version', '$fn', '$n', '$nickname', '$photo', - '$bday', '$adr', '$label', '$tel', '$email', '$jabberid', - '$mailer', '$tz', '$geo', '$title', '$role', '$logo', - '$org', '$categories', '$note', '$prodid', %% '$agent', - '$rev', '$sort_string', '$sound', '$uid', '$url', '$class', - '$key', '$desc'}, - refs = [#ref{name = vcard_N, min = 0, max = 1, label = '$n'}, - #ref{name = vcard_ADR, label = '$adr'}, - #ref{name = vcard_LABEL, label = '$label'}, - #ref{name = vcard_TEL, label = '$tel'}, - #ref{name = vcard_EMAIL, label = '$email'}, - #ref{name = vcard_GEO, min = 0, max = 1, label = '$geo'}, - #ref{name = vcard_LOGO, min = 0, max = 1, label = '$logo'}, - #ref{name = vcard_PHOTO, min = 0, max = 1, label = '$photo'}, - #ref{name = vcard_ORG, min = 0, max = 1, label = '$org'}, - #ref{name = vcard_SOUND, min = 0, max = 1, label = '$sound'}, - #ref{name = vcard_KEY, min = 0, max = 1, label = '$key'}, - #ref{name = vcard_VERSION, min = 0, max = 1, label = '$version'}, - #ref{name = vcard_FN, min = 0, max = 1, label = '$fn'}, - #ref{name = vcard_NICKNAME, min = 0, max = 1, label = '$nickname'}, - #ref{name = vcard_BDAY, min = 0, max = 1, label = '$bday'}, - #ref{name = vcard_JABBERID, min = 0, max = 1, label = '$jabberid'}, - #ref{name = vcard_MAILER, min = 0, max = 1, label = '$mailer'}, - #ref{name = vcard_TZ, min = 0, max = 1, label = '$tz'}, - #ref{name = vcard_TITLE, min = 0, max = 1, label = '$title'}, - #ref{name = vcard_ROLE, min = 0, max = 1, label = '$role'}, - #ref{name = vcard_NOTE, min = 0, max = 1, label = '$note'}, - #ref{name = vcard_PRODID, min = 0, max = 1, label = '$prodid'}, - #ref{name = vcard_REV, min = 0, max = 1, label = '$rev'}, - %%#ref{name = vcard_AGENT, min = 0, max = 1, label = '$agent'}, - #ref{name = vcard_SORT_STRING, min = 0, max = 1, - label = '$sort_string'}, - #ref{name = vcard_UID, min = 0, max = 1, label = '$uid'}, - #ref{name = vcard_URL, min = 0, max = 1, label = '$url'}, - #ref{name = vcard_DESC, min = 0, max = 1, label = '$desc'}, - #ref{name = vcard_CATEGORIES, default = [], min = 0, max = 1, - label = '$categories'}, - #ref{name = vcard_CLASS, min = 0, max = 1, label = '$class'}]}). - --xml(vcard_xupdate_photo, - #elem{name = <<"photo">>, - xmlns = <<"vcard-temp:x:update">>, - result = '$cdata'}). - --record(vcard_xupdate, {us = {<<>>, <<>>} :: {binary(), binary()}, - hash :: binary()}). --type vcard_xupdate() :: #vcard_xupdate{}. - --xml(vcard_xupdate, - #elem{name = <<"x">>, - xmlns = <<"vcard-temp:x:update">>, - result = {vcard_xupdate, '$_', '$hash'}, - refs = [#ref{name = vcard_xupdate_photo, min = 0, max = 1, - label = '$hash'}]}). - --xml(xdata_field_required, - #elem{name = <<"required">>, - xmlns = <<"jabber:x:data">>, - result = true}). - --xml(xdata_field_desc, - #elem{name = <<"desc">>, xmlns = <<"jabber:x:data">>, result = '$cdata'}). - --xml(xdata_field_value, - #elem{name = <<"value">>, xmlns = <<"jabber:x:data">>, result = '$cdata'}). - --xml(xdata_field_option, - #elem{name = <<"option">>, - xmlns = <<"jabber:x:data">>, - result = {xdata_option, '$label', '$value'}, - attrs = [#attr{name = <<"label">>}], - refs = [#ref{name = xdata_field_value, - label = '$value', - min = 1, max = 1}]}). - --xml(xdata_field, - #elem{name = <<"field">>, - xmlns = <<"jabber:x:data">>, - result = {xdata_field, '$label', '$type', '$var', - '$required', '$desc', '$values', '$options', '$_els'}, - attrs = [#attr{name = <<"label">>}, - #attr{name = <<"type">>, - enc = {enc_enum, []}, - dec = {dec_enum, [['boolean', - 'fixed', - 'hidden', - 'jid-multi', - 'jid-single', - 'list-multi', - 'list-single', - 'text-multi', - 'text-private', - 'text-single']]}}, - #attr{name = <<"var">>}], - refs = [#ref{name = xdata_field_required, - label = '$required', - default = false, - min = 0, max = 1}, - #ref{name = xdata_field_desc, - default = <<"">>, - label = '$desc', - min = 0, max = 1}, - #ref{name = xdata_field_value, - label = '$values'}, - #ref{name = xdata_field_option, - label = '$options'}]}). - --xml(xdata_instructions, #elem{name = <<"instructions">>, - xmlns = <<"jabber:x:data">>, - result = '$cdata'}). --xml(xdata_title, #elem{name = <<"title">>, - xmlns = <<"jabber:x:data">>, - result = '$cdata'}). --xml(xdata_reported, #elem{name = <<"reported">>, - xmlns = <<"jabber:x:data">>, - result = '$fields', - refs = [#ref{name = xdata_field, - label = '$fields'}]}). --xml(xdata_item, #elem{name = <<"item">>, - xmlns = <<"jabber:x:data">>, - result = '$fields', - refs = [#ref{name = xdata_field, - label = '$fields'}]}). - --xml(xdata, - #elem{name = <<"x">>, - xmlns = <<"jabber:x:data">>, - result = {xdata, '$type', '$instructions', '$title', - '$reported', '$items', '$fields'}, - attrs = [#attr{name = <<"type">>, - required = true, - dec = {dec_enum, [[cancel, form, result, submit]]}, - enc = {enc_enum, []}}], - refs = [#ref{name = xdata_instructions, - label = '$instructions'}, - #ref{name = xdata_title, - label = '$title', - min = 0, max = 1}, - #ref{name = xdata_reported, - label = '$reported', - min = 0, max = 1}, - #ref{name = xdata_item, - label = '$items'}, - #ref{name = xdata_field, - label = '$fields'}]}). - --xml(pubsub_subscription, - #elem{name = <<"subscription">>, - xmlns = [<<"http://jabber.org/protocol/pubsub">>, - <<"http://jabber.org/protocol/pubsub#owner">>, - <<"http://jabber.org/protocol/pubsub#event">>], - result = {ps_subscription, '$xmlns', '$jid', '$type', - '$node', '$subid', '$expiry'}, - attrs = [#attr{name = <<"xmlns">>}, - #attr{name = <<"jid">>, - required = true, - dec = {dec_jid, []}, - enc = {enc_jid, []}}, - #attr{name = <<"node">>}, - #attr{name = <<"subid">>}, - #attr{name = <<"subscription">>, - label = '$type', - dec = {dec_enum, [[none, pending, subscribed, - unconfigured]]}, - enc = {enc_enum, []}}, - #attr{name = <<"expiry">>, - dec = {dec_utc, []}, - enc = {enc_utc, []}}]}). - --record(ps_affiliation, {xmlns = <<>> :: binary(), - node = <<>> :: binary(), - type :: member | none | outcast | - owner | publisher | publish_only, - jid :: jid:jid()}). --type ps_affiliation() :: #ps_affiliation{}. - --xml(pubsub_affiliation, - #elem{name = <<"affiliation">>, - xmlns = <<"http://jabber.org/protocol/pubsub">>, - result = {ps_affiliation, '$xmlns', '$node', '$type', '$_'}, - attrs = [#attr{name = <<"node">>, required = true}, - #attr{name = <<"xmlns">>}, - #attr{name = <<"affiliation">>, - label = '$type', - required = true, - dec = {dec_ps_aff, []}, - enc = {enc_ps_aff, []}}]}). - --xml(pubsub_owner_affiliation, - #elem{name = <<"affiliation">>, - xmlns = <<"http://jabber.org/protocol/pubsub#owner">>, - result = {ps_affiliation, '$xmlns', '$_', '$type', '$jid'}, - attrs = [#attr{name = <<"jid">>, - required = true, - dec = {dec_jid, []}, - enc = {enc_jid, []}}, - #attr{name = <<"xmlns">>}, - #attr{name = <<"affiliation">>, - label = '$type', - required = true, - dec = {dec_ps_aff, []}, - enc = {enc_ps_aff, []}}]}). - --xml(pubsub_event_configuration, - #elem{name = <<"configuration">>, - xmlns = <<"http://jabber.org/protocol/pubsub#event">>, - result = {'$node', '$xdata'}, - attrs = [#attr{name = <<"node">>, required = true}], - refs = [#ref{name = xdata, min = 0, max = 1}]}). - --xml(pubsub_event_retract, - #elem{name = <<"retract">>, - xmlns = <<"http://jabber.org/protocol/pubsub#event">>, - result = '$id', - attrs = [#attr{name = <<"id">>, required = true}]}). - --xml(pubsub_item, - #elem{name = <<"item">>, - xmlns = [<<"http://jabber.org/protocol/pubsub">>, - <<"http://jabber.org/protocol/pubsub#event">>], - result = {ps_item, '$xmlns', '$id', '$_xmls', '$node', '$publisher'}, - attrs = [#attr{name = <<"id">>}, - #attr{name = <<"xmlns">>}, - #attr{name = <<"node">>}, - #attr{name = <<"publisher">>}]}). - --xml(pubsub_items, - #elem{name = <<"items">>, - xmlns = [<<"http://jabber.org/protocol/pubsub">>, - <<"http://jabber.org/protocol/pubsub#event">>], - result = {ps_items, '$xmlns', '$node', '$items', '$max_items', - '$subid', '$retract'}, - attrs = [#attr{name = <<"xmlns">>}, - #attr{name = <<"max_items">>, - dec = {dec_int, [0, infinity]}, - enc = {enc_int, []}}, - #attr{name = <<"node">>, - required = true}, - #attr{name = <<"subid">>}], - refs = [#ref{name = pubsub_event_retract, label = '$retract', - min = 0, max = 1}, - #ref{name = pubsub_item, label = '$items'}]}). - --xml(pubsub_event, - #elem{name = <<"event">>, - xmlns = <<"http://jabber.org/protocol/pubsub#event">>, - result = {ps_event, '$items', '$purge', '$subscription', '$delete', - '$create', '$configuration'}, - refs = [#ref{name = pubsub_items, label = '$items', - min = 0, max = 1}, - #ref{name = pubsub_subscription, min = 0, max = 1, - label = '$subscription'}, - #ref{name = pubsub_purge, min = 0, max = 1, - label = '$purge'}, - #ref{name = pubsub_delete, min = 0, max = 1, - label = '$delete'}, - #ref{name = pubsub_create, min = 0, max = 1, - label = '$create'}, - #ref{name = pubsub_event_configuration, min = 0, max = 1, - label = '$configuration'}]}). - --xml(pubsub_subscriptions, - #elem{name = <<"subscriptions">>, - xmlns = [<<"http://jabber.org/protocol/pubsub">>, - <<"http://jabber.org/protocol/pubsub#owner">>], - result = {'$node', '$subscriptions'}, - attrs = [#attr{name = <<"node">>}], - refs = [#ref{name = pubsub_subscription, label = '$subscriptions'}]}). - --xml(pubsub_affiliations, - #elem{name = <<"affiliations">>, - xmlns = <<"http://jabber.org/protocol/pubsub">>, - result = {'$node', '$affiliations'}, - attrs = [#attr{name = <<"node">>}], - refs = [#ref{name = pubsub_affiliation, label = '$affiliations'}]}). - --xml(pubsub_owner_affiliations, - #elem{name = <<"affiliations">>, - xmlns = <<"http://jabber.org/protocol/pubsub#owner">>, - result = {'$node', '$affiliations'}, - attrs = [#attr{name = <<"node">>}], - refs = [#ref{name = pubsub_owner_affiliation, label = '$affiliations'}]}). - --xml(pubsub_subscribe, - #elem{name = <<"subscribe">>, - xmlns = <<"http://jabber.org/protocol/pubsub">>, - result = {ps_subscribe, '$node', '$jid'}, - attrs = [#attr{name = <<"node">>}, - #attr{name = <<"jid">>, - required = true, - dec = {dec_jid, []}, - enc = {enc_jid, []}}]}). - --xml(pubsub_unsubscribe, - #elem{name = <<"unsubscribe">>, - xmlns = <<"http://jabber.org/protocol/pubsub">>, - result = {ps_unsubscribe, '$node', '$jid', '$subid'}, - attrs = [#attr{name = <<"node">>}, - #attr{name = <<"subid">>}, - #attr{name = <<"jid">>, - required = true, - dec = {dec_jid, []}, - enc = {enc_jid, []}}]}). - --xml(pubsub_publish, - #elem{name = <<"publish">>, - xmlns = <<"http://jabber.org/protocol/pubsub">>, - result = {ps_publish, '$node', '$items'}, - attrs = [#attr{name = <<"node">>, - required = true}], - refs = [#ref{name = pubsub_item, label = '$items'}]}). - --xml(pubsub_options, - #elem{name = <<"options">>, - xmlns = <<"http://jabber.org/protocol/pubsub">>, - result = {ps_options, '$node', '$jid', '$subid', '$xdata'}, - attrs = [#attr{name = <<"node">>}, - #attr{name = <<"subid">>}, - #attr{name = <<"jid">>, - required = true, - dec = {dec_jid, []}, - enc = {enc_jid, []}}], - refs = [#ref{name = xdata, min = 0, max = 1, - label = '$xdata'}]}). - --xml(pubsub_retract, - #elem{name = <<"retract">>, - xmlns = <<"http://jabber.org/protocol/pubsub">>, - result = {ps_retract, '$node', '$notify', '$items'}, - attrs = [#attr{name = <<"node">>, - required = true}, - #attr{name = <<"notify">>, - default = false, - dec = {dec_bool, []}, - enc = {enc_bool, []}}], - refs = [#ref{name = pubsub_item, label = '$items'}]}). - --xml(pubsub_create, - #elem{name = <<"create">>, - xmlns = [<<"http://jabber.org/protocol/pubsub">>, - <<"http://jabber.org/protocol/pubsub#event">>], - result = '$node', - attrs = [#attr{name = <<"node">>}]}). - --xml(pubsub_configure, - #elem{name = <<"configure">>, - xmlns = [<<"http://jabber.org/protocol/pubsub">>, - <<"http://jabber.org/protocol/pubsub#owner">>], - result = {'$node', '$xdata'}, - attrs = [#attr{name = <<"node">>}], - refs = [#ref{name = xdata, min = 0, max = 1}]}). - --xml(pubsub_publish_options, - #elem{name = <<"publish-options">>, - xmlns = <<"http://jabber.org/protocol/pubsub">>, - result = '$xdata', - refs = [#ref{name = xdata, min = 0, max = 1}]}). - --xml(pubsub_default, - #elem{name = <<"default">>, - xmlns = [<<"http://jabber.org/protocol/pubsub">>, - <<"http://jabber.org/protocol/pubsub#owner">>], - result = {'$node', '$xdata'}, - attrs = [#attr{name = <<"node">>}], - refs = [#ref{name = xdata, min = 0, max = 1}]}). - --xml(pubsub_redirect, - #elem{name = <<"redirect">>, - xmlns = [<<"http://jabber.org/protocol/pubsub">>, - <<"http://jabber.org/protocol/pubsub#owner">>, - <<"http://jabber.org/protocol/pubsub#event">>], - result = '$uri', - attrs = [#attr{name = <<"uri">>, required = true}]}). - --xml(pubsub_delete, - #elem{name = <<"delete">>, - xmlns = [<<"http://jabber.org/protocol/pubsub">>, - <<"http://jabber.org/protocol/pubsub#owner">>, - <<"http://jabber.org/protocol/pubsub#event">>], - result = {'$node', '$uri'}, - attrs = [#attr{name = <<"node">>, required = true}], - refs = [#ref{name = pubsub_redirect, min = 0, max = 1, - label = '$uri', default = <<>>}]}). - --xml(pubsub_purge, - #elem{name = <<"purge">>, - xmlns = [<<"http://jabber.org/protocol/pubsub">>, - <<"http://jabber.org/protocol/pubsub#owner">>, - <<"http://jabber.org/protocol/pubsub#event">>], - result = '$node', - attrs = [#attr{name = <<"node">>, required = true}]}). - --xml(pubsub, - #elem{name = <<"pubsub">>, - xmlns = <<"http://jabber.org/protocol/pubsub">>, - result = {pubsub, '$subscriptions', '$subscription', - '$affiliations', '$publish', '$publish_options', - '$subscribe', '$unsubscribe', '$options', '$items', - '$retract', '$create', '$configure', '$default', '$delete', - '$purge', '$rsm'}, - refs = [#ref{name = pubsub_subscriptions, label = '$subscriptions', - min = 0, max = 1}, - #ref{name = pubsub_affiliations, label = '$affiliations', - min = 0, max = 1}, - #ref{name = pubsub_subscribe, label = '$subscribe', - min = 0, max = 1}, - #ref{name = pubsub_unsubscribe, label = '$unsubscribe', - min = 0, max = 1}, - #ref{name = pubsub_options, label = '$options', - min = 0, max = 1}, - #ref{name = pubsub_items, label = '$items', - min = 0, max = 1}, - #ref{name = pubsub_retract, label = '$retract', - min = 0, max = 1}, - #ref{name = pubsub_create, label = '$create', - min = 0, max = 1}, - #ref{name = pubsub_configure, label = '$configure', - min = 0, max = 1}, - #ref{name = pubsub_publish_options, min = 0, max = 1, - label = '$publish_options'}, - #ref{name = pubsub_default, label = '$default', - min = 0, max = 1}, - #ref{name = pubsub_delete, label = '$delete', - min = 0, max = 1}, - #ref{name = pubsub_purge, label = '$purge', - min = 0, max = 1}, - #ref{name = pubsub_subscription, label = '$subscription', - min = 0, max = 1}, - #ref{name = rsm_set, min = 0, max = 1, label = '$rsm'}, - #ref{name = pubsub_publish, label = '$publish', - min = 0, max = 1}]}). - --xml(pubsub_owner, - #elem{name = <<"pubsub">>, - xmlns = <<"http://jabber.org/protocol/pubsub#owner">>, - result = {pubsub_owner, '$affiliations', '$configure', '$default', - '$delete', '$purge', '$subscriptions'}, - refs = [#ref{name = pubsub_owner_affiliations, - label = '$affiliations', min = 0, max = 1}, - #ref{name = pubsub_configure, label = '$configure', - min = 0, max = 1}, - #ref{name = pubsub_default, label = '$default', - min = 0, max = 1}, - #ref{name = pubsub_delete, label = '$delete', - min = 0, max = 1}, - #ref{name = pubsub_purge, label = '$purge', - min = 0, max = 1}, - #ref{name = pubsub_subscriptions, - label = '$subscriptions', min = 0, max = 1}]}). - --type ps_error_type() :: 'closed-node' | 'configuration-required' | - 'invalid-jid' | 'invalid-options' | - 'invalid-payload' | 'invalid-subid' | - 'item-forbidden' | 'item-required' | 'jid-required' | - 'max-items-exceeded' | 'max-nodes-exceeded' | - 'nodeid-required' | 'not-in-roster-group' | - 'not-subscribed' | 'payload-too-big' | - 'payload-required' | 'pending-subscription' | - 'presence-subscription-required' | 'subid-required' | - 'too-many-subscriptions' | 'unsupported' | - 'unsupported-access-model'. --type ps_feature() :: 'access-authorize' | 'access-open' | - 'access-presence' | 'access-roster' | - 'access-whitelist' | 'auto-create' | - 'auto-subscribe' | 'collections' | 'config-node' | - 'create-and-configure' | 'create-nodes' | - 'delete-items' | 'delete-nodes' | - 'filtered-notifications' | 'get-pending' | - 'instant-nodes' | 'item-ids' | 'last-published' | - 'leased-subscription' | 'manage-subscriptions' | - 'member-affiliation' | 'meta-data' | - 'modify-affiliations' | 'multi-collection' | - 'multi-subscribe' | 'outcast-affiliation' | - 'persistent-items' | 'presence-notifications' | - 'presence-subscribe' | 'publish' | - 'publish-options' | 'publish-only-affiliation' | - 'publisher-affiliation' | 'purge-nodes' | - 'retract-items' | 'retrieve-affiliations' | - 'retrieve-default' | 'retrieve-items' | - 'retrieve-subscriptions' | 'subscribe' | - 'subscription-options' | 'subscription-notifications'. --record(ps_error, {type :: ps_error_type(), feature :: ps_feature()}). --type ps_error() :: #ps_error{}. - --xml(pubsub_error_closed_node, - #elem{name = <<"closed-node">>, - xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, - result = {ps_error, 'closed-node', '$_'}}). --xml(pubsub_error_configuration_required, - #elem{name = <<"configuration-required">>, - xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, - result = {ps_error, 'configuration-required', '$_'}}). --xml(pubsub_error_invalid_jid, - #elem{name = <<"invalid-jid">>, - xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, - result = {ps_error, 'invalid-jid', '$_'}}). --xml(pubsub_error_invalid_options, - #elem{name = <<"invalid-options">>, - xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, - result = {ps_error, 'invalid-options', '$_'}}). --xml(pubsub_error_invalid_payload, - #elem{name = <<"invalid-payload">>, - xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, - result = {ps_error, 'invalid-payload', '$_'}}). --xml(pubsub_error_invalid_subid, - #elem{name = <<"invalid-subid">>, - xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, - result = {ps_error, 'invalid-subid', '$_'}}). --xml(pubsub_error_item_forbidden, - #elem{name = <<"item-forbidden">>, - xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, - result = {ps_error, 'item-forbidden', '$_'}}). --xml(pubsub_error_item_required, - #elem{name = <<"item-required">>, - xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, - result = {ps_error, 'item-required', '$_'}}). --xml(pubsub_error_jid_required, - #elem{name = <<"jid-required">>, - xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, - result = {ps_error, 'jid-required', '$_'}}). --xml(pubsub_error_max_items_exceeded, - #elem{name = <<"max-items-exceeded">>, - xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, - result = {ps_error, 'max-items-exceeded', '$_'}}). --xml(pubsub_error_max_nodes_exceeded, - #elem{name = <<"max-nodes-exceeded">>, - xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, - result = {ps_error, 'max-nodes-exceeded', '$_'}}). --xml(pubsub_error_nodeid_required, - #elem{name = <<"nodeid-required">>, - xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, - result = {ps_error, 'nodeid-required', '$_'}}). --xml(pubsub_error_not_in_roster_group, - #elem{name = <<"not-in-roster-group">>, - xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, - result = {ps_error, 'not-in-roster-group', '$_'}}). --xml(pubsub_error_not_subscribed, - #elem{name = <<"not-subscribed">>, - xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, - result = {ps_error, 'not-subscribed', '$_'}}). --xml(pubsub_error_payload_too_big, - #elem{name = <<"payload-too-big">>, - xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, - result = {ps_error, 'payload-too-big', '$_'}}). --xml(pubsub_error_payload_required, - #elem{name = <<"payload-required">>, - xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, - result = {ps_error, 'payload-required', '$_'}}). --xml(pubsub_error_pending_subscription, - #elem{name = <<"pending-subscription">>, - xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, - result = {ps_error, 'pending-subscription', '$_'}}). --xml(pubsub_error_presence_subscription_required, - #elem{name = <<"presence-subscription-required">>, - xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, - result = {ps_error, 'presence-subscription-required', '$_'}}). --xml(pubsub_error_subid_required, - #elem{name = <<"subid-required">>, - xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, - result = {ps_error, 'subid-required', '$_'}}). --xml(pubsub_error_too_many_subscriptions, - #elem{name = <<"too-many-subscriptions">>, - xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, - result = {ps_error, 'too-many-subscriptions', '$_'}}). --xml(pubsub_error_unsupported, - #elem{name = <<"unsupported">>, - xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, - result = {ps_error, 'unsupported', '$feature'}, - attrs = [#attr{name = <<"feature">>, required = true, - dec = {dec_enum, [['access-authorize', - 'access-open', - 'access-presence', - 'access-roster', - 'access-whitelist', - 'auto-create', - 'auto-subscribe', - 'collections', - 'config-node', - 'create-and-configure', - 'create-nodes', - 'delete-items', - 'delete-nodes', - 'filtered-notifications', - 'get-pending', - 'instant-nodes', - 'item-ids', - 'last-published', - 'leased-subscription', - 'manage-subscriptions', - 'member-affiliation', - 'meta-data', - 'modify-affiliations', - 'multi-collection', - 'multi-subscribe', - 'outcast-affiliation', - 'persistent-items', - 'presence-notifications', - 'presence-subscribe', - 'publish', - 'publish-options', - 'publish-only-affiliation', - 'publisher-affiliation', - 'purge-nodes', - 'retract-items', - 'retrieve-affiliations', - 'retrieve-default', - 'retrieve-items', - 'retrieve-subscriptions', - 'subscribe', - 'subscription-options', - 'subscription-notifications']]}, - enc = {enc_enum, []}}]}). --xml(pubsub_error_unsupported_access_model, - #elem{name = <<"unsupported-access-model">>, - xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, - result = {ps_error, 'unsupported-access-model', '$_'}}). - --xml(shim_header, - #elem{name = <<"header">>, - xmlns = <<"http://jabber.org/protocol/shim">>, - result = {'$name', '$cdata'}, - attrs = [#attr{name = <<"name">>, - required = true}]}). - --xml(shim_headers, - #elem{name = <<"headers">>, - xmlns = <<"http://jabber.org/protocol/shim">>, - result = {shim, '$headers'}, - refs = [#ref{name = shim_header, label = '$headers'}]}). - --record(chatstate, {type :: active | composing | gone | inactive | paused}). --type chatstate() :: #chatstate{}. - --xml(chatstate_active, - #elem{name = <<"active">>, - xmlns = <<"http://jabber.org/protocol/chatstates">>, - result = {chatstate, active}}). - --xml(chatstate_composing, - #elem{name = <<"composing">>, - xmlns = <<"http://jabber.org/protocol/chatstates">>, - result = {chatstate, composing}}). - --xml(chatstate_gone, - #elem{name = <<"gone">>, - xmlns = <<"http://jabber.org/protocol/chatstates">>, - result = {chatstate, gone}}). - --xml(chatstate_inactive, - #elem{name = <<"inactive">>, - xmlns = <<"http://jabber.org/protocol/chatstates">>, - result = {chatstate, inactive}}). - --xml(chatstate_paused, - #elem{name = <<"paused">>, - xmlns = <<"http://jabber.org/protocol/chatstates">>, - result = {chatstate, paused}}). - --xml(delay, - #elem{name = <<"delay">>, - xmlns = <<"urn:xmpp:delay">>, - result = {delay, '$stamp', '$from', '$desc'}, - cdata = #cdata{label = '$desc', default = <<"">>}, - attrs = [#attr{name = <<"stamp">>, - required = true, - dec = {dec_utc, []}, - enc = {enc_utc, []}}, - #attr{name = <<"from">>, - dec = {dec_jid, []}, - enc = {enc_jid, []}}]}). - --xml(bytestreams_streamhost, - #elem{name = <<"streamhost">>, - xmlns = <<"http://jabber.org/protocol/bytestreams">>, - result = {streamhost, '$jid', '$host', '$port'}, - attrs = [#attr{name = <<"jid">>, - required = true, - dec = {dec_jid, []}, - enc = {enc_jid, []}}, - #attr{name = <<"host">>, - required = true}, - #attr{name = <<"port">>, - default = 1080, - dec = {dec_int, [0, 65535]}, - enc = {enc_int, []}}]}). - --xml(bytestreams_streamhost_used, - #elem{name = <<"streamhost-used">>, - xmlns = <<"http://jabber.org/protocol/bytestreams">>, - result = '$jid', - attrs = [#attr{name = <<"jid">>, - required = true, - dec = {dec_jid, []}, - enc = {enc_jid, []}}]}). - --xml(bytestreams_activate, - #elem{name = <<"activate">>, - xmlns = <<"http://jabber.org/protocol/bytestreams">>, - cdata = #cdata{enc = {enc_jid, []}, dec = {dec_jid, []}}, - result = '$cdata'}). - --xml(bytestreams, - #elem{name = <<"query">>, - xmlns = <<"http://jabber.org/protocol/bytestreams">>, - result = {bytestreams, '$hosts', '$used', '$activate', - '$dstaddr', '$mode', '$sid'}, - attrs = [#attr{name = <<"dstaddr">>}, - #attr{name = <<"sid">>}, - #attr{name = <<"mode">>, - default = tcp, - dec = {dec_enum, [[tcp, udp]]}, - enc = {enc_enum, []}}], - refs = [#ref{name = bytestreams_streamhost, label = '$hosts'}, - #ref{name = bytestreams_streamhost_used, - min = 0, max = 1, label = '$used'}, - #ref{name = bytestreams_activate, - min = 0, max = 1, label = '$activate'}]}). - --xml(muc_history, - #elem{name = <<"history">>, - xmlns = <<"http://jabber.org/protocol/muc">>, - result = {muc_history, '$maxchars', '$maxstanzas', - '$seconds', '$since'}, - attrs = [#attr{name = <<"maxchars">>, - dec = {dec_int, [0, infinity]}, - enc = {enc_int, []}}, - #attr{name = <<"maxstanzas">>, - dec = {dec_int, [0, infinity]}, - enc = {enc_int, []}}, - #attr{name = <<"seconds">>, - dec = {dec_int, [0, infinity]}, - enc = {enc_int, []}}, - #attr{name = <<"since">>, - dec = {dec_utc, []}, - enc = {enc_utc, []}}]}). - --xml(muc_reason, - #elem{name = <<"reason">>, - xmlns = [<<"http://jabber.org/protocol/muc#user">>, - <<"http://jabber.org/protocol/muc#admin">>, - <<"http://jabber.org/protocol/muc#owner">>], - result = '$cdata'}). - --xml(muc_user_decline, - #elem{name = <<"decline">>, - xmlns = <<"http://jabber.org/protocol/muc#user">>, - result = {muc_decline, '$reason', '$from', '$to'}, - attrs = [#attr{name = <<"to">>, - dec = {dec_jid, []}, - enc = {enc_jid, []}}, - #attr{name = <<"from">>, - dec = {dec_jid, []}, - enc = {enc_jid, []}}], - refs = [#ref{name = muc_reason, min = 0, - default = <<"">>, - max = 1, label = '$reason'}]}). - --xml(muc_destroy, - #elem{name = <<"destroy">>, - xmlns = [<<"http://jabber.org/protocol/muc#user">>, - <<"http://jabber.org/protocol/muc#owner">>], - result = {muc_destroy, '$xmlns', '$jid', '$reason', '$password'}, - attrs = [#attr{name = <<"jid">>, - dec = {dec_jid, []}, - enc = {enc_jid, []}}, - #attr{name = <<"xmlns">>}], - refs = [#ref{name = muc_reason, min = 0, - default = <<"">>, - max = 1, label = '$reason'}, - #ref{name = muc_password, min = 0, max = 1, - label = '$password'}]}). - --xml(muc_user_invite, - #elem{name = <<"invite">>, - xmlns = <<"http://jabber.org/protocol/muc#user">>, - result = {muc_invite, '$reason', '$from', '$to', '$continue'}, - attrs = [#attr{name = <<"to">>, - dec = {dec_jid, []}, - enc = {enc_jid, []}}, - #attr{name = <<"from">>, - dec = {dec_jid, []}, - enc = {enc_jid, []}}], - refs = [#ref{name = muc_reason, min = 0, default = <<"">>, - max = 1, label = '$reason'}, - #ref{name = muc_user_continue, min = 0, max = 1, - label = '$continue'}]}). - --xml(muc_user_actor, - #elem{name = <<"actor">>, - xmlns = <<"http://jabber.org/protocol/muc#user">>, - result = {muc_actor, '$jid', '$nick'}, - attrs = [#attr{name = <<"jid">>, - dec = {dec_jid, []}, - enc = {enc_jid, []}}, - #attr{name = <<"nick">>}]}). - --xml(muc_user_continue, - #elem{name = <<"continue">>, - xmlns = <<"http://jabber.org/protocol/muc#user">>, - result = '$thread', - attrs = [#attr{name = <<"thread">>}]}). - --xml(muc_user_status, - #elem{name = <<"status">>, - xmlns = <<"http://jabber.org/protocol/muc#user">>, - result = '$code', - attrs = [#attr{name = <<"code">>, - dec = {dec_int, [100, 999]}, - enc = {enc_int, []}}]}). - --xml(muc_user_item, - #elem{name = <<"item">>, - xmlns = <<"http://jabber.org/protocol/muc#user">>, - result = {muc_item, '$actor', '$continue', '$reason', - '$affiliation', '$role', '$jid', '$nick'}, - refs = [#ref{name = muc_user_actor, - min = 0, max = 1, label = '$actor'}, - #ref{name = muc_user_continue, - min = 0, max = 1, label = '$continue'}, - #ref{name = muc_reason, default = <<"">>, - min = 0, max = 1, label = '$reason'}], - attrs = [#attr{name = <<"affiliation">>, - dec = {dec_enum, [[admin, member, none, - outcast, owner]]}, - enc = {enc_enum, []}}, - #attr{name = <<"role">>, - dec = {dec_enum, [[moderator, none, - participant, visitor]]}, - enc = {enc_enum, []}}, - #attr{name = <<"jid">>, - dec = {dec_jid, []}, - enc = {enc_jid, []}}, - #attr{name = <<"nick">>}]}). - --xml(muc_user, - #elem{name = <<"x">>, - xmlns = <<"http://jabber.org/protocol/muc#user">>, - result = {muc_user, '$decline', '$destroy', '$invites', - '$items', '$status_codes', '$password'}, - refs = [#ref{name = muc_user_decline, min = 0, - max = 1, label = '$decline'}, - #ref{name = muc_destroy, min = 0, max = 1, - label = '$destroy'}, - #ref{name = muc_password, min = 0, max = 1, - label = '$password'}, - #ref{name = muc_user_invite, label = '$invites'}, - #ref{name = muc_user_item, label = '$items'}, - #ref{name = muc_user_status, label = '$status_codes'}]}). - --xml(muc_password, - #elem{name = <<"password">>, - xmlns = [<<"http://jabber.org/protocol/muc#owner">>, - <<"http://jabber.org/protocol/muc#user">>, - <<"http://jabber.org/protocol/muc">>], - result = '$cdata'}). - --xml(muc_owner, - #elem{name = <<"query">>, - xmlns = <<"http://jabber.org/protocol/muc#owner">>, - result = {muc_owner, '$destroy', '$config', '$items'}, - refs = [#ref{name = muc_destroy, min = 0, max = 1, - label = '$destroy'}, - #ref{name = xdata, min = 0, max = 1, - label = '$config'}, - #ref{name = muc_owner_item, label = '$items'}]}). - --xml(muc_owner_item, - #elem{name = <<"item">>, - xmlns = <<"http://jabber.org/protocol/muc#owner">>, - result = {muc_item, '$actor', '$continue', '$reason', - '$affiliation', '$role', '$jid', '$nick'}, - refs = [#ref{name = muc_admin_actor, - min = 0, max = 1, label = '$actor'}, - #ref{name = muc_admin_continue, - min = 0, max = 1, label = '$continue'}, - #ref{name = muc_reason, default = <<"">>, - min = 0, max = 1, label = '$reason'}], - attrs = [#attr{name = <<"affiliation">>, - dec = {dec_enum, [[admin, member, none, - outcast, owner]]}, - enc = {enc_enum, []}}, - #attr{name = <<"role">>, - dec = {dec_enum, [[moderator, none, - participant, visitor]]}, - enc = {enc_enum, []}}, - #attr{name = <<"jid">>, - dec = {dec_jid, []}, - enc = {enc_jid, []}}, - #attr{name = <<"nick">>}]}). - --xml(muc_admin_item, - #elem{name = <<"item">>, - xmlns = <<"http://jabber.org/protocol/muc#admin">>, - result = {muc_item, '$actor', '$continue', '$reason', - '$affiliation', '$role', '$jid', '$nick'}, - refs = [#ref{name = muc_admin_actor, - min = 0, max = 1, label = '$actor'}, - #ref{name = muc_admin_continue, - min = 0, max = 1, label = '$continue'}, - #ref{name = muc_reason, default = <<"">>, - min = 0, max = 1, label = '$reason'}], - attrs = [#attr{name = <<"affiliation">>, - dec = {dec_enum, [[admin, member, none, - outcast, owner]]}, - enc = {enc_enum, []}}, - #attr{name = <<"role">>, - dec = {dec_enum, [[moderator, none, - participant, visitor]]}, - enc = {enc_enum, []}}, - #attr{name = <<"jid">>, - dec = {dec_jid, []}, - enc = {enc_jid, []}}, - #attr{name = <<"nick">>}]}). - --xml(muc_admin_actor, - #elem{name = <<"actor">>, - xmlns = <<"http://jabber.org/protocol/muc#admin">>, - result = {muc_actor, '$jid', '$nick'}, - attrs = [#attr{name = <<"jid">>, - dec = {dec_jid, []}, - enc = {enc_jid, []}}, - #attr{name = <<"nick">>}]}). - --xml(muc_admin_continue, - #elem{name = <<"continue">>, - xmlns = <<"http://jabber.org/protocol/muc#admin">>, - result = '$thread', - attrs = [#attr{name = <<"thread">>}]}). - --xml(muc_admin, - #elem{name = <<"query">>, - xmlns = <<"http://jabber.org/protocol/muc#admin">>, - result = {muc_admin, '$items'}, - refs = [#ref{name = muc_admin_item, label = '$items'}]}). - --xml(muc, - #elem{name = <<"x">>, - xmlns = <<"http://jabber.org/protocol/muc">>, - result = {muc, '$history', '$password'}, - refs = [#ref{name = muc_history, min = 0, max = 1, - label = '$history'}, - #ref{name = muc_password, min = 0, max = 1, - label = '$password'}]}). - --xml(muc_unique, - #elem{name = <<"unique">>, - xmlns = <<"http://jabber.org/protocol/muc#unique">>, - result = {muc_unique, '$name'}, - cdata = #cdata{default = <<"">>, - label = '$name'}}). - --xml(x_conference, - #elem{name = <<"x">>, - xmlns = <<"jabber:x:conference">>, - result = {x_conference, '$jid', '$password', '$reason', - '$continue', '$thread'}, - attrs = [#attr{name = <<"jid">>, - required = true, - dec = {dec_jid, []}, - enc = {enc_jid, []}}, - #attr{name = <<"password">>, default = <<"">>}, - #attr{name = <<"reason">>, default = <<"">>}, - #attr{name = <<"thread">>, default = <<"">>}, - #attr{name = <<"continue">>, - dec = {dec_bool, []}, - enc = {enc_bool, []}}]}). - --xml(muc_subscription, - #elem{name = <<"subscription">>, - xmlns = <<"urn:xmpp:mucsub:0">>, - result = '$jid', - attrs = [#attr{name = <<"jid">>, - required = true, - dec = {dec_jid, []}, - enc = {enc_jid, []}}]}). - --xml(muc_subscriptions, - #elem{name = <<"subscriptions">>, - xmlns = <<"urn:xmpp:mucsub:0">>, - result = {muc_subscriptions, '$list'}, - refs = [#ref{name = muc_subscription, label = '$list'}]}). - --xml(muc_subscribe_event, - #elem{name = <<"event">>, - xmlns = <<"urn:xmpp:mucsub:0">>, - result = '$node', - attrs = [#attr{name = <<"node">>, required = true}]}). - --xml(muc_subscribe, - #elem{name = <<"subscribe">>, - xmlns = <<"urn:xmpp:mucsub:0">>, - result = {muc_subscribe, '$nick', '$events'}, - attrs = [#attr{name = <<"nick">>, required = true}], - refs = [#ref{name = muc_subscribe_event, label = '$events'}]}). - --xml(muc_unsubscribe, - #elem{name = <<"unsubscribe">>, - xmlns = <<"urn:xmpp:mucsub:0">>, - result = {muc_unsubscribe}}). - --xml(rsm_after, - #elem{name = <<"after">>, - xmlns = <<"http://jabber.org/protocol/rsm">>, - result = '$cdata'}). - --xml(rsm_before, - #elem{name = <<"before">>, - xmlns = <<"http://jabber.org/protocol/rsm">>, - cdata = #cdata{default = <<"">>}, - result = '$cdata'}). - --xml(rsm_last, - #elem{name = <<"last">>, - xmlns = <<"http://jabber.org/protocol/rsm">>, - result = '$cdata'}). - --xml(rsm_count, - #elem{name = <<"count">>, result = '$cdata', - xmlns = <<"http://jabber.org/protocol/rsm">>, - cdata = #cdata{dec = {dec_int, [0, infinity]}, - enc = {enc_int, []}}}). - --xml(rsm_index, - #elem{name = <<"index">>, result = '$cdata', - xmlns = <<"http://jabber.org/protocol/rsm">>, - cdata = #cdata{dec = {dec_int, [0, infinity]}, - enc = {enc_int, []}}}). - --xml(rsm_max, - #elem{name = <<"max">>, result = '$cdata', - xmlns = <<"http://jabber.org/protocol/rsm">>, - cdata = #cdata{dec = {dec_int, [0, infinity]}, - enc = {enc_int, []}}}). - --xml(rsm_first, - #elem{name = <<"first">>, - xmlns = <<"http://jabber.org/protocol/rsm">>, - result = {rsm_first, '$index', '$data'}, - cdata = #cdata{label = '$data'}, - attrs = [#attr{name = <<"index">>, - dec = {dec_int, [0, infinity]}, - enc = {enc_int, []}}]}). - --xml(rsm_set, - #elem{name = <<"set">>, - xmlns = <<"http://jabber.org/protocol/rsm">>, - result = {rsm_set, '$after', '$before', '$count', - '$first', '$index', '$last', '$max'}, - refs = [#ref{name = rsm_after, label = '$after', min = 0, max = 1}, - #ref{name = rsm_before, label = '$before', min = 0, max = 1}, - #ref{name = rsm_count, label = '$count', min = 0, max = 1}, - #ref{name = rsm_first, label = '$first', min = 0, max = 1}, - #ref{name = rsm_index, label = '$index', min = 0, max = 1}, - #ref{name = rsm_last, label = '$last', min = 0, max = 1}, - #ref{name = rsm_max, label = '$max', min = 0, max = 1}]}). - --xml(mam_start, - #elem{name = <<"start">>, - xmlns = <<"urn:xmpp:mam:tmp">>, - result = '$cdata', - cdata = #cdata{required = true, - dec = {dec_utc, []}, - enc = {enc_utc, []}}}). - --xml(mam_end, - #elem{name = <<"end">>, - xmlns = <<"urn:xmpp:mam:tmp">>, - result = '$cdata', - cdata = #cdata{required = true, - dec = {dec_utc, []}, - enc = {enc_utc, []}}}). - --xml(mam_with, - #elem{name = <<"with">>, - xmlns = <<"urn:xmpp:mam:tmp">>, - result = '$cdata', - cdata = #cdata{required = true, - dec = {dec_jid, []}, - enc = {enc_jid, []}}}). - --xml(mam_withtext, - #elem{name = <<"withtext">>, - xmlns = <<"urn:xmpp:mam:tmp">>, - result = '$cdata', - cdata = #cdata{required = true}}). - --xml(mam_query, - #elem{name = <<"query">>, - xmlns = [<<"urn:xmpp:mam:0">>, <<"urn:xmpp:mam:1">>, <<"urn:xmpp:mam:tmp">>], - result = {mam_query, '$xmlns', '$id', '$start', '$end', '$with', - '$withtext', '$rsm', '$xdata'}, - attrs = [#attr{name = <<"queryid">>, label = '$id'}, - #attr{name = <<"xmlns">>}], - refs = [#ref{name = mam_start, min = 0, max = 1, label = '$start'}, - #ref{name = mam_end, min = 0, max = 1, label = '$end'}, - #ref{name = mam_with, min = 0, max = 1, label = '$with'}, - #ref{name = mam_withtext, min = 0, max = 1, label = '$withtext'}, - #ref{name = rsm_set, min = 0, max = 1, label = '$rsm'}, - #ref{name = xdata, min = 0, max = 1, label = '$xdata'}]}). - --xml(mam_archived, - #elem{name = <<"archived">>, - xmlns = <<"urn:xmpp:mam:tmp">>, - result = {mam_archived, '$by', '$id'}, - attrs = [#attr{name = <<"id">>}, - #attr{name = <<"by">>, - required = true, - dec = {dec_jid, []}, - enc = {enc_jid, []}}]}). - --xml(mam_result, - #elem{name = <<"result">>, - xmlns = [<<"urn:xmpp:mam:0">>, <<"urn:xmpp:mam:1">>, <<"urn:xmpp:mam:tmp">>], - result = {mam_result, '$xmlns', '$queryid', '$id', '$_els'}, - attrs = [#attr{name = <<"queryid">>}, - #attr{name = <<"xmlns">>}, - #attr{name = <<"id">>}]}). - --xml(mam_jid, - #elem{name = <<"jid">>, - xmlns = [<<"urn:xmpp:mam:0">>, <<"urn:xmpp:mam:1">>, <<"urn:xmpp:mam:tmp">>], - result = '$cdata', - cdata = #cdata{required = true, - dec = {dec_jid, []}, - enc = {enc_jid, []}}}). - --xml(mam_never, - #elem{name = <<"never">>, - xmlns = [<<"urn:xmpp:mam:0">>, <<"urn:xmpp:mam:1">>, <<"urn:xmpp:mam:tmp">>], - result = '$jids', - refs = [#ref{name = mam_jid, label = '$jids'}]}). - --xml(mam_always, - #elem{name = <<"always">>, - xmlns = [<<"urn:xmpp:mam:0">>, <<"urn:xmpp:mam:1">>, <<"urn:xmpp:mam:tmp">>], - result = '$jids', - refs = [#ref{name = mam_jid, label = '$jids'}]}). - --xml(mam_prefs, - #elem{name = <<"prefs">>, - xmlns = [<<"urn:xmpp:mam:0">>, <<"urn:xmpp:mam:1">>, <<"urn:xmpp:mam:tmp">>], - result = {mam_prefs, '$xmlns', '$default', '$always', '$never'}, - attrs = [#attr{name = <<"default">>, - dec = {dec_enum, [[always, never, roster]]}, - enc = {enc_enum, []}}, - #attr{name = <<"xmlns">>}], - refs = [#ref{name = mam_always, label = '$always', - min = 0, max = 1}, - #ref{name = mam_never, label = '$never', - min = 0, max = 1}]}). - --xml(mam_fin, - #elem{name = <<"fin">>, - xmlns = [<<"urn:xmpp:mam:0">>, <<"urn:xmpp:mam:1">>], - result = {mam_fin, '$xmlns', '$id', '$rsm', '$stable', '$complete'}, - attrs = [#attr{name = <<"queryid">>, label = '$id'}, - #attr{name = <<"xmlns">>}, - #attr{name = <<"stable">>, label = '$stable', - dec = {dec_bool, []}, - enc = {enc_bool, []}}, - #attr{name = <<"complete">>, label = '$complete', - dec = {dec_bool, []}, - enc = {enc_bool, []}}], - refs = [#ref{name = rsm_set, min = 0, max = 1, label = '$rsm'}]}). - --xml(forwarded, - #elem{name = <<"forwarded">>, - xmlns = <<"urn:xmpp:forward:0">>, - result = {forwarded, '$delay', '$_xmls'}, - refs = [#ref{name = delay, min = 0, - max = 1, label = '$delay'}]}). - --xml(carbons_disable, - #elem{name = <<"disable">>, - xmlns = <<"urn:xmpp:carbons:2">>, - result = {carbons_disable}}). - --xml(carbons_enable, - #elem{name = <<"enable">>, - xmlns = <<"urn:xmpp:carbons:2">>, - result = {carbons_enable}}). - --xml(carbons_private, - #elem{name = <<"private">>, - xmlns = <<"urn:xmpp:carbons:2">>, - result = {carbons_private}}). - --xml(carbons_received, - #elem{name = <<"received">>, - xmlns = <<"urn:xmpp:carbons:2">>, - result = {carbons_received, '$forwarded'}, - refs = [#ref{name = forwarded, min = 1, - max = 1, label = '$forwarded'}]}). - --xml(carbons_sent, - #elem{name = <<"sent">>, - xmlns = <<"urn:xmpp:carbons:2">>, - result = {carbons_sent, '$forwarded'}, - refs = [#ref{name = forwarded, min = 1, - max = 1, label = '$forwarded'}]}). - --xml(feature_csi, - #elem{name = <<"csi">>, - xmlns = <<"urn:xmpp:csi:0">>, - result = {feature_csi, '$xmlns'}, - attrs = [#attr{name = <<"xmlns">>}]}). - --record(csi, {type :: active | inactive}). --type csi() :: #csi{}. - --xml(csi_active, - #elem{name = <<"active">>, - xmlns = <<"urn:xmpp:csi:0">>, - result = {csi, active}}). - --xml(csi_inactive, - #elem{name = <<"inactive">>, - xmlns = <<"urn:xmpp:csi:0">>, - result = {csi, inactive}}). - --xml(feature_sm, - #elem{name = <<"sm">>, - xmlns = [<<"urn:xmpp:sm:2">>, <<"urn:xmpp:sm:3">>], - result = {feature_sm, '$xmlns'}, - attrs = [#attr{name = <<"xmlns">>}]}). - --xml(sm_enable, - #elem{name = <<"enable">>, - xmlns = [<<"urn:xmpp:sm:2">>, <<"urn:xmpp:sm:3">>], - result = {sm_enable, '$max', '$resume', '$xmlns'}, - attrs = [#attr{name = <<"max">>, - dec = {dec_int, [0, infinity]}, - enc = {enc_int, []}}, - #attr{name = <<"xmlns">>}, - #attr{name = <<"resume">>, - default = false, - dec = {dec_bool, []}, - enc = {enc_bool, []}}]}). - --xml(sm_enabled, - #elem{name = <<"enabled">>, - xmlns = [<<"urn:xmpp:sm:2">>, <<"urn:xmpp:sm:3">>], - result = {sm_enabled, '$id', '$location', '$max', '$resume', '$xmlns'}, - attrs = [#attr{name = <<"id">>}, - #attr{name = <<"location">>}, - #attr{name = <<"xmlns">>}, - #attr{name = <<"max">>, - dec = {dec_int, [0, infinity]}, - enc = {enc_int, []}}, - #attr{name = <<"resume">>, - default = false, - dec = {dec_bool, []}, - enc = {enc_bool, []}}]}). - --xml(sm_resume, - #elem{name = <<"resume">>, - xmlns = [<<"urn:xmpp:sm:2">>, <<"urn:xmpp:sm:3">>], - result = {sm_resume, '$h', '$previd', '$xmlns'}, - attrs = [#attr{name = <<"h">>, - required = true, - dec = {dec_int, [0, infinity]}, - enc = {enc_int, []}}, - #attr{name = <<"xmlns">>}, - #attr{name = <<"previd">>, - required = true}]}). - --xml(sm_resumed, - #elem{name = <<"resumed">>, - xmlns = [<<"urn:xmpp:sm:2">>, <<"urn:xmpp:sm:3">>], - result = {sm_resumed, '$h', '$previd', '$xmlns'}, - attrs = [#attr{name = <<"h">>, - required = true, - dec = {dec_int, [0, infinity]}, - enc = {enc_int, []}}, - #attr{name = <<"xmlns">>}, - #attr{name = <<"previd">>, - required = true}]}). - --xml(sm_r, - #elem{name = <<"r">>, - xmlns = [<<"urn:xmpp:sm:2">>, <<"urn:xmpp:sm:3">>], - result = {sm_r, '$xmlns'}, - attrs = [#attr{name = <<"xmlns">>}]}). - --xml(sm_a, - #elem{name = <<"a">>, - xmlns = [<<"urn:xmpp:sm:2">>, <<"urn:xmpp:sm:3">>], - result = {sm_a, '$h', '$xmlns'}, - attrs = [#attr{name = <<"h">>, - required = true, - dec = {dec_int, [0, infinity]}, - enc = {enc_int, []}}, - #attr{name = <<"xmlns">>}]}). - --xml(sm_failed, - #elem{name = <<"failed">>, - xmlns = [<<"urn:xmpp:sm:2">>, <<"urn:xmpp:sm:3">>], - result = {sm_failed, '$reason', '$h', '$xmlns'}, - attrs = [#attr{name = <<"h">>, - dec = {dec_int, [0, infinity]}, - enc = {enc_int, []}}, - #attr{name = <<"xmlns">>}], - refs = [#ref{name = error_bad_request, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_conflict, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_feature_not_implemented, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_forbidden, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_gone, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_internal_server_error, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_item_not_found, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_jid_malformed, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_not_acceptable, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_not_allowed, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_not_authorized, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_policy_violation, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_recipient_unavailable, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_redirect, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_registration_required, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_remote_server_not_found, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_remote_server_timeout, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_resource_constraint, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_service_unavailable, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_subscription_required, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_undefined_condition, - min = 0, max = 1, label = '$reason'}, - #ref{name = error_unexpected_request, - min = 0, max = 1, label = '$reason'}]}). - --xml(offline_purge, - #elem{name = <<"purge">>, - xmlns = <<"http://jabber.org/protocol/offline">>, - result = true}). - --xml(offline_fetch, - #elem{name = <<"fetch">>, - xmlns = <<"http://jabber.org/protocol/offline">>, - result = true}). - --xml(offline_item, - #elem{name = <<"item">>, - xmlns = <<"http://jabber.org/protocol/offline">>, - result = {offline_item, '$node', '$action'}, - attrs = [#attr{name = <<"node">>}, - #attr{name = <<"action">>, - dec = {dec_enum, [[view, remove]]}, - enc = {enc_enum, []}}]}). - --xml(offline, - #elem{name = <<"offline">>, - xmlns = <<"http://jabber.org/protocol/offline">>, - result = {offline, '$items', '$purge', '$fetch'}, - refs = [#ref{name = offline_purge, min = 0, max = 1, - label = '$purge', default = false}, - #ref{name = offline_fetch, min = 0, max = 1, - label = '$fetch', default = false}, - #ref{name = offline_item, min = 0, label = '$items'}]}). - --xml(mix_subscribe, - #elem{name = <<"subscribe">>, - xmlns = <<"urn:xmpp:mix:0">>, - result = '$node', - attrs = [#attr{name = <<"node">>, - required = true, - label = '$node'}]}). - --xml(mix_join, - #elem{name = <<"join">>, - xmlns = <<"urn:xmpp:mix:0">>, - result = {mix_join, '$jid', '$subscribe'}, - attrs = [#attr{name = <<"jid">>, - label = '$jid', - dec = {dec_jid, []}, - enc = {enc_jid, []}}], - refs = [#ref{name = mix_subscribe, min = 0, label = '$subscribe'}]}). - --xml(mix_leave, - #elem{name = <<"leave">>, - xmlns = <<"urn:xmpp:mix:0">>, - result = {mix_leave}}). - --xml(mix_participant, - #elem{name = <<"participant">>, - xmlns = <<"urn:xmpp:mix:0">>, - result = {mix_participant, '$jid', '$nick'}, - attrs = [#attr{name = <<"jid">>, - required = true, - label = '$jid', - dec = {dec_jid, []}, - enc = {enc_jid, []}}, - #attr{name = <<"nick">>, - label = '$nick'}]}). - --record(hint, {type :: 'no-copy' | 'no-store' | 'no-storage' | 'store' | - 'no-permanent-store' | 'no-permanent-storage'}). --type hint() :: #hint{}. - --xml(hint_no_copy, - #elem{name = <<"no-copy">>, - xmlns = <<"urn:xmpp:hints">>, - result = {hint, 'no-copy'}}). - --xml(hint_no_store, - #elem{name = <<"no-store">>, - xmlns = <<"urn:xmpp:hints">>, - result = {hint, 'no-store'}}). - --xml(hint_no_storage, - #elem{name = <<"no-storage">>, - xmlns = <<"urn:xmpp:hints">>, - result = {hint, 'no-storage'}}). - --xml(hint_store, - #elem{name = <<"store">>, - xmlns = <<"urn:xmpp:hints">>, - result = {hint, 'store'}}). - --xml(hint_no_permanent_store, - #elem{name = <<"no-permanent-store">>, - xmlns = <<"urn:xmpp:hints">>, - result = {hint, 'no-permanent-store'}}). - --xml(hint_no_permanent_storage, - #elem{name = <<"no-permanent-storage">>, - xmlns = <<"urn:xmpp:hints">>, - result = {hint, 'no-permanent-storage'}}). - --xml(search_instructions, - #elem{name = <<"instructions">>, - xmlns = <<"jabber:iq:search">>, - result = '$cdata'}). - --xml(search_first, - #elem{name = <<"first">>, - xmlns = <<"jabber:iq:search">>, - cdata = #cdata{default = <<"">>}, - result = '$cdata'}). --xml(search_last, - #elem{name = <<"last">>, - xmlns = <<"jabber:iq:search">>, - cdata = #cdata{default = <<"">>}, - result = '$cdata'}). --xml(search_nick, - #elem{name = <<"nick">>, - xmlns = <<"jabber:iq:search">>, - cdata = #cdata{default = <<"">>}, - result = '$cdata'}). --xml(search_email, - #elem{name = <<"email">>, - xmlns = <<"jabber:iq:search">>, - cdata = #cdata{default = <<"">>}, - result = '$cdata'}). - --xml(search_item, - #elem{name = <<"item">>, - xmlns = <<"jabber:iq:search">>, - result = {search_item, '$jid', '$first', '$last', '$nick', '$email'}, - attrs = [#attr{name = <<"jid">>, - required = true, - enc = {enc_jid, []}, - dec = {dec_jid, []}}], - refs = [#ref{name = search_first, min = 0, max = 1, - label = '$first'}, - #ref{name = search_last, min = 0, max = 1, - label = '$last'}, - #ref{name = search_nick, min = 0, max = 1, - label = '$nick'}, - #ref{name = search_email, min = 0, max = 1, - label = '$email'}]}). - --xml(search, - #elem{name = <<"query">>, - xmlns = <<"jabber:iq:search">>, - result = {search, '$instructions', '$first', '$last', - '$nick', '$email', '$items', '$xdata'}, - refs = [#ref{name = search_instructions, min = 0, max = 1, - label = '$instructions'}, - #ref{name = search_first, min = 0, max = 1, - label = '$first'}, - #ref{name = search_last, min = 0, max = 1, - label = '$last'}, - #ref{name = search_nick, min = 0, max = 1, - label = '$nick'}, - #ref{name = search_email, min = 0, max = 1, - label = '$email'}, - #ref{name = search_item, label = '$items'}, - #ref{name = xdata, min = 0, max = 1, - label = '$xdata'}]}). - --xml(xevent_offline, - #elem{name = <<"offline">>, - xmlns = <<"jabber:x:event">>, - result = true}). --xml(xevent_delivered, - #elem{name = <<"delivered">>, - xmlns = <<"jabber:x:event">>, - result = true}). --xml(xevent_displayed, - #elem{name = <<"displayed">>, - xmlns = <<"jabber:x:event">>, - result = true}). --xml(xevent_composing, - #elem{name = <<"composing">>, - xmlns = <<"jabber:x:event">>, - result = true}). --xml(xevent_id, - #elem{name = <<"id">>, - xmlns = <<"jabber:x:event">>, - cdata = #cdata{}, - result = '$cdata'}). - --xml(xevent, - #elem{name = <<"x">>, - xmlns = <<"jabber:x:event">>, - result = {xevent, '$offline', '$delivered', '$displayed', - '$composing', '$id'}, - refs = [#ref{name = xevent_offline, min = 0, max = 1, - label = '$offline', default = false}, - #ref{name = xevent_delivered, min = 0, max = 1, - label = '$delivered', default = false}, - #ref{name = xevent_displayed, min = 0, max = 1, - label = '$displayed', default = false}, - #ref{name = xevent_composing, min = 0, max = 1, - label = '$composing', default = false}, - #ref{name = xevent_id, min = 0, max = 1, - label = '$id'}]}). - --xml(expire, - #elem{name = <<"x">>, - xmlns = <<"jabber:x:expire">>, - result = {expire, '$seconds', '$stored'}, - attrs = [#attr{name = <<"seconds">>, - required = true, - dec = {dec_int, [0, infinity]}, - enc = {enc_int, []}}, - #attr{name = <<"stored">>, - dec = {dec_int, [0, infinity]}, - enc = {enc_int, []}}]}). - --xml(nick, - #elem{name = <<"nick">>, - xmlns = <<"http://jabber.org/protocol/nick">>, - result = {nick, '$name'}, - cdata = #cdata{label = '$name', - required = true}}). - --xml(address, - #elem{name = <<"address">>, - xmlns = <<"http://jabber.org/protocol/address">>, - result = {address, '$type', '$jid', '$desc', '$node', '$delivered'}, - attrs = [#attr{name = <<"type">>, - required = true, - dec = {dec_enum, [[bcc, cc, noreply, ofrom, - replyroom, replyto, to]]}, - enc = {enc_enum, []}}, - #attr{name = <<"jid">>, - enc = {enc_jid, []}, - dec = {dec_jid, []}}, - #attr{name = <<"desc">>}, - #attr{name = <<"node">>}, - #attr{name = <<"delivered">>, - enc = {enc_bool, []}, - dec = {dec_bool, []}}]}). - --xml(addresses, - #elem{name = <<"addresses">>, - xmlns = <<"http://jabber.org/protocol/address">>, - result = {addresses, '$list'}, - %% TODO: 'min' should be '1', but this is not implemented - refs = [#ref{name = address, label = '$list'}]}). - --xml(stanza_id, - #elem{name = <<"stanza-id">>, - xmlns = <<"urn:xmpp:sid:0">>, - result = {stanza_id, '$by', '$id'}, - attrs = [#attr{name = <<"id">>, required = true}, - #attr{name = <<"by">>, required = true, - enc = {enc_jid, []}, - dec = {dec_jid, []}}]}). - --xml(client_id, - #elem{name = <<"client-id">>, - xmlns = <<"urn:xmpp:sid:0">>, - result = {client_id, '$id'}, - attrs = [#attr{name = <<"id">>, required = true}]}). - --xml(adhoc_command_prev, - #elem{name = <<"prev">>, - xmlns = <<"http://jabber.org/protocol/commands">>, - result = true}). --xml(adhoc_command_next, - #elem{name = <<"next">>, - xmlns = <<"http://jabber.org/protocol/commands">>, - result = true}). --xml(adhoc_command_complete, - #elem{name = <<"complete">>, - xmlns = <<"http://jabber.org/protocol/commands">>, - result = true}). - --xml(adhoc_command_actions, - #elem{name = <<"actions">>, - xmlns = <<"http://jabber.org/protocol/commands">>, - result = {adhoc_actions, '$execute', '$prev', '$next', '$complete'}, - attrs = [#attr{name = <<"execute">>, - dec = {dec_enum, [[complete, next, prev]]}, - enc = {enc_enum, []}}], - refs = [#ref{name = adhoc_command_prev, min = 0, max = 1, - default = false, label = '$prev'}, - #ref{name = adhoc_command_next, min = 0, max = 1, - default = false, label = '$next'}, - #ref{name = adhoc_command_complete, min = 0, max = 1, - default = false, label = '$complete'}]}). - --xml(adhoc_command_notes, - #elem{name = <<"note">>, - xmlns = <<"http://jabber.org/protocol/commands">>, - result = {adhoc_note, '$type', '$data'}, - attrs = [#attr{name = <<"type">>, default = info, - dec = {dec_enum, [[info, warn, error]]}, - enc = {enc_enum, []}}], - cdata = #cdata{default = <<"">>, label = '$data'}}). - --xml(adhoc_command, - #elem{name = <<"command">>, - xmlns = <<"http://jabber.org/protocol/commands">>, - result = {adhoc_command, '$node', '$action', '$sid', - '$status', '$lang', '$actions', '$notes', '$xdata'}, - attrs = [#attr{name = <<"node">>, required = true}, - #attr{name = <<"xml:lang">>, label = '$lang'}, - #attr{name = <<"sessionid">>, label = '$sid'}, - #attr{name = <<"status">>, - dec = {dec_enum, [[canceled, completed, executing]]}, - enc = {enc_enum, []}}, - #attr{name = <<"action">>, default = execute, - dec = {dec_enum, [[cancel, complete, - execute, next, prev]]}, - enc = {enc_enum, []}}], - refs = [#ref{name = adhoc_command_actions, min = 0, max = 1, - label = '$actions'}, - #ref{name = xdata, min = 0, max = 1}, - #ref{name = adhoc_command_notes, label = '$notes'}]}). - --xml(db_result, - #elem{name = <<"db:result">>, - xmlns = <<"jabber:server">>, - result = {db_result, '$from', '$to', '$type', '$key', '$_els'}, - cdata = #cdata{default = <<"">>, label = '$key'}, - attrs = [#attr{name = <<"from">>, required = true, - dec = {nameprep, []}, enc = {nameprep, []}}, - #attr{name = <<"to">>, required = true, - dec = {nameprep, []}, enc = {nameprep, []}}, - #attr{name = <<"type">>, - dec = {dec_enum, [[valid, invalid, error]]}, - enc = {enc_enum, []}}]}). - --xml(db_verify, - #elem{name = <<"db:verify">>, - xmlns = <<"jabber:server">>, - result = {db_verify, '$from', '$to', '$id', '$type', '$key', '$_els'}, - cdata = #cdata{default = <<"">>, label = '$key'}, - attrs = [#attr{name = <<"from">>, required = true, - dec = {nameprep, []}, enc = {nameprep, []}}, - #attr{name = <<"to">>, required = true, - dec = {nameprep, []}, enc = {nameprep, []}}, - #attr{name = <<"id">>, required = true}, - #attr{name = <<"type">>, - dec = {dec_enum, [[valid, invalid, error]]}, - enc = {enc_enum, []}}]}). - --xml(handshake, - #elem{name = <<"handshake">>, - xmlns = <<"jabber:component:accept">>, - result = {handshake, '$data'}, - cdata = #cdata{default = <<"">>, label = '$data'}}). - --xml(stream_start, - #elem{name = <<"stream:stream">>, - xmlns = [<<"jabber:client">>, <<"jabber:server">>, - <<"jabber:component:accept">>], - result = {stream_start, '$from', '$to', '$id', - '$version', '$xmlns', '$stream_xmlns', - '$db_xmlns', '$lang'}, - attrs = [#attr{name = <<"from">>, - dec = {dec_jid, []}, - enc = {enc_jid, []}}, - #attr{name = <<"to">>, - dec = {dec_jid, []}, - enc = {enc_jid, []}}, - #attr{name = <<"xmlns">>}, - #attr{name = <<"xmlns:stream">>, - label = '$stream_xmlns', - default = <<"">>}, - #attr{name = <<"xmlns:db">>, - label = '$db_xmlns', - default = <<"">>}, - #attr{name = <<"xml:lang">>, label = '$lang', - default = <<"">>}, - #attr{name = <<"version">>, - dec = {dec_version, []}, - enc = {enc_version, []}}, - #attr{name = <<"id">>, default = <<"">>}]}). - --xml(bob_data, - #elem{name = <<"data">>, - xmlns = <<"urn:xmpp:bob">>, - result = {bob_data, '$cid', '$max-age', '$type', '$data'}, - attrs = [#attr{name = <<"cid">>, required = true}, - #attr{name = <<"max-age">>, - dec = {dec_int, [0, infinity]}, - enc = {enc_int, []}}, - #attr{name = <<"type">>}], - cdata = #cdata{label = '$data', default = <<"">>, - dec = {base64, decode, []}, - enc = {base64, encode, []}}}). - --xml(captcha, - #elem{name = <<"captcha">>, - xmlns = <<"urn:xmpp:captcha">>, - result = {xcaptcha, '$xdata'}, - refs = [#ref{name = xdata, min = 1, max = 1}]}). - --xml(media_uri, - #elem{name = <<"uri">>, - xmlns = <<"urn:xmpp:media-element">>, - result = {media_uri, '$type', '$uri'}, - attrs = [#attr{name = <<"type">>, required = true}], - cdata = #cdata{label = '$uri', default = <<"">>}}). - --xml(media, - #elem{name = <<"media">>, - xmlns = <<"urn:xmpp:media-element">>, - result = {media, '$height', '$width', '$uri'}, - attrs = [#attr{name = <<"height">>, - dec = {dec_int, [0, infinity]}, - enc = {enc_int, []}}, - #attr{name = <<"width">>, - dec = {dec_int, [0, inifinity]}, - enc = {enc_int, []}}], - refs = [#ref{name = media_uri, label = '$uri'}]}). - --xml(oob_url, - #elem{name = <<"url">>, - xmlns = <<"jabber:x:oob">>, - result = '$cdata', - cdata = #cdata{required = true}}). - --xml(oob_desc, - #elem{name = <<"desc">>, - xmlns = <<"jabber:x:oob">>, - result = '$cdata', - cdata = #cdata{default = <<"">>}}). - --xml(oob_x, - #elem{name = <<"x">>, - xmlns = <<"jabber:x:oob">>, - result = {oob_x, '$url', '$desc', '$sid'}, - attrs = [#attr{name = <<"sid">>, default = <<"">>}], - refs = [#ref{name = oob_url, min = 1, max = 1, - label = '$url'}, - #ref{name = oob_desc, default = <<"">>, - min = 0, max = 1, label = '$desc'}]}). - --xml(sic_ip, - #elem{name = <<"ip">>, - xmlns = [<<"urn:xmpp:sic:0">>, <<"urn:xmpp:sic:1">>], - result = '$cdata', - cdata = #cdata{required = true, - dec = {dec_ip, []}, - enc = {enc_ip, []}}}). - --xml(sip_port, - #elem{name = <<"port">>, - xmlns = <<"urn:xmpp:sic:1">>, - result = '$cdata', - cdata = #cdata{required = true, - dec = {dec_int, [0, 65535]}, - enc = {enc_int, []}}}). - --xml(sic, - #elem{name = <<"address">>, - xmlns = [<<"urn:xmpp:sic:0">>, <<"urn:xmpp:sic:1">>], - result = {sic, '$ip', '$port', '$xmlns'}, - attrs = [#attr{name = <<"xmlns">>}], - refs = [#ref{name = sic_ip, min = 0, max = 1, label = '$ip'}, - #ref{name = sip_port, min = 0, max = 1, label = '$port'}]}). - --xml(upload_filename, - #elem{name = <<"filename">>, - xmlns = [<<"urn:xmpp:http:upload">>, - <<"eu:siacs:conversations:http:upload">>], - result = '$cdata', - cdata = #cdata{required = true}}). - --xml(upload_size, - #elem{name = <<"size">>, - xmlns = [<<"urn:xmpp:http:upload">>, - <<"eu:siacs:conversations:http:upload">>], - result = '$cdata', - cdata = #cdata{required = true, - dec = {dec_int, [0, infinity]}, - enc = {enc_int, []}}}). - --xml(upload_content_type, - #elem{name = <<"content-type">>, - xmlns = [<<"urn:xmpp:http:upload">>, - <<"eu:siacs:conversations:http:upload">>], - result = '$cdata', - cdata = #cdata{default = <<"">>}}). - --xml(upload_request, - #elem{name = <<"request">>, - xmlns = [<<"urn:xmpp:http:upload">>, - <<"eu:siacs:conversations:http:upload">>], - result = {upload_request, '$filename', '$size', - '$content-type', '$xmlns'}, - attrs = [#attr{name = <<"xmlns">>}], - refs = [#ref{name = upload_filename, label = '$filename', - min = 1, max = 1}, - #ref{name = upload_size, label = '$size', min = 1, max = 1}, - #ref{name = upload_content_type, label = '$content-type', - min = 0, max = 1, default = <<"">>}]}). - --xml(upload_get, - #elem{name = <<"get">>, - xmlns = [<<"urn:xmpp:http:upload">>, - <<"eu:siacs:conversations:http:upload">>], - result = '$cdata', - cdata = #cdata{required = true}}). - --xml(upload_put, - #elem{name = <<"put">>, - xmlns = [<<"urn:xmpp:http:upload">>, - <<"eu:siacs:conversations:http:upload">>], - result = '$cdata', - cdata = #cdata{required = true}}). - --xml(upload_slot, - #elem{name = <<"slot">>, - xmlns = [<<"urn:xmpp:http:upload">>, - <<"eu:siacs:conversations:http:upload">>], - result = {upload_slot, '$get', '$put', '$xmlns'}, - attrs = [#attr{name = <<"xmlns">>}], - refs = [#ref{name = upload_get, min = 0, max = 1, label = '$get'}, - #ref{name = upload_put, min = 0, max = 1, label = '$put'}]}). - --xml(thumbnail, - #elem{name = <<"thumbnail">>, - xmlns = <<"urn:xmpp:thumbs:1">>, - result = {thumbnail, '$uri', '$media-type', '$width', '$height'}, - attrs = [#attr{name = <<"uri">>, required = true}, - #attr{name = <<"media-type">>, default = <<"">>}, - #attr{name = <<"width">>, - dec = {dec_int, [0, infinity]}, - enc = {enc_int, []}}, - #attr{name = <<"height">>, - dec = {dec_int, [0, infinity]}, - enc = {enc_int, []}}]}). - --xml(privilege_perm, - #elem{name = <<"perm">>, - xmlns = <<"urn:xmpp:privilege:1">>, - result = {privilege_perm, '$access', '$type'}, - attrs = [#attr{name = <<"access">>, - required = true, - dec = {dec_enum, [[roster, message, presence]]}, - enc = {enc_enum, []}}, - #attr{name = <<"type">>, - required = true, - dec = {dec_enum, [[none, get, set, both, - outgoing, roster, - managed_entity]]}, - enc = {enc_enum, []}}]}). - --xml(privilege, - #elem{name = <<"privilege">>, - xmlns = <<"urn:xmpp:privilege:1">>, - result = {privilege, '$perms', '$forwarded'}, - refs = [#ref{name = privilege_perm, label = '$perms'}, - #ref{name = forwarded, min = 0, - max = 1, label = '$forwarded'}]}). - --xml(delegated_attribute, - #elem{name = <<"attribute">>, - xmlns = <<"urn:xmpp:delegation:1">>, - result = '$name', - attrs = [#attr{name = <<"name">>, - required = true}]}). - --xml(delegated, - #elem{name = <<"delegated">>, - xmlns = <<"urn:xmpp:delegation:1">>, - result = {delegated, '$ns', '$attrs'}, - attrs = [#attr{name = <<"namespace">>, - label = '$ns', - required = true}], - refs = [#ref{name = delegated_attribute, - label = '$attrs'}]}). - --xml(delegation, - #elem{name = <<"delegation">>, - xmlns = <<"urn:xmpp:delegation:1">>, - result = {delegation, '$delegated', '$forwarded'}, - refs = [#ref{name = delegated, label = '$delegated'}, - #ref{name = forwarded, min = 0, - max = 1, label = '$forwarded'}]}). - --xml(delegate, - #elem{name = <<"delegate">>, - xmlns = <<"urn:xmpp:delegation:1">>, - result = '$namespace', - attrs = [#attr{name = <<"namespace">>, - required = true}]}). - --xml(delegation_query, - #elem{name = <<"query">>, - xmlns = <<"urn:xmpp:delegation:1">>, - result = {delegation_query, '$to', '$delegate'}, - attrs = [#attr{name = <<"to">>, - required = true, - dec = {dec_jid, []}, - enc = {enc_jid, []}}], - refs = [#ref{name = delegate, label = '$delegate'}]}). - --spec dec_tzo(_) -> {integer(), integer()}. -dec_tzo(Val) -> - [H1, M1] = str:tokens(Val, <<":">>), - H = binary_to_integer(H1), - M = binary_to_integer(M1), - if H >= -12, H =< 12, M >= 0, M < 60 -> - {H, M} - end. - -enc_tzo({H, M}) -> - Sign = if H >= 0 -> - <<>>; - true -> - <<"-">> - end, - list_to_binary([Sign, io_lib:format("~2..0w:~2..0w", [H, M])]). - --spec dec_utc(_) -> erlang:timestamp(). -dec_utc(Val) -> - xmpp_util:decode_timestamp(Val). - -enc_utc(Val) -> - xmpp_util:encode_timestamp(Val). - --spec dec_jid(_) -> jid:jid(). -dec_jid(Val) -> - case jid:from_string(Val) of - error -> - erlang:error(badarg); - J -> - J - end. - -enc_jid(J) -> - jid:to_string(J). - --spec resourceprep(_) -> binary(). -resourceprep(R) -> - case jid:resourceprep(R) of - error -> - erlang:error(badarg); - R1 -> - R1 - end. - --spec nameprep(_) -> binary(). -nameprep(S) -> - case jid:nameprep(S) of - error -> - erlang:error(badarg); - S1 -> - S1 - end. - --spec dec_bool(_) -> boolean(). -dec_bool(<<"false">>) -> false; -dec_bool(<<"0">>) -> false; -dec_bool(<<"true">>) -> true; -dec_bool(<<"1">>) -> true. - -enc_bool(false) -> <<"false">>; -enc_bool(true) -> <<"true">>. - -join([], _Sep) -> <<>>; -join([H | T], Sep) -> - <> || X <- T >>)/binary>>. - --spec dec_ip(_) -> inet:ip_address(). -dec_ip(S) -> - {ok, Addr} = inet_parse:address(binary_to_list(S)), - Addr. - -enc_ip({0,0,0,0,0,16#ffff,A,B}) -> - enc_ip({(A bsr 8) band 16#ff, A band 16#ff, - (B bsr 8) band 16#ff, B band 16#ff}); -enc_ip(Addr) -> - list_to_binary(inet_parse:ntoa(Addr)). - --spec re:split(_, _) -> [binary()]. --spec base64:decode(_) -> binary(). --spec base64:mime_decode(_) -> binary(). - --spec dec_host_port(_) -> binary() | inet:ip_address() | - {binary() | inet:ip_address(), non_neg_integer()}. -dec_host_port(<<$[, T/binary>>) -> - [IP, <<$:, Port/binary>>] = binary:split(T, <<$]>>), - {dec_ip(IP), dec_int(Port, 0, 65535)}; -dec_host_port(S) -> - case binary:split(S, <<$:>>) of - [S] -> - try dec_ip(S) catch _:_ -> S end; - [S, P] -> - {try dec_ip(S) catch _:_ -> S end, dec_int(P, 0, 65535)} - end. - -enc_host_port(Host) when is_binary(Host) -> - Host; -enc_host_port({{_,_,_,_,_,_,_,_} = IPv6, Port}) -> - enc_host_port({<<$[, (enc_ip(IPv6))/binary, $]>>, Port}); -enc_host_port({{_,_,_,_} = IPv4, Port}) -> - enc_host_port({enc_ip(IPv4), Port}); -enc_host_port({Host, Port}) -> - <>; -enc_host_port(Addr) -> - enc_ip(Addr). - --spec dec_version(_) -> {non_neg_integer(), non_neg_integer()}. -dec_version(S) -> - [Major, Minor] = binary:split(S, <<$.>>), - {binary_to_integer(Major), binary_to_integer(Minor)}. - -enc_version({Maj, Min}) -> - <<(integer_to_binary(Maj))/binary, $., (integer_to_binary(Min))/binary>>. - --spec dec_ps_aff(_) -> member | none | outcast | - owner | publisher | publish_only. -dec_ps_aff(<<"member">>) -> member; -dec_ps_aff(<<"none">>) -> none; -dec_ps_aff(<<"outcast">>) -> outcast; -dec_ps_aff(<<"owner">>) -> owner; -dec_ps_aff(<<"publisher">>) -> publisher; -dec_ps_aff(<<"publish-only">>) -> publish_only. - -enc_ps_aff(member) -> <<"member">>; -enc_ps_aff(none) -> <<"none">>; -enc_ps_aff(outcast) -> <<"outcast">>; -enc_ps_aff(owner) -> <<"owner">>; -enc_ps_aff(publisher) -> <<"publisher">>; -enc_ps_aff(publish_only) -> <<"publish-only">>. - -%% Local Variables: -%% mode: erlang -%% End: -%% vim: set filetype=erlang tabstop=8: diff --git a/src/flex_offline.erl b/src/flex_offline.erl deleted file mode 100644 index acc57342e..000000000 --- a/src/flex_offline.erl +++ /dev/null @@ -1,128 +0,0 @@ -%% Created automatically by xdata generator (xdata_codec.erl) -%% Source: flex_offline.xdata -%% Form type: http://jabber.org/protocol/offline -%% Document: XEP-0013 - --module(flex_offline). - --export([decode/1, decode/2, encode/1, encode/2, - format_error/1]). - --include("xmpp_codec.hrl"). - --include("flex_offline.hrl"). - --export_type([property/0, result/0, form/0]). - -dec_int(Val, Min, Max) -> - case list_to_integer(binary_to_list(Val)) of - Int when Int =< Max, Min == infinity -> Int; - Int when Int =< Max, Int >= Min -> Int - end. - -enc_int(Int) -> integer_to_binary(Int). - -format_error({form_type_mismatch, Type}) -> - <<"FORM_TYPE doesn't match '", Type/binary, "'">>; -format_error({bad_var_value, Var, Type}) -> - <<"Bad value of field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({missing_value, Var, Type}) -> - <<"Missing value of field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({too_many_values, Var, Type}) -> - <<"Too many values for field '", Var/binary, - "' of type '", Type/binary, "'">>; -format_error({unknown_var, Var, Type}) -> - <<"Unknown field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({missing_required_var, Var, Type}) -> - <<"Missing required field '", Var/binary, "' of type '", - Type/binary, "'">>. - -decode(Fs) -> decode(Fs, []). - -decode(Fs, Acc) -> - case lists:keyfind(<<"FORM_TYPE">>, #xdata_field.var, - Fs) - of - false -> decode(Fs, Acc, []); - #xdata_field{values = - [<<"http://jabber.org/protocol/offline">>]} -> - decode(Fs, Acc, []); - _ -> - erlang:error({?MODULE, - {form_type_mismatch, - <<"http://jabber.org/protocol/offline">>}}) - end. - -encode(Cfg) -> encode(Cfg, fun (Text) -> Text end). - -encode(List, Translate) when is_list(List) -> - Fs = [case Opt of - {number_of_messages, Val} -> - [encode_number_of_messages(Val, Translate)]; - {number_of_messages, _, _} -> - erlang:error({badarg, Opt}); - #xdata_field{} -> [Opt]; - _ -> [] - end - || Opt <- List], - FormType = #xdata_field{var = <<"FORM_TYPE">>, - type = hidden, - values = - [<<"http://jabber.org/protocol/offline">>]}, - [FormType | lists:flatten(Fs)]. - -decode([#xdata_field{var = <<"number_of_messages">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_int(Value, 0, infinity) of - Result -> - decode(Fs, [{number_of_messages, Result} | Acc], - lists:delete(<<"number_of_messages">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"number_of_messages">>, - <<"http://jabber.org/protocol/offline">>}}) - end; -decode([#xdata_field{var = <<"number_of_messages">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"number_of_messages">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"number_of_messages">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"number_of_messages">>, - <<"http://jabber.org/protocol/offline">>}}); -decode([#xdata_field{var = Var} | Fs], Acc, Required) -> - if Var /= <<"FORM_TYPE">> -> - erlang:error({?MODULE, - {unknown_var, Var, - <<"http://jabber.org/protocol/offline">>}}); - true -> decode(Fs, Acc, Required) - end; -decode([], _, [Var | _]) -> - erlang:error({?MODULE, - {missing_required_var, Var, - <<"http://jabber.org/protocol/offline">>}}); -decode([], Acc, []) -> Acc. - -encode_number_of_messages(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_int(Value)] - end, - Opts = [], - #xdata_field{var = <<"number_of_messages">>, - values = Values, required = false, type = 'text-single', - options = Opts, desc = <<>>, - label = Translate(<<"Number of Offline Messages">>)}. diff --git a/src/jid.erl b/src/jid.erl deleted file mode 100644 index 287a0642b..000000000 --- a/src/jid.erl +++ /dev/null @@ -1,266 +0,0 @@ -%%%------------------------------------------------------------------- -%%% @author Evgeny Khramtsov -%%% @doc -%%% JID processing library -%%% @end -%%% Created : 24 Nov 2015 by Evgeny Khramtsov -%%% -%%% -%%% ejabberd, Copyright (C) 2002-2016 ProcessOne -%%% -%%% This program is free software; you can redistribute it and/or -%%% modify it under the terms of the GNU General Public License as -%%% published by the Free Software Foundation; either version 2 of the -%%% License, or (at your option) any later version. -%%% -%%% This program is distributed in the hope that it will be useful, -%%% but WITHOUT ANY WARRANTY; without even the implied warranty of -%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%%% General Public License for more details. -%%% -%%% You should have received a copy of the GNU General Public License along -%%% with this program; if not, write to the Free Software Foundation, Inc., -%%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -%%% -%%%------------------------------------------------------------------- --module(jid). - -%% API --export([start/0, - make/1, - make/2, - make/3, - split/1, - from_string/1, - to_string/1, - is_nodename/1, - nodeprep/1, - nameprep/1, - resourceprep/1, - tolower/1, - remove_resource/1, - replace_resource/2]). - --include("jid.hrl"). - --export_type([jid/0]). --export_type([ljid/0]). - -%%%=================================================================== -%%% API -%%%=================================================================== --spec start() -> ok. - -start() -> - {ok, Owner} = ets_owner(), - SplitPattern = binary:compile_pattern([<<"@">>, <<"/">>]), - %% Table is public to allow ETS insert to fix / update the table even if table already exist - %% with another owner. - catch ets:new(jlib, [named_table, public, set, {keypos, 1}, {heir, Owner, undefined}]), - ets:insert(jlib, {string_to_jid_pattern, SplitPattern}), - ok. - -ets_owner() -> - case whereis(jlib_ets) of - undefined -> - Pid = spawn(fun() -> ets_keepalive() end), - case catch register(jlib_ets, Pid) of - true -> - {ok, Pid}; - Error -> Error - end; - Pid -> - {ok,Pid} - end. - -%% Process used to keep jlib ETS table alive in case the original owner dies. -%% The table need to be public, otherwise subsequent inserts would fail. -ets_keepalive() -> - receive - _ -> - ets_keepalive() - end. - --spec make(binary(), binary(), binary()) -> jid() | error. - -make(User, Server, Resource) -> - case nodeprep(User) of - error -> error; - LUser -> - case nameprep(Server) of - error -> error; - LServer -> - case resourceprep(Resource) of - error -> error; - LResource -> - #jid{user = User, server = Server, resource = Resource, - luser = LUser, lserver = LServer, - lresource = LResource} - end - end - end. - --spec make(binary(), binary()) -> jid() | error. -make(User, Server) -> - make(User, Server, <<"">>). - --spec make({binary(), binary(), binary()} | binary()) -> jid() | error. - -make({User, Server, Resource}) -> - make(User, Server, Resource); -make(Server) -> - make(<<"">>, Server, <<"">>). - -%% This is the reverse of make_jid/1 --spec split(jid()) -> {binary(), binary(), binary()} | error. - -split(#jid{user = U, server = S, resource = R}) -> - {U, S, R}; -split(_) -> - error. - --spec from_string(binary() | string()) -> jid() | error. -from_string(S) when is_list(S) -> - %% We do not accept list because we want to enforce good practice of - %% using binaries for string. However, we do not let it crash to avoid - %% losing associated ets table. - {error, need_jid_as_binary}; -from_string(<<>>) -> - error; -from_string(S) when is_binary(S) -> - SplitPattern = ets:lookup_element(jlib, string_to_jid_pattern, 2), - Size = size(S), - End = Size-1, - case binary:match(S, SplitPattern) of - {0, _} -> - error; - {End, _} -> - error; - {Pos1, _} -> - case binary:at(S, Pos1) of - $/ -> - make(<<>>, - binary:part(S, 0, Pos1), - binary:part(S, Pos1+1, Size-Pos1-1)); - _ -> - Pos1N = Pos1+1, - case binary:match(S, SplitPattern, [{scope, {Pos1+1, Size-Pos1-1}}]) of - {End, _} -> - error; - {Pos1N, _} -> - error; - {Pos2, _} -> - case binary:at(S, Pos2) of - $/ -> - make(binary:part(S, 0, Pos1), - binary:part(S, Pos1+1, Pos2-Pos1-1), - binary:part(S, Pos2+1, Size-Pos2-1)); - _ -> error - end; - _ -> - make(binary:part(S, 0, Pos1), - binary:part(S, Pos1+1, Size-Pos1-1), - <<>>) - end - end; - _ -> - make(<<>>, S, <<>>) - end. - --spec to_string(jid() | ljid()) -> binary(). - -to_string(#jid{user = User, server = Server, - resource = Resource}) -> - to_string({User, Server, Resource}); -to_string({N, S, R}) -> - Node = iolist_to_binary(N), - Server = iolist_to_binary(S), - Resource = iolist_to_binary(R), - S1 = case Node of - <<"">> -> <<"">>; - _ -> <> - end, - S2 = <>, - S3 = case Resource of - <<"">> -> S2; - _ -> <> - end, - S3. - --spec is_nodename(binary()) -> boolean(). - -is_nodename(Node) -> - N = nodeprep(Node), - (N /= error) and (N /= <<>>). - --define(LOWER(Char), - if Char >= $A, Char =< $Z -> Char + 32; - true -> Char - end). - --spec nodeprep(binary()) -> binary() | error. - -nodeprep("") -> <<>>; -nodeprep(S) when byte_size(S) < 1024 -> - R = stringprep:nodeprep(S), - if byte_size(R) < 1024 -> R; - true -> error - end; -nodeprep(_) -> error. - --spec nameprep(binary()) -> binary() | error. - -nameprep(S) when byte_size(S) < 1024 -> - R = stringprep:nameprep(S), - if byte_size(R) < 1024 -> R; - true -> error - end; -nameprep(_) -> error. - --spec resourceprep(binary()) -> binary() | error. - -resourceprep(S) when byte_size(S) < 1024 -> - R = stringprep:resourceprep(S), - if byte_size(R) < 1024 -> R; - true -> error - end; -resourceprep(_) -> error. - --spec tolower(jid() | ljid()) -> error | ljid(). - -tolower(#jid{luser = U, lserver = S, - lresource = R}) -> - {U, S, R}; -tolower({U, S, R}) -> - case nodeprep(U) of - error -> error; - LUser -> - case nameprep(S) of - error -> error; - LServer -> - case resourceprep(R) of - error -> error; - LResource -> {LUser, LServer, LResource} - end - end - end. - --spec remove_resource(jid()) -> jid(); - (ljid()) -> ljid(). - -remove_resource(#jid{} = JID) -> - JID#jid{resource = <<"">>, lresource = <<"">>}; -remove_resource({U, S, _R}) -> {U, S, <<"">>}. - --spec replace_resource(jid(), binary()) -> error | jid(). - -replace_resource(JID, Resource) -> - case resourceprep(Resource) of - error -> error; - LResource -> - JID#jid{resource = Resource, lresource = LResource} - end. - -%%%=================================================================== -%%% Internal functions -%%%=================================================================== diff --git a/src/mam_query.erl b/src/mam_query.erl deleted file mode 100644 index cb5bfe13a..000000000 --- a/src/mam_query.erl +++ /dev/null @@ -1,220 +0,0 @@ -%% Created automatically by xdata generator (xdata_codec.erl) -%% Source: mam_query.xdata -%% Form type: urn:xmpp:mam:1 -%% Document: XEP-0313 - --module(mam_query). - --export([decode/1, decode/2, encode/1, encode/2, - format_error/1]). - --include("xmpp_codec.hrl"). - --include("mam_query.hrl"). - --export_type([property/0, result/0, form/0]). - -enc_jid(J) -> jid:to_string(J). - -dec_jid(Val) -> - case jid:from_string(Val) of - error -> erlang:error(badarg); - J -> J - end. - -format_error({form_type_mismatch, Type}) -> - <<"FORM_TYPE doesn't match '", Type/binary, "'">>; -format_error({bad_var_value, Var, Type}) -> - <<"Bad value of field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({missing_value, Var, Type}) -> - <<"Missing value of field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({too_many_values, Var, Type}) -> - <<"Too many values for field '", Var/binary, - "' of type '", Type/binary, "'">>; -format_error({unknown_var, Var, Type}) -> - <<"Unknown field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({missing_required_var, Var, Type}) -> - <<"Missing required field '", Var/binary, "' of type '", - Type/binary, "'">>. - -decode(Fs) -> decode(Fs, []). - -decode(Fs, Acc) -> - case lists:keyfind(<<"FORM_TYPE">>, #xdata_field.var, - Fs) - of - false -> decode(Fs, Acc, []); - #xdata_field{values = [<<"urn:xmpp:mam:1">>]} -> - decode(Fs, Acc, []); - _ -> - erlang:error({?MODULE, - {form_type_mismatch, <<"urn:xmpp:mam:1">>}}) - end. - -encode(Cfg) -> encode(Cfg, fun (Text) -> Text end). - -encode(List, Translate) when is_list(List) -> - Fs = [case Opt of - {with, Val} -> [encode_with(Val, Translate)]; - {with, _, _} -> erlang:error({badarg, Opt}); - {start, Val} -> [encode_start(Val, Translate)]; - {start, _, _} -> erlang:error({badarg, Opt}); - {'end', Val} -> [encode_end(Val, Translate)]; - {'end', _, _} -> erlang:error({badarg, Opt}); - {withtext, Val} -> [encode_withtext(Val, Translate)]; - {withtext, _, _} -> erlang:error({badarg, Opt}); - #xdata_field{} -> [Opt]; - _ -> [] - end - || Opt <- List], - FormType = #xdata_field{var = <<"FORM_TYPE">>, - type = hidden, values = [<<"urn:xmpp:mam:1">>]}, - [FormType | lists:flatten(Fs)]. - -decode([#xdata_field{var = <<"with">>, values = [Value]} - | Fs], - Acc, Required) -> - try dec_jid(Value) of - Result -> - decode(Fs, [{with, Result} | Acc], - lists:delete(<<"with">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"with">>, <<"urn:xmpp:mam:1">>}}) - end; -decode([#xdata_field{var = <<"with">>, values = []} = F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"with">>, values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"with">>} | _], _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"with">>, <<"urn:xmpp:mam:1">>}}); -decode([#xdata_field{var = <<"start">>, - values = [Value]} - | Fs], - Acc, Required) -> - try xmpp_util:decode_timestamp(Value) of - Result -> - decode(Fs, [{start, Result} | Acc], - lists:delete(<<"start">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"start">>, <<"urn:xmpp:mam:1">>}}) - end; -decode([#xdata_field{var = <<"start">>, values = []} = F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"start">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"start">>} | _], _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"start">>, <<"urn:xmpp:mam:1">>}}); -decode([#xdata_field{var = <<"end">>, values = [Value]} - | Fs], - Acc, Required) -> - try xmpp_util:decode_timestamp(Value) of - Result -> - decode(Fs, [{'end', Result} | Acc], - lists:delete(<<"end">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"end">>, <<"urn:xmpp:mam:1">>}}) - end; -decode([#xdata_field{var = <<"end">>, values = []} = F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"end">>, values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"end">>} | _], _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"end">>, <<"urn:xmpp:mam:1">>}}); -decode([#xdata_field{var = <<"withtext">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{withtext, Result} | Acc], - lists:delete(<<"withtext">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"withtext">>, <<"urn:xmpp:mam:1">>}}) - end; -decode([#xdata_field{var = <<"withtext">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"withtext">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"withtext">>} | _], _, - _) -> - erlang:error({?MODULE, - {too_many_values, <<"withtext">>, - <<"urn:xmpp:mam:1">>}}); -decode([#xdata_field{var = Var} | Fs], Acc, Required) -> - if Var /= <<"FORM_TYPE">> -> - erlang:error({?MODULE, - {unknown_var, Var, <<"urn:xmpp:mam:1">>}}); - true -> decode(Fs, Acc, Required) - end; -decode([], _, [Var | _]) -> - erlang:error({?MODULE, - {missing_required_var, Var, <<"urn:xmpp:mam:1">>}}); -decode([], Acc, []) -> Acc. - -encode_with(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_jid(Value)] - end, - Opts = [], - #xdata_field{var = <<"with">>, values = Values, - required = false, type = 'jid-single', options = Opts, - desc = <<>>, label = Translate(<<"User JID">>)}. - -encode_start(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"start">>, values = Values, - required = false, type = 'text-single', options = Opts, - desc = <<>>, - label = Translate(<<"Search from the date">>)}. - -encode_end(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"end">>, values = Values, - required = false, type = 'text-single', options = Opts, - desc = <<>>, - label = Translate(<<"Search until the date">>)}. - -encode_withtext(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"withtext">>, values = Values, - required = false, type = 'text-single', options = Opts, - desc = <<>>, label = Translate(<<"Search the text">>)}. diff --git a/src/muc_register.erl b/src/muc_register.erl deleted file mode 100644 index c2b951dfc..000000000 --- a/src/muc_register.erl +++ /dev/null @@ -1,364 +0,0 @@ -%% Created automatically by xdata generator (xdata_codec.erl) -%% Source: muc_register.xdata -%% Form type: http://jabber.org/protocol/muc#register -%% Document: XEP-0045 - --module(muc_register). - --export([decode/1, decode/2, encode/1, encode/2, - format_error/1]). - --include("xmpp_codec.hrl"). - --include("muc_register.hrl"). - --export_type([property/0, result/0, form/0]). - -dec_bool(<<"1">>) -> true; -dec_bool(<<"0">>) -> false; -dec_bool(<<"true">>) -> true; -dec_bool(<<"false">>) -> false. - -enc_bool(true) -> <<"1">>; -enc_bool(false) -> <<"0">>. - -format_error({form_type_mismatch, Type}) -> - <<"FORM_TYPE doesn't match '", Type/binary, "'">>; -format_error({bad_var_value, Var, Type}) -> - <<"Bad value of field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({missing_value, Var, Type}) -> - <<"Missing value of field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({too_many_values, Var, Type}) -> - <<"Too many values for field '", Var/binary, - "' of type '", Type/binary, "'">>; -format_error({unknown_var, Var, Type}) -> - <<"Unknown field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({missing_required_var, Var, Type}) -> - <<"Missing required field '", Var/binary, "' of type '", - Type/binary, "'">>. - -decode(Fs) -> decode(Fs, []). - -decode(Fs, Acc) -> - case lists:keyfind(<<"FORM_TYPE">>, #xdata_field.var, - Fs) - of - false -> decode(Fs, Acc, [<<"muc#register_roomnick">>]); - #xdata_field{values = - [<<"http://jabber.org/protocol/muc#register">>]} -> - decode(Fs, Acc, [<<"muc#register_roomnick">>]); - _ -> - erlang:error({?MODULE, - {form_type_mismatch, - <<"http://jabber.org/protocol/muc#register">>}}) - end. - -encode(Cfg) -> encode(Cfg, fun (Text) -> Text end). - -encode(List, Translate) when is_list(List) -> - Fs = [case Opt of - {allow, Val} -> [encode_allow(Val, Translate)]; - {allow, _, _} -> erlang:error({badarg, Opt}); - {email, Val} -> [encode_email(Val, Translate)]; - {email, _, _} -> erlang:error({badarg, Opt}); - {faqentry, Val} -> [encode_faqentry(Val, Translate)]; - {faqentry, _, _} -> erlang:error({badarg, Opt}); - {first, Val} -> [encode_first(Val, Translate)]; - {first, _, _} -> erlang:error({badarg, Opt}); - {last, Val} -> [encode_last(Val, Translate)]; - {last, _, _} -> erlang:error({badarg, Opt}); - {roomnick, Val} -> [encode_roomnick(Val, Translate)]; - {roomnick, _, _} -> erlang:error({badarg, Opt}); - {url, Val} -> [encode_url(Val, Translate)]; - {url, _, _} -> erlang:error({badarg, Opt}); - #xdata_field{} -> [Opt]; - _ -> [] - end - || Opt <- List], - FormType = #xdata_field{var = <<"FORM_TYPE">>, - type = hidden, - values = - [<<"http://jabber.org/protocol/muc#register">>]}, - [FormType | lists:flatten(Fs)]. - -decode([#xdata_field{var = <<"muc#register_allow">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{allow, Result} | Acc], - lists:delete(<<"muc#register_allow">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#register_allow">>, - <<"http://jabber.org/protocol/muc#register">>}}) - end; -decode([#xdata_field{var = <<"muc#register_allow">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"muc#register_allow">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"muc#register_allow">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#register_allow">>, - <<"http://jabber.org/protocol/muc#register">>}}); -decode([#xdata_field{var = <<"muc#register_email">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{email, Result} | Acc], - lists:delete(<<"muc#register_email">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#register_email">>, - <<"http://jabber.org/protocol/muc#register">>}}) - end; -decode([#xdata_field{var = <<"muc#register_email">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"muc#register_email">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"muc#register_email">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#register_email">>, - <<"http://jabber.org/protocol/muc#register">>}}); -decode([#xdata_field{var = <<"muc#register_faqentry">>, - values = Values} - | Fs], - Acc, Required) -> - try [Value || Value <- Values] of - Result -> - decode(Fs, [{faqentry, Result} | Acc], - lists:delete(<<"muc#register_faqentry">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#register_faqentry">>, - <<"http://jabber.org/protocol/muc#register">>}}) - end; -decode([#xdata_field{var = <<"muc#register_first">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{first, Result} | Acc], - lists:delete(<<"muc#register_first">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#register_first">>, - <<"http://jabber.org/protocol/muc#register">>}}) - end; -decode([#xdata_field{var = <<"muc#register_first">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"muc#register_first">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"muc#register_first">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#register_first">>, - <<"http://jabber.org/protocol/muc#register">>}}); -decode([#xdata_field{var = <<"muc#register_last">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{last, Result} | Acc], - lists:delete(<<"muc#register_last">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#register_last">>, - <<"http://jabber.org/protocol/muc#register">>}}) - end; -decode([#xdata_field{var = <<"muc#register_last">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"muc#register_last">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"muc#register_last">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#register_last">>, - <<"http://jabber.org/protocol/muc#register">>}}); -decode([#xdata_field{var = <<"muc#register_roomnick">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{roomnick, Result} | Acc], - lists:delete(<<"muc#register_roomnick">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#register_roomnick">>, - <<"http://jabber.org/protocol/muc#register">>}}) - end; -decode([#xdata_field{var = <<"muc#register_roomnick">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"muc#register_roomnick">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"muc#register_roomnick">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#register_roomnick">>, - <<"http://jabber.org/protocol/muc#register">>}}); -decode([#xdata_field{var = <<"muc#register_url">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{url, Result} | Acc], - lists:delete(<<"muc#register_url">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#register_url">>, - <<"http://jabber.org/protocol/muc#register">>}}) - end; -decode([#xdata_field{var = <<"muc#register_url">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"muc#register_url">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"muc#register_url">>} | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#register_url">>, - <<"http://jabber.org/protocol/muc#register">>}}); -decode([#xdata_field{var = Var} | Fs], Acc, Required) -> - if Var /= <<"FORM_TYPE">> -> - erlang:error({?MODULE, - {unknown_var, Var, - <<"http://jabber.org/protocol/muc#register">>}}); - true -> decode(Fs, Acc, Required) - end; -decode([], _, [Var | _]) -> - erlang:error({?MODULE, - {missing_required_var, Var, - <<"http://jabber.org/protocol/muc#register">>}}); -decode([], Acc, []) -> Acc. - -encode_allow(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"muc#register_allow">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = - Translate(<<"Allow this person to register with the " - "room?">>)}. - -encode_email(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"muc#register_email">>, - values = Values, required = false, type = 'text-single', - options = Opts, desc = <<>>, - label = Translate(<<"Email Address">>)}. - -encode_faqentry(Value, Translate) -> - Values = case Value of - [] -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"muc#register_faqentry">>, - values = Values, required = false, type = 'text-multi', - options = Opts, desc = <<>>, - label = Translate(<<"FAQ Entry">>)}. - -encode_first(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"muc#register_first">>, - values = Values, required = false, type = 'text-single', - options = Opts, desc = <<>>, - label = Translate(<<"Given Name">>)}. - -encode_last(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"muc#register_last">>, - values = Values, required = false, type = 'text-single', - options = Opts, desc = <<>>, - label = Translate(<<"Family Name">>)}. - -encode_roomnick(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"muc#register_roomnick">>, - values = Values, required = false, type = 'text-single', - options = Opts, desc = <<>>, - label = Translate(<<"Nickname">>)}. - -encode_url(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"muc#register_url">>, - values = Values, required = false, type = 'text-single', - options = Opts, desc = <<>>, - label = Translate(<<"A Web Page">>)}. diff --git a/src/muc_request.erl b/src/muc_request.erl deleted file mode 100644 index 2d79ba0a5..000000000 --- a/src/muc_request.erl +++ /dev/null @@ -1,269 +0,0 @@ -%% Created automatically by xdata generator (xdata_codec.erl) -%% Source: muc_request.xdata -%% Form type: http://jabber.org/protocol/muc#request -%% Document: XEP-0045 - --module(muc_request). - --export([decode/1, decode/2, encode/1, encode/2, - format_error/1]). - --include("xmpp_codec.hrl"). - --include("muc_request.hrl"). - --export_type([property/0, result/0, form/0]). - -dec_enum(Val, Enums) -> - AtomVal = erlang:binary_to_existing_atom(Val, utf8), - case lists:member(AtomVal, Enums) of - true -> AtomVal - end. - -enc_enum(Atom) -> erlang:atom_to_binary(Atom, utf8). - -dec_bool(<<"1">>) -> true; -dec_bool(<<"0">>) -> false; -dec_bool(<<"true">>) -> true; -dec_bool(<<"false">>) -> false. - -enc_bool(true) -> <<"1">>; -enc_bool(false) -> <<"0">>. - -enc_jid(J) -> jid:to_string(J). - -dec_jid(Val) -> - case jid:from_string(Val) of - error -> erlang:error(badarg); - J -> J - end. - -format_error({form_type_mismatch, Type}) -> - <<"FORM_TYPE doesn't match '", Type/binary, "'">>; -format_error({bad_var_value, Var, Type}) -> - <<"Bad value of field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({missing_value, Var, Type}) -> - <<"Missing value of field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({too_many_values, Var, Type}) -> - <<"Too many values for field '", Var/binary, - "' of type '", Type/binary, "'">>; -format_error({unknown_var, Var, Type}) -> - <<"Unknown field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({missing_required_var, Var, Type}) -> - <<"Missing required field '", Var/binary, "' of type '", - Type/binary, "'">>. - -decode(Fs) -> decode(Fs, []). - -decode(Fs, Acc) -> - case lists:keyfind(<<"FORM_TYPE">>, #xdata_field.var, - Fs) - of - false -> decode(Fs, Acc, [<<"muc#role">>]); - #xdata_field{values = - [<<"http://jabber.org/protocol/muc#request">>]} -> - decode(Fs, Acc, [<<"muc#role">>]); - _ -> - erlang:error({?MODULE, - {form_type_mismatch, - <<"http://jabber.org/protocol/muc#request">>}}) - end. - -encode(Cfg) -> encode(Cfg, fun (Text) -> Text end). - -encode(List, Translate) when is_list(List) -> - Fs = [case Opt of - {role, Val} -> [encode_role(Val, default, Translate)]; - {role, Val, Opts} -> - [encode_role(Val, Opts, Translate)]; - {jid, Val} -> [encode_jid(Val, Translate)]; - {jid, _, _} -> erlang:error({badarg, Opt}); - {roomnick, Val} -> [encode_roomnick(Val, Translate)]; - {roomnick, _, _} -> erlang:error({badarg, Opt}); - {request_allow, Val} -> - [encode_request_allow(Val, Translate)]; - {request_allow, _, _} -> erlang:error({badarg, Opt}); - #xdata_field{} -> [Opt]; - _ -> [] - end - || Opt <- List], - FormType = #xdata_field{var = <<"FORM_TYPE">>, - type = hidden, - values = - [<<"http://jabber.org/protocol/muc#request">>]}, - [FormType | lists:flatten(Fs)]. - -decode([#xdata_field{var = <<"muc#role">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_enum(Value, [participant]) of - Result -> - decode(Fs, [{role, Result} | Acc], - lists:delete(<<"muc#role">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#role">>, - <<"http://jabber.org/protocol/muc#request">>}}) - end; -decode([#xdata_field{var = <<"muc#role">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"muc#role">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"muc#role">>} | _], _, - _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#role">>, - <<"http://jabber.org/protocol/muc#request">>}}); -decode([#xdata_field{var = <<"muc#jid">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_jid(Value) of - Result -> - decode(Fs, [{jid, Result} | Acc], - lists:delete(<<"muc#jid">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#jid">>, - <<"http://jabber.org/protocol/muc#request">>}}) - end; -decode([#xdata_field{var = <<"muc#jid">>, values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"muc#jid">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"muc#jid">>} | _], _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#jid">>, - <<"http://jabber.org/protocol/muc#request">>}}); -decode([#xdata_field{var = <<"muc#roomnick">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{roomnick, Result} | Acc], - lists:delete(<<"muc#roomnick">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roomnick">>, - <<"http://jabber.org/protocol/muc#request">>}}) - end; -decode([#xdata_field{var = <<"muc#roomnick">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"muc#roomnick">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"muc#roomnick">>} | _], _, - _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#roomnick">>, - <<"http://jabber.org/protocol/muc#request">>}}); -decode([#xdata_field{var = <<"muc#request_allow">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{request_allow, Result} | Acc], - lists:delete(<<"muc#request_allow">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#request_allow">>, - <<"http://jabber.org/protocol/muc#request">>}}) - end; -decode([#xdata_field{var = <<"muc#request_allow">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"muc#request_allow">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"muc#request_allow">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#request_allow">>, - <<"http://jabber.org/protocol/muc#request">>}}); -decode([#xdata_field{var = Var} | Fs], Acc, Required) -> - if Var /= <<"FORM_TYPE">> -> - erlang:error({?MODULE, - {unknown_var, Var, - <<"http://jabber.org/protocol/muc#request">>}}); - true -> decode(Fs, Acc, Required) - end; -decode([], _, [Var | _]) -> - erlang:error({?MODULE, - {missing_required_var, Var, - <<"http://jabber.org/protocol/muc#request">>}}); -decode([], Acc, []) -> Acc. - -encode_role(Value, Options, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_enum(Value)] - end, - Opts = if Options == default -> - [#xdata_option{label = Translate(<<"Participant">>), - value = <<"participant">>}]; - true -> - [#xdata_option{label = Translate(L), - value = enc_enum(V)} - || {L, V} <- Options] - end, - #xdata_field{var = <<"muc#role">>, values = Values, - required = false, type = 'list-single', options = Opts, - desc = <<>>, label = Translate(<<"Requested role">>)}. - -encode_jid(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_jid(Value)] - end, - Opts = [], - #xdata_field{var = <<"muc#jid">>, values = Values, - required = false, type = 'jid-single', options = Opts, - desc = <<>>, label = Translate(<<"User JID">>)}. - -encode_roomnick(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"muc#roomnick">>, values = Values, - required = false, type = 'text-single', options = Opts, - desc = <<>>, label = Translate(<<"Nickname">>)}. - -encode_request_allow(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"muc#request_allow">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = Translate(<<"Grant voice to this person?">>)}. diff --git a/src/muc_roomconfig.erl b/src/muc_roomconfig.erl deleted file mode 100644 index 7d18bab66..000000000 --- a/src/muc_roomconfig.erl +++ /dev/null @@ -1,1675 +0,0 @@ -%% Created automatically by xdata generator (xdata_codec.erl) -%% Source: muc_roomconfig.xdata -%% Form type: http://jabber.org/protocol/muc#roomconfig -%% Document: XEP-0045 - --module(muc_roomconfig). - --export([decode/1, decode/2, encode/1, encode/2, - format_error/1]). - --include("xmpp_codec.hrl"). - --include("muc_roomconfig.hrl"). - --export_type([property/0, result/0, form/0]). - -dec_int(Val, Min, Max) -> - case list_to_integer(binary_to_list(Val)) of - Int when Int =< Max, Min == infinity -> Int; - Int when Int =< Max, Int >= Min -> Int - end. - -enc_int(Int) -> integer_to_binary(Int). - -dec_enum(Val, Enums) -> - AtomVal = erlang:binary_to_existing_atom(Val, utf8), - case lists:member(AtomVal, Enums) of - true -> AtomVal - end. - -enc_enum(Atom) -> erlang:atom_to_binary(Atom, utf8). - -dec_enum_int(Val, Enums, Min, Max) -> - try dec_int(Val, Min, Max) catch - _:_ -> dec_enum(Val, Enums) - end. - -enc_enum_int(Int) when is_integer(Int) -> enc_int(Int); -enc_enum_int(Atom) -> enc_enum(Atom). - -dec_bool(<<"1">>) -> true; -dec_bool(<<"0">>) -> false; -dec_bool(<<"true">>) -> true; -dec_bool(<<"false">>) -> false. - -enc_bool(true) -> <<"1">>; -enc_bool(false) -> <<"0">>. - -enc_jid(J) -> jid:to_string(J). - -dec_jid(Val) -> - case jid:from_string(Val) of - error -> erlang:error(badarg); - J -> J - end. - -format_error({form_type_mismatch, Type}) -> - <<"FORM_TYPE doesn't match '", Type/binary, "'">>; -format_error({bad_var_value, Var, Type}) -> - <<"Bad value of field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({missing_value, Var, Type}) -> - <<"Missing value of field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({too_many_values, Var, Type}) -> - <<"Too many values for field '", Var/binary, - "' of type '", Type/binary, "'">>; -format_error({unknown_var, Var, Type}) -> - <<"Unknown field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({missing_required_var, Var, Type}) -> - <<"Missing required field '", Var/binary, "' of type '", - Type/binary, "'">>. - -decode(Fs) -> decode(Fs, []). - -decode(Fs, Acc) -> - case lists:keyfind(<<"FORM_TYPE">>, #xdata_field.var, - Fs) - of - false -> decode(Fs, Acc, []); - #xdata_field{values = - [<<"http://jabber.org/protocol/muc#roomconfig">>]} -> - decode(Fs, Acc, []); - _ -> - erlang:error({?MODULE, - {form_type_mismatch, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end. - -encode(Cfg) -> encode(Cfg, fun (Text) -> Text end). - -encode(List, Translate) when is_list(List) -> - Fs = [case Opt of - {maxhistoryfetch, Val} -> - [encode_maxhistoryfetch(Val, Translate)]; - {maxhistoryfetch, _, _} -> erlang:error({badarg, Opt}); - {allowpm, Val} -> - [encode_allowpm(Val, default, Translate)]; - {allowpm, Val, Opts} -> - [encode_allowpm(Val, Opts, Translate)]; - {allow_private_messages, Val} -> - [encode_allow_private_messages(Val, Translate)]; - {allow_private_messages, _, _} -> - erlang:error({badarg, Opt}); - {allow_private_messages_from_visitors, Val} -> - [encode_allow_private_messages_from_visitors(Val, - default, - Translate)]; - {allow_private_messages_from_visitors, Val, Opts} -> - [encode_allow_private_messages_from_visitors(Val, Opts, - Translate)]; - {allow_visitor_status, Val} -> - [encode_allow_visitor_status(Val, Translate)]; - {allow_visitor_status, _, _} -> - erlang:error({badarg, Opt}); - {allow_visitor_nickchange, Val} -> - [encode_allow_visitor_nickchange(Val, Translate)]; - {allow_visitor_nickchange, _, _} -> - erlang:error({badarg, Opt}); - {allow_voice_requests, Val} -> - [encode_allow_voice_requests(Val, Translate)]; - {allow_voice_requests, _, _} -> - erlang:error({badarg, Opt}); - {allow_subscription, Val} -> - [encode_allow_subscription(Val, Translate)]; - {allow_subscription, _, _} -> - erlang:error({badarg, Opt}); - {voice_request_min_interval, Val} -> - [encode_voice_request_min_interval(Val, Translate)]; - {voice_request_min_interval, _, _} -> - erlang:error({badarg, Opt}); - {captcha_protected, Val} -> - [encode_captcha_protected(Val, Translate)]; - {captcha_protected, _, _} -> - erlang:error({badarg, Opt}); - {captcha_whitelist, Val} -> - [encode_captcha_whitelist(Val, Translate)]; - {captcha_whitelist, _, _} -> - erlang:error({badarg, Opt}); - {allow_query_users, Val} -> - [encode_allow_query_users(Val, Translate)]; - {allow_query_users, _, _} -> - erlang:error({badarg, Opt}); - {allowinvites, Val} -> - [encode_allowinvites(Val, Translate)]; - {allowinvites, _, _} -> erlang:error({badarg, Opt}); - {changesubject, Val} -> - [encode_changesubject(Val, Translate)]; - {changesubject, _, _} -> erlang:error({badarg, Opt}); - {enablelogging, Val} -> - [encode_enablelogging(Val, Translate)]; - {enablelogging, _, _} -> erlang:error({badarg, Opt}); - {getmemberlist, Val} -> - [encode_getmemberlist(Val, default, Translate)]; - {getmemberlist, Val, Opts} -> - [encode_getmemberlist(Val, Opts, Translate)]; - {lang, Val} -> [encode_lang(Val, Translate)]; - {lang, _, _} -> erlang:error({badarg, Opt}); - {pubsub, Val} -> [encode_pubsub(Val, Translate)]; - {pubsub, _, _} -> erlang:error({badarg, Opt}); - {maxusers, Val} -> - [encode_maxusers(Val, default, Translate)]; - {maxusers, Val, Opts} -> - [encode_maxusers(Val, Opts, Translate)]; - {membersonly, Val} -> - [encode_membersonly(Val, Translate)]; - {membersonly, _, _} -> erlang:error({badarg, Opt}); - {moderatedroom, Val} -> - [encode_moderatedroom(Val, Translate)]; - {moderatedroom, _, _} -> erlang:error({badarg, Opt}); - {members_by_default, Val} -> - [encode_members_by_default(Val, Translate)]; - {members_by_default, _, _} -> - erlang:error({badarg, Opt}); - {passwordprotectedroom, Val} -> - [encode_passwordprotectedroom(Val, Translate)]; - {passwordprotectedroom, _, _} -> - erlang:error({badarg, Opt}); - {persistentroom, Val} -> - [encode_persistentroom(Val, Translate)]; - {persistentroom, _, _} -> erlang:error({badarg, Opt}); - {presencebroadcast, Val} -> - [encode_presencebroadcast(Val, default, Translate)]; - {presencebroadcast, Val, Opts} -> - [encode_presencebroadcast(Val, Opts, Translate)]; - {publicroom, Val} -> - [encode_publicroom(Val, Translate)]; - {publicroom, _, _} -> erlang:error({badarg, Opt}); - {public_list, Val} -> - [encode_public_list(Val, Translate)]; - {public_list, _, _} -> erlang:error({badarg, Opt}); - {roomadmins, Val} -> - [encode_roomadmins(Val, Translate)]; - {roomadmins, _, _} -> erlang:error({badarg, Opt}); - {roomdesc, Val} -> [encode_roomdesc(Val, Translate)]; - {roomdesc, _, _} -> erlang:error({badarg, Opt}); - {roomname, Val} -> [encode_roomname(Val, Translate)]; - {roomname, _, _} -> erlang:error({badarg, Opt}); - {roomowners, Val} -> - [encode_roomowners(Val, Translate)]; - {roomowners, _, _} -> erlang:error({badarg, Opt}); - {roomsecret, Val} -> - [encode_roomsecret(Val, Translate)]; - {roomsecret, _, _} -> erlang:error({badarg, Opt}); - {whois, Val} -> [encode_whois(Val, default, Translate)]; - {whois, Val, Opts} -> - [encode_whois(Val, Opts, Translate)]; - {mam, Val} -> [encode_mam(Val, Translate)]; - {mam, _, _} -> erlang:error({badarg, Opt}); - #xdata_field{} -> [Opt]; - _ -> [] - end - || Opt <- List], - FormType = #xdata_field{var = <<"FORM_TYPE">>, - type = hidden, - values = - [<<"http://jabber.org/protocol/muc#roomconfig">>]}, - [FormType | lists:flatten(Fs)]. - -decode([#xdata_field{var = <<"muc#maxhistoryfetch">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{maxhistoryfetch, Result} | Acc], - lists:delete(<<"muc#maxhistoryfetch">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#maxhistoryfetch">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = <<"muc#maxhistoryfetch">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"muc#maxhistoryfetch">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"muc#maxhistoryfetch">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#maxhistoryfetch">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = <<"muc#roomconfig_allowpm">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{allowpm, Result} | Acc], - lists:delete(<<"muc#roomconfig_allowpm">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roomconfig_allowpm">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = <<"muc#roomconfig_allowpm">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"muc#roomconfig_allowpm">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"muc#roomconfig_allowpm">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#roomconfig_allowpm">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = <<"allow_private_messages">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{allow_private_messages, Result} | Acc], - lists:delete(<<"allow_private_messages">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"allow_private_messages">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = <<"allow_private_messages">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"allow_private_messages">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"allow_private_messages">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"allow_private_messages">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = - <<"allow_private_messages_from_visitors">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_enum(Value, [nobody, moderators, anyone]) of - Result -> - decode(Fs, - [{allow_private_messages_from_visitors, Result} | Acc], - lists:delete(<<"allow_private_messages_from_visitors">>, - Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, - <<"allow_private_messages_from_visitors">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = - <<"allow_private_messages_from_visitors">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"allow_private_messages_from_visitors">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = - <<"allow_private_messages_from_visitors">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, - <<"allow_private_messages_from_visitors">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = <<"allow_visitor_status">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{allow_visitor_status, Result} | Acc], - lists:delete(<<"allow_visitor_status">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"allow_visitor_status">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = <<"allow_visitor_status">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"allow_visitor_status">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"allow_visitor_status">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"allow_visitor_status">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = - <<"allow_visitor_nickchange">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{allow_visitor_nickchange, Result} | Acc], - lists:delete(<<"allow_visitor_nickchange">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"allow_visitor_nickchange">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = - <<"allow_visitor_nickchange">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"allow_visitor_nickchange">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = - <<"allow_visitor_nickchange">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"allow_visitor_nickchange">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = <<"allow_voice_requests">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{allow_voice_requests, Result} | Acc], - lists:delete(<<"allow_voice_requests">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"allow_voice_requests">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = <<"allow_voice_requests">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"allow_voice_requests">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"allow_voice_requests">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"allow_voice_requests">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = <<"allow_subscription">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{allow_subscription, Result} | Acc], - lists:delete(<<"allow_subscription">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"allow_subscription">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = <<"allow_subscription">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"allow_subscription">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"allow_subscription">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"allow_subscription">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = - <<"voice_request_min_interval">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_int(Value, 0, infinity) of - Result -> - decode(Fs, [{voice_request_min_interval, Result} | Acc], - lists:delete(<<"voice_request_min_interval">>, - Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"voice_request_min_interval">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = - <<"voice_request_min_interval">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"voice_request_min_interval">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = - <<"voice_request_min_interval">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"voice_request_min_interval">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = <<"captcha_protected">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{captcha_protected, Result} | Acc], - lists:delete(<<"captcha_protected">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"captcha_protected">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = <<"captcha_protected">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"captcha_protected">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"captcha_protected">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"captcha_protected">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = <<"captcha_whitelist">>, - values = Values} - | Fs], - Acc, Required) -> - try [dec_jid(Value) || Value <- Values] of - Result -> - decode(Fs, [{captcha_whitelist, Result} | Acc], - lists:delete(<<"captcha_whitelist">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"captcha_whitelist">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = <<"allow_query_users">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{allow_query_users, Result} | Acc], - lists:delete(<<"allow_query_users">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"allow_query_users">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = <<"allow_query_users">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"allow_query_users">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"allow_query_users">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"allow_query_users">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = - <<"muc#roomconfig_allowinvites">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{allowinvites, Result} | Acc], - lists:delete(<<"muc#roomconfig_allowinvites">>, - Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roomconfig_allowinvites">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = - <<"muc#roomconfig_allowinvites">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"muc#roomconfig_allowinvites">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = - <<"muc#roomconfig_allowinvites">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#roomconfig_allowinvites">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = - <<"muc#roomconfig_changesubject">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{changesubject, Result} | Acc], - lists:delete(<<"muc#roomconfig_changesubject">>, - Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roomconfig_changesubject">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = - <<"muc#roomconfig_changesubject">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"muc#roomconfig_changesubject">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = - <<"muc#roomconfig_changesubject">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#roomconfig_changesubject">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = - <<"muc#roomconfig_enablelogging">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{enablelogging, Result} | Acc], - lists:delete(<<"muc#roomconfig_enablelogging">>, - Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roomconfig_enablelogging">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = - <<"muc#roomconfig_enablelogging">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"muc#roomconfig_enablelogging">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = - <<"muc#roomconfig_enablelogging">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#roomconfig_enablelogging">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = - <<"muc#roomconfig_getmemberlist">>, - values = Values} - | Fs], - Acc, Required) -> - try [Value || Value <- Values] of - Result -> - decode(Fs, [{getmemberlist, Result} | Acc], - lists:delete(<<"muc#roomconfig_getmemberlist">>, - Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roomconfig_getmemberlist">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = <<"muc#roomconfig_lang">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{lang, Result} | Acc], - lists:delete(<<"muc#roomconfig_lang">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roomconfig_lang">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = <<"muc#roomconfig_lang">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"muc#roomconfig_lang">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"muc#roomconfig_lang">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#roomconfig_lang">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = <<"muc#roomconfig_pubsub">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{pubsub, Result} | Acc], - lists:delete(<<"muc#roomconfig_pubsub">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roomconfig_pubsub">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = <<"muc#roomconfig_pubsub">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"muc#roomconfig_pubsub">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"muc#roomconfig_pubsub">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#roomconfig_pubsub">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = - <<"muc#roomconfig_maxusers">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_enum_int(Value, [none], 0, infinity) of - Result -> - decode(Fs, [{maxusers, Result} | Acc], - lists:delete(<<"muc#roomconfig_maxusers">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roomconfig_maxusers">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = - <<"muc#roomconfig_maxusers">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"muc#roomconfig_maxusers">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = - <<"muc#roomconfig_maxusers">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#roomconfig_maxusers">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = - <<"muc#roomconfig_membersonly">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{membersonly, Result} | Acc], - lists:delete(<<"muc#roomconfig_membersonly">>, - Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roomconfig_membersonly">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = - <<"muc#roomconfig_membersonly">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"muc#roomconfig_membersonly">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = - <<"muc#roomconfig_membersonly">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#roomconfig_membersonly">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = - <<"muc#roomconfig_moderatedroom">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{moderatedroom, Result} | Acc], - lists:delete(<<"muc#roomconfig_moderatedroom">>, - Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roomconfig_moderatedroom">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = - <<"muc#roomconfig_moderatedroom">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"muc#roomconfig_moderatedroom">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = - <<"muc#roomconfig_moderatedroom">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#roomconfig_moderatedroom">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = <<"members_by_default">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{members_by_default, Result} | Acc], - lists:delete(<<"members_by_default">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"members_by_default">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = <<"members_by_default">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"members_by_default">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"members_by_default">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"members_by_default">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = - <<"muc#roomconfig_passwordprotectedroom">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{passwordprotectedroom, Result} | Acc], - lists:delete(<<"muc#roomconfig_passwordprotectedroom">>, - Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, - <<"muc#roomconfig_passwordprotectedroom">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = - <<"muc#roomconfig_passwordprotectedroom">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"muc#roomconfig_passwordprotectedroom">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = - <<"muc#roomconfig_passwordprotectedroom">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, - <<"muc#roomconfig_passwordprotectedroom">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = - <<"muc#roomconfig_persistentroom">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{persistentroom, Result} | Acc], - lists:delete(<<"muc#roomconfig_persistentroom">>, - Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roomconfig_persistentroom">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = - <<"muc#roomconfig_persistentroom">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"muc#roomconfig_persistentroom">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = - <<"muc#roomconfig_persistentroom">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#roomconfig_persistentroom">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = - <<"muc#roomconfig_presencebroadcast">>, - values = Values} - | Fs], - Acc, Required) -> - try [dec_enum(Value, [moderator, participant, visitor]) - || Value <- Values] - of - Result -> - decode(Fs, [{presencebroadcast, Result} | Acc], - lists:delete(<<"muc#roomconfig_presencebroadcast">>, - Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roomconfig_presencebroadcast">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = - <<"muc#roomconfig_publicroom">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{publicroom, Result} | Acc], - lists:delete(<<"muc#roomconfig_publicroom">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roomconfig_publicroom">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = - <<"muc#roomconfig_publicroom">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"muc#roomconfig_publicroom">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = - <<"muc#roomconfig_publicroom">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#roomconfig_publicroom">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = <<"public_list">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{public_list, Result} | Acc], - lists:delete(<<"public_list">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"public_list">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = <<"public_list">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"public_list">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"public_list">>} | _], _, - _) -> - erlang:error({?MODULE, - {too_many_values, <<"public_list">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = - <<"muc#roomconfig_roomadmins">>, - values = Values} - | Fs], - Acc, Required) -> - try [dec_jid(Value) || Value <- Values] of - Result -> - decode(Fs, [{roomadmins, Result} | Acc], - lists:delete(<<"muc#roomconfig_roomadmins">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roomconfig_roomadmins">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = - <<"muc#roomconfig_roomdesc">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{roomdesc, Result} | Acc], - lists:delete(<<"muc#roomconfig_roomdesc">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roomconfig_roomdesc">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = - <<"muc#roomconfig_roomdesc">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"muc#roomconfig_roomdesc">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = - <<"muc#roomconfig_roomdesc">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#roomconfig_roomdesc">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = - <<"muc#roomconfig_roomname">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{roomname, Result} | Acc], - lists:delete(<<"muc#roomconfig_roomname">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roomconfig_roomname">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = - <<"muc#roomconfig_roomname">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"muc#roomconfig_roomname">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = - <<"muc#roomconfig_roomname">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#roomconfig_roomname">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = - <<"muc#roomconfig_roomowners">>, - values = Values} - | Fs], - Acc, Required) -> - try [dec_jid(Value) || Value <- Values] of - Result -> - decode(Fs, [{roomowners, Result} | Acc], - lists:delete(<<"muc#roomconfig_roomowners">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roomconfig_roomowners">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = - <<"muc#roomconfig_roomsecret">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{roomsecret, Result} | Acc], - lists:delete(<<"muc#roomconfig_roomsecret">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roomconfig_roomsecret">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = - <<"muc#roomconfig_roomsecret">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"muc#roomconfig_roomsecret">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = - <<"muc#roomconfig_roomsecret">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#roomconfig_roomsecret">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = <<"muc#roomconfig_whois">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_enum(Value, [moderators, anyone]) of - Result -> - decode(Fs, [{whois, Result} | Acc], - lists:delete(<<"muc#roomconfig_whois">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roomconfig_whois">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = <<"muc#roomconfig_whois">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"muc#roomconfig_whois">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"muc#roomconfig_whois">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#roomconfig_whois">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = <<"mam">>, values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{mam, Result} | Acc], - lists:delete(<<"mam">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"mam">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}) - end; -decode([#xdata_field{var = <<"mam">>, values = []} = F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"mam">>, values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"mam">>} | _], _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"mam">>, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([#xdata_field{var = Var} | Fs], Acc, Required) -> - if Var /= <<"FORM_TYPE">> -> - erlang:error({?MODULE, - {unknown_var, Var, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); - true -> decode(Fs, Acc, Required) - end; -decode([], _, [Var | _]) -> - erlang:error({?MODULE, - {missing_required_var, Var, - <<"http://jabber.org/protocol/muc#roomconfig">>}}); -decode([], Acc, []) -> Acc. - -encode_maxhistoryfetch(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"muc#maxhistoryfetch">>, - values = Values, required = false, type = 'text-single', - options = Opts, desc = <<>>, - label = - Translate(<<"Maximum Number of History Messages Returned " - "by Room">>)}. - -encode_allowpm(Value, Options, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = if Options == default -> []; - true -> - [#xdata_option{label = Translate(L), value = V} - || {L, V} <- Options] - end, - #xdata_field{var = <<"muc#roomconfig_allowpm">>, - values = Values, required = false, type = 'list-single', - options = Opts, desc = <<>>, - label = - Translate(<<"Roles that May Send Private Messages">>)}. - -encode_allow_private_messages(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"allow_private_messages">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = - Translate(<<"Allow users to send private messages">>)}. - -encode_allow_private_messages_from_visitors(Value, - Options, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_enum(Value)] - end, - Opts = if Options == default -> - [#xdata_option{label = Translate(<<"nobody">>), - value = <<"nobody">>}, - #xdata_option{label = Translate(<<"moderators only">>), - value = <<"moderators">>}, - #xdata_option{label = Translate(<<"anyone">>), - value = <<"anyone">>}]; - true -> - [#xdata_option{label = Translate(L), - value = enc_enum(V)} - || {L, V} <- Options] - end, - #xdata_field{var = - <<"allow_private_messages_from_visitors">>, - values = Values, required = false, type = 'list-single', - options = Opts, desc = <<>>, - label = - Translate(<<"Allow visitors to send private messages to">>)}. - -encode_allow_visitor_status(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"allow_visitor_status">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = - Translate(<<"Allow visitors to send status text in " - "presence updates">>)}. - -encode_allow_visitor_nickchange(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"allow_visitor_nickchange">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = - Translate(<<"Allow visitors to change nickname">>)}. - -encode_allow_voice_requests(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"allow_voice_requests">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = - Translate(<<"Allow visitors to send voice requests">>)}. - -encode_allow_subscription(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"allow_subscription">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = Translate(<<"Allow subscription">>)}. - -encode_voice_request_min_interval(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_int(Value)] - end, - Opts = [], - #xdata_field{var = <<"voice_request_min_interval">>, - values = Values, required = false, type = 'text-single', - options = Opts, desc = <<>>, - label = - Translate(<<"Minimum interval between voice requests " - "(in seconds)">>)}. - -encode_captcha_protected(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"captcha_protected">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = Translate(<<"Make room CAPTCHA protected">>)}. - -encode_captcha_whitelist(Value, Translate) -> - Values = case Value of - [] -> []; - Value -> [enc_jid(V) || V <- Value] - end, - Opts = [], - #xdata_field{var = <<"captcha_whitelist">>, - values = Values, required = false, type = 'jid-multi', - options = Opts, desc = <<>>, - label = - Translate(<<"Exclude Jabber IDs from CAPTCHA challenge">>)}. - -encode_allow_query_users(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"allow_query_users">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = - Translate(<<"Allow users to query other users">>)}. - -encode_allowinvites(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"muc#roomconfig_allowinvites">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = Translate(<<"Allow users to send invites">>)}. - -encode_changesubject(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"muc#roomconfig_changesubject">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = - Translate(<<"Allow users to change the subject">>)}. - -encode_enablelogging(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"muc#roomconfig_enablelogging">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = Translate(<<"Enable logging">>)}. - -encode_getmemberlist(Value, Options, Translate) -> - Values = case Value of - [] -> []; - Value -> [Value] - end, - Opts = if Options == default -> []; - true -> - [#xdata_option{label = Translate(L), value = V} - || {L, V} <- Options] - end, - #xdata_field{var = <<"muc#roomconfig_getmemberlist">>, - values = Values, required = false, type = 'list-multi', - options = Opts, desc = <<>>, - label = - Translate(<<"Roles and Affiliations that May Retrieve " - "Member List">>)}. - -encode_lang(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"muc#roomconfig_lang">>, - values = Values, required = false, type = 'text-single', - options = Opts, desc = <<>>, - label = - Translate(<<"Natural Language for Room Discussions">>)}. - -encode_pubsub(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"muc#roomconfig_pubsub">>, - values = Values, required = false, type = 'text-single', - options = Opts, desc = <<>>, - label = - Translate(<<"XMPP URI of Associated Publish-Subscribe " - "Node">>)}. - -encode_maxusers(Value, Options, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_enum_int(Value)] - end, - Opts = if Options == default -> - [#xdata_option{label = Translate(<<"No limit">>), - value = <<"none">>}, - #xdata_option{value = <<"5">>}, - #xdata_option{value = <<"10">>}, - #xdata_option{value = <<"20">>}, - #xdata_option{value = <<"30">>}, - #xdata_option{value = <<"50">>}, - #xdata_option{value = <<"100">>}, - #xdata_option{value = <<"200">>}, - #xdata_option{value = <<"500">>}, - #xdata_option{value = <<"1000">>}, - #xdata_option{value = <<"2000">>}, - #xdata_option{value = <<"5000">>}]; - true -> - [#xdata_option{label = Translate(L), - value = enc_enum_int(V)} - || {L, V} <- Options] - end, - #xdata_field{var = <<"muc#roomconfig_maxusers">>, - values = Values, required = false, type = 'list-single', - options = Opts, desc = <<>>, - label = Translate(<<"Maximum Number of Occupants">>)}. - -encode_membersonly(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"muc#roomconfig_membersonly">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = Translate(<<"Make room members-only">>)}. - -encode_moderatedroom(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"muc#roomconfig_moderatedroom">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = Translate(<<"Make room moderated">>)}. - -encode_members_by_default(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"members_by_default">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = Translate(<<"Default users as participants">>)}. - -encode_passwordprotectedroom(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = - <<"muc#roomconfig_passwordprotectedroom">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = Translate(<<"Make room password protected">>)}. - -encode_persistentroom(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"muc#roomconfig_persistentroom">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = Translate(<<"Make room persistent">>)}. - -encode_presencebroadcast(Value, Options, Translate) -> - Values = case Value of - [] -> []; - Value -> [enc_enum(V) || V <- Value] - end, - Opts = if Options == default -> - [#xdata_option{label = Translate(<<"Moderator">>), - value = <<"moderator">>}, - #xdata_option{label = Translate(<<"Participant">>), - value = <<"participant">>}, - #xdata_option{label = Translate(<<"Visitor">>), - value = <<"visitor">>}]; - true -> - [#xdata_option{label = Translate(L), - value = enc_enum(V)} - || {L, V} <- Options] - end, - #xdata_field{var = - <<"muc#roomconfig_presencebroadcast">>, - values = Values, required = false, type = 'list-multi', - options = Opts, desc = <<>>, - label = - Translate(<<"Roles for which Presence is Broadcasted">>)}. - -encode_publicroom(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"muc#roomconfig_publicroom">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = Translate(<<"Make room public searchable">>)}. - -encode_public_list(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"public_list">>, values = Values, - required = false, type = boolean, options = Opts, - desc = <<>>, - label = Translate(<<"Make participants list public">>)}. - -encode_roomadmins(Value, Translate) -> - Values = case Value of - [] -> []; - Value -> [enc_jid(V) || V <- Value] - end, - Opts = [], - #xdata_field{var = <<"muc#roomconfig_roomadmins">>, - values = Values, required = false, type = 'jid-multi', - options = Opts, desc = <<>>, - label = Translate(<<"Full List of Room Admins">>)}. - -encode_roomdesc(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"muc#roomconfig_roomdesc">>, - values = Values, required = false, type = 'text-single', - options = Opts, desc = <<>>, - label = Translate(<<"Room description">>)}. - -encode_roomname(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"muc#roomconfig_roomname">>, - values = Values, required = false, type = 'text-single', - options = Opts, desc = <<>>, - label = Translate(<<"Room title">>)}. - -encode_roomowners(Value, Translate) -> - Values = case Value of - [] -> []; - Value -> [enc_jid(V) || V <- Value] - end, - Opts = [], - #xdata_field{var = <<"muc#roomconfig_roomowners">>, - values = Values, required = false, type = 'jid-multi', - options = Opts, desc = <<>>, - label = Translate(<<"Full List of Room Owners">>)}. - -encode_roomsecret(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"muc#roomconfig_roomsecret">>, - values = Values, required = false, - type = 'text-private', options = Opts, desc = <<>>, - label = Translate(<<"Password">>)}. - -encode_whois(Value, Options, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_enum(Value)] - end, - Opts = if Options == default -> - [#xdata_option{label = Translate(<<"moderators only">>), - value = <<"moderators">>}, - #xdata_option{label = Translate(<<"anyone">>), - value = <<"anyone">>}]; - true -> - [#xdata_option{label = Translate(L), - value = enc_enum(V)} - || {L, V} <- Options] - end, - #xdata_field{var = <<"muc#roomconfig_whois">>, - values = Values, required = false, type = 'list-single', - options = Opts, desc = <<>>, - label = Translate(<<"Present real Jabber IDs to">>)}. - -encode_mam(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"mam">>, values = Values, - required = false, type = boolean, options = Opts, - desc = <<>>, - label = Translate(<<"Enable message archiving">>)}. diff --git a/src/muc_roominfo.erl b/src/muc_roominfo.erl deleted file mode 100644 index bd5cb011b..000000000 --- a/src/muc_roominfo.erl +++ /dev/null @@ -1,491 +0,0 @@ -%% Created automatically by xdata generator (xdata_codec.erl) -%% Source: muc_roominfo.xdata -%% Form type: http://jabber.org/protocol/muc#roominfo -%% Document: XEP-0045 - --module(muc_roominfo). - --export([decode/1, decode/2, encode/1, encode/2, - format_error/1]). - --include("xmpp_codec.hrl"). - --include("muc_roominfo.hrl"). - --export_type([property/0, result/0, form/0]). - -dec_int(Val, Min, Max) -> - case list_to_integer(binary_to_list(Val)) of - Int when Int =< Max, Min == infinity -> Int; - Int when Int =< Max, Int >= Min -> Int - end. - -enc_int(Int) -> integer_to_binary(Int). - -dec_bool(<<"1">>) -> true; -dec_bool(<<"0">>) -> false; -dec_bool(<<"true">>) -> true; -dec_bool(<<"false">>) -> false. - -enc_bool(true) -> <<"1">>; -enc_bool(false) -> <<"0">>. - -enc_jid(J) -> jid:to_string(J). - -dec_jid(Val) -> - case jid:from_string(Val) of - error -> erlang:error(badarg); - J -> J - end. - -format_error({form_type_mismatch, Type}) -> - <<"FORM_TYPE doesn't match '", Type/binary, "'">>; -format_error({bad_var_value, Var, Type}) -> - <<"Bad value of field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({missing_value, Var, Type}) -> - <<"Missing value of field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({too_many_values, Var, Type}) -> - <<"Too many values for field '", Var/binary, - "' of type '", Type/binary, "'">>; -format_error({unknown_var, Var, Type}) -> - <<"Unknown field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({missing_required_var, Var, Type}) -> - <<"Missing required field '", Var/binary, "' of type '", - Type/binary, "'">>. - -decode(Fs) -> decode(Fs, []). - -decode(Fs, Acc) -> - case lists:keyfind(<<"FORM_TYPE">>, #xdata_field.var, - Fs) - of - false -> decode(Fs, Acc, []); - #xdata_field{values = - [<<"http://jabber.org/protocol/muc#roominfo">>]} -> - decode(Fs, Acc, []); - _ -> - erlang:error({?MODULE, - {form_type_mismatch, - <<"http://jabber.org/protocol/muc#roominfo">>}}) - end. - -encode(Cfg) -> encode(Cfg, fun (Text) -> Text end). - -encode(List, Translate) when is_list(List) -> - Fs = [case Opt of - {maxhistoryfetch, Val} -> - [encode_maxhistoryfetch(Val, Translate)]; - {maxhistoryfetch, _, _} -> erlang:error({badarg, Opt}); - {contactjid, Val} -> - [encode_contactjid(Val, Translate)]; - {contactjid, _, _} -> erlang:error({badarg, Opt}); - {description, Val} -> - [encode_description(Val, Translate)]; - {description, _, _} -> erlang:error({badarg, Opt}); - {lang, Val} -> [encode_lang(Val, Translate)]; - {lang, _, _} -> erlang:error({badarg, Opt}); - {ldapgroup, Val} -> [encode_ldapgroup(Val, Translate)]; - {ldapgroup, _, _} -> erlang:error({badarg, Opt}); - {logs, Val} -> [encode_logs(Val, Translate)]; - {logs, _, _} -> erlang:error({badarg, Opt}); - {occupants, Val} -> [encode_occupants(Val, Translate)]; - {occupants, _, _} -> erlang:error({badarg, Opt}); - {subject, Val} -> [encode_subject(Val, Translate)]; - {subject, _, _} -> erlang:error({badarg, Opt}); - {subjectmod, Val} -> - [encode_subjectmod(Val, Translate)]; - {subjectmod, _, _} -> erlang:error({badarg, Opt}); - #xdata_field{} -> [Opt]; - _ -> [] - end - || Opt <- List], - FormType = #xdata_field{var = <<"FORM_TYPE">>, - type = hidden, - values = - [<<"http://jabber.org/protocol/muc#roominfo">>]}, - [FormType | lists:flatten(Fs)]. - -decode([#xdata_field{var = <<"muc#maxhistoryfetch">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_int(Value, 0, infinity) of - Result -> - decode(Fs, [{maxhistoryfetch, Result} | Acc], - lists:delete(<<"muc#maxhistoryfetch">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#maxhistoryfetch">>, - <<"http://jabber.org/protocol/muc#roominfo">>}}) - end; -decode([#xdata_field{var = <<"muc#maxhistoryfetch">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"muc#maxhistoryfetch">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"muc#maxhistoryfetch">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#maxhistoryfetch">>, - <<"http://jabber.org/protocol/muc#roominfo">>}}); -decode([#xdata_field{var = - <<"muc#roominfo_contactjid">>, - values = Values} - | Fs], - Acc, Required) -> - try [dec_jid(Value) || Value <- Values] of - Result -> - decode(Fs, [{contactjid, Result} | Acc], - lists:delete(<<"muc#roominfo_contactjid">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roominfo_contactjid">>, - <<"http://jabber.org/protocol/muc#roominfo">>}}) - end; -decode([#xdata_field{var = - <<"muc#roominfo_description">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{description, Result} | Acc], - lists:delete(<<"muc#roominfo_description">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roominfo_description">>, - <<"http://jabber.org/protocol/muc#roominfo">>}}) - end; -decode([#xdata_field{var = - <<"muc#roominfo_description">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"muc#roominfo_description">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = - <<"muc#roominfo_description">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#roominfo_description">>, - <<"http://jabber.org/protocol/muc#roominfo">>}}); -decode([#xdata_field{var = <<"muc#roominfo_lang">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{lang, Result} | Acc], - lists:delete(<<"muc#roominfo_lang">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roominfo_lang">>, - <<"http://jabber.org/protocol/muc#roominfo">>}}) - end; -decode([#xdata_field{var = <<"muc#roominfo_lang">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"muc#roominfo_lang">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"muc#roominfo_lang">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#roominfo_lang">>, - <<"http://jabber.org/protocol/muc#roominfo">>}}); -decode([#xdata_field{var = <<"muc#roominfo_ldapgroup">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{ldapgroup, Result} | Acc], - lists:delete(<<"muc#roominfo_ldapgroup">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roominfo_ldapgroup">>, - <<"http://jabber.org/protocol/muc#roominfo">>}}) - end; -decode([#xdata_field{var = <<"muc#roominfo_ldapgroup">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"muc#roominfo_ldapgroup">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"muc#roominfo_ldapgroup">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#roominfo_ldapgroup">>, - <<"http://jabber.org/protocol/muc#roominfo">>}}); -decode([#xdata_field{var = <<"muc#roominfo_logs">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{logs, Result} | Acc], - lists:delete(<<"muc#roominfo_logs">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roominfo_logs">>, - <<"http://jabber.org/protocol/muc#roominfo">>}}) - end; -decode([#xdata_field{var = <<"muc#roominfo_logs">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"muc#roominfo_logs">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"muc#roominfo_logs">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#roominfo_logs">>, - <<"http://jabber.org/protocol/muc#roominfo">>}}); -decode([#xdata_field{var = <<"muc#roominfo_occupants">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_int(Value, 0, infinity) of - Result -> - decode(Fs, [{occupants, Result} | Acc], - lists:delete(<<"muc#roominfo_occupants">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roominfo_occupants">>, - <<"http://jabber.org/protocol/muc#roominfo">>}}) - end; -decode([#xdata_field{var = <<"muc#roominfo_occupants">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"muc#roominfo_occupants">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"muc#roominfo_occupants">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#roominfo_occupants">>, - <<"http://jabber.org/protocol/muc#roominfo">>}}); -decode([#xdata_field{var = <<"muc#roominfo_subject">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{subject, Result} | Acc], - lists:delete(<<"muc#roominfo_subject">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roominfo_subject">>, - <<"http://jabber.org/protocol/muc#roominfo">>}}) - end; -decode([#xdata_field{var = <<"muc#roominfo_subject">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"muc#roominfo_subject">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"muc#roominfo_subject">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#roominfo_subject">>, - <<"http://jabber.org/protocol/muc#roominfo">>}}); -decode([#xdata_field{var = - <<"muc#roominfo_subjectmod">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{subjectmod, Result} | Acc], - lists:delete(<<"muc#roominfo_subjectmod">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"muc#roominfo_subjectmod">>, - <<"http://jabber.org/protocol/muc#roominfo">>}}) - end; -decode([#xdata_field{var = - <<"muc#roominfo_subjectmod">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"muc#roominfo_subjectmod">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = - <<"muc#roominfo_subjectmod">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"muc#roominfo_subjectmod">>, - <<"http://jabber.org/protocol/muc#roominfo">>}}); -decode([#xdata_field{var = Var} | Fs], Acc, Required) -> - if Var /= <<"FORM_TYPE">> -> - erlang:error({?MODULE, - {unknown_var, Var, - <<"http://jabber.org/protocol/muc#roominfo">>}}); - true -> decode(Fs, Acc, Required) - end; -decode([], _, [Var | _]) -> - erlang:error({?MODULE, - {missing_required_var, Var, - <<"http://jabber.org/protocol/muc#roominfo">>}}); -decode([], Acc, []) -> Acc. - -encode_maxhistoryfetch(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_int(Value)] - end, - Opts = [], - #xdata_field{var = <<"muc#maxhistoryfetch">>, - values = Values, required = false, type = 'text-single', - options = Opts, desc = <<>>, - label = - Translate(<<"Maximum Number of History Messages Returned " - "by Room">>)}. - -encode_contactjid(Value, Translate) -> - Values = case Value of - [] -> []; - Value -> [enc_jid(V) || V <- Value] - end, - Opts = [], - #xdata_field{var = <<"muc#roominfo_contactjid">>, - values = Values, required = false, type = 'jid-multi', - options = Opts, desc = <<>>, - label = - Translate(<<"Contact Addresses (normally, room owner " - "or owners)">>)}. - -encode_description(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"muc#roominfo_description">>, - values = Values, required = false, type = 'text-single', - options = Opts, desc = <<>>, - label = Translate(<<"Room description">>)}. - -encode_lang(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"muc#roominfo_lang">>, - values = Values, required = false, type = 'text-single', - options = Opts, desc = <<>>, - label = - Translate(<<"Natural Language for Room Discussions">>)}. - -encode_ldapgroup(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"muc#roominfo_ldapgroup">>, - values = Values, required = false, type = 'text-single', - options = Opts, desc = <<>>, - label = - Translate(<<"An associated LDAP group that defines " - "room membership; this should be an LDAP " - "Distinguished Name according to an implementa" - "tion-specific or deployment-specific " - "definition of a group.">>)}. - -encode_logs(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"muc#roominfo_logs">>, - values = Values, required = false, type = 'text-single', - options = Opts, desc = <<>>, - label = - Translate(<<"URL for Archived Discussion Logs">>)}. - -encode_occupants(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_int(Value)] - end, - Opts = [], - #xdata_field{var = <<"muc#roominfo_occupants">>, - values = Values, required = false, type = 'text-single', - options = Opts, desc = <<>>, - label = Translate(<<"Number of occupants">>)}. - -encode_subject(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"muc#roominfo_subject">>, - values = Values, required = false, type = 'text-single', - options = Opts, desc = <<>>, - label = Translate(<<"Current Discussion Topic">>)}. - -encode_subjectmod(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"muc#roominfo_subjectmod">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = - Translate(<<"The room subject can be modified by " - "participants">>)}. diff --git a/src/pubsub_get_pending.erl b/src/pubsub_get_pending.erl deleted file mode 100644 index c1f2ba3ad..000000000 --- a/src/pubsub_get_pending.erl +++ /dev/null @@ -1,130 +0,0 @@ -%% Created automatically by xdata generator (xdata_codec.erl) -%% Source: pubsub_get_pending.xdata -%% Form type: http://jabber.org/protocol/pubsub#subscribe_authorization -%% Document: XEP-0060 - --module(pubsub_get_pending). - --export([decode/1, decode/2, encode/1, encode/2, - format_error/1]). - --include("xmpp_codec.hrl"). - --include("pubsub_get_pending.hrl"). - --export_type([property/0, result/0, form/0]). - -format_error({form_type_mismatch, Type}) -> - <<"FORM_TYPE doesn't match '", Type/binary, "'">>; -format_error({bad_var_value, Var, Type}) -> - <<"Bad value of field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({missing_value, Var, Type}) -> - <<"Missing value of field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({too_many_values, Var, Type}) -> - <<"Too many values for field '", Var/binary, - "' of type '", Type/binary, "'">>; -format_error({unknown_var, Var, Type}) -> - <<"Unknown field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({missing_required_var, Var, Type}) -> - <<"Missing required field '", Var/binary, "' of type '", - Type/binary, "'">>. - -decode(Fs) -> decode(Fs, []). - -decode(Fs, Acc) -> - case lists:keyfind(<<"FORM_TYPE">>, #xdata_field.var, - Fs) - of - false -> decode(Fs, Acc, [<<"pubsub#node">>]); - #xdata_field{values = - [<<"http://jabber.org/protocol/pubsub#subscribe_a" - "uthorization">>]} -> - decode(Fs, Acc, [<<"pubsub#node">>]); - _ -> - erlang:error({?MODULE, - {form_type_mismatch, - <<"http://jabber.org/protocol/pubsub#subscribe_a" - "uthorization">>}}) - end. - -encode(Cfg) -> encode(Cfg, fun (Text) -> Text end). - -encode(List, Translate) when is_list(List) -> - Fs = [case Opt of - {node, Val} -> [encode_node(Val, default, Translate)]; - {node, Val, Opts} -> - [encode_node(Val, Opts, Translate)]; - #xdata_field{} -> [Opt]; - _ -> [] - end - || Opt <- List], - FormType = #xdata_field{var = <<"FORM_TYPE">>, - type = hidden, - values = - [<<"http://jabber.org/protocol/pubsub#subscribe_a" - "uthorization">>]}, - [FormType | lists:flatten(Fs)]. - -decode([#xdata_field{var = <<"pubsub#node">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{node, Result} | Acc], - lists:delete(<<"pubsub#node">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#node">>, - <<"http://jabber.org/protocol/pubsub#subscribe_a" - "uthorization">>}}) - end; -decode([#xdata_field{var = <<"pubsub#node">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#node">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#node">>} | _], _, - _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#node">>, - <<"http://jabber.org/protocol/pubsub#subscribe_a" - "uthorization">>}}); -decode([#xdata_field{var = Var} | Fs], Acc, Required) -> - if Var /= <<"FORM_TYPE">> -> - erlang:error({?MODULE, - {unknown_var, Var, - <<"http://jabber.org/protocol/pubsub#subscribe_a" - "uthorization">>}}); - true -> decode(Fs, Acc, Required) - end; -decode([], _, [Var | _]) -> - erlang:error({?MODULE, - {missing_required_var, Var, - <<"http://jabber.org/protocol/pubsub#subscribe_a" - "uthorization">>}}); -decode([], Acc, []) -> Acc. - -encode_node(Value, Options, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = if Options == default -> []; - true -> - [#xdata_option{label = Translate(L), value = V} - || {L, V} <- Options] - end, - #xdata_field{var = <<"pubsub#node">>, values = Values, - required = false, type = 'list-single', options = Opts, - desc = <<>>, - label = - Translate(<<"The NodeID of the relevant node">>)}. diff --git a/src/pubsub_node_config.erl b/src/pubsub_node_config.erl deleted file mode 100644 index e831d6a83..000000000 --- a/src/pubsub_node_config.erl +++ /dev/null @@ -1,1666 +0,0 @@ -%% Created automatically by xdata generator (xdata_codec.erl) -%% Source: pubsub_node_config.xdata -%% Form type: http://jabber.org/protocol/pubsub#node_config -%% Document: XEP-0060 - --module(pubsub_node_config). - --export([decode/1, decode/2, encode/1, encode/2, - format_error/1]). - --include("xmpp_codec.hrl"). - --include("pubsub_node_config.hrl"). - --export_type([property/0, result/0, form/0]). - -dec_int(Val, Min, Max) -> - case list_to_integer(binary_to_list(Val)) of - Int when Int =< Max, Min == infinity -> Int; - Int when Int =< Max, Int >= Min -> Int - end. - -enc_int(Int) -> integer_to_binary(Int). - -dec_enum(Val, Enums) -> - AtomVal = erlang:binary_to_existing_atom(Val, utf8), - case lists:member(AtomVal, Enums) of - true -> AtomVal - end. - -enc_enum(Atom) -> erlang:atom_to_binary(Atom, utf8). - -dec_bool(<<"1">>) -> true; -dec_bool(<<"0">>) -> false; -dec_bool(<<"true">>) -> true; -dec_bool(<<"false">>) -> false. - -enc_bool(true) -> <<"1">>; -enc_bool(false) -> <<"0">>. - -enc_jid(J) -> jid:to_string(J). - -dec_jid(Val) -> - case jid:from_string(Val) of - error -> erlang:error(badarg); - J -> J - end. - -format_error({form_type_mismatch, Type}) -> - <<"FORM_TYPE doesn't match '", Type/binary, "'">>; -format_error({bad_var_value, Var, Type}) -> - <<"Bad value of field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({missing_value, Var, Type}) -> - <<"Missing value of field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({too_many_values, Var, Type}) -> - <<"Too many values for field '", Var/binary, - "' of type '", Type/binary, "'">>; -format_error({unknown_var, Var, Type}) -> - <<"Unknown field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({missing_required_var, Var, Type}) -> - <<"Missing required field '", Var/binary, "' of type '", - Type/binary, "'">>. - -decode(Fs) -> decode(Fs, []). - -decode(Fs, Acc) -> - case lists:keyfind(<<"FORM_TYPE">>, #xdata_field.var, - Fs) - of - false -> decode(Fs, Acc, []); - #xdata_field{values = - [<<"http://jabber.org/protocol/pubsub#node_config">>]} -> - decode(Fs, Acc, []); - _ -> - erlang:error({?MODULE, - {form_type_mismatch, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end. - -encode(Cfg) -> encode(Cfg, fun (Text) -> Text end). - -encode(List, Translate) when is_list(List) -> - Fs = [case Opt of - {access_model, Val} -> - [encode_access_model(Val, default, Translate)]; - {access_model, Val, Opts} -> - [encode_access_model(Val, Opts, Translate)]; - {body_xslt, Val} -> [encode_body_xslt(Val, Translate)]; - {body_xslt, _, _} -> erlang:error({badarg, Opt}); - {children_association_policy, Val} -> - [encode_children_association_policy(Val, default, - Translate)]; - {children_association_policy, Val, Opts} -> - [encode_children_association_policy(Val, Opts, - Translate)]; - {children_association_whitelist, Val} -> - [encode_children_association_whitelist(Val, Translate)]; - {children_association_whitelist, _, _} -> - erlang:error({badarg, Opt}); - {children, Val} -> [encode_children(Val, Translate)]; - {children, _, _} -> erlang:error({badarg, Opt}); - {children_max, Val} -> - [encode_children_max(Val, Translate)]; - {children_max, _, _} -> erlang:error({badarg, Opt}); - {collection, Val} -> - [encode_collection(Val, Translate)]; - {collection, _, _} -> erlang:error({badarg, Opt}); - {contact, Val} -> [encode_contact(Val, Translate)]; - {contact, _, _} -> erlang:error({badarg, Opt}); - {dataform_xslt, Val} -> - [encode_dataform_xslt(Val, Translate)]; - {dataform_xslt, _, _} -> erlang:error({badarg, Opt}); - {deliver_notifications, Val} -> - [encode_deliver_notifications(Val, Translate)]; - {deliver_notifications, _, _} -> - erlang:error({badarg, Opt}); - {deliver_payloads, Val} -> - [encode_deliver_payloads(Val, Translate)]; - {deliver_payloads, _, _} -> erlang:error({badarg, Opt}); - {description, Val} -> - [encode_description(Val, Translate)]; - {description, _, _} -> erlang:error({badarg, Opt}); - {item_expire, Val} -> - [encode_item_expire(Val, Translate)]; - {item_expire, _, _} -> erlang:error({badarg, Opt}); - {itemreply, Val} -> - [encode_itemreply(Val, default, Translate)]; - {itemreply, Val, Opts} -> - [encode_itemreply(Val, Opts, Translate)]; - {language, Val} -> - [encode_language(Val, default, Translate)]; - {language, Val, Opts} -> - [encode_language(Val, Opts, Translate)]; - {max_items, Val} -> [encode_max_items(Val, Translate)]; - {max_items, _, _} -> erlang:error({badarg, Opt}); - {max_payload_size, Val} -> - [encode_max_payload_size(Val, Translate)]; - {max_payload_size, _, _} -> erlang:error({badarg, Opt}); - {node_type, Val} -> - [encode_node_type(Val, default, Translate)]; - {node_type, Val, Opts} -> - [encode_node_type(Val, Opts, Translate)]; - {notification_type, Val} -> - [encode_notification_type(Val, default, Translate)]; - {notification_type, Val, Opts} -> - [encode_notification_type(Val, Opts, Translate)]; - {notify_config, Val} -> - [encode_notify_config(Val, Translate)]; - {notify_config, _, _} -> erlang:error({badarg, Opt}); - {notify_delete, Val} -> - [encode_notify_delete(Val, Translate)]; - {notify_delete, _, _} -> erlang:error({badarg, Opt}); - {notify_retract, Val} -> - [encode_notify_retract(Val, Translate)]; - {notify_retract, _, _} -> erlang:error({badarg, Opt}); - {notify_sub, Val} -> - [encode_notify_sub(Val, Translate)]; - {notify_sub, _, _} -> erlang:error({badarg, Opt}); - {persist_items, Val} -> - [encode_persist_items(Val, Translate)]; - {persist_items, _, _} -> erlang:error({badarg, Opt}); - {presence_based_delivery, Val} -> - [encode_presence_based_delivery(Val, Translate)]; - {presence_based_delivery, _, _} -> - erlang:error({badarg, Opt}); - {publish_model, Val} -> - [encode_publish_model(Val, default, Translate)]; - {publish_model, Val, Opts} -> - [encode_publish_model(Val, Opts, Translate)]; - {purge_offline, Val} -> - [encode_purge_offline(Val, Translate)]; - {purge_offline, _, _} -> erlang:error({badarg, Opt}); - {roster_groups_allowed, Val} -> - [encode_roster_groups_allowed(Val, default, Translate)]; - {roster_groups_allowed, Val, Opts} -> - [encode_roster_groups_allowed(Val, Opts, Translate)]; - {send_last_published_item, Val} -> - [encode_send_last_published_item(Val, default, - Translate)]; - {send_last_published_item, Val, Opts} -> - [encode_send_last_published_item(Val, Opts, Translate)]; - {tempsub, Val} -> [encode_tempsub(Val, Translate)]; - {tempsub, _, _} -> erlang:error({badarg, Opt}); - {subscribe, Val} -> [encode_subscribe(Val, Translate)]; - {subscribe, _, _} -> erlang:error({badarg, Opt}); - {title, Val} -> [encode_title(Val, Translate)]; - {title, _, _} -> erlang:error({badarg, Opt}); - {type, Val} -> [encode_type(Val, Translate)]; - {type, _, _} -> erlang:error({badarg, Opt}); - #xdata_field{} -> [Opt]; - _ -> [] - end - || Opt <- List], - FormType = #xdata_field{var = <<"FORM_TYPE">>, - type = hidden, - values = - [<<"http://jabber.org/protocol/pubsub#node_config">>]}, - [FormType | lists:flatten(Fs)]. - -decode([#xdata_field{var = <<"pubsub#access_model">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_enum(Value, - [authorize, open, presence, roster, whitelist]) - of - Result -> - decode(Fs, [{access_model, Result} | Acc], - lists:delete(<<"pubsub#access_model">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#access_model">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = <<"pubsub#access_model">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#access_model">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#access_model">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#access_model">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = <<"pubsub#body_xslt">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{body_xslt, Result} | Acc], - lists:delete(<<"pubsub#body_xslt">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#body_xslt">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = <<"pubsub#body_xslt">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#body_xslt">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#body_xslt">>} | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#body_xslt">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = - <<"pubsub#children_association_policy">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_enum(Value, [all, owners, whitelist]) of - Result -> - decode(Fs, - [{children_association_policy, Result} | Acc], - lists:delete(<<"pubsub#children_association_policy">>, - Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, - <<"pubsub#children_association_policy">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = - <<"pubsub#children_association_policy">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"pubsub#children_association_policy">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = - <<"pubsub#children_association_policy">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, - <<"pubsub#children_association_policy">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = - <<"pubsub#children_association_whitelist">>, - values = Values} - | Fs], - Acc, Required) -> - try [dec_jid(Value) || Value <- Values] of - Result -> - decode(Fs, - [{children_association_whitelist, Result} | Acc], - lists:delete(<<"pubsub#children_association_whitelist">>, - Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, - <<"pubsub#children_association_whitelist">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = <<"pubsub#children">>, - values = Values} - | Fs], - Acc, Required) -> - try [Value || Value <- Values] of - Result -> - decode(Fs, [{children, Result} | Acc], - lists:delete(<<"pubsub#children">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#children">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = <<"pubsub#children_max">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{children_max, Result} | Acc], - lists:delete(<<"pubsub#children_max">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#children_max">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = <<"pubsub#children_max">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#children_max">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#children_max">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#children_max">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = <<"pubsub#collection">>, - values = Values} - | Fs], - Acc, Required) -> - try [Value || Value <- Values] of - Result -> - decode(Fs, [{collection, Result} | Acc], - lists:delete(<<"pubsub#collection">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#collection">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = <<"pubsub#contact">>, - values = Values} - | Fs], - Acc, Required) -> - try [dec_jid(Value) || Value <- Values] of - Result -> - decode(Fs, [{contact, Result} | Acc], - lists:delete(<<"pubsub#contact">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#contact">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = <<"pubsub#dataform_xslt">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{dataform_xslt, Result} | Acc], - lists:delete(<<"pubsub#dataform_xslt">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#dataform_xslt">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = <<"pubsub#dataform_xslt">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#dataform_xslt">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#dataform_xslt">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#dataform_xslt">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = - <<"pubsub#deliver_notifications">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{deliver_notifications, Result} | Acc], - lists:delete(<<"pubsub#deliver_notifications">>, - Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#deliver_notifications">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = - <<"pubsub#deliver_notifications">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"pubsub#deliver_notifications">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = - <<"pubsub#deliver_notifications">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#deliver_notifications">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = - <<"pubsub#deliver_payloads">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{deliver_payloads, Result} | Acc], - lists:delete(<<"pubsub#deliver_payloads">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#deliver_payloads">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = - <<"pubsub#deliver_payloads">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"pubsub#deliver_payloads">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = - <<"pubsub#deliver_payloads">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#deliver_payloads">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = <<"pubsub#description">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{description, Result} | Acc], - lists:delete(<<"pubsub#description">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#description">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = <<"pubsub#description">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#description">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#description">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#description">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = <<"pubsub#item_expire">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{item_expire, Result} | Acc], - lists:delete(<<"pubsub#item_expire">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#item_expire">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = <<"pubsub#item_expire">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#item_expire">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#item_expire">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#item_expire">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = <<"pubsub#itemreply">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_enum(Value, [owner, publisher, none]) of - Result -> - decode(Fs, [{itemreply, Result} | Acc], - lists:delete(<<"pubsub#itemreply">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#itemreply">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = <<"pubsub#itemreply">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#itemreply">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#itemreply">>} | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#itemreply">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = <<"pubsub#language">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{language, Result} | Acc], - lists:delete(<<"pubsub#language">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#language">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = <<"pubsub#language">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#language">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#language">>} | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#language">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = <<"pubsub#max_items">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_int(Value, 0, infinity) of - Result -> - decode(Fs, [{max_items, Result} | Acc], - lists:delete(<<"pubsub#max_items">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#max_items">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = <<"pubsub#max_items">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#max_items">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#max_items">>} | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#max_items">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = - <<"pubsub#max_payload_size">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_int(Value, 0, infinity) of - Result -> - decode(Fs, [{max_payload_size, Result} | Acc], - lists:delete(<<"pubsub#max_payload_size">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#max_payload_size">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = - <<"pubsub#max_payload_size">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"pubsub#max_payload_size">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = - <<"pubsub#max_payload_size">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#max_payload_size">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = <<"pubsub#node_type">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_enum(Value, [leaf, collection]) of - Result -> - decode(Fs, [{node_type, Result} | Acc], - lists:delete(<<"pubsub#node_type">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#node_type">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = <<"pubsub#node_type">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#node_type">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#node_type">>} | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#node_type">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = - <<"pubsub#notification_type">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_enum(Value, [normal, headline]) of - Result -> - decode(Fs, [{notification_type, Result} | Acc], - lists:delete(<<"pubsub#notification_type">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#notification_type">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = - <<"pubsub#notification_type">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"pubsub#notification_type">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = - <<"pubsub#notification_type">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#notification_type">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = <<"pubsub#notify_config">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{notify_config, Result} | Acc], - lists:delete(<<"pubsub#notify_config">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#notify_config">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = <<"pubsub#notify_config">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#notify_config">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#notify_config">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#notify_config">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = <<"pubsub#notify_delete">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{notify_delete, Result} | Acc], - lists:delete(<<"pubsub#notify_delete">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#notify_delete">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = <<"pubsub#notify_delete">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#notify_delete">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#notify_delete">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#notify_delete">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = <<"pubsub#notify_retract">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{notify_retract, Result} | Acc], - lists:delete(<<"pubsub#notify_retract">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#notify_retract">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = <<"pubsub#notify_retract">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#notify_retract">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#notify_retract">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#notify_retract">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = <<"pubsub#notify_sub">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{notify_sub, Result} | Acc], - lists:delete(<<"pubsub#notify_sub">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#notify_sub">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = <<"pubsub#notify_sub">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#notify_sub">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#notify_sub">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#notify_sub">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = <<"pubsub#persist_items">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{persist_items, Result} | Acc], - lists:delete(<<"pubsub#persist_items">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#persist_items">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = <<"pubsub#persist_items">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#persist_items">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#persist_items">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#persist_items">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = - <<"pubsub#presence_based_delivery">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{presence_based_delivery, Result} | Acc], - lists:delete(<<"pubsub#presence_based_delivery">>, - Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#presence_based_delivery">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = - <<"pubsub#presence_based_delivery">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"pubsub#presence_based_delivery">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = - <<"pubsub#presence_based_delivery">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#presence_based_delivery">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = <<"pubsub#publish_model">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_enum(Value, [publishers, subscribers, open]) of - Result -> - decode(Fs, [{publish_model, Result} | Acc], - lists:delete(<<"pubsub#publish_model">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#publish_model">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = <<"pubsub#publish_model">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#publish_model">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#publish_model">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#publish_model">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = <<"pubsub#purge_offline">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{purge_offline, Result} | Acc], - lists:delete(<<"pubsub#purge_offline">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#purge_offline">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = <<"pubsub#purge_offline">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#purge_offline">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#purge_offline">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#purge_offline">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = - <<"pubsub#roster_groups_allowed">>, - values = Values} - | Fs], - Acc, Required) -> - try [Value || Value <- Values] of - Result -> - decode(Fs, [{roster_groups_allowed, Result} | Acc], - lists:delete(<<"pubsub#roster_groups_allowed">>, - Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#roster_groups_allowed">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = - <<"pubsub#send_last_published_item">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_enum(Value, - [never, on_sub, on_sub_and_presence]) - of - Result -> - decode(Fs, [{send_last_published_item, Result} | Acc], - lists:delete(<<"pubsub#send_last_published_item">>, - Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#send_last_published_item">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = - <<"pubsub#send_last_published_item">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"pubsub#send_last_published_item">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = - <<"pubsub#send_last_published_item">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#send_last_published_item">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = <<"pubsub#tempsub">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{tempsub, Result} | Acc], - lists:delete(<<"pubsub#tempsub">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#tempsub">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = <<"pubsub#tempsub">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#tempsub">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#tempsub">>} | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#tempsub">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = <<"pubsub#subscribe">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{subscribe, Result} | Acc], - lists:delete(<<"pubsub#subscribe">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#subscribe">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = <<"pubsub#subscribe">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#subscribe">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#subscribe">>} | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#subscribe">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = <<"pubsub#title">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{title, Result} | Acc], - lists:delete(<<"pubsub#title">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#title">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = <<"pubsub#title">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#title">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#title">>} | _], _, - _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#title">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = <<"pubsub#type">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{type, Result} | Acc], - lists:delete(<<"pubsub#type">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#type">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}) - end; -decode([#xdata_field{var = <<"pubsub#type">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#type">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#type">>} | _], _, - _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#type">>, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([#xdata_field{var = Var} | Fs], Acc, Required) -> - if Var /= <<"FORM_TYPE">> -> - erlang:error({?MODULE, - {unknown_var, Var, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); - true -> decode(Fs, Acc, Required) - end; -decode([], _, [Var | _]) -> - erlang:error({?MODULE, - {missing_required_var, Var, - <<"http://jabber.org/protocol/pubsub#node_config">>}}); -decode([], Acc, []) -> Acc. - -encode_access_model(Value, Options, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_enum(Value)] - end, - Opts = if Options == default -> - [#xdata_option{label = - Translate(<<"Subscription requests must be approved " - "and only subscribers may retrieve items">>), - value = <<"authorize">>}, - #xdata_option{label = - Translate(<<"Anyone may subscribe and retrieve items">>), - value = <<"open">>}, - #xdata_option{label = - Translate(<<"Anyone with a presence subscription " - "of both or from may subscribe and retrieve " - "items">>), - value = <<"presence">>}, - #xdata_option{label = - Translate(<<"Anyone in the specified roster group(s) " - "may subscribe and retrieve items">>), - value = <<"roster">>}, - #xdata_option{label = - Translate(<<"Only those on a whitelist may subscribe " - "and retrieve items">>), - value = <<"whitelist">>}]; - true -> - [#xdata_option{label = Translate(L), - value = enc_enum(V)} - || {L, V} <- Options] - end, - #xdata_field{var = <<"pubsub#access_model">>, - values = Values, required = false, type = 'list-single', - options = Opts, desc = <<>>, - label = Translate(<<"Specify the access model">>)}. - -encode_body_xslt(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"pubsub#body_xslt">>, - values = Values, required = false, type = 'text-single', - options = Opts, desc = <<>>, - label = - Translate(<<"The URL of an XSL transformation which " - "can be applied to payloads in order " - "to generate an appropriate message body " - "element.">>)}. - -encode_children_association_policy(Value, Options, - Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_enum(Value)] - end, - Opts = if Options == default -> - [#xdata_option{label = - Translate(<<"Anyone may associate leaf nodes with " - "the collection">>), - value = <<"all">>}, - #xdata_option{label = - Translate(<<"Only collection node owners may associate " - "leaf nodes with the collection">>), - value = <<"owners">>}, - #xdata_option{label = - Translate(<<"Only those on a whitelist may associate " - "leaf nodes with the collection">>), - value = <<"whitelist">>}]; - true -> - [#xdata_option{label = Translate(L), - value = enc_enum(V)} - || {L, V} <- Options] - end, - #xdata_field{var = - <<"pubsub#children_association_policy">>, - values = Values, required = false, type = 'list-single', - options = Opts, desc = <<>>, - label = - Translate(<<"Who may associate leaf nodes with a " - "collection">>)}. - -encode_children_association_whitelist(Value, - Translate) -> - Values = case Value of - [] -> []; - Value -> [enc_jid(V) || V <- Value] - end, - Opts = [], - #xdata_field{var = - <<"pubsub#children_association_whitelist">>, - values = Values, required = false, type = 'jid-multi', - options = Opts, desc = <<>>, - label = - Translate(<<"The list of JIDs that may associate " - "leaf nodes with a collection">>)}. - -encode_children(Value, Translate) -> - Values = case Value of - [] -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"pubsub#children">>, - values = Values, required = false, type = 'text-multi', - options = Opts, desc = <<>>, - label = - Translate(<<"The child nodes (leaf or collection) " - "associated with a collection">>)}. - -encode_children_max(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"pubsub#children_max">>, - values = Values, required = false, type = 'text-single', - options = Opts, desc = <<>>, - label = - Translate(<<"The maximum number of child nodes that " - "can be associated with a collection">>)}. - -encode_collection(Value, Translate) -> - Values = case Value of - [] -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"pubsub#collection">>, - values = Values, required = false, type = 'text-multi', - options = Opts, desc = <<>>, - label = - Translate(<<"The collections with which a node is " - "affiliated">>)}. - -encode_contact(Value, Translate) -> - Values = case Value of - [] -> []; - Value -> [enc_jid(V) || V <- Value] - end, - Opts = [], - #xdata_field{var = <<"pubsub#contact">>, - values = Values, required = false, type = 'jid-multi', - options = Opts, desc = <<>>, - label = - Translate(<<"The JIDs of those to contact with questions">>)}. - -encode_dataform_xslt(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"pubsub#dataform_xslt">>, - values = Values, required = false, type = 'text-single', - options = Opts, desc = <<>>, - label = - Translate(<<"The URL of an XSL transformation which " - "can be applied to the payload format " - "in order to generate a valid Data Forms " - "result that the client could display " - "using a generic Data Forms rendering " - "engine">>)}. - -encode_deliver_notifications(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"pubsub#deliver_notifications">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = Translate(<<"Deliver event notifications">>)}. - -encode_deliver_payloads(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"pubsub#deliver_payloads">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = - Translate(<<"Deliver payloads with event notifications">>)}. - -encode_description(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"pubsub#description">>, - values = Values, required = false, type = 'text-single', - options = Opts, desc = <<>>, - label = Translate(<<"A description of the node">>)}. - -encode_item_expire(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"pubsub#item_expire">>, - values = Values, required = false, type = 'text-single', - options = Opts, desc = <<>>, - label = - Translate(<<"Number of seconds after which to automaticall" - "y purge items">>)}. - -encode_itemreply(Value, Options, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_enum(Value)] - end, - Opts = if Options == default -> - [#xdata_option{label = - Translate(<<"Statically specify a replyto of the " - "node owner(s)">>), - value = <<"owner">>}, - #xdata_option{label = - Translate(<<"Dynamically specify a replyto of the " - "item publisher">>), - value = <<"publisher">>}, - #xdata_option{value = <<"none">>}]; - true -> - [#xdata_option{label = Translate(L), - value = enc_enum(V)} - || {L, V} <- Options] - end, - #xdata_field{var = <<"pubsub#itemreply">>, - values = Values, required = false, type = 'list-single', - options = Opts, desc = <<>>, - label = - Translate(<<"Whether owners or publisher should receive " - "replies to items">>)}. - -encode_language(Value, Options, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = if Options == default -> []; - true -> - [#xdata_option{label = Translate(L), value = V} - || {L, V} <- Options] - end, - #xdata_field{var = <<"pubsub#language">>, - values = Values, required = false, type = 'list-single', - options = Opts, desc = <<>>, - label = - Translate(<<"The default language of the node">>)}. - -encode_max_items(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_int(Value)] - end, - Opts = [], - #xdata_field{var = <<"pubsub#max_items">>, - values = Values, required = false, type = 'text-single', - options = Opts, desc = <<>>, - label = Translate(<<"Max # of items to persist">>)}. - -encode_max_payload_size(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_int(Value)] - end, - Opts = [], - #xdata_field{var = <<"pubsub#max_payload_size">>, - values = Values, required = false, type = 'text-single', - options = Opts, desc = <<>>, - label = Translate(<<"Max payload size in bytes">>)}. - -encode_node_type(Value, Options, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_enum(Value)] - end, - Opts = if Options == default -> - [#xdata_option{label = - Translate(<<"The node is a leaf node (default)">>), - value = <<"leaf">>}, - #xdata_option{label = - Translate(<<"The node is a collection node">>), - value = <<"collection">>}]; - true -> - [#xdata_option{label = Translate(L), - value = enc_enum(V)} - || {L, V} <- Options] - end, - #xdata_field{var = <<"pubsub#node_type">>, - values = Values, required = false, type = 'list-single', - options = Opts, desc = <<>>, - label = - Translate(<<"Whether the node is a leaf (default) " - "or a collection">>)}. - -encode_notification_type(Value, Options, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_enum(Value)] - end, - Opts = if Options == default -> - [#xdata_option{label = - Translate(<<"Messages of type normal">>), - value = <<"normal">>}, - #xdata_option{label = - Translate(<<"Messages of type headline">>), - value = <<"headline">>}]; - true -> - [#xdata_option{label = Translate(L), - value = enc_enum(V)} - || {L, V} <- Options] - end, - #xdata_field{var = <<"pubsub#notification_type">>, - values = Values, required = false, type = 'list-single', - options = Opts, desc = <<>>, - label = - Translate(<<"Specify the event message type">>)}. - -encode_notify_config(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"pubsub#notify_config">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = - Translate(<<"Notify subscribers when the node configuratio" - "n changes">>)}. - -encode_notify_delete(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"pubsub#notify_delete">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = - Translate(<<"Notify subscribers when the node is " - "deleted">>)}. - -encode_notify_retract(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"pubsub#notify_retract">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = - Translate(<<"Notify subscribers when items are removed " - "from the node">>)}. - -encode_notify_sub(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"pubsub#notify_sub">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = - Translate(<<"Whether to notify owners about new subscriber" - "s and unsubscribes">>)}. - -encode_persist_items(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"pubsub#persist_items">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = Translate(<<"Persist items to storage">>)}. - -encode_presence_based_delivery(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"pubsub#presence_based_delivery">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = - Translate(<<"Only deliver notifications to available " - "users">>)}. - -encode_publish_model(Value, Options, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_enum(Value)] - end, - Opts = if Options == default -> - [#xdata_option{label = - Translate(<<"Only publishers may publish">>), - value = <<"publishers">>}, - #xdata_option{label = - Translate(<<"Subscribers may publish">>), - value = <<"subscribers">>}, - #xdata_option{label = - Translate(<<"Anyone may publish">>), - value = <<"open">>}]; - true -> - [#xdata_option{label = Translate(L), - value = enc_enum(V)} - || {L, V} <- Options] - end, - #xdata_field{var = <<"pubsub#publish_model">>, - values = Values, required = false, type = 'list-single', - options = Opts, desc = <<>>, - label = Translate(<<"Specify the publisher model">>)}. - -encode_purge_offline(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"pubsub#purge_offline">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = - Translate(<<"Purge all items when the relevant publisher " - "goes offline">>)}. - -encode_roster_groups_allowed(Value, Options, - Translate) -> - Values = case Value of - [] -> []; - Value -> [Value] - end, - Opts = if Options == default -> []; - true -> - [#xdata_option{label = Translate(L), value = V} - || {L, V} <- Options] - end, - #xdata_field{var = <<"pubsub#roster_groups_allowed">>, - values = Values, required = false, type = 'list-multi', - options = Opts, desc = <<>>, - label = - Translate(<<"Roster groups allowed to subscribe">>)}. - -encode_send_last_published_item(Value, Options, - Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_enum(Value)] - end, - Opts = if Options == default -> - [#xdata_option{label = Translate(<<"Never">>), - value = <<"never">>}, - #xdata_option{label = - Translate(<<"When a new subscription is processed">>), - value = <<"on_sub">>}, - #xdata_option{label = - Translate(<<"When a new subscription is processed " - "and whenever a subscriber comes online">>), - value = <<"on_sub_and_presence">>}]; - true -> - [#xdata_option{label = Translate(L), - value = enc_enum(V)} - || {L, V} <- Options] - end, - #xdata_field{var = - <<"pubsub#send_last_published_item">>, - values = Values, required = false, type = 'list-single', - options = Opts, desc = <<>>, - label = - Translate(<<"When to send the last published item">>)}. - -encode_tempsub(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"pubsub#tempsub">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = - Translate(<<"Whether to make all subscriptions temporary, " - "based on subscriber presence">>)}. - -encode_subscribe(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"pubsub#subscribe">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = - Translate(<<"Whether to allow subscriptions">>)}. - -encode_title(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"pubsub#title">>, values = Values, - required = false, type = 'text-single', options = Opts, - desc = <<>>, - label = Translate(<<"A friendly name for the node">>)}. - -encode_type(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"pubsub#type">>, values = Values, - required = false, type = 'text-single', options = Opts, - desc = <<>>, - label = - Translate(<<"The type of node data, usually specified " - "by the namespace of the payload (if " - "any)">>)}. diff --git a/src/pubsub_publish_options.erl b/src/pubsub_publish_options.erl deleted file mode 100644 index 6e96946fd..000000000 --- a/src/pubsub_publish_options.erl +++ /dev/null @@ -1,157 +0,0 @@ -%% Created automatically by xdata generator (xdata_codec.erl) -%% Source: pubsub_publish_options.xdata -%% Form type: http://jabber.org/protocol/pubsub#publish-options -%% Document: XEP-0060 - --module(pubsub_publish_options). - --export([decode/1, decode/2, encode/1, encode/2, - format_error/1]). - --include("xmpp_codec.hrl"). - --include("pubsub_publish_options.hrl"). - --export_type([property/0, result/0, form/0]). - -dec_enum(Val, Enums) -> - AtomVal = erlang:binary_to_existing_atom(Val, utf8), - case lists:member(AtomVal, Enums) of - true -> AtomVal - end. - -enc_enum(Atom) -> erlang:atom_to_binary(Atom, utf8). - -format_error({form_type_mismatch, Type}) -> - <<"FORM_TYPE doesn't match '", Type/binary, "'">>; -format_error({bad_var_value, Var, Type}) -> - <<"Bad value of field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({missing_value, Var, Type}) -> - <<"Missing value of field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({too_many_values, Var, Type}) -> - <<"Too many values for field '", Var/binary, - "' of type '", Type/binary, "'">>; -format_error({unknown_var, Var, Type}) -> - <<"Unknown field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({missing_required_var, Var, Type}) -> - <<"Missing required field '", Var/binary, "' of type '", - Type/binary, "'">>. - -decode(Fs) -> decode(Fs, []). - -decode(Fs, Acc) -> - case lists:keyfind(<<"FORM_TYPE">>, #xdata_field.var, - Fs) - of - false -> decode(Fs, Acc, []); - #xdata_field{values = - [<<"http://jabber.org/protocol/pubsub#publish-opt" - "ions">>]} -> - decode(Fs, Acc, []); - _ -> - erlang:error({?MODULE, - {form_type_mismatch, - <<"http://jabber.org/protocol/pubsub#publish-opt" - "ions">>}}) - end. - -encode(Cfg) -> encode(Cfg, fun (Text) -> Text end). - -encode(List, Translate) when is_list(List) -> - Fs = [case Opt of - {access_model, Val} -> - [encode_access_model(Val, default, Translate)]; - {access_model, Val, Opts} -> - [encode_access_model(Val, Opts, Translate)]; - #xdata_field{} -> [Opt]; - _ -> [] - end - || Opt <- List], - FormType = #xdata_field{var = <<"FORM_TYPE">>, - type = hidden, - values = - [<<"http://jabber.org/protocol/pubsub#publish-opt" - "ions">>]}, - [FormType | lists:flatten(Fs)]. - -decode([#xdata_field{var = <<"pubsub#access_model">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_enum(Value, - [authorize, open, presence, roster, whitelist]) - of - Result -> - decode(Fs, [{access_model, Result} | Acc], - lists:delete(<<"pubsub#access_model">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#access_model">>, - <<"http://jabber.org/protocol/pubsub#publish-opt" - "ions">>}}) - end; -decode([#xdata_field{var = <<"pubsub#access_model">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#access_model">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#access_model">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#access_model">>, - <<"http://jabber.org/protocol/pubsub#publish-opt" - "ions">>}}); -decode([#xdata_field{var = Var} | Fs], Acc, Required) -> - if Var /= <<"FORM_TYPE">> -> - erlang:error({?MODULE, - {unknown_var, Var, - <<"http://jabber.org/protocol/pubsub#publish-opt" - "ions">>}}); - true -> decode(Fs, Acc, Required) - end; -decode([], _, [Var | _]) -> - erlang:error({?MODULE, - {missing_required_var, Var, - <<"http://jabber.org/protocol/pubsub#publish-opt" - "ions">>}}); -decode([], Acc, []) -> Acc. - -encode_access_model(Value, Options, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_enum(Value)] - end, - Opts = if Options == default -> - [#xdata_option{label = - Translate(<<"Access model of authorize">>), - value = <<"authorize">>}, - #xdata_option{label = - Translate(<<"Access model of open">>), - value = <<"open">>}, - #xdata_option{label = - Translate(<<"Access model of presence">>), - value = <<"presence">>}, - #xdata_option{label = - Translate(<<"Access model of roster">>), - value = <<"roster">>}, - #xdata_option{label = - Translate(<<"Access model of whitelist">>), - value = <<"whitelist">>}]; - true -> - [#xdata_option{label = Translate(L), - value = enc_enum(V)} - || {L, V} <- Options] - end, - #xdata_field{var = <<"pubsub#access_model">>, - values = Values, required = false, type = 'list-single', - options = Opts, desc = <<>>, - label = Translate(<<"Specify the access model">>)}. diff --git a/src/pubsub_subscribe_authorization.erl b/src/pubsub_subscribe_authorization.erl deleted file mode 100644 index 46538da8d..000000000 --- a/src/pubsub_subscribe_authorization.erl +++ /dev/null @@ -1,279 +0,0 @@ -%% Created automatically by xdata generator (xdata_codec.erl) -%% Source: pubsub_subscribe_authorization.xdata -%% Form type: http://jabber.org/protocol/pubsub#subscribe_authorization -%% Document: XEP-0060 - --module(pubsub_subscribe_authorization). - --export([decode/1, decode/2, encode/1, encode/2, - format_error/1]). - --include("xmpp_codec.hrl"). - --include("pubsub_subscribe_authorization.hrl"). - --export_type([property/0, result/0, form/0]). - -dec_bool(<<"1">>) -> true; -dec_bool(<<"0">>) -> false; -dec_bool(<<"true">>) -> true; -dec_bool(<<"false">>) -> false. - -enc_bool(true) -> <<"1">>; -enc_bool(false) -> <<"0">>. - -enc_jid(J) -> jid:to_string(J). - -dec_jid(Val) -> - case jid:from_string(Val) of - error -> erlang:error(badarg); - J -> J - end. - -format_error({form_type_mismatch, Type}) -> - <<"FORM_TYPE doesn't match '", Type/binary, "'">>; -format_error({bad_var_value, Var, Type}) -> - <<"Bad value of field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({missing_value, Var, Type}) -> - <<"Missing value of field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({too_many_values, Var, Type}) -> - <<"Too many values for field '", Var/binary, - "' of type '", Type/binary, "'">>; -format_error({unknown_var, Var, Type}) -> - <<"Unknown field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({missing_required_var, Var, Type}) -> - <<"Missing required field '", Var/binary, "' of type '", - Type/binary, "'">>. - -decode(Fs) -> decode(Fs, []). - -decode(Fs, Acc) -> - case lists:keyfind(<<"FORM_TYPE">>, #xdata_field.var, - Fs) - of - false -> - decode(Fs, Acc, - [<<"pubsub#allow">>, <<"pubsub#node">>, - <<"pubsub#subscriber_jid">>]); - #xdata_field{values = - [<<"http://jabber.org/protocol/pubsub#subscribe_a" - "uthorization">>]} -> - decode(Fs, Acc, - [<<"pubsub#allow">>, <<"pubsub#node">>, - <<"pubsub#subscriber_jid">>]); - _ -> - erlang:error({?MODULE, - {form_type_mismatch, - <<"http://jabber.org/protocol/pubsub#subscribe_a" - "uthorization">>}}) - end. - -encode(Cfg) -> encode(Cfg, fun (Text) -> Text end). - -encode(List, Translate) when is_list(List) -> - Fs = [case Opt of - {allow, Val} -> [encode_allow(Val, Translate)]; - {allow, _, _} -> erlang:error({badarg, Opt}); - {node, Val} -> [encode_node(Val, Translate)]; - {node, _, _} -> erlang:error({badarg, Opt}); - {subscriber_jid, Val} -> - [encode_subscriber_jid(Val, Translate)]; - {subscriber_jid, _, _} -> erlang:error({badarg, Opt}); - {subid, Val} -> [encode_subid(Val, Translate)]; - {subid, _, _} -> erlang:error({badarg, Opt}); - #xdata_field{} -> [Opt]; - _ -> [] - end - || Opt <- List], - FormType = #xdata_field{var = <<"FORM_TYPE">>, - type = hidden, - values = - [<<"http://jabber.org/protocol/pubsub#subscribe_a" - "uthorization">>]}, - [FormType | lists:flatten(Fs)]. - -decode([#xdata_field{var = <<"pubsub#allow">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{allow, Result} | Acc], - lists:delete(<<"pubsub#allow">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#allow">>, - <<"http://jabber.org/protocol/pubsub#subscribe_a" - "uthorization">>}}) - end; -decode([#xdata_field{var = <<"pubsub#allow">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#allow">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#allow">>} | _], _, - _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#allow">>, - <<"http://jabber.org/protocol/pubsub#subscribe_a" - "uthorization">>}}); -decode([#xdata_field{var = <<"pubsub#node">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{node, Result} | Acc], - lists:delete(<<"pubsub#node">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#node">>, - <<"http://jabber.org/protocol/pubsub#subscribe_a" - "uthorization">>}}) - end; -decode([#xdata_field{var = <<"pubsub#node">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#node">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#node">>} | _], _, - _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#node">>, - <<"http://jabber.org/protocol/pubsub#subscribe_a" - "uthorization">>}}); -decode([#xdata_field{var = <<"pubsub#subscriber_jid">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_jid(Value) of - Result -> - decode(Fs, [{subscriber_jid, Result} | Acc], - lists:delete(<<"pubsub#subscriber_jid">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#subscriber_jid">>, - <<"http://jabber.org/protocol/pubsub#subscribe_a" - "uthorization">>}}) - end; -decode([#xdata_field{var = <<"pubsub#subscriber_jid">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#subscriber_jid">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#subscriber_jid">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#subscriber_jid">>, - <<"http://jabber.org/protocol/pubsub#subscribe_a" - "uthorization">>}}); -decode([#xdata_field{var = <<"pubsub#subid">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{subid, Result} | Acc], - lists:delete(<<"pubsub#subid">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#subid">>, - <<"http://jabber.org/protocol/pubsub#subscribe_a" - "uthorization">>}}) - end; -decode([#xdata_field{var = <<"pubsub#subid">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#subid">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#subid">>} | _], _, - _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#subid">>, - <<"http://jabber.org/protocol/pubsub#subscribe_a" - "uthorization">>}}); -decode([#xdata_field{var = Var} | Fs], Acc, Required) -> - if Var /= <<"FORM_TYPE">> -> - erlang:error({?MODULE, - {unknown_var, Var, - <<"http://jabber.org/protocol/pubsub#subscribe_a" - "uthorization">>}}); - true -> decode(Fs, Acc, Required) - end; -decode([], _, [Var | _]) -> - erlang:error({?MODULE, - {missing_required_var, Var, - <<"http://jabber.org/protocol/pubsub#subscribe_a" - "uthorization">>}}); -decode([], Acc, []) -> Acc. - -encode_allow(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"pubsub#allow">>, values = Values, - required = false, type = boolean, options = Opts, - desc = <<>>, - label = - Translate(<<"Allow this Jabber ID to subscribe to " - "this pubsub node?">>)}. - -encode_node(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"pubsub#node">>, values = Values, - required = false, type = 'text-single', options = Opts, - desc = <<>>, label = Translate(<<"Node ID">>)}. - -encode_subscriber_jid(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_jid(Value)] - end, - Opts = [], - #xdata_field{var = <<"pubsub#subscriber_jid">>, - values = Values, required = false, type = 'jid-single', - options = Opts, desc = <<>>, - label = Translate(<<"Subscriber Address">>)}. - -encode_subid(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"pubsub#subid">>, values = Values, - required = false, type = 'text-single', options = Opts, - desc = <<>>, - label = - Translate(<<"The subscription identifier associated " - "with the subscription request">>)}. diff --git a/src/pubsub_subscribe_options.erl b/src/pubsub_subscribe_options.erl deleted file mode 100644 index 02c046995..000000000 --- a/src/pubsub_subscribe_options.erl +++ /dev/null @@ -1,508 +0,0 @@ -%% Created automatically by xdata generator (xdata_codec.erl) -%% Source: pubsub_subscribe_options.xdata -%% Form type: http://jabber.org/protocol/pubsub#subscribe_options -%% Document: XEP-0060 - --module(pubsub_subscribe_options). - --export([decode/1, decode/2, encode/1, encode/2, - format_error/1]). - --include("xmpp_codec.hrl"). - --include("pubsub_subscribe_options.hrl"). - --export_type([property/0, result/0, form/0]). - -dec_enum(Val, Enums) -> - AtomVal = erlang:binary_to_existing_atom(Val, utf8), - case lists:member(AtomVal, Enums) of - true -> AtomVal - end. - -enc_enum(Atom) -> erlang:atom_to_binary(Atom, utf8). - -dec_bool(<<"1">>) -> true; -dec_bool(<<"0">>) -> false; -dec_bool(<<"true">>) -> true; -dec_bool(<<"false">>) -> false. - -enc_bool(true) -> <<"1">>; -enc_bool(false) -> <<"0">>. - -format_error({form_type_mismatch, Type}) -> - <<"FORM_TYPE doesn't match '", Type/binary, "'">>; -format_error({bad_var_value, Var, Type}) -> - <<"Bad value of field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({missing_value, Var, Type}) -> - <<"Missing value of field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({too_many_values, Var, Type}) -> - <<"Too many values for field '", Var/binary, - "' of type '", Type/binary, "'">>; -format_error({unknown_var, Var, Type}) -> - <<"Unknown field '", Var/binary, "' of type '", - Type/binary, "'">>; -format_error({missing_required_var, Var, Type}) -> - <<"Missing required field '", Var/binary, "' of type '", - Type/binary, "'">>. - -decode(Fs) -> decode(Fs, []). - -decode(Fs, Acc) -> - case lists:keyfind(<<"FORM_TYPE">>, #xdata_field.var, - Fs) - of - false -> decode(Fs, Acc, []); - #xdata_field{values = - [<<"http://jabber.org/protocol/pubsub#subscribe_o" - "ptions">>]} -> - decode(Fs, Acc, []); - _ -> - erlang:error({?MODULE, - {form_type_mismatch, - <<"http://jabber.org/protocol/pubsub#subscribe_o" - "ptions">>}}) - end. - -encode(Cfg) -> encode(Cfg, fun (Text) -> Text end). - -encode(List, Translate) when is_list(List) -> - Fs = [case Opt of - {deliver, Val} -> [encode_deliver(Val, Translate)]; - {deliver, _, _} -> erlang:error({badarg, Opt}); - {digest, Val} -> [encode_digest(Val, Translate)]; - {digest, _, _} -> erlang:error({badarg, Opt}); - {digest_frequency, Val} -> - [encode_digest_frequency(Val, Translate)]; - {digest_frequency, _, _} -> erlang:error({badarg, Opt}); - {expire, Val} -> [encode_expire(Val, Translate)]; - {expire, _, _} -> erlang:error({badarg, Opt}); - {include_body, Val} -> - [encode_include_body(Val, Translate)]; - {include_body, _, _} -> erlang:error({badarg, Opt}); - {'show-values', Val} -> - ['encode_show-values'(Val, default, Translate)]; - {'show-values', Val, Opts} -> - ['encode_show-values'(Val, Opts, Translate)]; - {subscription_type, Val} -> - [encode_subscription_type(Val, default, Translate)]; - {subscription_type, Val, Opts} -> - [encode_subscription_type(Val, Opts, Translate)]; - {subscription_depth, Val} -> - [encode_subscription_depth(Val, default, Translate)]; - {subscription_depth, Val, Opts} -> - [encode_subscription_depth(Val, Opts, Translate)]; - #xdata_field{} -> [Opt]; - _ -> [] - end - || Opt <- List], - FormType = #xdata_field{var = <<"FORM_TYPE">>, - type = hidden, - values = - [<<"http://jabber.org/protocol/pubsub#subscribe_o" - "ptions">>]}, - [FormType | lists:flatten(Fs)]. - -decode([#xdata_field{var = <<"pubsub#deliver">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{deliver, Result} | Acc], - lists:delete(<<"pubsub#deliver">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#deliver">>, - <<"http://jabber.org/protocol/pubsub#subscribe_o" - "ptions">>}}) - end; -decode([#xdata_field{var = <<"pubsub#deliver">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#deliver">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#deliver">>} | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#deliver">>, - <<"http://jabber.org/protocol/pubsub#subscribe_o" - "ptions">>}}); -decode([#xdata_field{var = <<"pubsub#digest">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{digest, Result} | Acc], - lists:delete(<<"pubsub#digest">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#digest">>, - <<"http://jabber.org/protocol/pubsub#subscribe_o" - "ptions">>}}) - end; -decode([#xdata_field{var = <<"pubsub#digest">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#digest">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#digest">>} | _], _, - _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#digest">>, - <<"http://jabber.org/protocol/pubsub#subscribe_o" - "ptions">>}}); -decode([#xdata_field{var = - <<"pubsub#digest_frequency">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{digest_frequency, Result} | Acc], - lists:delete(<<"pubsub#digest_frequency">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#digest_frequency">>, - <<"http://jabber.org/protocol/pubsub#subscribe_o" - "ptions">>}}) - end; -decode([#xdata_field{var = - <<"pubsub#digest_frequency">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"pubsub#digest_frequency">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = - <<"pubsub#digest_frequency">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#digest_frequency">>, - <<"http://jabber.org/protocol/pubsub#subscribe_o" - "ptions">>}}); -decode([#xdata_field{var = <<"pubsub#expire">>, - values = [Value]} - | Fs], - Acc, Required) -> - try Value of - Result -> - decode(Fs, [{expire, Result} | Acc], - lists:delete(<<"pubsub#expire">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#expire">>, - <<"http://jabber.org/protocol/pubsub#subscribe_o" - "ptions">>}}) - end; -decode([#xdata_field{var = <<"pubsub#expire">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#expire">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#expire">>} | _], _, - _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#expire">>, - <<"http://jabber.org/protocol/pubsub#subscribe_o" - "ptions">>}}); -decode([#xdata_field{var = <<"pubsub#include_body">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_bool(Value) of - Result -> - decode(Fs, [{include_body, Result} | Acc], - lists:delete(<<"pubsub#include_body">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#include_body">>, - <<"http://jabber.org/protocol/pubsub#subscribe_o" - "ptions">>}}) - end; -decode([#xdata_field{var = <<"pubsub#include_body">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = <<"pubsub#include_body">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = <<"pubsub#include_body">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#include_body">>, - <<"http://jabber.org/protocol/pubsub#subscribe_o" - "ptions">>}}); -decode([#xdata_field{var = <<"pubsub#show-values">>, - values = Values} - | Fs], - Acc, Required) -> - try [dec_enum(Value, [away, chat, dnd, online, xa]) - || Value <- Values] - of - Result -> - decode(Fs, [{'show-values', Result} | Acc], - lists:delete(<<"pubsub#show-values">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#show-values">>, - <<"http://jabber.org/protocol/pubsub#subscribe_o" - "ptions">>}}) - end; -decode([#xdata_field{var = - <<"pubsub#subscription_type">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_enum(Value, [items, nodes]) of - Result -> - decode(Fs, [{subscription_type, Result} | Acc], - lists:delete(<<"pubsub#subscription_type">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#subscription_type">>, - <<"http://jabber.org/protocol/pubsub#subscribe_o" - "ptions">>}}) - end; -decode([#xdata_field{var = - <<"pubsub#subscription_type">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"pubsub#subscription_type">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = - <<"pubsub#subscription_type">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#subscription_type">>, - <<"http://jabber.org/protocol/pubsub#subscribe_o" - "ptions">>}}); -decode([#xdata_field{var = - <<"pubsub#subscription_depth">>, - values = [Value]} - | Fs], - Acc, Required) -> - try dec_enum(Value, ['1', all]) of - Result -> - decode(Fs, [{subscription_depth, Result} | Acc], - lists:delete(<<"pubsub#subscription_depth">>, Required)) - catch - _:_ -> - erlang:error({?MODULE, - {bad_var_value, <<"pubsub#subscription_depth">>, - <<"http://jabber.org/protocol/pubsub#subscribe_o" - "ptions">>}}) - end; -decode([#xdata_field{var = - <<"pubsub#subscription_depth">>, - values = []} = - F - | Fs], - Acc, Required) -> - decode([F#xdata_field{var = - <<"pubsub#subscription_depth">>, - values = [<<>>]} - | Fs], - Acc, Required); -decode([#xdata_field{var = - <<"pubsub#subscription_depth">>} - | _], - _, _) -> - erlang:error({?MODULE, - {too_many_values, <<"pubsub#subscription_depth">>, - <<"http://jabber.org/protocol/pubsub#subscribe_o" - "ptions">>}}); -decode([#xdata_field{var = Var} | Fs], Acc, Required) -> - if Var /= <<"FORM_TYPE">> -> - erlang:error({?MODULE, - {unknown_var, Var, - <<"http://jabber.org/protocol/pubsub#subscribe_o" - "ptions">>}}); - true -> decode(Fs, Acc, Required) - end; -decode([], _, [Var | _]) -> - erlang:error({?MODULE, - {missing_required_var, Var, - <<"http://jabber.org/protocol/pubsub#subscribe_o" - "ptions">>}}); -decode([], Acc, []) -> Acc. - -encode_deliver(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"pubsub#deliver">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = - Translate(<<"Whether an entity wants to receive or " - "disable notifications">>)}. - -encode_digest(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"pubsub#digest">>, values = Values, - required = false, type = boolean, options = Opts, - desc = <<>>, - label = - Translate(<<"Whether an entity wants to receive digests " - "(aggregations) of notifications or all " - "notifications individually">>)}. - -encode_digest_frequency(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"pubsub#digest_frequency">>, - values = Values, required = false, type = 'text-single', - options = Opts, desc = <<>>, - label = - Translate(<<"The minimum number of milliseconds between " - "sending any two notification digests">>)}. - -encode_expire(Value, Translate) -> - Values = case Value of - <<>> -> []; - Value -> [Value] - end, - Opts = [], - #xdata_field{var = <<"pubsub#expire">>, values = Values, - required = false, type = 'text-single', options = Opts, - desc = <<>>, - label = - Translate(<<"The DateTime at which a leased subscription " - "will end or has ended">>)}. - -encode_include_body(Value, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_bool(Value)] - end, - Opts = [], - #xdata_field{var = <<"pubsub#include_body">>, - values = Values, required = false, type = boolean, - options = Opts, desc = <<>>, - label = - Translate(<<"Whether an entity wants to receive an " - "XMPP message body in addition to the " - "payload format">>)}. - -'encode_show-values'(Value, Options, Translate) -> - Values = case Value of - [] -> []; - Value -> [enc_enum(V) || V <- Value] - end, - Opts = if Options == default -> - [#xdata_option{label = - Translate(<<"XMPP Show Value of Away">>), - value = <<"away">>}, - #xdata_option{label = - Translate(<<"XMPP Show Value of Chat">>), - value = <<"chat">>}, - #xdata_option{label = - Translate(<<"XMPP Show Value of DND (Do Not Disturb)">>), - value = <<"dnd">>}, - #xdata_option{label = - Translate(<<"Mere Availability in XMPP (No Show Value)">>), - value = <<"online">>}, - #xdata_option{label = - Translate(<<"XMPP Show Value of XA (Extended Away)">>), - value = <<"xa">>}]; - true -> - [#xdata_option{label = Translate(L), - value = enc_enum(V)} - || {L, V} <- Options] - end, - #xdata_field{var = <<"pubsub#show-values">>, - values = Values, required = false, type = 'list-multi', - options = Opts, desc = <<>>, - label = - Translate(<<"The presence states for which an entity " - "wants to receive notifications">>)}. - -encode_subscription_type(Value, Options, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_enum(Value)] - end, - Opts = if Options == default -> - [#xdata_option{label = - Translate(<<"Receive notification of new items only">>), - value = <<"items">>}, - #xdata_option{label = - Translate(<<"Receive notification of new nodes only">>), - value = <<"nodes">>}]; - true -> - [#xdata_option{label = Translate(L), - value = enc_enum(V)} - || {L, V} <- Options] - end, - #xdata_field{var = <<"pubsub#subscription_type">>, - values = Values, required = false, type = 'list-single', - options = Opts, desc = <<>>, label = <<>>}. - -encode_subscription_depth(Value, Options, Translate) -> - Values = case Value of - undefined -> []; - Value -> [enc_enum(Value)] - end, - Opts = if Options == default -> - [#xdata_option{label = - Translate(<<"Receive notification from direct child " - "nodes only">>), - value = <<"1">>}, - #xdata_option{label = - Translate(<<"Receive notification from all descendent " - "nodes">>), - value = <<"all">>}]; - true -> - [#xdata_option{label = Translate(L), - value = enc_enum(V)} - || {L, V} <- Options] - end, - #xdata_field{var = <<"pubsub#subscription_depth">>, - values = Values, required = false, type = 'list-single', - options = Opts, desc = <<>>, label = <<>>}. diff --git a/src/xdata_codec.erl b/src/xdata_codec.erl deleted file mode 100644 index 223f24a1b..000000000 --- a/src/xdata_codec.erl +++ /dev/null @@ -1,648 +0,0 @@ -%%%------------------------------------------------------------------- -%%% @author Evgeny Khramtsov -%%% @copyright (C) 2016, Evgeny Khramtsov -%%% @doc -%%% -%%% @end -%%% Created : 27 Sep 2016 by Evgeny Khramtsov -%%%------------------------------------------------------------------- --module(xdata_codec). - -%% API --export([compile/1, compile/2]). --export([dec_int/1, dec_int/3, dec_enum/2, dec_bool/1, not_empty/1, - dec_enum_int/2, dec_enum_int/4, enc_int/1, enc_enum/1, - enc_bool/1, enc_enum_int/1, format_error/1, enc_jid/1, dec_jid/1]). --include("xmpp.hrl"). - --record(state, {mod_name :: atom(), - file_name :: string(), - erl = "" :: string(), - hrl = "" :: string(), - dir = "" :: string(), - ns = <<>> :: binary(), - doc = <<>> :: binary(), - erl_dir = "" :: string(), - hrl_dir = "" :: string(), - prefix = [] :: [binary()], - dec_mfas = [] :: [{binary(), mfa()}], - enc_mfas = [] :: [{binary(), mfa()}], - specs = [] :: [{binary(), string()}], - required = [] :: [{binary(), boolean()} | binary()], - defaults = [] :: [{binary(), any()}]}). - --define(is_multi_type(T), - ((T == 'list-multi') or (T == 'jid-multi') or (T == 'text-multi'))). - --define(is_list_type(T), - ((T == 'list-single') or (T == 'list-multi'))). - -%%%=================================================================== -%%% API -%%%=================================================================== -compile(Path) -> - compile(Path, []). - -compile(Path, Opts) -> - case filelib:is_dir(Path) of - true -> - filelib:fold_files( - Path, ".*.xdata", false, - fun(File, ok) -> - compile_file(File, Opts); - (_, Err) -> - Err - end, ok); - false -> - compile_file(Path, Opts) - end. - -compile_file(Path, Opts) -> - try - ok = application:ensure_started(fast_xml), - DirName = filename:dirname(Path), - FileName = filename:basename(Path), - RootName = filename:rootname(FileName), - ConfigPath = filename:join(DirName, RootName) ++ ".cfg", - ModName = list_to_atom(RootName), - {ok, Data} = file:read_file(Path), - Config = case file:consult(ConfigPath) of - {ok, Terms} -> lists:flatten(Terms); - {error, enoent} -> [] - end, - State = #state{mod_name = ModName, - file_name = FileName, - erl = filename:rootname(FileName) ++ ".erl", - hrl = filename:rootname(FileName) ++ ".hrl", - dir = DirName, - prefix = proplists:get_all_values(prefix, Config), - erl_dir = proplists:get_value(erl_dir, Opts, DirName), - hrl_dir = proplists:get_value(hrl_dir, Opts, DirName), - dec_mfas = proplists:get_value(decode, Config, []), - enc_mfas = proplists:get_value(encode, Config, []), - specs = proplists:get_value(specs, Config, []), - required = proplists:get_value(required, Config, []), - defaults = proplists:get_value(defaults, Config, [])}, - #xmlel{} = El = fxml_stream:parse_element(Data), - ok = compile_element(normalize(El), State), - io:format("Compiled ~s~n", [Path]) - catch _:{badmatch, Err} -> - io:format(standard_error, "Failed to compile ~s: ~p~n", - [Path, Err]), - Err - end. - -emit(Format) -> - emit(Format, []). - -emit(Format, Args) -> - put(outbuf, get(outbuf) ++ io_lib:format(Format, Args)). - -dec_int(Val) -> - dec_int(Val, infinity, infinity). - -dec_int(Val, Min, Max) -> - case list_to_integer(binary_to_list(Val)) of - Int when Int =< Max, Min == infinity -> - Int; - Int when Int =< Max, Int >= Min -> - Int - end. - -enc_int(Int) -> - integer_to_binary(Int). - -dec_enum(Val, Enums) -> - AtomVal = erlang:binary_to_existing_atom(Val, utf8), - case lists:member(AtomVal, Enums) of - true -> - AtomVal - end. - -enc_enum(Atom) -> - erlang:atom_to_binary(Atom, utf8). - -dec_enum_int(Val, Enums) -> - try dec_int(Val) - catch _:_ -> dec_enum(Val, Enums) - end. - -dec_enum_int(Val, Enums, Min, Max) -> - try dec_int(Val, Min, Max) - catch _:_ -> dec_enum(Val, Enums) - end. - -enc_enum_int(Int) when is_integer(Int) -> - enc_int(Int); -enc_enum_int(Atom) -> - enc_enum(Atom). - -dec_bool(<<"1">>) -> true; -dec_bool(<<"0">>) -> false; -dec_bool(<<"true">>) -> true; -dec_bool(<<"false">>) -> false. - -enc_bool(true) -> <<"1">>; -enc_bool(false) -> <<"0">>. - -enc_jid(J) -> jid:to_string(J). - -dec_jid(Val) -> - case jid:from_string(Val) of - error -> erlang:error(badarg); - J -> J - end. - -not_empty(<<_, _/binary>> = Val) -> - Val. - -format_error({form_type_mismatch, Type}) -> - <<"FORM_TYPE doesn't match '", Type/binary, "'">>; -format_error({bad_var_value, Var, Type}) -> - <<"Bad value of field '", Var/binary, "' of type '", Type/binary, "'">>; -format_error({missing_value, Var, Type}) -> - <<"Missing value of field '", Var/binary, "' of type '", Type/binary, "'">>; -format_error({too_many_values, Var, Type}) -> - <<"Too many values for field '", Var/binary, "' of type '", Type/binary, "'">>; -format_error({unknown_var, Var, Type}) -> - <<"Unknown field '", Var/binary, "' of type '", Type/binary, "'">>; -format_error({missing_required_var, Var, Type}) -> - <<"Missing required field '", Var/binary, "' of type '", Type/binary, "'">>. - -%%%=================================================================== -%%% Internal functions -%%%=================================================================== -compile_element(#xmlel{name = <<"form_type">>, children = Els} = Form, - #state{erl = OutErl, erl_dir = ErlDir, - hrl = OutHrl, hrl_dir = HrlDir} = State0) -> - try - Name = fxml:get_subtag_cdata(Form, <<"name">>), - Doc = fxml:get_subtag_cdata(Form, <<"doc">>), - X = #xmlel{name = <<"x">>, - attrs = [{<<"type">>, <<"form">>}, - {<<"xmlns">>, <<"jabber:x:data">>}], - children = Els}, - State = State0#state{ns = Name, doc = Doc}, - #xdata{fields = Fs} = xmpp_codec:decode(X), - put(outbuf, []), - mk_header(State), - mk_aux_funs(), - mk_top_decoder(Fs, State), - mk_top_encoder(Fs, State), - mk_decoder(Fs, State), - mk_encoders(Fs, State), - ErlData = get(outbuf), - ok = file:write_file(filename:join(ErlDir, OutErl), ErlData), - ok = erl_tidy:file(filename:join(ErlDir, OutErl), [{backups, false}]), - put(outbuf, []), - mk_type_definitions(Fs, State), - HrlData = get(outbuf), - ok = file:write_file(filename:join(HrlDir, OutHrl), HrlData) - catch _:{badmatch, Err} -> - Err - end. - -mk_aux_funs() -> - case get_abstract_code_from_myself() of - {ok, AbsCode} -> - AST = lists:filter( - fun(T) -> - case catch erl_syntax_lib:analyze_function(T) of - {format_error, 1} -> true; - {dec_int, 3} -> true; - {dec_int, 1} -> true; - {dec_enum, 2} -> true; - {dec_enum_int, 2} -> true; - {dec_enum_int, 4} -> true; - {enc_int, 1} -> true; - {enc_enum, 1} -> true; - {enc_enum_int, 1} -> true; - {not_empty, 1} -> true; - {dec_bool, 1} -> true; - {enc_bool, 1} -> true; - {enc_jid, 1} -> true; - {dec_jid, 1} -> true; - _ -> false - end - end, AbsCode), - emit(erl_prettypr:format(erl_syntax:form_list(AST)) ++ io_lib:nl()); - error -> - erlang:error({no_abstract_code_found, ?MODULE}) - end. - -get_abstract_code_from_myself() -> - {file, File} = code:is_loaded(?MODULE), - case beam_lib:chunks(File, [abstract_code]) of - {ok, {_, List}} -> - case lists:keyfind(abstract_code, 1, List) of - {abstract_code, {raw_abstract_v1, Abstr}} -> - {ok, Abstr}; - _ -> - error - end; - _ -> - error - end. - -mk_comment_header(#state{file_name = Source, ns = NS, doc = Doc}) -> - emit("%% Created automatically by xdata generator (xdata_codec.erl)~n" - "%% Source: ~s~n" - "%% Form type: ~s~n", [Source, NS]), - if Doc /= <<>> -> emit("%% Document: ~s~n~n", [Doc]); - true -> emit("~n") - end. - -mk_header(#state{mod_name = Mod, hrl = Include} = State) -> - mk_comment_header(State), - emit("~n-module(~s).~n", [Mod]), - emit("-export([decode/1, decode/2, encode/1, encode/2, format_error/1]).~n"), - emit("-include(\"xmpp_codec.hrl\").~n"), - emit("-include(\"~s\").~n", [Include]), - emit("-export_type([property/0, result/0, form/0]).~n"). - -mk_type_definitions(Fs, State) -> - mk_comment_header(State), - lists:foreach( - fun(#xdata_field{var = Var} = F) -> - Spec = get_typespec(F, State), - case is_complex_type(Spec) of - true -> - emit("-type '~s'() :: ~s.~n", - [var_to_rec_field(Var, State), Spec]); - false -> - ok - end - end, Fs), - emit("~n-type property() :: "), - Fields = lists:map( - fun(#xdata_field{var = Var} = F) -> - RecField = var_to_rec_field(Var, State), - [io_lib:format("{'~s', ~s}", - [RecField, mk_typespec(F, State)])] - end, Fs), - emit(string:join(Fields, " |~n ") ++ ".~n"), - emit("-type result() :: [property()].~n~n"), - VarsWithSpec = lists:flatmap( - fun(#xdata_field{type = T, var = Var} = F) - when ?is_list_type(T) -> - RecName = var_to_rec_field(Var, State), - Spec0 = get_typespec(F, State), - Spec = case is_complex_type(Spec0) of - true -> - io_lib:format("'~s'()", [RecName]); - false -> - Spec0 - end, - [{RecName, mk_typespec(F, State), Spec}]; - (_) -> - [] - end, Fs), - case VarsWithSpec of - [] -> - emit("-type form() :: [property() | xdata_field()].~n"); - _ -> - emit("-type options(T) :: [{binary(), T}].~n"), - emit("-type property_with_options() ::~n "), - Options = [io_lib:format("{'~s', ~s, options(~s)}", - [Var, Spec1, Spec2]) - || {Var, Spec1, Spec2} <- VarsWithSpec], - emit(string:join(Options, " |~n ") ++ ".~n"), - emit("-type form() :: [property() | property_with_options() | xdata_field()].~n") - end. - -mk_top_decoder(Fs, State) -> - Required = [Var || #xdata_field{var = Var} <- Fs, is_required(Var, State)], - emit("decode(Fs) -> decode(Fs, []).~n"), - emit("decode(Fs, Acc) ->" - " case lists:keyfind(<<\"FORM_TYPE\">>, #xdata_field.var, Fs) of" - " false ->" - " decode(Fs, Acc, ~p);" - " #xdata_field{values = [~p]} ->" - " decode(Fs, Acc, ~p);" - " _ ->" - " erlang:error({?MODULE, {form_type_mismatch, ~p}})~n" - " end.~n", - [Required, State#state.ns, Required, State#state.ns]). - -mk_top_encoder(Fs, State) -> - Clauses = string:join( - lists:map( - fun(#xdata_field{var = Var, type = T}) when ?is_list_type(T) -> - Field = var_to_rec_field(Var, State), - io_lib:format( - "{'~s', Val} -> ['encode_~s'(Val, default, Translate)];" - "{'~s', Val, Opts} -> ['encode_~s'(Val, Opts, Translate)]", - [Field, Field, Field, Field]); - (#xdata_field{var = Var}) -> - Field = var_to_rec_field(Var, State), - io_lib:format( - "{'~s', Val} -> ['encode_~s'(Val, Translate)];" - "{'~s', _, _} -> erlang:error({badarg, Opt})", - [Field, Field, Field]) - end, Fs) ++ ["#xdata_field{} -> [Opt]; _ -> []"], - ";"), - emit("encode(Cfg) -> encode(Cfg, fun(Text) -> Text end).~n"), - emit("encode(List, Translate) when is_list(List) ->" - " Fs = [case Opt of ~s end || Opt <- List]," - " FormType = #xdata_field{var = <<\"FORM_TYPE\">>, type = hidden," - " values = [~p]}," - " [FormType|lists:flatten(Fs)].~n", - [Clauses, State#state.ns]). - -mk_decoder([#xdata_field{var = Var, type = Type} = F|Fs], State) -> - ValVar = if ?is_multi_type(Type) -> "Values"; - true -> "[Value]" - end, - DecFun = if ?is_multi_type(Type) -> - ["[", mk_decoding_fun(F, State), " || Value <- Values]"]; - true -> - mk_decoding_fun(F, State) - end, - emit("decode([#xdata_field{var = ~p, values = ~s}|Fs], Acc, Required) ->" - " try ~s of" - " Result -> decode(Fs, [{'~s', Result}|Acc]," - " lists:delete(~p, Required))" - " catch _:_ ->" - " erlang:error({?MODULE, {bad_var_value, ~p, ~p}})" - " end;", - [Var, ValVar, DecFun, var_to_rec_field(Var, State), - Var, Var, State#state.ns]), - if not ?is_multi_type(Type) -> - emit("decode([#xdata_field{var = ~p, values = []} = F|Fs]," - " Acc, Required) ->" - " decode([F#xdata_field{var = ~p, values = [<<>>]}|Fs]," - " Acc, Required);", - [Var, Var]), - emit("decode([#xdata_field{var = ~p}|_], _, _) ->" - " erlang:error({?MODULE, {too_many_values, ~p, ~p}});", - [Var, Var, State#state.ns]); - true -> - ok - end, - mk_decoder(Fs, State); -mk_decoder([], State) -> - emit("decode([#xdata_field{var = Var}|Fs], Acc, Required) ->" - " if Var /= <<\"FORM_TYPE\">> ->" - " erlang:error({?MODULE, {unknown_var, Var, ~p}});" - " true ->" - " decode(Fs, Acc, Required)" - " end;", - [State#state.ns]), - emit("decode([], _, [Var|_]) ->" - " erlang:error({?MODULE, {missing_required_var, Var, ~p}});~n", - [State#state.ns]), - emit("decode([], Acc, []) -> Acc.~n"). - -mk_encoders(Fs, State) -> - lists:foreach( - fun(#xdata_field{var = Var, required = IsRequired, desc = Desc, - label = Label, type = Type} = F) -> - EncVals = mk_encoded_values(F, State), - EncOpts = mk_encoded_options(F, State), - FieldName = var_to_rec_field(Var, State), - DescStr = if Desc == <<>> -> "<<>>"; - true -> io_lib:format("Translate(~p)", [Desc]) - end, - LabelStr = if Label == <<>> -> "<<>>"; - true -> io_lib:format("Translate(~p)", [Label]) - end, - if ?is_list_type(Type) -> - emit("'encode_~s'(Value, Options, Translate) ->", [FieldName]); - true -> - emit("'encode_~s'(Value, Translate) ->", [FieldName]) - end, - emit(" Values = ~s," - " Opts = ~s," - " #xdata_field{var = ~p," - " values = Values," - " required = ~p," - " type = ~p," - " options = Opts," - " desc = ~s," - " label = ~s}.~n", - [EncVals, EncOpts, Var, IsRequired, Type, DescStr, LabelStr]) - end, Fs). - -mk_encoded_values(#xdata_field{var = Var, type = Type, - options = Options}, State) -> - EncFun = - case get_enc_fun(Var, Type, Options, State) of - {M, Fun, Args} -> - Mod = if M == undefined -> ""; - true -> io_lib:format("~s:", [M]) - end, - FArgs = [io_lib:format(", ~p", [A]) || A <- Args], - if ?is_multi_type(Type) -> - "[" ++ io_lib:format("~s~s(V~s)", [Mod, Fun, FArgs]) ++ - " || V <- Value]"; - true -> - "[" ++ io_lib:format("~s~s(Value~s)", [Mod, Fun, FArgs]) - ++ "]" - end; - undefined -> - "[Value]" - end, - Default = case get_dec_fun(Var, Type, Options, State) of - _ when ?is_multi_type(Type) -> "[]"; - undefined -> "<<>>"; - _MFA -> "undefined" - end, - io_lib:format( - "case Value of" - " ~s -> [];~n" - " Value -> ~s~n" - "end", - [Default, EncFun]). - -mk_encoded_options(#xdata_field{var = Var, type = Type, - options = Options}, State) -> - EncFun = case get_enc_fun(Var, Type, Options, State) of - {M, Fun, Args} -> - Mod = if M == undefined -> ""; - true -> io_lib:format("~s:", [M]) - end, - FArgs = [io_lib:format(", ~p", [A]) || A <- Args], - io_lib:format("~s~s(V~s)", [Mod, Fun, FArgs]); - undefined -> - "V" - end, - EncOpts = string:join( - [case L of - <<>> -> - io_lib:format("#xdata_option{value = ~p}", [V]); - _ -> - io_lib:format( - "#xdata_option{label = Translate(~p), value = ~p}", - [L, V]) - end || #xdata_option{label = L, value = V} <- Options], - ","), - if ?is_list_type(Type) -> - io_lib:format( - "if Options == default ->" - " [~s];" - "true ->" - " [#xdata_option{label = Translate(L), value = ~s}" - " || {L, V} <- Options]" - "end", - [EncOpts, EncFun]); - true -> - "[]" - end. - -mk_decoding_fun(#xdata_field{var = Var, type = Type, - options = Options}, State) -> - case get_dec_fun(Var, Type, Options, State) of - {M, Fun, Args} -> - Mod = if M == undefined -> ""; - true -> io_lib:format("~s:", [M]) - end, - FArgs = [io_lib:format(", ~p", [A]) || A <- Args], - io_lib:format("~s~s(Value~s)", [Mod, Fun, FArgs]); - undefined -> - "Value" - end. - -var_to_rec_field(Var, #state{prefix = [Prefix|T]} = State) -> - Size = size(Prefix), - case Var of - <<(Prefix):Size/binary, Rest/binary>> -> - binary_to_atom(Rest, utf8); - _ -> - var_to_rec_field(Var, State#state{prefix = T}) - end; -var_to_rec_field(Var, #state{prefix = []}) -> - Var. - -get_dec_fun(Var, Type, Options, State) -> - case lists:keyfind(Var, 1, State#state.dec_mfas) of - false when Type == 'list-multi'; Type == 'list-single' -> - if Options /= [] -> - Variants = [binary_to_atom(V, utf8) - || #xdata_option{value = V} <- Options], - {undefined, dec_enum, [Variants]}; - true -> - undefined - end; - false when Type == 'jid-multi'; Type == 'jid-single' -> - {undefined, dec_jid, []}; - false when Type == boolean -> - {undefined, dec_bool, []}; - false -> - undefined; - {Var, {M, F, A}} -> - {M, F, A}; - {Var, {dec_bool, []}} -> - {undefined, dec_bool, []}; - {Var, {not_empty, []}} -> - {undefined, not_empty, []}; - {Var, {dec_enum, [Variants]}} -> - {undefined, dec_enum, [Variants]}; - {Var, {dec_int, Args}} -> - {undefined, dec_int, Args}; - {Var, {dec_enum_int, Args}} -> - {undefined, dec_enum_int, Args}; - {Var, {dec_jid, []}} -> - {undefined, dec_jid, []} - end. - -get_enc_fun(Var, Type, Options, State) -> - case get_dec_fun(Var, Type, Options, State) of - {undefined, dec_enum, _} -> - {undefined, enc_enum, []}; - {undefined, dec_bool, _} -> - {undefined, enc_bool, []}; - {undefined, dec_int, _} -> - {undefined, enc_int, []}; - {undefined, dec_enum_int, _} -> - {undefined, enc_enum_int, []}; - {undefined, dec_jid, _} -> - {undefined, enc_jid, []}; - _ -> - case lists:keyfind(Var, 1, State#state.enc_mfas) of - false -> - undefined; - {Var, {M, F, A}} -> - {M, F, A}; - {Var, {enc_bool, []}} -> - {undefined, enc_bool, []}; - {Var, {dec_enum, _}} -> - {undefined, enc_enum, []}; - {Var, {enc_int, _}} -> - {undefined, enc_int, []}; - {Var, {dec_enum_int, _}} -> - {undefined, enc_enum_int, []}; - {Var, {enc_jid, _}} -> - {undefined, enc_jid, []} - end - end. - -mk_typespec(#xdata_field{type = Type, var = Var} = Field, State) -> - Spec0 = get_typespec(Field, State), - Spec1 = case is_complex_type(Spec0) of - true -> - io_lib:format("'~s'()", [var_to_rec_field(Var, State)]); - false -> - Spec0 - end, - if ?is_multi_type(Type) -> "[" ++ Spec1 ++ "]"; - true -> Spec1 - end. - -get_typespec(#xdata_field{var = Var, type = Type, options = Options}, State) -> - case lists:keyfind(Var, 1, State#state.specs) of - false -> - case get_dec_fun(Var, Type, Options, State) of - {undefined, dec_enum, Args} -> - enum_spec(Args); - {undefined, dec_bool, _} -> - "boolean()"; - {undefined, dec_jid, _} -> - "jid:jid()"; - {undefined, dec_int, Args} -> - int_spec(Args); - {undefined, dec_enum_int, [Variants|T]} -> - enum_spec([Variants]) ++ " | " ++ int_spec(T); - _ -> - "binary()" - end; - {Var, Spec} -> - Spec - end. - --spec is_complex_type(string()) -> boolean(). -is_complex_type(Spec) -> - string:chr(Spec, $|) /= 0. - -int_spec([]) -> - "integer()"; -int_spec([From, To]) -> - if From /= infinity, To /= infinity -> - io_lib:format("~p..~p", [From, To]); - From > 0 -> - "pos_integer()"; - From == 0 -> - "non_neg_integer()"; - true -> - "integer()" - end. - -enum_spec([Variants]) -> - string:join([atom_to_list(V) || V <- Variants], " | "). - -is_required(Var, State) -> - lists:member(Var, State#state.required) orelse - proplists:get_bool(Var, State#state.required). - -normalize(#xmlel{name = Name, attrs = Attrs, children = Els}) -> - #xmlel{name = Name, - attrs = [normalize(Attr) || Attr <- Attrs], - children = [normalize(El) || El <- Els]}; -normalize({Key, Data}) -> - {Key, normalize(Data)}; -normalize(Txt) when is_binary(Txt) -> - case re:split(Txt, "[\\s\\r\\n\\t]+", [trim, {return, list}]) of - [""|T] -> - list_to_binary(string:join(T, " ")); - T -> - list_to_binary(string:join(T, " ")) - end. diff --git a/src/xmpp.erl b/src/xmpp.erl deleted file mode 100644 index 2c08c2bcd..000000000 --- a/src/xmpp.erl +++ /dev/null @@ -1,827 +0,0 @@ -%%%------------------------------------------------------------------- -%%% @author Evgeny Khramtsov -%%% @copyright (C) 2015, Evgeny Khramtsov -%%% @doc -%%% -%%% @end -%%% Created : 9 Dec 2015 by Evgeny Khramtsov -%%%------------------------------------------------------------------- --module(xmpp). - -%% API --export([make_iq_result/1, make_iq_result/2, make_error/2, - decode/1, decode/3, encode/1, encode/2, - get_type/1, get_to/1, get_from/1, get_id/1, - get_lang/1, get_error/1, get_els/1, get_ns/1, - set_type/2, set_to/2, set_from/2, set_id/2, - set_lang/2, set_error/2, set_els/2, set_from_to/3, - format_error/1, is_stanza/1, set_subtag/2, get_subtag/2, - remove_subtag/2, has_subtag/2, decode_els/1, decode_els/3, - pp/1, get_name/1, get_text/1, mk_text/1, mk_text/2, - is_known_tag/1, is_known_tag/2, append_subtags/2]). - -%% XMPP errors --export([err_bad_request/0, err_bad_request/2, - err_conflict/0, err_conflict/2, - err_feature_not_implemented/0, err_feature_not_implemented/2, - err_forbidden/0, err_forbidden/2, - err_gone/0, err_gone/2, - err_internal_server_error/0, err_internal_server_error/2, - err_item_not_found/0, err_item_not_found/2, - err_jid_malformed/0, err_jid_malformed/2, - err_not_acceptable/0, err_not_acceptable/2, - err_not_allowed/0, err_not_allowed/2, - err_not_authorized/0, err_not_authorized/2, - err_payment_required/0, err_payment_required/2, - err_policy_violation/0, err_policy_violation/2, - err_recipient_unavailable/0, err_recipient_unavailable/2, - err_redirect/0, err_redirect/2, - err_registration_required/0, err_registration_required/2, - err_remote_server_not_found/0, err_remote_server_not_found/2, - err_remote_server_timeout/0, err_remote_server_timeout/2, - err_resource_constraint/0, err_resource_constraint/2, - err_service_unavailable/0, err_service_unavailable/2, - err_subscription_required/0, err_subscription_required/2, - err_undefined_condition/1, err_undefined_condition/3, - err_unexpected_request/0, err_unexpected_request/2]). - -%% XMPP stream errors --export([serr_bad_format/0, serr_bad_format/2, - serr_bad_namespace_prefix/0, serr_bad_namespace_prefix/2, - serr_conflict/0, serr_conflict/2, - serr_connection_timeout/0, serr_connection_timeout/2, - serr_host_gone/0, serr_host_gone/2, - serr_host_unknown/0, serr_host_unknown/2, - serr_improper_addressing/0, serr_improper_addressing/2, - serr_internal_server_error/0, serr_internal_server_error/2, - serr_invalid_from/0, serr_invalid_from/2, - serr_invalid_id/0, serr_invalid_id/2, - serr_invalid_namespace/0, serr_invalid_namespace/2, - serr_invalid_xml/0, serr_invalid_xml/2, - serr_not_authorized/0, serr_not_authorized/2, - serr_not_well_formed/0, serr_not_well_formed/2, - serr_policy_violation/0, serr_policy_violation/2, - serr_remote_connection_failed/0, serr_remote_connection_failed/2, - serr_reset/0, serr_reset/2, - serr_resource_constraint/0, serr_resource_constraint/2, - serr_restricted_xml/0, serr_restricted_xml/2, - serr_see_other_host/0, serr_see_other_host/2, - serr_system_shutdown/0, serr_system_shutdown/2, - serr_undefined_condition/0, serr_undefined_condition/2, - serr_unsupported_encoding/0, serr_unsupported_encoding/2, - serr_unsupported_stanza_type/0, serr_unsupported_stanza_type/2, - serr_unsupported_version/0, serr_unsupported_version/2]). - --include("xmpp.hrl"). - -%%%=================================================================== -%%% API -%%%=================================================================== --spec make_iq_result(iq()) -> iq(). -make_iq_result(IQ) -> - make_iq_result(IQ, undefined). - --spec make_iq_result(iq(), xmpp_element() | xmlel() | undefined) -> iq(). -make_iq_result(#iq{type = Type, from = From, to = To} = IQ, El) - when Type == get; Type == set -> - SubEls = if El == undefined -> []; - true -> [El] - end, - IQ#iq{type = result, to = From, from = To, sub_els = SubEls}. - --spec make_error(message(), stanza_error() | xmlel()) -> message(); - (presence(), stanza_error() | xmlel()) -> presence(); - (iq(), stanza_error() | xmlel()) -> iq(); - (xmlel(), stanza_error() | xmlel()) -> xmlel(). -make_error(#message{type = Type, from = From, to = To, sub_els = Els} = Msg, - Err) when Type /= error -> - Msg#message{type = error, from = To, to = From, sub_els = Els ++ [Err]}; -make_error(#presence{type = Type, from = From, to = To, sub_els = Els} = Pres, - Err) when Type /= error -> - Pres#presence{type = error, from = To, to = From, sub_els = Els ++ [Err]}; -make_error(#iq{type = Type, from = From, to = To, sub_els = Els} = IQ, - Err) when Type /= result, Type /= error -> - IQ#iq{type = error, from = To, to = From, sub_els = Els ++ [Err]}; -make_error(#xmlel{attrs = Attrs, children = Els} = El, Err) -> - To = fxml:get_attr(<<"to">>, Attrs), - From = fxml:get_attr(<<"from">>, Attrs), - Attrs1 = case To of - {value, T} -> - lists:keystore(<<"from">>, 1, Attrs, {<<"from">>, T}); - _ -> - Attrs - end, - Attrs2 = case From of - {value, F} -> - lists:keystore(<<"to">>, 1, Attrs1, {<<"to">>, F}); - _ -> - Attrs - end, - Attrs3 = lists:keystore(<<"type">>, 1, Attrs2, {<<"type">>, <<"error">>}), - El#xmlel{attrs = Attrs3, children = Els ++ [encode(Err, ?NS_CLIENT)]}. - --spec get_id(iq() | message() | presence() | xmlel()) -> binary(). -get_id(#iq{id = ID}) -> ID; -get_id(#message{id = ID}) -> ID; -get_id(#presence{id = ID}) -> ID; -get_id(#xmlel{attrs = Attrs}) -> fxml:get_attr_s(<<"id">>, Attrs). - --spec get_type(iq()) -> iq_type(); - (message()) -> message_type(); - (presence()) -> presence_type(); - (xmlel()) -> binary(). -get_type(#iq{type = T}) -> T; -get_type(#message{type = T}) -> T; -get_type(#presence{type = T}) -> T; -get_type(#xmlel{attrs = Attrs}) -> fxml:get_attr_s(<<"type">>, Attrs). - --spec get_lang(iq() | message() | presence() | xmlel()) -> binary(). -get_lang(#iq{lang = L}) -> L; -get_lang(#message{lang = L}) -> L; -get_lang(#presence{lang = L}) -> L; -get_lang(#xmlel{attrs = Attrs}) -> fxml:get_attr_s(<<"xml:lang">>, Attrs). - --spec get_from(iq() | message() | presence()) -> undefined | jid:jid(). -get_from(#iq{from = J}) -> J; -get_from(#message{from = J}) -> J; -get_from(#presence{from = J}) -> J. - --spec get_to(iq() | message() | presence()) -> undefined | jid:jid(). -get_to(#iq{to = J}) -> J; -get_to(#message{to = J}) -> J; -get_to(#presence{to = J}) -> J. - --spec get_error(iq() | message() | presence()) -> undefined | stanza_error(). -get_error(Stanza) -> - case get_subtag(Stanza, #stanza_error{}) of - false -> undefined; - Error -> Error - end. - --spec get_els(iq() | message() | presence()) -> [xmpp_element() | xmlel()]; - (xmlel()) -> [xmlel()]. -get_els(#iq{sub_els = Els}) -> Els; -get_els(#message{sub_els = Els}) -> Els; -get_els(#presence{sub_els = Els}) -> Els; -get_els(#xmlel{children = Els}) -> [El || El = #xmlel{} <- Els]. - --spec set_id(iq(), binary()) -> iq(); - (message(), binary()) -> message(); - (presence(), binary()) -> presence(). -set_id(#iq{} = IQ, I) -> IQ#iq{id = I}; -set_id(#message{} = Msg, I) -> Msg#message{id = I}; -set_id(#presence{} = Pres, I) -> Pres#presence{id = I}. - --spec set_type(iq(), iq_type()) -> iq(); - (message(), message_type()) -> message(); - (presence(), presence_type()) -> presence(). -set_type(#iq{} = IQ, T) -> IQ#iq{type = T}; -set_type(#message{} = Msg, T) -> Msg#message{type = T}; -set_type(#presence{} = Pres, T) -> Pres#presence{type = T}. - --spec set_lang(iq(), binary()) -> iq(); - (message(), binary()) -> message(); - (presence(), binary()) -> presence(). -set_lang(#iq{} = IQ, L) -> IQ#iq{lang = L}; -set_lang(#message{} = Msg, L) -> Msg#message{lang = L}; -set_lang(#presence{} = Pres, L) -> Pres#presence{lang = L}. - --spec set_from(iq(), jid:jid()) -> iq(); - (message(), jid:jid()) -> message(); - (presence(), jid:jid()) -> presence(). -set_from(#iq{} = IQ, J) -> IQ#iq{from = J}; -set_from(#message{} = Msg, J) -> Msg#message{from = J}; -set_from(#presence{} = Pres, J) -> Pres#presence{from = J}. - --spec set_to(iq(), jid:jid()) -> iq(); - (message(), jid:jid()) -> message(); - (presence(), jid:jid()) -> presence(). -set_to(#iq{} = IQ, J) -> IQ#iq{to = J}; -set_to(#message{} = Msg, J) -> Msg#message{to = J}; -set_to(#presence{} = Pres, J) -> Pres#presence{to = J}. - --spec set_from_to(iq(), undefined | jid:jid(), undefined | jid:jid()) -> iq(); - (message(), undefined | jid:jid(), undefined | jid:jid()) -> message(); - (presence(), undefined | jid:jid(), undefined | jid:jid()) -> presence(). -set_from_to(#iq{} = IQ, F, T) -> IQ#iq{from = F, to = T}; -set_from_to(#message{} = Msg, F, T) -> Msg#message{from = F, to = T}; -set_from_to(#presence{} = Pres, F, T) -> Pres#presence{from = F, to = T}. - --spec set_error(iq(), stanza_error()) -> iq(); - (message(), stanza_error()) -> message(); - (presence(), stanza_error()) -> presence(). -set_error(Stanza, E) -> set_subtag(Stanza, E). - --spec set_els(iq(), [xmpp_element() | xmlel()]) -> iq(); - (message(), [xmpp_element() | xmlel()]) -> message(); - (presence(), [xmpp_element() | xmlel()]) -> presence(). -set_els(#iq{} = IQ, Els) -> IQ#iq{sub_els = Els}; -set_els(#message{} = Msg, Els) -> Msg#message{sub_els = Els}; -set_els(#presence{} = Pres, Els) -> Pres#presence{sub_els = Els}. - --spec get_ns(xmpp_element() | xmlel()) -> binary(). -get_ns(#xmlel{attrs = Attrs}) -> - fxml:get_attr_s(<<"xmlns">>, Attrs); -get_ns(Pkt) -> - xmpp_codec:get_ns(Pkt). - --spec get_name(xmpp_element() | xmlel()) -> binary(). -get_name(#xmlel{name = Name}) -> - Name; -get_name(Pkt) -> - xmpp_codec:get_name(Pkt). - --spec decode(xmlel() | xmpp_element()) -> {ok, xmpp_element()} | {error, any()}. -decode(El) -> - decode(El, ?NS_CLIENT, []). - --spec decode(xmlel() | xmpp_element(), binary(), [proplists:property()]) -> - {ok, xmpp_element()} | {error, any()}. -decode(#xmlel{} = El, TopXMLNS, Opts) -> - xmpp_codec:decode(El, TopXMLNS, Opts); -decode(Pkt, _, _) -> - Pkt. - --spec decode_els(iq()) -> iq(); - (message()) -> message(); - (presence()) -> presence(). -decode_els(Stanza) -> - decode_els(Stanza, ?NS_CLIENT, fun is_known_tag/1). - --type match_fun() :: fun((xmlel()) -> boolean()). --spec decode_els(iq(), binary(), match_fun()) -> iq(); - (message(), binary(), match_fun()) -> message(); - (presence(), binary(), match_fun()) -> presence(). -decode_els(Stanza, TopXMLNS, MatchFun) -> - Els = lists:map( - fun(#xmlel{} = El) -> - case MatchFun(El) of - true -> decode(El, TopXMLNS, []); - false -> El - end; - (Pkt) -> - Pkt - end, get_els(Stanza)), - set_els(Stanza, Els). - --spec encode(xmpp_element() | xmlel()) -> xmlel(). -encode(Pkt) -> - encode(Pkt, <<>>). - --spec encode(xmpp_element() | xmlel(), binary()) -> xmlel(). -encode(Pkt, TopXMLNS) -> - xmpp_codec:encode(Pkt, TopXMLNS). - --spec is_known_tag(xmlel()) -> boolean(). -is_known_tag(El) -> - is_known_tag(El, ?NS_CLIENT). - --spec is_known_tag(xmlel(), binary()) -> boolean(). -is_known_tag(El, TopXMLNS) -> - xmpp_codec:is_known_tag(El, TopXMLNS). - -format_error(Reason) -> - xmpp_codec:format_error(Reason). - --spec is_stanza(any()) -> boolean(). -is_stanza(#message{}) -> true; -is_stanza(#iq{}) -> true; -is_stanza(#presence{}) -> true; -is_stanza(#xmlel{name = Name}) -> - (Name == <<"iq">>) or (Name == <<"message">>) or (Name == <<"presence">>); -is_stanza(_) -> false. - --spec set_subtag(iq(), xmpp_element()) -> iq(); - (message(), xmpp_element()) -> message(); - (presence(), xmpp_element()) -> presence(). -set_subtag(Stanza, Tag) -> - TagName = xmpp_codec:get_name(Tag), - XMLNS = xmpp_codec:get_ns(Tag), - Els = get_els(Stanza), - NewEls = set_subtag(Els, Tag, TagName, XMLNS), - set_els(Stanza, NewEls). - -set_subtag([El|Els], Tag, TagName, XMLNS) -> - case match_tag(El, TagName, XMLNS) of - true -> - [Tag|Els]; - false -> - [El|set_subtag(Els, Tag, TagName, XMLNS)] - end; -set_subtag([], Tag, _, _) -> - [Tag]. - --spec get_subtag(stanza(), xmpp_element()) -> xmpp_element() | false. -get_subtag(Stanza, Tag) -> - Els = get_els(Stanza), - TagName = xmpp_codec:get_name(Tag), - XMLNS = xmpp_codec:get_ns(Tag), - get_subtag(Els, TagName, XMLNS). - -get_subtag([El|Els], TagName, XMLNS) -> - case match_tag(El, TagName, XMLNS) of - true -> - try - decode(El) - catch _:{xmpp_codec, _Why} -> - get_subtag(Els, TagName, XMLNS) - end; - false -> - get_subtag(Els, TagName, XMLNS) - end; -get_subtag([], _, _) -> - false. - --spec remove_subtag(iq(), xmpp_element()) -> iq(); - (message(), xmpp_element()) -> message(); - (presence(), xmpp_element()) -> presence(). -remove_subtag(Stanza, Tag) -> - Els = get_els(Stanza), - TagName = xmpp_codec:get_name(Tag), - XMLNS = xmpp_codec:get_ns(Tag), - NewEls = remove_subtag(Els, TagName, XMLNS), - set_els(Stanza, NewEls). - -remove_subtag([El|Els], TagName, XMLNS) -> - case match_tag(El, TagName, XMLNS) of - true -> - remove_subtag(Els, TagName, XMLNS); - false -> - [El|remove_subtag(Els, TagName, XMLNS)] - end; -remove_subtag([], _, _) -> - []. - --spec has_subtag(stanza(), xmpp_element()) -> boolean(). -has_subtag(Stanza, Tag) -> - Els = get_els(Stanza), - TagName = xmpp_codec:get_name(Tag), - XMLNS = xmpp_codec:get_ns(Tag), - has_subtag(Els, TagName, XMLNS). - -has_subtag([El|Els], TagName, XMLNS) -> - case match_tag(El, TagName, XMLNS) of - true -> - true; - false -> - has_subtag(Els, TagName, XMLNS) - end; -has_subtag([], _, _) -> - false. - --spec append_subtags(stanza(), [xmpp_element() | xmlel()]) -> stanza(). -append_subtags(Stanza, Tags) -> - Els = get_els(Stanza), - set_els(Stanza, Els ++ Tags). - --spec get_text([text()]) -> binary(). -get_text([]) -> <<"">>; -get_text([#text{data = Data}|_]) -> Data. - --spec mk_text(binary()) -> [text()]. -mk_text(Text) -> - mk_text(Text, <<"">>). - --spec mk_text(binary(), binary()) -> [text()]. -mk_text(<<"">>, _) -> - []; -mk_text(Text, Lang) -> - [#text{lang = Lang, - data = translate:translate(Lang, Text)}]. - --spec pp(any()) -> iodata(). -pp(Term) -> - xmpp_codec:pp(Term). - -%%%=================================================================== -%%% Functions to construct general XMPP errors -%%%=================================================================== --spec err_bad_request() -> stanza_error(). -err_bad_request() -> - err(modify, 'bad-request', 400). - --spec err_bad_request(binary(), binary()) -> stanza_error(). -err_bad_request(Text, Lang) -> - err(modify, 'bad-request', 400, Text, Lang). - --spec err_conflict() -> stanza_error(). -err_conflict() -> - err(cancel, 'conflict', 409). - --spec err_conflict(binary(), binary()) -> stanza_error(). -err_conflict(Text, Lang) -> - err(cancel, 'conflict', 409, Text, Lang). - --spec err_feature_not_implemented() -> stanza_error(). -err_feature_not_implemented() -> - err(cancel, 'feature-not-implemented', 501). - --spec err_feature_not_implemented(binary(), binary()) -> stanza_error(). -err_feature_not_implemented(Text, Lang) -> - err(cancel, 'feature-not-implemented', 501, Text, Lang). - --spec err_forbidden() -> stanza_error(). -err_forbidden() -> - err(auth, 'forbidden', 403). - --spec err_forbidden(binary(), binary()) -> stanza_error(). -err_forbidden(Text, Lang) -> - err(auth, 'forbidden', 403, Text, Lang). - -%% RFC 6120 says error type SHOULD be "cancel". -%% RFC 3920 and XEP-0082 says it SHOULD be "modify". --spec err_gone() -> stanza_error(). -err_gone() -> - err(modify, 'gone', 302). - --spec err_gone(binary(), binary()) -> stanza_error(). -err_gone(Text, Lang) -> - err(modify, 'gone', 302, Text, Lang). - -%% RFC 6120 sasy error type SHOULD be "cancel". -%% RFC 3920 and XEP-0082 says it SHOULD be "wait". --spec err_internal_server_error() -> stanza_error(). -err_internal_server_error() -> - err(wait, 'internal-server-error', 500). - --spec err_internal_server_error(binary(), binary()) -> stanza_error(). -err_internal_server_error(Text, Lang) -> - err(wait, 'internal-server-error', 500, Text, Lang). - --spec err_item_not_found() -> stanza_error(). -err_item_not_found() -> - err(cancel, 'item-not-found', 404). - --spec err_item_not_found(binary(), binary()) -> stanza_error(). -err_item_not_found(Text, Lang) -> - err(cancel, 'item-not-found', 404, Text, Lang). - --spec err_jid_malformed() -> stanza_error(). -err_jid_malformed() -> - err(modify, 'jid-malformed', 400). - --spec err_jid_malformed(binary(), binary()) -> stanza_error(). -err_jid_malformed(Text, Lang) -> - err(modify, 'jid-malformed', 400, Text, Lang). - --spec err_not_acceptable() -> stanza_error(). -err_not_acceptable() -> - err(modify, 'not-acceptable', 406). - --spec err_not_acceptable(binary(), binary()) -> stanza_error(). -err_not_acceptable(Text, Lang) -> - err(modify, 'not-acceptable', 406, Text, Lang). - --spec err_not_allowed() -> stanza_error(). -err_not_allowed() -> - err(cancel, 'not-allowed', 405). - --spec err_not_allowed(binary(), binary()) -> stanza_error(). -err_not_allowed(Text, Lang) -> - err(cancel, 'not-allowed', 405, Text, Lang). - --spec err_not_authorized() -> stanza_error(). -err_not_authorized() -> - err(auth, 'not-authorized', 401). - --spec err_not_authorized(binary(), binary()) -> stanza_error(). -err_not_authorized(Text, Lang) -> - err(auth, 'not-authorized', 401, Text, Lang). - --spec err_payment_required() -> stanza_error(). -err_payment_required() -> - err(auth, 'not-authorized', 402). - --spec err_payment_required(binary(), binary()) -> stanza_error(). -err_payment_required(Text, Lang) -> - err(auth, 'not-authorized', 402, Text, Lang). - -%% is defined in neither RFC 3920 nor XEP-0086. -%% We choose '403' error code (as in ). --spec err_policy_violation() -> stanza_error(). -err_policy_violation() -> - err(modify, 'policy-violation', 403). - --spec err_policy_violation(binary(), binary()) -> stanza_error(). -err_policy_violation(Text, Lang) -> - err(modify, 'policy-violation', 403, Text, Lang). - --spec err_recipient_unavailable() -> stanza_error(). -err_recipient_unavailable() -> - err(wait, 'recipient-unavailable', 404). - --spec err_recipient_unavailable(binary(), binary()) -> stanza_error(). -err_recipient_unavailable(Text, Lang) -> - err(wait, 'recipient-unavailable', 404, Text, Lang). - --spec err_redirect() -> stanza_error(). -err_redirect() -> - err(modify, 'redirect', 302). - --spec err_redirect(binary(), binary()) -> stanza_error(). -err_redirect(Text, Lang) -> - err(modify, 'redirect', 302, Text, Lang). - --spec err_registration_required() -> stanza_error(). -err_registration_required() -> - err(auth, 'registration-required', 407). - --spec err_registration_required(binary(), binary()) -> stanza_error(). -err_registration_required(Text, Lang) -> - err(auth, 'registration-required', 407, Text, Lang). - --spec err_remote_server_not_found() -> stanza_error(). -err_remote_server_not_found() -> - err(cancel, 'remote-server-not-found', 404). - --spec err_remote_server_not_found(binary(), binary()) -> stanza_error(). -err_remote_server_not_found(Text, Lang) -> - err(cancel, 'remote-server-not-found', 404, Text, Lang). - --spec err_remote_server_timeout() -> stanza_error(). -err_remote_server_timeout() -> - err(wait, 'remote-server-timeout', 504). - --spec err_remote_server_timeout(binary(), binary()) -> stanza_error(). -err_remote_server_timeout(Text, Lang) -> - err(wait, 'remote-server-timeout', 504, Text, Lang). - --spec err_resource_constraint() -> stanza_error(). -err_resource_constraint() -> - err(wait, 'resource-constraint', 500). - --spec err_resource_constraint(binary(), binary()) -> stanza_error(). -err_resource_constraint(Text, Lang) -> - err(wait, 'resource-constraint', 500, Text, Lang). - --spec err_service_unavailable() -> stanza_error(). -err_service_unavailable() -> - err(cancel, 'service-unavailable', 503). - --spec err_service_unavailable(binary(), binary()) -> stanza_error(). -err_service_unavailable(Text, Lang) -> - err(cancel, 'service-unavailable', 503, Text, Lang). - --spec err_subscription_required() -> stanza_error(). -err_subscription_required() -> - err(auth, 'subscription-required', 407). - --spec err_subscription_required(binary(), binary()) -> stanza_error(). -err_subscription_required(Text, Lang) -> - err(auth, 'subscription-required', 407, Text, Lang). - -%% No error type is defined for . -%% Let user provide the type. --spec err_undefined_condition('auth' | 'cancel' | 'continue' | - 'modify' | 'wait') -> stanza_error(). -err_undefined_condition(Type) -> - err(Type, 'undefined-condition', 500). - --spec err_undefined_condition('auth' | 'cancel' | 'continue' | 'modify' | 'wait', - binary(), binary()) -> stanza_error(). -err_undefined_condition(Type, Text, Lang) -> - err(Type, 'undefined-condition', 500, Text, Lang). - -%% RFC 6120 says error type SHOULD be "wait" or "modify". -%% RFC 3920 and XEP-0082 says it SHOULD be "wait". --spec err_unexpected_request() -> stanza_error(). -err_unexpected_request() -> - err(wait, 'unexpected-request', 400). - --spec err_unexpected_request(binary(), binary()) -> stanza_error(). -err_unexpected_request(Text, Lang) -> - err(wait, 'unexpected-request', 400, Text, Lang). - -%%%=================================================================== -%%% Functions to construct stream errors -%%%=================================================================== --spec serr_bad_format() -> stream_error(). -serr_bad_format() -> - serr('bad-format'). - --spec serr_bad_format(binary(), binary()) -> stream_error(). -serr_bad_format(Text, Lang) -> - serr('bad-format', Text, Lang). - --spec serr_bad_namespace_prefix() -> stream_error(). -serr_bad_namespace_prefix() -> - serr('bad-namespace-prefix'). - --spec serr_bad_namespace_prefix(binary(), binary()) -> stream_error(). -serr_bad_namespace_prefix(Text, Lang) -> - serr('bad-namespace-prefix', Text, Lang). - --spec serr_conflict() -> stream_error(). -serr_conflict() -> - serr('conflict'). - --spec serr_conflict(binary(), binary()) -> stream_error(). -serr_conflict(Text, Lang) -> - serr('conflict', Text, Lang). - --spec serr_connection_timeout() -> stream_error(). -serr_connection_timeout() -> - serr('connection-timeout'). - --spec serr_connection_timeout(binary(), binary()) -> stream_error(). -serr_connection_timeout(Text, Lang) -> - serr('connection-timeout', Text, Lang). - --spec serr_host_gone() -> stream_error(). -serr_host_gone() -> - serr('host-gone'). - --spec serr_host_gone(binary(), binary()) -> stream_error(). -serr_host_gone(Text, Lang) -> - serr('host-gone', Text, Lang). - --spec serr_host_unknown() -> stream_error(). -serr_host_unknown() -> - serr('host-unknown'). - --spec serr_host_unknown(binary(), binary()) -> stream_error(). -serr_host_unknown(Text, Lang) -> - serr('host-unknown', Text, Lang). - --spec serr_improper_addressing() -> stream_error(). -serr_improper_addressing() -> - serr('improper-addressing'). - --spec serr_improper_addressing(binary(), binary()) -> stream_error(). -serr_improper_addressing(Text, Lang) -> - serr('improper-addressing', Text, Lang). - --spec serr_internal_server_error() -> stream_error(). -serr_internal_server_error() -> - serr('internal-server-error'). - --spec serr_internal_server_error(binary(), binary()) -> stream_error(). -serr_internal_server_error(Text, Lang) -> - serr('internal-server-error', Text, Lang). - --spec serr_invalid_from() -> stream_error(). -serr_invalid_from() -> - serr('invalid-from'). - --spec serr_invalid_from(binary(), binary()) -> stream_error(). -serr_invalid_from(Text, Lang) -> - serr('invalid-from', Text, Lang). - --spec serr_invalid_id() -> stream_error(). -serr_invalid_id() -> - serr('invalid-id'). - --spec serr_invalid_id(binary(), binary()) -> stream_error(). -serr_invalid_id(Text, Lang) -> - serr('invalid-id', Text, Lang). - --spec serr_invalid_namespace() -> stream_error(). -serr_invalid_namespace() -> - serr('invalid-namespace'). - --spec serr_invalid_namespace(binary(), binary()) -> stream_error(). -serr_invalid_namespace(Text, Lang) -> - serr('invalid-namespace', Text, Lang). - --spec serr_invalid_xml() -> stream_error(). -serr_invalid_xml() -> - serr('invalid-xml'). - --spec serr_invalid_xml(binary(), binary()) -> stream_error(). -serr_invalid_xml(Text, Lang) -> - serr('invalid-xml', Text, Lang). - --spec serr_not_authorized() -> stream_error(). -serr_not_authorized() -> - serr('not-authorized'). - --spec serr_not_authorized(binary(), binary()) -> stream_error(). -serr_not_authorized(Text, Lang) -> - serr('not-authorized', Text, Lang). - --spec serr_not_well_formed() -> stream_error(). -serr_not_well_formed() -> - serr('not-well-formed'). - --spec serr_not_well_formed(binary(), binary()) -> stream_error(). -serr_not_well_formed(Text, Lang) -> - serr('not-well-formed', Text, Lang). - --spec serr_policy_violation() -> stream_error(). -serr_policy_violation() -> - serr('policy-violation'). - --spec serr_policy_violation(binary(), binary()) -> stream_error(). -serr_policy_violation(Text, Lang) -> - serr('policy-violation', Text, Lang). - --spec serr_remote_connection_failed() -> stream_error(). -serr_remote_connection_failed() -> - serr('remote-connection-failed'). - --spec serr_remote_connection_failed(binary(), binary()) -> stream_error(). -serr_remote_connection_failed(Text, Lang) -> - serr('remote-connection-failed', Text, Lang). - --spec serr_reset() -> stream_error(). -serr_reset() -> - serr('reset'). - --spec serr_reset(binary(), binary()) -> stream_error(). -serr_reset(Text, Lang) -> - serr('reset', Text, Lang). - --spec serr_resource_constraint() -> stream_error(). -serr_resource_constraint() -> - serr('resource-constraint'). - --spec serr_resource_constraint(binary(), binary()) -> stream_error(). -serr_resource_constraint(Text, Lang) -> - serr('resource-constraint', Text, Lang). - --spec serr_restricted_xml() -> stream_error(). -serr_restricted_xml() -> - serr('restricted-xml'). - --spec serr_restricted_xml(binary(), binary()) -> stream_error(). -serr_restricted_xml(Text, Lang) -> - serr('restricted-xml', Text, Lang). - --spec serr_see_other_host() -> stream_error(). -serr_see_other_host() -> - serr('see-other-host'). - --spec serr_see_other_host(binary(), binary()) -> stream_error(). -serr_see_other_host(Text, Lang) -> - serr('see-other-host', Text, Lang). - --spec serr_system_shutdown() -> stream_error(). -serr_system_shutdown() -> - serr('system-shutdown'). - --spec serr_system_shutdown(binary(), binary()) -> stream_error(). -serr_system_shutdown(Text, Lang) -> - serr('system-shutdown', Text, Lang). - --spec serr_undefined_condition() -> stream_error(). -serr_undefined_condition() -> - serr('undefined-condition'). - --spec serr_undefined_condition(binary(), binary()) -> stream_error(). -serr_undefined_condition(Text, Lang) -> - serr('undefined-condition', Text, Lang). - --spec serr_unsupported_encoding() -> stream_error(). -serr_unsupported_encoding() -> - serr('unsupported-encoding'). - --spec serr_unsupported_encoding(binary(), binary()) -> stream_error(). -serr_unsupported_encoding(Text, Lang) -> - serr('unsupported-encoding', Text, Lang). - --spec serr_unsupported_stanza_type() -> stream_error(). -serr_unsupported_stanza_type() -> - serr('unsupported-stanza-type'). - --spec serr_unsupported_stanza_type(binary(), binary()) -> stream_error(). -serr_unsupported_stanza_type(Text, Lang) -> - serr('unsupported-stanza-type', Text, Lang). - --spec serr_unsupported_version() -> stream_error(). -serr_unsupported_version() -> - serr('unsupported-version'). - --spec serr_unsupported_version(binary(), binary()) -> stream_error(). -serr_unsupported_version(Text, Lang) -> - serr('unsupported-version', Text, Lang). - -%%%=================================================================== -%%% Internal functions -%%%=================================================================== --spec err('auth' | 'cancel' | 'continue' | 'modify' | 'wait', - atom() | gone() | redirect(), non_neg_integer()) -> stanza_error(). -err(Type, Reason, Code) -> - #stanza_error{type = Type, reason = Reason, code = Code}. - --spec err('auth' | 'cancel' | 'continue' | 'modify' | 'wait', - atom() | gone() | redirect(), non_neg_integer(), - binary(), binary()) -> stanza_error(). -err(Type, Reason, Code, Text, Lang) -> - #stanza_error{type = Type, reason = Reason, code = Code, - text = #text{lang = Lang, - data = translate:translate(Lang, Text)}}. - --spec serr(atom() | 'see-other-host'()) -> stream_error(). -serr(Reason) -> - #stream_error{reason = Reason}. - --spec serr(atom() | 'see-other-host'(), binary(), - binary()) -> stream_error(). -serr(Reason, Text, Lang) -> - #stream_error{reason = Reason, - text = #text{lang = Lang, - data = translate:translate(Lang, Text)}}. - --spec match_tag(xmlel() | xmpp_element(), binary(), binary()) -> boolean(). -match_tag(El, TagName, XMLNS) -> - get_name(El) == TagName andalso get_ns(El) == XMLNS. diff --git a/src/xmpp_codec.erl b/src/xmpp_codec.erl deleted file mode 100644 index 6089f79fc..000000000 --- a/src/xmpp_codec.erl +++ /dev/null @@ -1,34647 +0,0 @@ -%% Created automatically by XML generator (fxml_gen.erl) -%% Source: xmpp_codec.spec - --module(xmpp_codec). - --compile({nowarn_unused_function, - [{dec_int, 3}, {dec_int, 1}, {dec_enum, 2}, - {enc_int, 1}, {get_attr, 2}, {enc_enum, 1}, - {choose_top_xmlns, 3}, {enc_xmlns_attrs, 2}]}). - --export([pp/1, format_error/1, decode/1, decode/2, - decode/3, is_known_tag/2, encode/1, encode/2, - get_name/1, get_ns/1]). - -decode(_el) -> decode(_el, <<>>, []). - -decode(_el, Opts) -> decode(_el, <<>>, Opts). - -decode({xmlel, _name, _attrs, _} = _el, TopXMLNS, - Opts) -> - IgnoreEls = proplists:get_bool(ignore_els, Opts), - case {_name, get_attr(<<"xmlns">>, _attrs), TopXMLNS} of - {<<"query">>, <<"urn:xmpp:delegation:1">>, _} -> - decode_delegation_query(<<"urn:xmpp:delegation:1">>, - IgnoreEls, _el); - {<<"query">>, <<>>, <<"urn:xmpp:delegation:1">>} -> - decode_delegation_query(<<"urn:xmpp:delegation:1">>, - IgnoreEls, _el); - {<<"delegate">>, <<"urn:xmpp:delegation:1">>, _} -> - decode_delegate(<<"urn:xmpp:delegation:1">>, IgnoreEls, - _el); - {<<"delegate">>, <<>>, <<"urn:xmpp:delegation:1">>} -> - decode_delegate(<<"urn:xmpp:delegation:1">>, IgnoreEls, - _el); - {<<"delegation">>, <<"urn:xmpp:delegation:1">>, _} -> - decode_delegation(<<"urn:xmpp:delegation:1">>, - IgnoreEls, _el); - {<<"delegation">>, <<>>, <<"urn:xmpp:delegation:1">>} -> - decode_delegation(<<"urn:xmpp:delegation:1">>, - IgnoreEls, _el); - {<<"delegated">>, <<"urn:xmpp:delegation:1">>, _} -> - decode_delegated(<<"urn:xmpp:delegation:1">>, IgnoreEls, - _el); - {<<"delegated">>, <<>>, <<"urn:xmpp:delegation:1">>} -> - decode_delegated(<<"urn:xmpp:delegation:1">>, IgnoreEls, - _el); - {<<"attribute">>, <<"urn:xmpp:delegation:1">>, _} -> - decode_delegated_attribute(<<"urn:xmpp:delegation:1">>, - IgnoreEls, _el); - {<<"attribute">>, <<>>, <<"urn:xmpp:delegation:1">>} -> - decode_delegated_attribute(<<"urn:xmpp:delegation:1">>, - IgnoreEls, _el); - {<<"privilege">>, <<"urn:xmpp:privilege:1">>, _} -> - decode_privilege(<<"urn:xmpp:privilege:1">>, IgnoreEls, - _el); - {<<"privilege">>, <<>>, <<"urn:xmpp:privilege:1">>} -> - decode_privilege(<<"urn:xmpp:privilege:1">>, IgnoreEls, - _el); - {<<"perm">>, <<"urn:xmpp:privilege:1">>, _} -> - decode_privilege_perm(<<"urn:xmpp:privilege:1">>, - IgnoreEls, _el); - {<<"perm">>, <<>>, <<"urn:xmpp:privilege:1">>} -> - decode_privilege_perm(<<"urn:xmpp:privilege:1">>, - IgnoreEls, _el); - {<<"thumbnail">>, <<"urn:xmpp:thumbs:1">>, _} -> - decode_thumbnail(<<"urn:xmpp:thumbs:1">>, IgnoreEls, - _el); - {<<"thumbnail">>, <<>>, <<"urn:xmpp:thumbs:1">>} -> - decode_thumbnail(<<"urn:xmpp:thumbs:1">>, IgnoreEls, - _el); - {<<"slot">>, <<"urn:xmpp:http:upload">>, _} -> - decode_upload_slot(<<"urn:xmpp:http:upload">>, - IgnoreEls, _el); - {<<"slot">>, <<>>, <<"urn:xmpp:http:upload">>} -> - decode_upload_slot(<<"urn:xmpp:http:upload">>, - IgnoreEls, _el); - {<<"slot">>, <<"eu:siacs:conversations:http:upload">>, - _} -> - decode_upload_slot(<<"eu:siacs:conversations:http:upload">>, - IgnoreEls, _el); - {<<"slot">>, <<>>, - <<"eu:siacs:conversations:http:upload">>} -> - decode_upload_slot(<<"eu:siacs:conversations:http:upload">>, - IgnoreEls, _el); - {<<"put">>, <<"urn:xmpp:http:upload">>, _} -> - decode_upload_put(<<"urn:xmpp:http:upload">>, IgnoreEls, - _el); - {<<"put">>, <<>>, <<"urn:xmpp:http:upload">>} -> - decode_upload_put(<<"urn:xmpp:http:upload">>, IgnoreEls, - _el); - {<<"put">>, <<"eu:siacs:conversations:http:upload">>, - _} -> - decode_upload_put(<<"eu:siacs:conversations:http:upload">>, - IgnoreEls, _el); - {<<"put">>, <<>>, - <<"eu:siacs:conversations:http:upload">>} -> - decode_upload_put(<<"eu:siacs:conversations:http:upload">>, - IgnoreEls, _el); - {<<"get">>, <<"urn:xmpp:http:upload">>, _} -> - decode_upload_get(<<"urn:xmpp:http:upload">>, IgnoreEls, - _el); - {<<"get">>, <<>>, <<"urn:xmpp:http:upload">>} -> - decode_upload_get(<<"urn:xmpp:http:upload">>, IgnoreEls, - _el); - {<<"get">>, <<"eu:siacs:conversations:http:upload">>, - _} -> - decode_upload_get(<<"eu:siacs:conversations:http:upload">>, - IgnoreEls, _el); - {<<"get">>, <<>>, - <<"eu:siacs:conversations:http:upload">>} -> - decode_upload_get(<<"eu:siacs:conversations:http:upload">>, - IgnoreEls, _el); - {<<"request">>, <<"urn:xmpp:http:upload">>, _} -> - decode_upload_request(<<"urn:xmpp:http:upload">>, - IgnoreEls, _el); - {<<"request">>, <<>>, <<"urn:xmpp:http:upload">>} -> - decode_upload_request(<<"urn:xmpp:http:upload">>, - IgnoreEls, _el); - {<<"request">>, - <<"eu:siacs:conversations:http:upload">>, _} -> - decode_upload_request(<<"eu:siacs:conversations:http:upload">>, - IgnoreEls, _el); - {<<"request">>, <<>>, - <<"eu:siacs:conversations:http:upload">>} -> - decode_upload_request(<<"eu:siacs:conversations:http:upload">>, - IgnoreEls, _el); - {<<"content-type">>, <<"urn:xmpp:http:upload">>, _} -> - decode_upload_content_type(<<"urn:xmpp:http:upload">>, - IgnoreEls, _el); - {<<"content-type">>, <<>>, - <<"urn:xmpp:http:upload">>} -> - decode_upload_content_type(<<"urn:xmpp:http:upload">>, - IgnoreEls, _el); - {<<"content-type">>, - <<"eu:siacs:conversations:http:upload">>, _} -> - decode_upload_content_type(<<"eu:siacs:conversations:http:upload">>, - IgnoreEls, _el); - {<<"content-type">>, <<>>, - <<"eu:siacs:conversations:http:upload">>} -> - decode_upload_content_type(<<"eu:siacs:conversations:http:upload">>, - IgnoreEls, _el); - {<<"size">>, <<"urn:xmpp:http:upload">>, _} -> - decode_upload_size(<<"urn:xmpp:http:upload">>, - IgnoreEls, _el); - {<<"size">>, <<>>, <<"urn:xmpp:http:upload">>} -> - decode_upload_size(<<"urn:xmpp:http:upload">>, - IgnoreEls, _el); - {<<"size">>, <<"eu:siacs:conversations:http:upload">>, - _} -> - decode_upload_size(<<"eu:siacs:conversations:http:upload">>, - IgnoreEls, _el); - {<<"size">>, <<>>, - <<"eu:siacs:conversations:http:upload">>} -> - decode_upload_size(<<"eu:siacs:conversations:http:upload">>, - IgnoreEls, _el); - {<<"filename">>, <<"urn:xmpp:http:upload">>, _} -> - decode_upload_filename(<<"urn:xmpp:http:upload">>, - IgnoreEls, _el); - {<<"filename">>, <<>>, <<"urn:xmpp:http:upload">>} -> - decode_upload_filename(<<"urn:xmpp:http:upload">>, - IgnoreEls, _el); - {<<"filename">>, - <<"eu:siacs:conversations:http:upload">>, _} -> - decode_upload_filename(<<"eu:siacs:conversations:http:upload">>, - IgnoreEls, _el); - {<<"filename">>, <<>>, - <<"eu:siacs:conversations:http:upload">>} -> - decode_upload_filename(<<"eu:siacs:conversations:http:upload">>, - IgnoreEls, _el); - {<<"address">>, <<"urn:xmpp:sic:0">>, _} -> - decode_sic(<<"urn:xmpp:sic:0">>, IgnoreEls, _el); - {<<"address">>, <<>>, <<"urn:xmpp:sic:0">>} -> - decode_sic(<<"urn:xmpp:sic:0">>, IgnoreEls, _el); - {<<"address">>, <<"urn:xmpp:sic:1">>, _} -> - decode_sic(<<"urn:xmpp:sic:1">>, IgnoreEls, _el); - {<<"address">>, <<>>, <<"urn:xmpp:sic:1">>} -> - decode_sic(<<"urn:xmpp:sic:1">>, IgnoreEls, _el); - {<<"port">>, <<"urn:xmpp:sic:1">>, _} -> - decode_sip_port(<<"urn:xmpp:sic:1">>, IgnoreEls, _el); - {<<"port">>, <<>>, <<"urn:xmpp:sic:1">>} -> - decode_sip_port(<<"urn:xmpp:sic:1">>, IgnoreEls, _el); - {<<"ip">>, <<"urn:xmpp:sic:0">>, _} -> - decode_sic_ip(<<"urn:xmpp:sic:0">>, IgnoreEls, _el); - {<<"ip">>, <<>>, <<"urn:xmpp:sic:0">>} -> - decode_sic_ip(<<"urn:xmpp:sic:0">>, IgnoreEls, _el); - {<<"ip">>, <<"urn:xmpp:sic:1">>, _} -> - decode_sic_ip(<<"urn:xmpp:sic:1">>, IgnoreEls, _el); - {<<"ip">>, <<>>, <<"urn:xmpp:sic:1">>} -> - decode_sic_ip(<<"urn:xmpp:sic:1">>, IgnoreEls, _el); - {<<"x">>, <<"jabber:x:oob">>, _} -> - decode_oob_x(<<"jabber:x:oob">>, IgnoreEls, _el); - {<<"x">>, <<>>, <<"jabber:x:oob">>} -> - decode_oob_x(<<"jabber:x:oob">>, IgnoreEls, _el); - {<<"desc">>, <<"jabber:x:oob">>, _} -> - decode_oob_desc(<<"jabber:x:oob">>, IgnoreEls, _el); - {<<"desc">>, <<>>, <<"jabber:x:oob">>} -> - decode_oob_desc(<<"jabber:x:oob">>, IgnoreEls, _el); - {<<"url">>, <<"jabber:x:oob">>, _} -> - decode_oob_url(<<"jabber:x:oob">>, IgnoreEls, _el); - {<<"url">>, <<>>, <<"jabber:x:oob">>} -> - decode_oob_url(<<"jabber:x:oob">>, IgnoreEls, _el); - {<<"media">>, <<"urn:xmpp:media-element">>, _} -> - decode_media(<<"urn:xmpp:media-element">>, IgnoreEls, - _el); - {<<"media">>, <<>>, <<"urn:xmpp:media-element">>} -> - decode_media(<<"urn:xmpp:media-element">>, IgnoreEls, - _el); - {<<"uri">>, <<"urn:xmpp:media-element">>, _} -> - decode_media_uri(<<"urn:xmpp:media-element">>, - IgnoreEls, _el); - {<<"uri">>, <<>>, <<"urn:xmpp:media-element">>} -> - decode_media_uri(<<"urn:xmpp:media-element">>, - IgnoreEls, _el); - {<<"captcha">>, <<"urn:xmpp:captcha">>, _} -> - decode_captcha(<<"urn:xmpp:captcha">>, IgnoreEls, _el); - {<<"captcha">>, <<>>, <<"urn:xmpp:captcha">>} -> - decode_captcha(<<"urn:xmpp:captcha">>, IgnoreEls, _el); - {<<"data">>, <<"urn:xmpp:bob">>, _} -> - decode_bob_data(<<"urn:xmpp:bob">>, IgnoreEls, _el); - {<<"data">>, <<>>, <<"urn:xmpp:bob">>} -> - decode_bob_data(<<"urn:xmpp:bob">>, IgnoreEls, _el); - {<<"stream:stream">>, <<"jabber:client">>, _} -> - decode_stream_start(<<"jabber:client">>, IgnoreEls, - _el); - {<<"stream:stream">>, <<>>, <<"jabber:client">>} -> - decode_stream_start(<<"jabber:client">>, IgnoreEls, - _el); - {<<"stream:stream">>, <<"jabber:server">>, _} -> - decode_stream_start(<<"jabber:server">>, IgnoreEls, - _el); - {<<"stream:stream">>, <<>>, <<"jabber:server">>} -> - decode_stream_start(<<"jabber:server">>, IgnoreEls, - _el); - {<<"stream:stream">>, <<"jabber:component:accept">>, - _} -> - decode_stream_start(<<"jabber:component:accept">>, - IgnoreEls, _el); - {<<"stream:stream">>, <<>>, - <<"jabber:component:accept">>} -> - decode_stream_start(<<"jabber:component:accept">>, - IgnoreEls, _el); - {<<"handshake">>, <<"jabber:component:accept">>, _} -> - decode_handshake(<<"jabber:component:accept">>, - IgnoreEls, _el); - {<<"handshake">>, <<>>, - <<"jabber:component:accept">>} -> - decode_handshake(<<"jabber:component:accept">>, - IgnoreEls, _el); - {<<"db:verify">>, <<"jabber:server">>, _} -> - decode_db_verify(<<"jabber:server">>, IgnoreEls, _el); - {<<"db:verify">>, <<>>, <<"jabber:server">>} -> - decode_db_verify(<<"jabber:server">>, IgnoreEls, _el); - {<<"db:result">>, <<"jabber:server">>, _} -> - decode_db_result(<<"jabber:server">>, IgnoreEls, _el); - {<<"db:result">>, <<>>, <<"jabber:server">>} -> - decode_db_result(<<"jabber:server">>, IgnoreEls, _el); - {<<"command">>, - <<"http://jabber.org/protocol/commands">>, _} -> - decode_adhoc_command(<<"http://jabber.org/protocol/commands">>, - IgnoreEls, _el); - {<<"command">>, <<>>, - <<"http://jabber.org/protocol/commands">>} -> - decode_adhoc_command(<<"http://jabber.org/protocol/commands">>, - IgnoreEls, _el); - {<<"note">>, <<"http://jabber.org/protocol/commands">>, - _} -> - decode_adhoc_command_notes(<<"http://jabber.org/protocol/commands">>, - IgnoreEls, _el); - {<<"note">>, <<>>, - <<"http://jabber.org/protocol/commands">>} -> - decode_adhoc_command_notes(<<"http://jabber.org/protocol/commands">>, - IgnoreEls, _el); - {<<"actions">>, - <<"http://jabber.org/protocol/commands">>, _} -> - decode_adhoc_command_actions(<<"http://jabber.org/protocol/commands">>, - IgnoreEls, _el); - {<<"actions">>, <<>>, - <<"http://jabber.org/protocol/commands">>} -> - decode_adhoc_command_actions(<<"http://jabber.org/protocol/commands">>, - IgnoreEls, _el); - {<<"complete">>, - <<"http://jabber.org/protocol/commands">>, _} -> - decode_adhoc_command_complete(<<"http://jabber.org/protocol/commands">>, - IgnoreEls, _el); - {<<"complete">>, <<>>, - <<"http://jabber.org/protocol/commands">>} -> - decode_adhoc_command_complete(<<"http://jabber.org/protocol/commands">>, - IgnoreEls, _el); - {<<"next">>, <<"http://jabber.org/protocol/commands">>, - _} -> - decode_adhoc_command_next(<<"http://jabber.org/protocol/commands">>, - IgnoreEls, _el); - {<<"next">>, <<>>, - <<"http://jabber.org/protocol/commands">>} -> - decode_adhoc_command_next(<<"http://jabber.org/protocol/commands">>, - IgnoreEls, _el); - {<<"prev">>, <<"http://jabber.org/protocol/commands">>, - _} -> - decode_adhoc_command_prev(<<"http://jabber.org/protocol/commands">>, - IgnoreEls, _el); - {<<"prev">>, <<>>, - <<"http://jabber.org/protocol/commands">>} -> - decode_adhoc_command_prev(<<"http://jabber.org/protocol/commands">>, - IgnoreEls, _el); - {<<"client-id">>, <<"urn:xmpp:sid:0">>, _} -> - decode_client_id(<<"urn:xmpp:sid:0">>, IgnoreEls, _el); - {<<"client-id">>, <<>>, <<"urn:xmpp:sid:0">>} -> - decode_client_id(<<"urn:xmpp:sid:0">>, IgnoreEls, _el); - {<<"stanza-id">>, <<"urn:xmpp:sid:0">>, _} -> - decode_stanza_id(<<"urn:xmpp:sid:0">>, IgnoreEls, _el); - {<<"stanza-id">>, <<>>, <<"urn:xmpp:sid:0">>} -> - decode_stanza_id(<<"urn:xmpp:sid:0">>, IgnoreEls, _el); - {<<"addresses">>, - <<"http://jabber.org/protocol/address">>, _} -> - decode_addresses(<<"http://jabber.org/protocol/address">>, - IgnoreEls, _el); - {<<"addresses">>, <<>>, - <<"http://jabber.org/protocol/address">>} -> - decode_addresses(<<"http://jabber.org/protocol/address">>, - IgnoreEls, _el); - {<<"address">>, - <<"http://jabber.org/protocol/address">>, _} -> - decode_address(<<"http://jabber.org/protocol/address">>, - IgnoreEls, _el); - {<<"address">>, <<>>, - <<"http://jabber.org/protocol/address">>} -> - decode_address(<<"http://jabber.org/protocol/address">>, - IgnoreEls, _el); - {<<"nick">>, <<"http://jabber.org/protocol/nick">>, - _} -> - decode_nick(<<"http://jabber.org/protocol/nick">>, - IgnoreEls, _el); - {<<"nick">>, <<>>, - <<"http://jabber.org/protocol/nick">>} -> - decode_nick(<<"http://jabber.org/protocol/nick">>, - IgnoreEls, _el); - {<<"x">>, <<"jabber:x:expire">>, _} -> - decode_expire(<<"jabber:x:expire">>, IgnoreEls, _el); - {<<"x">>, <<>>, <<"jabber:x:expire">>} -> - decode_expire(<<"jabber:x:expire">>, IgnoreEls, _el); - {<<"x">>, <<"jabber:x:event">>, _} -> - decode_xevent(<<"jabber:x:event">>, IgnoreEls, _el); - {<<"x">>, <<>>, <<"jabber:x:event">>} -> - decode_xevent(<<"jabber:x:event">>, IgnoreEls, _el); - {<<"id">>, <<"jabber:x:event">>, _} -> - decode_xevent_id(<<"jabber:x:event">>, IgnoreEls, _el); - {<<"id">>, <<>>, <<"jabber:x:event">>} -> - decode_xevent_id(<<"jabber:x:event">>, IgnoreEls, _el); - {<<"composing">>, <<"jabber:x:event">>, _} -> - decode_xevent_composing(<<"jabber:x:event">>, IgnoreEls, - _el); - {<<"composing">>, <<>>, <<"jabber:x:event">>} -> - decode_xevent_composing(<<"jabber:x:event">>, IgnoreEls, - _el); - {<<"displayed">>, <<"jabber:x:event">>, _} -> - decode_xevent_displayed(<<"jabber:x:event">>, IgnoreEls, - _el); - {<<"displayed">>, <<>>, <<"jabber:x:event">>} -> - decode_xevent_displayed(<<"jabber:x:event">>, IgnoreEls, - _el); - {<<"delivered">>, <<"jabber:x:event">>, _} -> - decode_xevent_delivered(<<"jabber:x:event">>, IgnoreEls, - _el); - {<<"delivered">>, <<>>, <<"jabber:x:event">>} -> - decode_xevent_delivered(<<"jabber:x:event">>, IgnoreEls, - _el); - {<<"offline">>, <<"jabber:x:event">>, _} -> - decode_xevent_offline(<<"jabber:x:event">>, IgnoreEls, - _el); - {<<"offline">>, <<>>, <<"jabber:x:event">>} -> - decode_xevent_offline(<<"jabber:x:event">>, IgnoreEls, - _el); - {<<"query">>, <<"jabber:iq:search">>, _} -> - decode_search(<<"jabber:iq:search">>, IgnoreEls, _el); - {<<"query">>, <<>>, <<"jabber:iq:search">>} -> - decode_search(<<"jabber:iq:search">>, IgnoreEls, _el); - {<<"item">>, <<"jabber:iq:search">>, _} -> - decode_search_item(<<"jabber:iq:search">>, IgnoreEls, - _el); - {<<"item">>, <<>>, <<"jabber:iq:search">>} -> - decode_search_item(<<"jabber:iq:search">>, IgnoreEls, - _el); - {<<"email">>, <<"jabber:iq:search">>, _} -> - decode_search_email(<<"jabber:iq:search">>, IgnoreEls, - _el); - {<<"email">>, <<>>, <<"jabber:iq:search">>} -> - decode_search_email(<<"jabber:iq:search">>, IgnoreEls, - _el); - {<<"nick">>, <<"jabber:iq:search">>, _} -> - decode_search_nick(<<"jabber:iq:search">>, IgnoreEls, - _el); - {<<"nick">>, <<>>, <<"jabber:iq:search">>} -> - decode_search_nick(<<"jabber:iq:search">>, IgnoreEls, - _el); - {<<"last">>, <<"jabber:iq:search">>, _} -> - decode_search_last(<<"jabber:iq:search">>, IgnoreEls, - _el); - {<<"last">>, <<>>, <<"jabber:iq:search">>} -> - decode_search_last(<<"jabber:iq:search">>, IgnoreEls, - _el); - {<<"first">>, <<"jabber:iq:search">>, _} -> - decode_search_first(<<"jabber:iq:search">>, IgnoreEls, - _el); - {<<"first">>, <<>>, <<"jabber:iq:search">>} -> - decode_search_first(<<"jabber:iq:search">>, IgnoreEls, - _el); - {<<"instructions">>, <<"jabber:iq:search">>, _} -> - decode_search_instructions(<<"jabber:iq:search">>, - IgnoreEls, _el); - {<<"instructions">>, <<>>, <<"jabber:iq:search">>} -> - decode_search_instructions(<<"jabber:iq:search">>, - IgnoreEls, _el); - {<<"no-permanent-storage">>, <<"urn:xmpp:hints">>, _} -> - decode_hint_no_permanent_storage(<<"urn:xmpp:hints">>, - IgnoreEls, _el); - {<<"no-permanent-storage">>, <<>>, - <<"urn:xmpp:hints">>} -> - decode_hint_no_permanent_storage(<<"urn:xmpp:hints">>, - IgnoreEls, _el); - {<<"no-permanent-store">>, <<"urn:xmpp:hints">>, _} -> - decode_hint_no_permanent_store(<<"urn:xmpp:hints">>, - IgnoreEls, _el); - {<<"no-permanent-store">>, <<>>, - <<"urn:xmpp:hints">>} -> - decode_hint_no_permanent_store(<<"urn:xmpp:hints">>, - IgnoreEls, _el); - {<<"store">>, <<"urn:xmpp:hints">>, _} -> - decode_hint_store(<<"urn:xmpp:hints">>, IgnoreEls, _el); - {<<"store">>, <<>>, <<"urn:xmpp:hints">>} -> - decode_hint_store(<<"urn:xmpp:hints">>, IgnoreEls, _el); - {<<"no-storage">>, <<"urn:xmpp:hints">>, _} -> - decode_hint_no_storage(<<"urn:xmpp:hints">>, IgnoreEls, - _el); - {<<"no-storage">>, <<>>, <<"urn:xmpp:hints">>} -> - decode_hint_no_storage(<<"urn:xmpp:hints">>, IgnoreEls, - _el); - {<<"no-store">>, <<"urn:xmpp:hints">>, _} -> - decode_hint_no_store(<<"urn:xmpp:hints">>, IgnoreEls, - _el); - {<<"no-store">>, <<>>, <<"urn:xmpp:hints">>} -> - decode_hint_no_store(<<"urn:xmpp:hints">>, IgnoreEls, - _el); - {<<"no-copy">>, <<"urn:xmpp:hints">>, _} -> - decode_hint_no_copy(<<"urn:xmpp:hints">>, IgnoreEls, - _el); - {<<"no-copy">>, <<>>, <<"urn:xmpp:hints">>} -> - decode_hint_no_copy(<<"urn:xmpp:hints">>, IgnoreEls, - _el); - {<<"participant">>, <<"urn:xmpp:mix:0">>, _} -> - decode_mix_participant(<<"urn:xmpp:mix:0">>, IgnoreEls, - _el); - {<<"participant">>, <<>>, <<"urn:xmpp:mix:0">>} -> - decode_mix_participant(<<"urn:xmpp:mix:0">>, IgnoreEls, - _el); - {<<"leave">>, <<"urn:xmpp:mix:0">>, _} -> - decode_mix_leave(<<"urn:xmpp:mix:0">>, IgnoreEls, _el); - {<<"leave">>, <<>>, <<"urn:xmpp:mix:0">>} -> - decode_mix_leave(<<"urn:xmpp:mix:0">>, IgnoreEls, _el); - {<<"join">>, <<"urn:xmpp:mix:0">>, _} -> - decode_mix_join(<<"urn:xmpp:mix:0">>, IgnoreEls, _el); - {<<"join">>, <<>>, <<"urn:xmpp:mix:0">>} -> - decode_mix_join(<<"urn:xmpp:mix:0">>, IgnoreEls, _el); - {<<"subscribe">>, <<"urn:xmpp:mix:0">>, _} -> - decode_mix_subscribe(<<"urn:xmpp:mix:0">>, IgnoreEls, - _el); - {<<"subscribe">>, <<>>, <<"urn:xmpp:mix:0">>} -> - decode_mix_subscribe(<<"urn:xmpp:mix:0">>, IgnoreEls, - _el); - {<<"offline">>, - <<"http://jabber.org/protocol/offline">>, _} -> - decode_offline(<<"http://jabber.org/protocol/offline">>, - IgnoreEls, _el); - {<<"offline">>, <<>>, - <<"http://jabber.org/protocol/offline">>} -> - decode_offline(<<"http://jabber.org/protocol/offline">>, - IgnoreEls, _el); - {<<"item">>, <<"http://jabber.org/protocol/offline">>, - _} -> - decode_offline_item(<<"http://jabber.org/protocol/offline">>, - IgnoreEls, _el); - {<<"item">>, <<>>, - <<"http://jabber.org/protocol/offline">>} -> - decode_offline_item(<<"http://jabber.org/protocol/offline">>, - IgnoreEls, _el); - {<<"fetch">>, <<"http://jabber.org/protocol/offline">>, - _} -> - decode_offline_fetch(<<"http://jabber.org/protocol/offline">>, - IgnoreEls, _el); - {<<"fetch">>, <<>>, - <<"http://jabber.org/protocol/offline">>} -> - decode_offline_fetch(<<"http://jabber.org/protocol/offline">>, - IgnoreEls, _el); - {<<"purge">>, <<"http://jabber.org/protocol/offline">>, - _} -> - decode_offline_purge(<<"http://jabber.org/protocol/offline">>, - IgnoreEls, _el); - {<<"purge">>, <<>>, - <<"http://jabber.org/protocol/offline">>} -> - decode_offline_purge(<<"http://jabber.org/protocol/offline">>, - IgnoreEls, _el); - {<<"failed">>, <<"urn:xmpp:sm:2">>, _} -> - decode_sm_failed(<<"urn:xmpp:sm:2">>, IgnoreEls, _el); - {<<"failed">>, <<>>, <<"urn:xmpp:sm:2">>} -> - decode_sm_failed(<<"urn:xmpp:sm:2">>, IgnoreEls, _el); - {<<"failed">>, <<"urn:xmpp:sm:3">>, _} -> - decode_sm_failed(<<"urn:xmpp:sm:3">>, IgnoreEls, _el); - {<<"failed">>, <<>>, <<"urn:xmpp:sm:3">>} -> - decode_sm_failed(<<"urn:xmpp:sm:3">>, IgnoreEls, _el); - {<<"a">>, <<"urn:xmpp:sm:2">>, _} -> - decode_sm_a(<<"urn:xmpp:sm:2">>, IgnoreEls, _el); - {<<"a">>, <<>>, <<"urn:xmpp:sm:2">>} -> - decode_sm_a(<<"urn:xmpp:sm:2">>, IgnoreEls, _el); - {<<"a">>, <<"urn:xmpp:sm:3">>, _} -> - decode_sm_a(<<"urn:xmpp:sm:3">>, IgnoreEls, _el); - {<<"a">>, <<>>, <<"urn:xmpp:sm:3">>} -> - decode_sm_a(<<"urn:xmpp:sm:3">>, IgnoreEls, _el); - {<<"r">>, <<"urn:xmpp:sm:2">>, _} -> - decode_sm_r(<<"urn:xmpp:sm:2">>, IgnoreEls, _el); - {<<"r">>, <<>>, <<"urn:xmpp:sm:2">>} -> - decode_sm_r(<<"urn:xmpp:sm:2">>, IgnoreEls, _el); - {<<"r">>, <<"urn:xmpp:sm:3">>, _} -> - decode_sm_r(<<"urn:xmpp:sm:3">>, IgnoreEls, _el); - {<<"r">>, <<>>, <<"urn:xmpp:sm:3">>} -> - decode_sm_r(<<"urn:xmpp:sm:3">>, IgnoreEls, _el); - {<<"resumed">>, <<"urn:xmpp:sm:2">>, _} -> - decode_sm_resumed(<<"urn:xmpp:sm:2">>, IgnoreEls, _el); - {<<"resumed">>, <<>>, <<"urn:xmpp:sm:2">>} -> - decode_sm_resumed(<<"urn:xmpp:sm:2">>, IgnoreEls, _el); - {<<"resumed">>, <<"urn:xmpp:sm:3">>, _} -> - decode_sm_resumed(<<"urn:xmpp:sm:3">>, IgnoreEls, _el); - {<<"resumed">>, <<>>, <<"urn:xmpp:sm:3">>} -> - decode_sm_resumed(<<"urn:xmpp:sm:3">>, IgnoreEls, _el); - {<<"resume">>, <<"urn:xmpp:sm:2">>, _} -> - decode_sm_resume(<<"urn:xmpp:sm:2">>, IgnoreEls, _el); - {<<"resume">>, <<>>, <<"urn:xmpp:sm:2">>} -> - decode_sm_resume(<<"urn:xmpp:sm:2">>, IgnoreEls, _el); - {<<"resume">>, <<"urn:xmpp:sm:3">>, _} -> - decode_sm_resume(<<"urn:xmpp:sm:3">>, IgnoreEls, _el); - {<<"resume">>, <<>>, <<"urn:xmpp:sm:3">>} -> - decode_sm_resume(<<"urn:xmpp:sm:3">>, IgnoreEls, _el); - {<<"enabled">>, <<"urn:xmpp:sm:2">>, _} -> - decode_sm_enabled(<<"urn:xmpp:sm:2">>, IgnoreEls, _el); - {<<"enabled">>, <<>>, <<"urn:xmpp:sm:2">>} -> - decode_sm_enabled(<<"urn:xmpp:sm:2">>, IgnoreEls, _el); - {<<"enabled">>, <<"urn:xmpp:sm:3">>, _} -> - decode_sm_enabled(<<"urn:xmpp:sm:3">>, IgnoreEls, _el); - {<<"enabled">>, <<>>, <<"urn:xmpp:sm:3">>} -> - decode_sm_enabled(<<"urn:xmpp:sm:3">>, IgnoreEls, _el); - {<<"enable">>, <<"urn:xmpp:sm:2">>, _} -> - decode_sm_enable(<<"urn:xmpp:sm:2">>, IgnoreEls, _el); - {<<"enable">>, <<>>, <<"urn:xmpp:sm:2">>} -> - decode_sm_enable(<<"urn:xmpp:sm:2">>, IgnoreEls, _el); - {<<"enable">>, <<"urn:xmpp:sm:3">>, _} -> - decode_sm_enable(<<"urn:xmpp:sm:3">>, IgnoreEls, _el); - {<<"enable">>, <<>>, <<"urn:xmpp:sm:3">>} -> - decode_sm_enable(<<"urn:xmpp:sm:3">>, IgnoreEls, _el); - {<<"sm">>, <<"urn:xmpp:sm:2">>, _} -> - decode_feature_sm(<<"urn:xmpp:sm:2">>, IgnoreEls, _el); - {<<"sm">>, <<>>, <<"urn:xmpp:sm:2">>} -> - decode_feature_sm(<<"urn:xmpp:sm:2">>, IgnoreEls, _el); - {<<"sm">>, <<"urn:xmpp:sm:3">>, _} -> - decode_feature_sm(<<"urn:xmpp:sm:3">>, IgnoreEls, _el); - {<<"sm">>, <<>>, <<"urn:xmpp:sm:3">>} -> - decode_feature_sm(<<"urn:xmpp:sm:3">>, IgnoreEls, _el); - {<<"inactive">>, <<"urn:xmpp:csi:0">>, _} -> - decode_csi_inactive(<<"urn:xmpp:csi:0">>, IgnoreEls, - _el); - {<<"inactive">>, <<>>, <<"urn:xmpp:csi:0">>} -> - decode_csi_inactive(<<"urn:xmpp:csi:0">>, IgnoreEls, - _el); - {<<"active">>, <<"urn:xmpp:csi:0">>, _} -> - decode_csi_active(<<"urn:xmpp:csi:0">>, IgnoreEls, _el); - {<<"active">>, <<>>, <<"urn:xmpp:csi:0">>} -> - decode_csi_active(<<"urn:xmpp:csi:0">>, IgnoreEls, _el); - {<<"csi">>, <<"urn:xmpp:csi:0">>, _} -> - decode_feature_csi(<<"urn:xmpp:csi:0">>, IgnoreEls, - _el); - {<<"csi">>, <<>>, <<"urn:xmpp:csi:0">>} -> - decode_feature_csi(<<"urn:xmpp:csi:0">>, IgnoreEls, - _el); - {<<"sent">>, <<"urn:xmpp:carbons:2">>, _} -> - decode_carbons_sent(<<"urn:xmpp:carbons:2">>, IgnoreEls, - _el); - {<<"sent">>, <<>>, <<"urn:xmpp:carbons:2">>} -> - decode_carbons_sent(<<"urn:xmpp:carbons:2">>, IgnoreEls, - _el); - {<<"received">>, <<"urn:xmpp:carbons:2">>, _} -> - decode_carbons_received(<<"urn:xmpp:carbons:2">>, - IgnoreEls, _el); - {<<"received">>, <<>>, <<"urn:xmpp:carbons:2">>} -> - decode_carbons_received(<<"urn:xmpp:carbons:2">>, - IgnoreEls, _el); - {<<"private">>, <<"urn:xmpp:carbons:2">>, _} -> - decode_carbons_private(<<"urn:xmpp:carbons:2">>, - IgnoreEls, _el); - {<<"private">>, <<>>, <<"urn:xmpp:carbons:2">>} -> - decode_carbons_private(<<"urn:xmpp:carbons:2">>, - IgnoreEls, _el); - {<<"enable">>, <<"urn:xmpp:carbons:2">>, _} -> - decode_carbons_enable(<<"urn:xmpp:carbons:2">>, - IgnoreEls, _el); - {<<"enable">>, <<>>, <<"urn:xmpp:carbons:2">>} -> - decode_carbons_enable(<<"urn:xmpp:carbons:2">>, - IgnoreEls, _el); - {<<"disable">>, <<"urn:xmpp:carbons:2">>, _} -> - decode_carbons_disable(<<"urn:xmpp:carbons:2">>, - IgnoreEls, _el); - {<<"disable">>, <<>>, <<"urn:xmpp:carbons:2">>} -> - decode_carbons_disable(<<"urn:xmpp:carbons:2">>, - IgnoreEls, _el); - {<<"forwarded">>, <<"urn:xmpp:forward:0">>, _} -> - decode_forwarded(<<"urn:xmpp:forward:0">>, IgnoreEls, - _el); - {<<"forwarded">>, <<>>, <<"urn:xmpp:forward:0">>} -> - decode_forwarded(<<"urn:xmpp:forward:0">>, IgnoreEls, - _el); - {<<"fin">>, <<"urn:xmpp:mam:0">>, _} -> - decode_mam_fin(<<"urn:xmpp:mam:0">>, IgnoreEls, _el); - {<<"fin">>, <<>>, <<"urn:xmpp:mam:0">>} -> - decode_mam_fin(<<"urn:xmpp:mam:0">>, IgnoreEls, _el); - {<<"fin">>, <<"urn:xmpp:mam:1">>, _} -> - decode_mam_fin(<<"urn:xmpp:mam:1">>, IgnoreEls, _el); - {<<"fin">>, <<>>, <<"urn:xmpp:mam:1">>} -> - decode_mam_fin(<<"urn:xmpp:mam:1">>, IgnoreEls, _el); - {<<"prefs">>, <<"urn:xmpp:mam:0">>, _} -> - decode_mam_prefs(<<"urn:xmpp:mam:0">>, IgnoreEls, _el); - {<<"prefs">>, <<>>, <<"urn:xmpp:mam:0">>} -> - decode_mam_prefs(<<"urn:xmpp:mam:0">>, IgnoreEls, _el); - {<<"prefs">>, <<"urn:xmpp:mam:1">>, _} -> - decode_mam_prefs(<<"urn:xmpp:mam:1">>, IgnoreEls, _el); - {<<"prefs">>, <<>>, <<"urn:xmpp:mam:1">>} -> - decode_mam_prefs(<<"urn:xmpp:mam:1">>, IgnoreEls, _el); - {<<"prefs">>, <<"urn:xmpp:mam:tmp">>, _} -> - decode_mam_prefs(<<"urn:xmpp:mam:tmp">>, IgnoreEls, - _el); - {<<"prefs">>, <<>>, <<"urn:xmpp:mam:tmp">>} -> - decode_mam_prefs(<<"urn:xmpp:mam:tmp">>, IgnoreEls, - _el); - {<<"always">>, <<"urn:xmpp:mam:0">>, _} -> - decode_mam_always(<<"urn:xmpp:mam:0">>, IgnoreEls, _el); - {<<"always">>, <<>>, <<"urn:xmpp:mam:0">>} -> - decode_mam_always(<<"urn:xmpp:mam:0">>, IgnoreEls, _el); - {<<"always">>, <<"urn:xmpp:mam:1">>, _} -> - decode_mam_always(<<"urn:xmpp:mam:1">>, IgnoreEls, _el); - {<<"always">>, <<>>, <<"urn:xmpp:mam:1">>} -> - decode_mam_always(<<"urn:xmpp:mam:1">>, IgnoreEls, _el); - {<<"always">>, <<"urn:xmpp:mam:tmp">>, _} -> - decode_mam_always(<<"urn:xmpp:mam:tmp">>, IgnoreEls, - _el); - {<<"always">>, <<>>, <<"urn:xmpp:mam:tmp">>} -> - decode_mam_always(<<"urn:xmpp:mam:tmp">>, IgnoreEls, - _el); - {<<"never">>, <<"urn:xmpp:mam:0">>, _} -> - decode_mam_never(<<"urn:xmpp:mam:0">>, IgnoreEls, _el); - {<<"never">>, <<>>, <<"urn:xmpp:mam:0">>} -> - decode_mam_never(<<"urn:xmpp:mam:0">>, IgnoreEls, _el); - {<<"never">>, <<"urn:xmpp:mam:1">>, _} -> - decode_mam_never(<<"urn:xmpp:mam:1">>, IgnoreEls, _el); - {<<"never">>, <<>>, <<"urn:xmpp:mam:1">>} -> - decode_mam_never(<<"urn:xmpp:mam:1">>, IgnoreEls, _el); - {<<"never">>, <<"urn:xmpp:mam:tmp">>, _} -> - decode_mam_never(<<"urn:xmpp:mam:tmp">>, IgnoreEls, - _el); - {<<"never">>, <<>>, <<"urn:xmpp:mam:tmp">>} -> - decode_mam_never(<<"urn:xmpp:mam:tmp">>, IgnoreEls, - _el); - {<<"jid">>, <<"urn:xmpp:mam:0">>, _} -> - decode_mam_jid(<<"urn:xmpp:mam:0">>, IgnoreEls, _el); - {<<"jid">>, <<>>, <<"urn:xmpp:mam:0">>} -> - decode_mam_jid(<<"urn:xmpp:mam:0">>, IgnoreEls, _el); - {<<"jid">>, <<"urn:xmpp:mam:1">>, _} -> - decode_mam_jid(<<"urn:xmpp:mam:1">>, IgnoreEls, _el); - {<<"jid">>, <<>>, <<"urn:xmpp:mam:1">>} -> - decode_mam_jid(<<"urn:xmpp:mam:1">>, IgnoreEls, _el); - {<<"jid">>, <<"urn:xmpp:mam:tmp">>, _} -> - decode_mam_jid(<<"urn:xmpp:mam:tmp">>, IgnoreEls, _el); - {<<"jid">>, <<>>, <<"urn:xmpp:mam:tmp">>} -> - decode_mam_jid(<<"urn:xmpp:mam:tmp">>, IgnoreEls, _el); - {<<"result">>, <<"urn:xmpp:mam:0">>, _} -> - decode_mam_result(<<"urn:xmpp:mam:0">>, IgnoreEls, _el); - {<<"result">>, <<>>, <<"urn:xmpp:mam:0">>} -> - decode_mam_result(<<"urn:xmpp:mam:0">>, IgnoreEls, _el); - {<<"result">>, <<"urn:xmpp:mam:1">>, _} -> - decode_mam_result(<<"urn:xmpp:mam:1">>, IgnoreEls, _el); - {<<"result">>, <<>>, <<"urn:xmpp:mam:1">>} -> - decode_mam_result(<<"urn:xmpp:mam:1">>, IgnoreEls, _el); - {<<"result">>, <<"urn:xmpp:mam:tmp">>, _} -> - decode_mam_result(<<"urn:xmpp:mam:tmp">>, IgnoreEls, - _el); - {<<"result">>, <<>>, <<"urn:xmpp:mam:tmp">>} -> - decode_mam_result(<<"urn:xmpp:mam:tmp">>, IgnoreEls, - _el); - {<<"archived">>, <<"urn:xmpp:mam:tmp">>, _} -> - decode_mam_archived(<<"urn:xmpp:mam:tmp">>, IgnoreEls, - _el); - {<<"archived">>, <<>>, <<"urn:xmpp:mam:tmp">>} -> - decode_mam_archived(<<"urn:xmpp:mam:tmp">>, IgnoreEls, - _el); - {<<"query">>, <<"urn:xmpp:mam:0">>, _} -> - decode_mam_query(<<"urn:xmpp:mam:0">>, IgnoreEls, _el); - {<<"query">>, <<>>, <<"urn:xmpp:mam:0">>} -> - decode_mam_query(<<"urn:xmpp:mam:0">>, IgnoreEls, _el); - {<<"query">>, <<"urn:xmpp:mam:1">>, _} -> - decode_mam_query(<<"urn:xmpp:mam:1">>, IgnoreEls, _el); - {<<"query">>, <<>>, <<"urn:xmpp:mam:1">>} -> - decode_mam_query(<<"urn:xmpp:mam:1">>, IgnoreEls, _el); - {<<"query">>, <<"urn:xmpp:mam:tmp">>, _} -> - decode_mam_query(<<"urn:xmpp:mam:tmp">>, IgnoreEls, - _el); - {<<"query">>, <<>>, <<"urn:xmpp:mam:tmp">>} -> - decode_mam_query(<<"urn:xmpp:mam:tmp">>, IgnoreEls, - _el); - {<<"withtext">>, <<"urn:xmpp:mam:tmp">>, _} -> - decode_mam_withtext(<<"urn:xmpp:mam:tmp">>, IgnoreEls, - _el); - {<<"withtext">>, <<>>, <<"urn:xmpp:mam:tmp">>} -> - decode_mam_withtext(<<"urn:xmpp:mam:tmp">>, IgnoreEls, - _el); - {<<"with">>, <<"urn:xmpp:mam:tmp">>, _} -> - decode_mam_with(<<"urn:xmpp:mam:tmp">>, IgnoreEls, _el); - {<<"with">>, <<>>, <<"urn:xmpp:mam:tmp">>} -> - decode_mam_with(<<"urn:xmpp:mam:tmp">>, IgnoreEls, _el); - {<<"end">>, <<"urn:xmpp:mam:tmp">>, _} -> - decode_mam_end(<<"urn:xmpp:mam:tmp">>, IgnoreEls, _el); - {<<"end">>, <<>>, <<"urn:xmpp:mam:tmp">>} -> - decode_mam_end(<<"urn:xmpp:mam:tmp">>, IgnoreEls, _el); - {<<"start">>, <<"urn:xmpp:mam:tmp">>, _} -> - decode_mam_start(<<"urn:xmpp:mam:tmp">>, IgnoreEls, - _el); - {<<"start">>, <<>>, <<"urn:xmpp:mam:tmp">>} -> - decode_mam_start(<<"urn:xmpp:mam:tmp">>, IgnoreEls, - _el); - {<<"set">>, <<"http://jabber.org/protocol/rsm">>, _} -> - decode_rsm_set(<<"http://jabber.org/protocol/rsm">>, - IgnoreEls, _el); - {<<"set">>, <<>>, - <<"http://jabber.org/protocol/rsm">>} -> - decode_rsm_set(<<"http://jabber.org/protocol/rsm">>, - IgnoreEls, _el); - {<<"first">>, <<"http://jabber.org/protocol/rsm">>, - _} -> - decode_rsm_first(<<"http://jabber.org/protocol/rsm">>, - IgnoreEls, _el); - {<<"first">>, <<>>, - <<"http://jabber.org/protocol/rsm">>} -> - decode_rsm_first(<<"http://jabber.org/protocol/rsm">>, - IgnoreEls, _el); - {<<"max">>, <<"http://jabber.org/protocol/rsm">>, _} -> - decode_rsm_max(<<"http://jabber.org/protocol/rsm">>, - IgnoreEls, _el); - {<<"max">>, <<>>, - <<"http://jabber.org/protocol/rsm">>} -> - decode_rsm_max(<<"http://jabber.org/protocol/rsm">>, - IgnoreEls, _el); - {<<"index">>, <<"http://jabber.org/protocol/rsm">>, - _} -> - decode_rsm_index(<<"http://jabber.org/protocol/rsm">>, - IgnoreEls, _el); - {<<"index">>, <<>>, - <<"http://jabber.org/protocol/rsm">>} -> - decode_rsm_index(<<"http://jabber.org/protocol/rsm">>, - IgnoreEls, _el); - {<<"count">>, <<"http://jabber.org/protocol/rsm">>, - _} -> - decode_rsm_count(<<"http://jabber.org/protocol/rsm">>, - IgnoreEls, _el); - {<<"count">>, <<>>, - <<"http://jabber.org/protocol/rsm">>} -> - decode_rsm_count(<<"http://jabber.org/protocol/rsm">>, - IgnoreEls, _el); - {<<"last">>, <<"http://jabber.org/protocol/rsm">>, _} -> - decode_rsm_last(<<"http://jabber.org/protocol/rsm">>, - IgnoreEls, _el); - {<<"last">>, <<>>, - <<"http://jabber.org/protocol/rsm">>} -> - decode_rsm_last(<<"http://jabber.org/protocol/rsm">>, - IgnoreEls, _el); - {<<"before">>, <<"http://jabber.org/protocol/rsm">>, - _} -> - decode_rsm_before(<<"http://jabber.org/protocol/rsm">>, - IgnoreEls, _el); - {<<"before">>, <<>>, - <<"http://jabber.org/protocol/rsm">>} -> - decode_rsm_before(<<"http://jabber.org/protocol/rsm">>, - IgnoreEls, _el); - {<<"after">>, <<"http://jabber.org/protocol/rsm">>, - _} -> - decode_rsm_after(<<"http://jabber.org/protocol/rsm">>, - IgnoreEls, _el); - {<<"after">>, <<>>, - <<"http://jabber.org/protocol/rsm">>} -> - decode_rsm_after(<<"http://jabber.org/protocol/rsm">>, - IgnoreEls, _el); - {<<"unsubscribe">>, <<"urn:xmpp:mucsub:0">>, _} -> - decode_muc_unsubscribe(<<"urn:xmpp:mucsub:0">>, - IgnoreEls, _el); - {<<"unsubscribe">>, <<>>, <<"urn:xmpp:mucsub:0">>} -> - decode_muc_unsubscribe(<<"urn:xmpp:mucsub:0">>, - IgnoreEls, _el); - {<<"subscribe">>, <<"urn:xmpp:mucsub:0">>, _} -> - decode_muc_subscribe(<<"urn:xmpp:mucsub:0">>, IgnoreEls, - _el); - {<<"subscribe">>, <<>>, <<"urn:xmpp:mucsub:0">>} -> - decode_muc_subscribe(<<"urn:xmpp:mucsub:0">>, IgnoreEls, - _el); - {<<"event">>, <<"urn:xmpp:mucsub:0">>, _} -> - decode_muc_subscribe_event(<<"urn:xmpp:mucsub:0">>, - IgnoreEls, _el); - {<<"event">>, <<>>, <<"urn:xmpp:mucsub:0">>} -> - decode_muc_subscribe_event(<<"urn:xmpp:mucsub:0">>, - IgnoreEls, _el); - {<<"subscriptions">>, <<"urn:xmpp:mucsub:0">>, _} -> - decode_muc_subscriptions(<<"urn:xmpp:mucsub:0">>, - IgnoreEls, _el); - {<<"subscriptions">>, <<>>, <<"urn:xmpp:mucsub:0">>} -> - decode_muc_subscriptions(<<"urn:xmpp:mucsub:0">>, - IgnoreEls, _el); - {<<"subscription">>, <<"urn:xmpp:mucsub:0">>, _} -> - decode_muc_subscription(<<"urn:xmpp:mucsub:0">>, - IgnoreEls, _el); - {<<"subscription">>, <<>>, <<"urn:xmpp:mucsub:0">>} -> - decode_muc_subscription(<<"urn:xmpp:mucsub:0">>, - IgnoreEls, _el); - {<<"x">>, <<"jabber:x:conference">>, _} -> - decode_x_conference(<<"jabber:x:conference">>, - IgnoreEls, _el); - {<<"x">>, <<>>, <<"jabber:x:conference">>} -> - decode_x_conference(<<"jabber:x:conference">>, - IgnoreEls, _el); - {<<"unique">>, - <<"http://jabber.org/protocol/muc#unique">>, _} -> - decode_muc_unique(<<"http://jabber.org/protocol/muc#unique">>, - IgnoreEls, _el); - {<<"unique">>, <<>>, - <<"http://jabber.org/protocol/muc#unique">>} -> - decode_muc_unique(<<"http://jabber.org/protocol/muc#unique">>, - IgnoreEls, _el); - {<<"x">>, <<"http://jabber.org/protocol/muc">>, _} -> - decode_muc(<<"http://jabber.org/protocol/muc">>, - IgnoreEls, _el); - {<<"x">>, <<>>, <<"http://jabber.org/protocol/muc">>} -> - decode_muc(<<"http://jabber.org/protocol/muc">>, - IgnoreEls, _el); - {<<"query">>, - <<"http://jabber.org/protocol/muc#admin">>, _} -> - decode_muc_admin(<<"http://jabber.org/protocol/muc#admin">>, - IgnoreEls, _el); - {<<"query">>, <<>>, - <<"http://jabber.org/protocol/muc#admin">>} -> - decode_muc_admin(<<"http://jabber.org/protocol/muc#admin">>, - IgnoreEls, _el); - {<<"continue">>, - <<"http://jabber.org/protocol/muc#admin">>, _} -> - decode_muc_admin_continue(<<"http://jabber.org/protocol/muc#admin">>, - IgnoreEls, _el); - {<<"continue">>, <<>>, - <<"http://jabber.org/protocol/muc#admin">>} -> - decode_muc_admin_continue(<<"http://jabber.org/protocol/muc#admin">>, - IgnoreEls, _el); - {<<"actor">>, - <<"http://jabber.org/protocol/muc#admin">>, _} -> - decode_muc_admin_actor(<<"http://jabber.org/protocol/muc#admin">>, - IgnoreEls, _el); - {<<"actor">>, <<>>, - <<"http://jabber.org/protocol/muc#admin">>} -> - decode_muc_admin_actor(<<"http://jabber.org/protocol/muc#admin">>, - IgnoreEls, _el); - {<<"item">>, <<"http://jabber.org/protocol/muc#admin">>, - _} -> - decode_muc_admin_item(<<"http://jabber.org/protocol/muc#admin">>, - IgnoreEls, _el); - {<<"item">>, <<>>, - <<"http://jabber.org/protocol/muc#admin">>} -> - decode_muc_admin_item(<<"http://jabber.org/protocol/muc#admin">>, - IgnoreEls, _el); - {<<"item">>, <<"http://jabber.org/protocol/muc#owner">>, - _} -> - decode_muc_owner_item(<<"http://jabber.org/protocol/muc#owner">>, - IgnoreEls, _el); - {<<"item">>, <<>>, - <<"http://jabber.org/protocol/muc#owner">>} -> - decode_muc_owner_item(<<"http://jabber.org/protocol/muc#owner">>, - IgnoreEls, _el); - {<<"query">>, - <<"http://jabber.org/protocol/muc#owner">>, _} -> - decode_muc_owner(<<"http://jabber.org/protocol/muc#owner">>, - IgnoreEls, _el); - {<<"query">>, <<>>, - <<"http://jabber.org/protocol/muc#owner">>} -> - decode_muc_owner(<<"http://jabber.org/protocol/muc#owner">>, - IgnoreEls, _el); - {<<"password">>, - <<"http://jabber.org/protocol/muc#owner">>, _} -> - decode_muc_password(<<"http://jabber.org/protocol/muc#owner">>, - IgnoreEls, _el); - {<<"password">>, <<>>, - <<"http://jabber.org/protocol/muc#owner">>} -> - decode_muc_password(<<"http://jabber.org/protocol/muc#owner">>, - IgnoreEls, _el); - {<<"password">>, - <<"http://jabber.org/protocol/muc#user">>, _} -> - decode_muc_password(<<"http://jabber.org/protocol/muc#user">>, - IgnoreEls, _el); - {<<"password">>, <<>>, - <<"http://jabber.org/protocol/muc#user">>} -> - decode_muc_password(<<"http://jabber.org/protocol/muc#user">>, - IgnoreEls, _el); - {<<"password">>, <<"http://jabber.org/protocol/muc">>, - _} -> - decode_muc_password(<<"http://jabber.org/protocol/muc">>, - IgnoreEls, _el); - {<<"password">>, <<>>, - <<"http://jabber.org/protocol/muc">>} -> - decode_muc_password(<<"http://jabber.org/protocol/muc">>, - IgnoreEls, _el); - {<<"x">>, <<"http://jabber.org/protocol/muc#user">>, - _} -> - decode_muc_user(<<"http://jabber.org/protocol/muc#user">>, - IgnoreEls, _el); - {<<"x">>, <<>>, - <<"http://jabber.org/protocol/muc#user">>} -> - decode_muc_user(<<"http://jabber.org/protocol/muc#user">>, - IgnoreEls, _el); - {<<"item">>, <<"http://jabber.org/protocol/muc#user">>, - _} -> - decode_muc_user_item(<<"http://jabber.org/protocol/muc#user">>, - IgnoreEls, _el); - {<<"item">>, <<>>, - <<"http://jabber.org/protocol/muc#user">>} -> - decode_muc_user_item(<<"http://jabber.org/protocol/muc#user">>, - IgnoreEls, _el); - {<<"status">>, - <<"http://jabber.org/protocol/muc#user">>, _} -> - decode_muc_user_status(<<"http://jabber.org/protocol/muc#user">>, - IgnoreEls, _el); - {<<"status">>, <<>>, - <<"http://jabber.org/protocol/muc#user">>} -> - decode_muc_user_status(<<"http://jabber.org/protocol/muc#user">>, - IgnoreEls, _el); - {<<"continue">>, - <<"http://jabber.org/protocol/muc#user">>, _} -> - decode_muc_user_continue(<<"http://jabber.org/protocol/muc#user">>, - IgnoreEls, _el); - {<<"continue">>, <<>>, - <<"http://jabber.org/protocol/muc#user">>} -> - decode_muc_user_continue(<<"http://jabber.org/protocol/muc#user">>, - IgnoreEls, _el); - {<<"actor">>, <<"http://jabber.org/protocol/muc#user">>, - _} -> - decode_muc_user_actor(<<"http://jabber.org/protocol/muc#user">>, - IgnoreEls, _el); - {<<"actor">>, <<>>, - <<"http://jabber.org/protocol/muc#user">>} -> - decode_muc_user_actor(<<"http://jabber.org/protocol/muc#user">>, - IgnoreEls, _el); - {<<"invite">>, - <<"http://jabber.org/protocol/muc#user">>, _} -> - decode_muc_user_invite(<<"http://jabber.org/protocol/muc#user">>, - IgnoreEls, _el); - {<<"invite">>, <<>>, - <<"http://jabber.org/protocol/muc#user">>} -> - decode_muc_user_invite(<<"http://jabber.org/protocol/muc#user">>, - IgnoreEls, _el); - {<<"destroy">>, - <<"http://jabber.org/protocol/muc#user">>, _} -> - decode_muc_destroy(<<"http://jabber.org/protocol/muc#user">>, - IgnoreEls, _el); - {<<"destroy">>, <<>>, - <<"http://jabber.org/protocol/muc#user">>} -> - decode_muc_destroy(<<"http://jabber.org/protocol/muc#user">>, - IgnoreEls, _el); - {<<"destroy">>, - <<"http://jabber.org/protocol/muc#owner">>, _} -> - decode_muc_destroy(<<"http://jabber.org/protocol/muc#owner">>, - IgnoreEls, _el); - {<<"destroy">>, <<>>, - <<"http://jabber.org/protocol/muc#owner">>} -> - decode_muc_destroy(<<"http://jabber.org/protocol/muc#owner">>, - IgnoreEls, _el); - {<<"decline">>, - <<"http://jabber.org/protocol/muc#user">>, _} -> - decode_muc_user_decline(<<"http://jabber.org/protocol/muc#user">>, - IgnoreEls, _el); - {<<"decline">>, <<>>, - <<"http://jabber.org/protocol/muc#user">>} -> - decode_muc_user_decline(<<"http://jabber.org/protocol/muc#user">>, - IgnoreEls, _el); - {<<"reason">>, - <<"http://jabber.org/protocol/muc#user">>, _} -> - decode_muc_reason(<<"http://jabber.org/protocol/muc#user">>, - IgnoreEls, _el); - {<<"reason">>, <<>>, - <<"http://jabber.org/protocol/muc#user">>} -> - decode_muc_reason(<<"http://jabber.org/protocol/muc#user">>, - IgnoreEls, _el); - {<<"reason">>, - <<"http://jabber.org/protocol/muc#admin">>, _} -> - decode_muc_reason(<<"http://jabber.org/protocol/muc#admin">>, - IgnoreEls, _el); - {<<"reason">>, <<>>, - <<"http://jabber.org/protocol/muc#admin">>} -> - decode_muc_reason(<<"http://jabber.org/protocol/muc#admin">>, - IgnoreEls, _el); - {<<"reason">>, - <<"http://jabber.org/protocol/muc#owner">>, _} -> - decode_muc_reason(<<"http://jabber.org/protocol/muc#owner">>, - IgnoreEls, _el); - {<<"reason">>, <<>>, - <<"http://jabber.org/protocol/muc#owner">>} -> - decode_muc_reason(<<"http://jabber.org/protocol/muc#owner">>, - IgnoreEls, _el); - {<<"history">>, <<"http://jabber.org/protocol/muc">>, - _} -> - decode_muc_history(<<"http://jabber.org/protocol/muc">>, - IgnoreEls, _el); - {<<"history">>, <<>>, - <<"http://jabber.org/protocol/muc">>} -> - decode_muc_history(<<"http://jabber.org/protocol/muc">>, - IgnoreEls, _el); - {<<"query">>, - <<"http://jabber.org/protocol/bytestreams">>, _} -> - decode_bytestreams(<<"http://jabber.org/protocol/bytestreams">>, - IgnoreEls, _el); - {<<"query">>, <<>>, - <<"http://jabber.org/protocol/bytestreams">>} -> - decode_bytestreams(<<"http://jabber.org/protocol/bytestreams">>, - IgnoreEls, _el); - {<<"activate">>, - <<"http://jabber.org/protocol/bytestreams">>, _} -> - decode_bytestreams_activate(<<"http://jabber.org/protocol/bytestreams">>, - IgnoreEls, _el); - {<<"activate">>, <<>>, - <<"http://jabber.org/protocol/bytestreams">>} -> - decode_bytestreams_activate(<<"http://jabber.org/protocol/bytestreams">>, - IgnoreEls, _el); - {<<"streamhost-used">>, - <<"http://jabber.org/protocol/bytestreams">>, _} -> - decode_bytestreams_streamhost_used(<<"http://jabber.org/protocol/bytestreams">>, - IgnoreEls, _el); - {<<"streamhost-used">>, <<>>, - <<"http://jabber.org/protocol/bytestreams">>} -> - decode_bytestreams_streamhost_used(<<"http://jabber.org/protocol/bytestreams">>, - IgnoreEls, _el); - {<<"streamhost">>, - <<"http://jabber.org/protocol/bytestreams">>, _} -> - decode_bytestreams_streamhost(<<"http://jabber.org/protocol/bytestreams">>, - IgnoreEls, _el); - {<<"streamhost">>, <<>>, - <<"http://jabber.org/protocol/bytestreams">>} -> - decode_bytestreams_streamhost(<<"http://jabber.org/protocol/bytestreams">>, - IgnoreEls, _el); - {<<"delay">>, <<"urn:xmpp:delay">>, _} -> - decode_delay(<<"urn:xmpp:delay">>, IgnoreEls, _el); - {<<"delay">>, <<>>, <<"urn:xmpp:delay">>} -> - decode_delay(<<"urn:xmpp:delay">>, IgnoreEls, _el); - {<<"paused">>, - <<"http://jabber.org/protocol/chatstates">>, _} -> - decode_chatstate_paused(<<"http://jabber.org/protocol/chatstates">>, - IgnoreEls, _el); - {<<"paused">>, <<>>, - <<"http://jabber.org/protocol/chatstates">>} -> - decode_chatstate_paused(<<"http://jabber.org/protocol/chatstates">>, - IgnoreEls, _el); - {<<"inactive">>, - <<"http://jabber.org/protocol/chatstates">>, _} -> - decode_chatstate_inactive(<<"http://jabber.org/protocol/chatstates">>, - IgnoreEls, _el); - {<<"inactive">>, <<>>, - <<"http://jabber.org/protocol/chatstates">>} -> - decode_chatstate_inactive(<<"http://jabber.org/protocol/chatstates">>, - IgnoreEls, _el); - {<<"gone">>, - <<"http://jabber.org/protocol/chatstates">>, _} -> - decode_chatstate_gone(<<"http://jabber.org/protocol/chatstates">>, - IgnoreEls, _el); - {<<"gone">>, <<>>, - <<"http://jabber.org/protocol/chatstates">>} -> - decode_chatstate_gone(<<"http://jabber.org/protocol/chatstates">>, - IgnoreEls, _el); - {<<"composing">>, - <<"http://jabber.org/protocol/chatstates">>, _} -> - decode_chatstate_composing(<<"http://jabber.org/protocol/chatstates">>, - IgnoreEls, _el); - {<<"composing">>, <<>>, - <<"http://jabber.org/protocol/chatstates">>} -> - decode_chatstate_composing(<<"http://jabber.org/protocol/chatstates">>, - IgnoreEls, _el); - {<<"active">>, - <<"http://jabber.org/protocol/chatstates">>, _} -> - decode_chatstate_active(<<"http://jabber.org/protocol/chatstates">>, - IgnoreEls, _el); - {<<"active">>, <<>>, - <<"http://jabber.org/protocol/chatstates">>} -> - decode_chatstate_active(<<"http://jabber.org/protocol/chatstates">>, - IgnoreEls, _el); - {<<"headers">>, <<"http://jabber.org/protocol/shim">>, - _} -> - decode_shim_headers(<<"http://jabber.org/protocol/shim">>, - IgnoreEls, _el); - {<<"headers">>, <<>>, - <<"http://jabber.org/protocol/shim">>} -> - decode_shim_headers(<<"http://jabber.org/protocol/shim">>, - IgnoreEls, _el); - {<<"header">>, <<"http://jabber.org/protocol/shim">>, - _} -> - decode_shim_header(<<"http://jabber.org/protocol/shim">>, - IgnoreEls, _el); - {<<"header">>, <<>>, - <<"http://jabber.org/protocol/shim">>} -> - decode_shim_header(<<"http://jabber.org/protocol/shim">>, - IgnoreEls, _el); - {<<"unsupported-access-model">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - decode_pubsub_error_unsupported_access_model(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"unsupported-access-model">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - decode_pubsub_error_unsupported_access_model(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"unsupported">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - decode_pubsub_error_unsupported(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"unsupported">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - decode_pubsub_error_unsupported(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"too-many-subscriptions">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - decode_pubsub_error_too_many_subscriptions(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"too-many-subscriptions">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - decode_pubsub_error_too_many_subscriptions(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"subid-required">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - decode_pubsub_error_subid_required(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"subid-required">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - decode_pubsub_error_subid_required(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"presence-subscription-required">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - decode_pubsub_error_presence_subscription_required(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"presence-subscription-required">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - decode_pubsub_error_presence_subscription_required(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"pending-subscription">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - decode_pubsub_error_pending_subscription(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"pending-subscription">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - decode_pubsub_error_pending_subscription(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"payload-required">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - decode_pubsub_error_payload_required(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"payload-required">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - decode_pubsub_error_payload_required(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"payload-too-big">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - decode_pubsub_error_payload_too_big(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"payload-too-big">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - decode_pubsub_error_payload_too_big(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"not-subscribed">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - decode_pubsub_error_not_subscribed(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"not-subscribed">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - decode_pubsub_error_not_subscribed(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"not-in-roster-group">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - decode_pubsub_error_not_in_roster_group(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"not-in-roster-group">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - decode_pubsub_error_not_in_roster_group(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"nodeid-required">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - decode_pubsub_error_nodeid_required(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"nodeid-required">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - decode_pubsub_error_nodeid_required(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"max-nodes-exceeded">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - decode_pubsub_error_max_nodes_exceeded(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"max-nodes-exceeded">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - decode_pubsub_error_max_nodes_exceeded(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"max-items-exceeded">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - decode_pubsub_error_max_items_exceeded(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"max-items-exceeded">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - decode_pubsub_error_max_items_exceeded(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"jid-required">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - decode_pubsub_error_jid_required(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"jid-required">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - decode_pubsub_error_jid_required(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"item-required">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - decode_pubsub_error_item_required(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"item-required">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - decode_pubsub_error_item_required(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"item-forbidden">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - decode_pubsub_error_item_forbidden(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"item-forbidden">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - decode_pubsub_error_item_forbidden(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"invalid-subid">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - decode_pubsub_error_invalid_subid(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"invalid-subid">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - decode_pubsub_error_invalid_subid(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"invalid-payload">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - decode_pubsub_error_invalid_payload(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"invalid-payload">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - decode_pubsub_error_invalid_payload(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"invalid-options">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - decode_pubsub_error_invalid_options(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"invalid-options">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - decode_pubsub_error_invalid_options(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"invalid-jid">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - decode_pubsub_error_invalid_jid(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"invalid-jid">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - decode_pubsub_error_invalid_jid(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"configuration-required">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - decode_pubsub_error_configuration_required(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"configuration-required">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - decode_pubsub_error_configuration_required(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"closed-node">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - decode_pubsub_error_closed_node(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"closed-node">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - decode_pubsub_error_closed_node(<<"http://jabber.org/protocol/pubsub#errors">>, - IgnoreEls, _el); - {<<"pubsub">>, - <<"http://jabber.org/protocol/pubsub#owner">>, _} -> - decode_pubsub_owner(<<"http://jabber.org/protocol/pubsub#owner">>, - IgnoreEls, _el); - {<<"pubsub">>, <<>>, - <<"http://jabber.org/protocol/pubsub#owner">>} -> - decode_pubsub_owner(<<"http://jabber.org/protocol/pubsub#owner">>, - IgnoreEls, _el); - {<<"pubsub">>, <<"http://jabber.org/protocol/pubsub">>, - _} -> - decode_pubsub(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"pubsub">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - decode_pubsub(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"purge">>, <<"http://jabber.org/protocol/pubsub">>, - _} -> - decode_pubsub_purge(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"purge">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - decode_pubsub_purge(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"purge">>, - <<"http://jabber.org/protocol/pubsub#owner">>, _} -> - decode_pubsub_purge(<<"http://jabber.org/protocol/pubsub#owner">>, - IgnoreEls, _el); - {<<"purge">>, <<>>, - <<"http://jabber.org/protocol/pubsub#owner">>} -> - decode_pubsub_purge(<<"http://jabber.org/protocol/pubsub#owner">>, - IgnoreEls, _el); - {<<"purge">>, - <<"http://jabber.org/protocol/pubsub#event">>, _} -> - decode_pubsub_purge(<<"http://jabber.org/protocol/pubsub#event">>, - IgnoreEls, _el); - {<<"purge">>, <<>>, - <<"http://jabber.org/protocol/pubsub#event">>} -> - decode_pubsub_purge(<<"http://jabber.org/protocol/pubsub#event">>, - IgnoreEls, _el); - {<<"delete">>, <<"http://jabber.org/protocol/pubsub">>, - _} -> - decode_pubsub_delete(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"delete">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - decode_pubsub_delete(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"delete">>, - <<"http://jabber.org/protocol/pubsub#owner">>, _} -> - decode_pubsub_delete(<<"http://jabber.org/protocol/pubsub#owner">>, - IgnoreEls, _el); - {<<"delete">>, <<>>, - <<"http://jabber.org/protocol/pubsub#owner">>} -> - decode_pubsub_delete(<<"http://jabber.org/protocol/pubsub#owner">>, - IgnoreEls, _el); - {<<"delete">>, - <<"http://jabber.org/protocol/pubsub#event">>, _} -> - decode_pubsub_delete(<<"http://jabber.org/protocol/pubsub#event">>, - IgnoreEls, _el); - {<<"delete">>, <<>>, - <<"http://jabber.org/protocol/pubsub#event">>} -> - decode_pubsub_delete(<<"http://jabber.org/protocol/pubsub#event">>, - IgnoreEls, _el); - {<<"redirect">>, - <<"http://jabber.org/protocol/pubsub">>, _} -> - decode_pubsub_redirect(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"redirect">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - decode_pubsub_redirect(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"redirect">>, - <<"http://jabber.org/protocol/pubsub#owner">>, _} -> - decode_pubsub_redirect(<<"http://jabber.org/protocol/pubsub#owner">>, - IgnoreEls, _el); - {<<"redirect">>, <<>>, - <<"http://jabber.org/protocol/pubsub#owner">>} -> - decode_pubsub_redirect(<<"http://jabber.org/protocol/pubsub#owner">>, - IgnoreEls, _el); - {<<"redirect">>, - <<"http://jabber.org/protocol/pubsub#event">>, _} -> - decode_pubsub_redirect(<<"http://jabber.org/protocol/pubsub#event">>, - IgnoreEls, _el); - {<<"redirect">>, <<>>, - <<"http://jabber.org/protocol/pubsub#event">>} -> - decode_pubsub_redirect(<<"http://jabber.org/protocol/pubsub#event">>, - IgnoreEls, _el); - {<<"default">>, <<"http://jabber.org/protocol/pubsub">>, - _} -> - decode_pubsub_default(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"default">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - decode_pubsub_default(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"default">>, - <<"http://jabber.org/protocol/pubsub#owner">>, _} -> - decode_pubsub_default(<<"http://jabber.org/protocol/pubsub#owner">>, - IgnoreEls, _el); - {<<"default">>, <<>>, - <<"http://jabber.org/protocol/pubsub#owner">>} -> - decode_pubsub_default(<<"http://jabber.org/protocol/pubsub#owner">>, - IgnoreEls, _el); - {<<"publish-options">>, - <<"http://jabber.org/protocol/pubsub">>, _} -> - decode_pubsub_publish_options(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"publish-options">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - decode_pubsub_publish_options(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"configure">>, - <<"http://jabber.org/protocol/pubsub">>, _} -> - decode_pubsub_configure(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"configure">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - decode_pubsub_configure(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"configure">>, - <<"http://jabber.org/protocol/pubsub#owner">>, _} -> - decode_pubsub_configure(<<"http://jabber.org/protocol/pubsub#owner">>, - IgnoreEls, _el); - {<<"configure">>, <<>>, - <<"http://jabber.org/protocol/pubsub#owner">>} -> - decode_pubsub_configure(<<"http://jabber.org/protocol/pubsub#owner">>, - IgnoreEls, _el); - {<<"create">>, <<"http://jabber.org/protocol/pubsub">>, - _} -> - decode_pubsub_create(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"create">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - decode_pubsub_create(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"create">>, - <<"http://jabber.org/protocol/pubsub#event">>, _} -> - decode_pubsub_create(<<"http://jabber.org/protocol/pubsub#event">>, - IgnoreEls, _el); - {<<"create">>, <<>>, - <<"http://jabber.org/protocol/pubsub#event">>} -> - decode_pubsub_create(<<"http://jabber.org/protocol/pubsub#event">>, - IgnoreEls, _el); - {<<"retract">>, <<"http://jabber.org/protocol/pubsub">>, - _} -> - decode_pubsub_retract(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"retract">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - decode_pubsub_retract(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"options">>, <<"http://jabber.org/protocol/pubsub">>, - _} -> - decode_pubsub_options(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"options">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - decode_pubsub_options(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"publish">>, <<"http://jabber.org/protocol/pubsub">>, - _} -> - decode_pubsub_publish(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"publish">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - decode_pubsub_publish(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"unsubscribe">>, - <<"http://jabber.org/protocol/pubsub">>, _} -> - decode_pubsub_unsubscribe(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"unsubscribe">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - decode_pubsub_unsubscribe(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"subscribe">>, - <<"http://jabber.org/protocol/pubsub">>, _} -> - decode_pubsub_subscribe(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"subscribe">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - decode_pubsub_subscribe(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"affiliations">>, - <<"http://jabber.org/protocol/pubsub#owner">>, _} -> - decode_pubsub_owner_affiliations(<<"http://jabber.org/protocol/pubsub#owner">>, - IgnoreEls, _el); - {<<"affiliations">>, <<>>, - <<"http://jabber.org/protocol/pubsub#owner">>} -> - decode_pubsub_owner_affiliations(<<"http://jabber.org/protocol/pubsub#owner">>, - IgnoreEls, _el); - {<<"affiliations">>, - <<"http://jabber.org/protocol/pubsub">>, _} -> - decode_pubsub_affiliations(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"affiliations">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - decode_pubsub_affiliations(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"subscriptions">>, - <<"http://jabber.org/protocol/pubsub">>, _} -> - decode_pubsub_subscriptions(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"subscriptions">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - decode_pubsub_subscriptions(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"subscriptions">>, - <<"http://jabber.org/protocol/pubsub#owner">>, _} -> - decode_pubsub_subscriptions(<<"http://jabber.org/protocol/pubsub#owner">>, - IgnoreEls, _el); - {<<"subscriptions">>, <<>>, - <<"http://jabber.org/protocol/pubsub#owner">>} -> - decode_pubsub_subscriptions(<<"http://jabber.org/protocol/pubsub#owner">>, - IgnoreEls, _el); - {<<"event">>, - <<"http://jabber.org/protocol/pubsub#event">>, _} -> - decode_pubsub_event(<<"http://jabber.org/protocol/pubsub#event">>, - IgnoreEls, _el); - {<<"event">>, <<>>, - <<"http://jabber.org/protocol/pubsub#event">>} -> - decode_pubsub_event(<<"http://jabber.org/protocol/pubsub#event">>, - IgnoreEls, _el); - {<<"items">>, <<"http://jabber.org/protocol/pubsub">>, - _} -> - decode_pubsub_items(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"items">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - decode_pubsub_items(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"items">>, - <<"http://jabber.org/protocol/pubsub#event">>, _} -> - decode_pubsub_items(<<"http://jabber.org/protocol/pubsub#event">>, - IgnoreEls, _el); - {<<"items">>, <<>>, - <<"http://jabber.org/protocol/pubsub#event">>} -> - decode_pubsub_items(<<"http://jabber.org/protocol/pubsub#event">>, - IgnoreEls, _el); - {<<"item">>, <<"http://jabber.org/protocol/pubsub">>, - _} -> - decode_pubsub_item(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"item">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - decode_pubsub_item(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"item">>, - <<"http://jabber.org/protocol/pubsub#event">>, _} -> - decode_pubsub_item(<<"http://jabber.org/protocol/pubsub#event">>, - IgnoreEls, _el); - {<<"item">>, <<>>, - <<"http://jabber.org/protocol/pubsub#event">>} -> - decode_pubsub_item(<<"http://jabber.org/protocol/pubsub#event">>, - IgnoreEls, _el); - {<<"retract">>, - <<"http://jabber.org/protocol/pubsub#event">>, _} -> - decode_pubsub_event_retract(<<"http://jabber.org/protocol/pubsub#event">>, - IgnoreEls, _el); - {<<"retract">>, <<>>, - <<"http://jabber.org/protocol/pubsub#event">>} -> - decode_pubsub_event_retract(<<"http://jabber.org/protocol/pubsub#event">>, - IgnoreEls, _el); - {<<"configuration">>, - <<"http://jabber.org/protocol/pubsub#event">>, _} -> - decode_pubsub_event_configuration(<<"http://jabber.org/protocol/pubsub#event">>, - IgnoreEls, _el); - {<<"configuration">>, <<>>, - <<"http://jabber.org/protocol/pubsub#event">>} -> - decode_pubsub_event_configuration(<<"http://jabber.org/protocol/pubsub#event">>, - IgnoreEls, _el); - {<<"affiliation">>, - <<"http://jabber.org/protocol/pubsub#owner">>, _} -> - decode_pubsub_owner_affiliation(<<"http://jabber.org/protocol/pubsub#owner">>, - IgnoreEls, _el); - {<<"affiliation">>, <<>>, - <<"http://jabber.org/protocol/pubsub#owner">>} -> - decode_pubsub_owner_affiliation(<<"http://jabber.org/protocol/pubsub#owner">>, - IgnoreEls, _el); - {<<"affiliation">>, - <<"http://jabber.org/protocol/pubsub">>, _} -> - decode_pubsub_affiliation(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"affiliation">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - decode_pubsub_affiliation(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"subscription">>, - <<"http://jabber.org/protocol/pubsub">>, _} -> - decode_pubsub_subscription(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"subscription">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - decode_pubsub_subscription(<<"http://jabber.org/protocol/pubsub">>, - IgnoreEls, _el); - {<<"subscription">>, - <<"http://jabber.org/protocol/pubsub#owner">>, _} -> - decode_pubsub_subscription(<<"http://jabber.org/protocol/pubsub#owner">>, - IgnoreEls, _el); - {<<"subscription">>, <<>>, - <<"http://jabber.org/protocol/pubsub#owner">>} -> - decode_pubsub_subscription(<<"http://jabber.org/protocol/pubsub#owner">>, - IgnoreEls, _el); - {<<"subscription">>, - <<"http://jabber.org/protocol/pubsub#event">>, _} -> - decode_pubsub_subscription(<<"http://jabber.org/protocol/pubsub#event">>, - IgnoreEls, _el); - {<<"subscription">>, <<>>, - <<"http://jabber.org/protocol/pubsub#event">>} -> - decode_pubsub_subscription(<<"http://jabber.org/protocol/pubsub#event">>, - IgnoreEls, _el); - {<<"x">>, <<"jabber:x:data">>, _} -> - decode_xdata(<<"jabber:x:data">>, IgnoreEls, _el); - {<<"x">>, <<>>, <<"jabber:x:data">>} -> - decode_xdata(<<"jabber:x:data">>, IgnoreEls, _el); - {<<"item">>, <<"jabber:x:data">>, _} -> - decode_xdata_item(<<"jabber:x:data">>, IgnoreEls, _el); - {<<"item">>, <<>>, <<"jabber:x:data">>} -> - decode_xdata_item(<<"jabber:x:data">>, IgnoreEls, _el); - {<<"reported">>, <<"jabber:x:data">>, _} -> - decode_xdata_reported(<<"jabber:x:data">>, IgnoreEls, - _el); - {<<"reported">>, <<>>, <<"jabber:x:data">>} -> - decode_xdata_reported(<<"jabber:x:data">>, IgnoreEls, - _el); - {<<"title">>, <<"jabber:x:data">>, _} -> - decode_xdata_title(<<"jabber:x:data">>, IgnoreEls, _el); - {<<"title">>, <<>>, <<"jabber:x:data">>} -> - decode_xdata_title(<<"jabber:x:data">>, IgnoreEls, _el); - {<<"instructions">>, <<"jabber:x:data">>, _} -> - decode_xdata_instructions(<<"jabber:x:data">>, - IgnoreEls, _el); - {<<"instructions">>, <<>>, <<"jabber:x:data">>} -> - decode_xdata_instructions(<<"jabber:x:data">>, - IgnoreEls, _el); - {<<"field">>, <<"jabber:x:data">>, _} -> - decode_xdata_field(<<"jabber:x:data">>, IgnoreEls, _el); - {<<"field">>, <<>>, <<"jabber:x:data">>} -> - decode_xdata_field(<<"jabber:x:data">>, IgnoreEls, _el); - {<<"option">>, <<"jabber:x:data">>, _} -> - decode_xdata_field_option(<<"jabber:x:data">>, - IgnoreEls, _el); - {<<"option">>, <<>>, <<"jabber:x:data">>} -> - decode_xdata_field_option(<<"jabber:x:data">>, - IgnoreEls, _el); - {<<"value">>, <<"jabber:x:data">>, _} -> - decode_xdata_field_value(<<"jabber:x:data">>, IgnoreEls, - _el); - {<<"value">>, <<>>, <<"jabber:x:data">>} -> - decode_xdata_field_value(<<"jabber:x:data">>, IgnoreEls, - _el); - {<<"desc">>, <<"jabber:x:data">>, _} -> - decode_xdata_field_desc(<<"jabber:x:data">>, IgnoreEls, - _el); - {<<"desc">>, <<>>, <<"jabber:x:data">>} -> - decode_xdata_field_desc(<<"jabber:x:data">>, IgnoreEls, - _el); - {<<"required">>, <<"jabber:x:data">>, _} -> - decode_xdata_field_required(<<"jabber:x:data">>, - IgnoreEls, _el); - {<<"required">>, <<>>, <<"jabber:x:data">>} -> - decode_xdata_field_required(<<"jabber:x:data">>, - IgnoreEls, _el); - {<<"x">>, <<"vcard-temp:x:update">>, _} -> - decode_vcard_xupdate(<<"vcard-temp:x:update">>, - IgnoreEls, _el); - {<<"x">>, <<>>, <<"vcard-temp:x:update">>} -> - decode_vcard_xupdate(<<"vcard-temp:x:update">>, - IgnoreEls, _el); - {<<"photo">>, <<"vcard-temp:x:update">>, _} -> - decode_vcard_xupdate_photo(<<"vcard-temp:x:update">>, - IgnoreEls, _el); - {<<"photo">>, <<>>, <<"vcard-temp:x:update">>} -> - decode_vcard_xupdate_photo(<<"vcard-temp:x:update">>, - IgnoreEls, _el); - {<<"vCard">>, <<"vcard-temp">>, _} -> - decode_vcard_temp(<<"vcard-temp">>, IgnoreEls, _el); - {<<"vCard">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_temp(<<"vcard-temp">>, IgnoreEls, _el); - {<<"CLASS">>, <<"vcard-temp">>, _} -> - decode_vcard_CLASS(<<"vcard-temp">>, IgnoreEls, _el); - {<<"CLASS">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_CLASS(<<"vcard-temp">>, IgnoreEls, _el); - {<<"CATEGORIES">>, <<"vcard-temp">>, _} -> - decode_vcard_CATEGORIES(<<"vcard-temp">>, IgnoreEls, - _el); - {<<"CATEGORIES">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_CATEGORIES(<<"vcard-temp">>, IgnoreEls, - _el); - {<<"KEY">>, <<"vcard-temp">>, _} -> - decode_vcard_KEY(<<"vcard-temp">>, IgnoreEls, _el); - {<<"KEY">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_KEY(<<"vcard-temp">>, IgnoreEls, _el); - {<<"SOUND">>, <<"vcard-temp">>, _} -> - decode_vcard_SOUND(<<"vcard-temp">>, IgnoreEls, _el); - {<<"SOUND">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_SOUND(<<"vcard-temp">>, IgnoreEls, _el); - {<<"ORG">>, <<"vcard-temp">>, _} -> - decode_vcard_ORG(<<"vcard-temp">>, IgnoreEls, _el); - {<<"ORG">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_ORG(<<"vcard-temp">>, IgnoreEls, _el); - {<<"PHOTO">>, <<"vcard-temp">>, _} -> - decode_vcard_PHOTO(<<"vcard-temp">>, IgnoreEls, _el); - {<<"PHOTO">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_PHOTO(<<"vcard-temp">>, IgnoreEls, _el); - {<<"LOGO">>, <<"vcard-temp">>, _} -> - decode_vcard_LOGO(<<"vcard-temp">>, IgnoreEls, _el); - {<<"LOGO">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_LOGO(<<"vcard-temp">>, IgnoreEls, _el); - {<<"BINVAL">>, <<"vcard-temp">>, _} -> - decode_vcard_BINVAL(<<"vcard-temp">>, IgnoreEls, _el); - {<<"BINVAL">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_BINVAL(<<"vcard-temp">>, IgnoreEls, _el); - {<<"GEO">>, <<"vcard-temp">>, _} -> - decode_vcard_GEO(<<"vcard-temp">>, IgnoreEls, _el); - {<<"GEO">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_GEO(<<"vcard-temp">>, IgnoreEls, _el); - {<<"EMAIL">>, <<"vcard-temp">>, _} -> - decode_vcard_EMAIL(<<"vcard-temp">>, IgnoreEls, _el); - {<<"EMAIL">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_EMAIL(<<"vcard-temp">>, IgnoreEls, _el); - {<<"TEL">>, <<"vcard-temp">>, _} -> - decode_vcard_TEL(<<"vcard-temp">>, IgnoreEls, _el); - {<<"TEL">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_TEL(<<"vcard-temp">>, IgnoreEls, _el); - {<<"LABEL">>, <<"vcard-temp">>, _} -> - decode_vcard_LABEL(<<"vcard-temp">>, IgnoreEls, _el); - {<<"LABEL">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_LABEL(<<"vcard-temp">>, IgnoreEls, _el); - {<<"ADR">>, <<"vcard-temp">>, _} -> - decode_vcard_ADR(<<"vcard-temp">>, IgnoreEls, _el); - {<<"ADR">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_ADR(<<"vcard-temp">>, IgnoreEls, _el); - {<<"N">>, <<"vcard-temp">>, _} -> - decode_vcard_N(<<"vcard-temp">>, IgnoreEls, _el); - {<<"N">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_N(<<"vcard-temp">>, IgnoreEls, _el); - {<<"CONFIDENTIAL">>, <<"vcard-temp">>, _} -> - decode_vcard_CONFIDENTIAL(<<"vcard-temp">>, IgnoreEls, - _el); - {<<"CONFIDENTIAL">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_CONFIDENTIAL(<<"vcard-temp">>, IgnoreEls, - _el); - {<<"PRIVATE">>, <<"vcard-temp">>, _} -> - decode_vcard_PRIVATE(<<"vcard-temp">>, IgnoreEls, _el); - {<<"PRIVATE">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_PRIVATE(<<"vcard-temp">>, IgnoreEls, _el); - {<<"PUBLIC">>, <<"vcard-temp">>, _} -> - decode_vcard_PUBLIC(<<"vcard-temp">>, IgnoreEls, _el); - {<<"PUBLIC">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_PUBLIC(<<"vcard-temp">>, IgnoreEls, _el); - {<<"EXTVAL">>, <<"vcard-temp">>, _} -> - decode_vcard_EXTVAL(<<"vcard-temp">>, IgnoreEls, _el); - {<<"EXTVAL">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_EXTVAL(<<"vcard-temp">>, IgnoreEls, _el); - {<<"TYPE">>, <<"vcard-temp">>, _} -> - decode_vcard_TYPE(<<"vcard-temp">>, IgnoreEls, _el); - {<<"TYPE">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_TYPE(<<"vcard-temp">>, IgnoreEls, _el); - {<<"DESC">>, <<"vcard-temp">>, _} -> - decode_vcard_DESC(<<"vcard-temp">>, IgnoreEls, _el); - {<<"DESC">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_DESC(<<"vcard-temp">>, IgnoreEls, _el); - {<<"URL">>, <<"vcard-temp">>, _} -> - decode_vcard_URL(<<"vcard-temp">>, IgnoreEls, _el); - {<<"URL">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_URL(<<"vcard-temp">>, IgnoreEls, _el); - {<<"UID">>, <<"vcard-temp">>, _} -> - decode_vcard_UID(<<"vcard-temp">>, IgnoreEls, _el); - {<<"UID">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_UID(<<"vcard-temp">>, IgnoreEls, _el); - {<<"SORT-STRING">>, <<"vcard-temp">>, _} -> - decode_vcard_SORT_STRING(<<"vcard-temp">>, IgnoreEls, - _el); - {<<"SORT-STRING">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_SORT_STRING(<<"vcard-temp">>, IgnoreEls, - _el); - {<<"REV">>, <<"vcard-temp">>, _} -> - decode_vcard_REV(<<"vcard-temp">>, IgnoreEls, _el); - {<<"REV">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_REV(<<"vcard-temp">>, IgnoreEls, _el); - {<<"PRODID">>, <<"vcard-temp">>, _} -> - decode_vcard_PRODID(<<"vcard-temp">>, IgnoreEls, _el); - {<<"PRODID">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_PRODID(<<"vcard-temp">>, IgnoreEls, _el); - {<<"NOTE">>, <<"vcard-temp">>, _} -> - decode_vcard_NOTE(<<"vcard-temp">>, IgnoreEls, _el); - {<<"NOTE">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_NOTE(<<"vcard-temp">>, IgnoreEls, _el); - {<<"KEYWORD">>, <<"vcard-temp">>, _} -> - decode_vcard_KEYWORD(<<"vcard-temp">>, IgnoreEls, _el); - {<<"KEYWORD">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_KEYWORD(<<"vcard-temp">>, IgnoreEls, _el); - {<<"ROLE">>, <<"vcard-temp">>, _} -> - decode_vcard_ROLE(<<"vcard-temp">>, IgnoreEls, _el); - {<<"ROLE">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_ROLE(<<"vcard-temp">>, IgnoreEls, _el); - {<<"TITLE">>, <<"vcard-temp">>, _} -> - decode_vcard_TITLE(<<"vcard-temp">>, IgnoreEls, _el); - {<<"TITLE">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_TITLE(<<"vcard-temp">>, IgnoreEls, _el); - {<<"TZ">>, <<"vcard-temp">>, _} -> - decode_vcard_TZ(<<"vcard-temp">>, IgnoreEls, _el); - {<<"TZ">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_TZ(<<"vcard-temp">>, IgnoreEls, _el); - {<<"MAILER">>, <<"vcard-temp">>, _} -> - decode_vcard_MAILER(<<"vcard-temp">>, IgnoreEls, _el); - {<<"MAILER">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_MAILER(<<"vcard-temp">>, IgnoreEls, _el); - {<<"JABBERID">>, <<"vcard-temp">>, _} -> - decode_vcard_JABBERID(<<"vcard-temp">>, IgnoreEls, _el); - {<<"JABBERID">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_JABBERID(<<"vcard-temp">>, IgnoreEls, _el); - {<<"BDAY">>, <<"vcard-temp">>, _} -> - decode_vcard_BDAY(<<"vcard-temp">>, IgnoreEls, _el); - {<<"BDAY">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_BDAY(<<"vcard-temp">>, IgnoreEls, _el); - {<<"NICKNAME">>, <<"vcard-temp">>, _} -> - decode_vcard_NICKNAME(<<"vcard-temp">>, IgnoreEls, _el); - {<<"NICKNAME">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_NICKNAME(<<"vcard-temp">>, IgnoreEls, _el); - {<<"FN">>, <<"vcard-temp">>, _} -> - decode_vcard_FN(<<"vcard-temp">>, IgnoreEls, _el); - {<<"FN">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_FN(<<"vcard-temp">>, IgnoreEls, _el); - {<<"VERSION">>, <<"vcard-temp">>, _} -> - decode_vcard_VERSION(<<"vcard-temp">>, IgnoreEls, _el); - {<<"VERSION">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_VERSION(<<"vcard-temp">>, IgnoreEls, _el); - {<<"CRED">>, <<"vcard-temp">>, _} -> - decode_vcard_CRED(<<"vcard-temp">>, IgnoreEls, _el); - {<<"CRED">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_CRED(<<"vcard-temp">>, IgnoreEls, _el); - {<<"PHONETIC">>, <<"vcard-temp">>, _} -> - decode_vcard_PHONETIC(<<"vcard-temp">>, IgnoreEls, _el); - {<<"PHONETIC">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_PHONETIC(<<"vcard-temp">>, IgnoreEls, _el); - {<<"ORGUNIT">>, <<"vcard-temp">>, _} -> - decode_vcard_ORGUNIT(<<"vcard-temp">>, IgnoreEls, _el); - {<<"ORGUNIT">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_ORGUNIT(<<"vcard-temp">>, IgnoreEls, _el); - {<<"ORGNAME">>, <<"vcard-temp">>, _} -> - decode_vcard_ORGNAME(<<"vcard-temp">>, IgnoreEls, _el); - {<<"ORGNAME">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_ORGNAME(<<"vcard-temp">>, IgnoreEls, _el); - {<<"LON">>, <<"vcard-temp">>, _} -> - decode_vcard_LON(<<"vcard-temp">>, IgnoreEls, _el); - {<<"LON">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_LON(<<"vcard-temp">>, IgnoreEls, _el); - {<<"LAT">>, <<"vcard-temp">>, _} -> - decode_vcard_LAT(<<"vcard-temp">>, IgnoreEls, _el); - {<<"LAT">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_LAT(<<"vcard-temp">>, IgnoreEls, _el); - {<<"USERID">>, <<"vcard-temp">>, _} -> - decode_vcard_USERID(<<"vcard-temp">>, IgnoreEls, _el); - {<<"USERID">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_USERID(<<"vcard-temp">>, IgnoreEls, _el); - {<<"NUMBER">>, <<"vcard-temp">>, _} -> - decode_vcard_NUMBER(<<"vcard-temp">>, IgnoreEls, _el); - {<<"NUMBER">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_NUMBER(<<"vcard-temp">>, IgnoreEls, _el); - {<<"LINE">>, <<"vcard-temp">>, _} -> - decode_vcard_LINE(<<"vcard-temp">>, IgnoreEls, _el); - {<<"LINE">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_LINE(<<"vcard-temp">>, IgnoreEls, _el); - {<<"CTRY">>, <<"vcard-temp">>, _} -> - decode_vcard_CTRY(<<"vcard-temp">>, IgnoreEls, _el); - {<<"CTRY">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_CTRY(<<"vcard-temp">>, IgnoreEls, _el); - {<<"PCODE">>, <<"vcard-temp">>, _} -> - decode_vcard_PCODE(<<"vcard-temp">>, IgnoreEls, _el); - {<<"PCODE">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_PCODE(<<"vcard-temp">>, IgnoreEls, _el); - {<<"REGION">>, <<"vcard-temp">>, _} -> - decode_vcard_REGION(<<"vcard-temp">>, IgnoreEls, _el); - {<<"REGION">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_REGION(<<"vcard-temp">>, IgnoreEls, _el); - {<<"LOCALITY">>, <<"vcard-temp">>, _} -> - decode_vcard_LOCALITY(<<"vcard-temp">>, IgnoreEls, _el); - {<<"LOCALITY">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_LOCALITY(<<"vcard-temp">>, IgnoreEls, _el); - {<<"STREET">>, <<"vcard-temp">>, _} -> - decode_vcard_STREET(<<"vcard-temp">>, IgnoreEls, _el); - {<<"STREET">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_STREET(<<"vcard-temp">>, IgnoreEls, _el); - {<<"EXTADD">>, <<"vcard-temp">>, _} -> - decode_vcard_EXTADD(<<"vcard-temp">>, IgnoreEls, _el); - {<<"EXTADD">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_EXTADD(<<"vcard-temp">>, IgnoreEls, _el); - {<<"POBOX">>, <<"vcard-temp">>, _} -> - decode_vcard_POBOX(<<"vcard-temp">>, IgnoreEls, _el); - {<<"POBOX">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_POBOX(<<"vcard-temp">>, IgnoreEls, _el); - {<<"SUFFIX">>, <<"vcard-temp">>, _} -> - decode_vcard_SUFFIX(<<"vcard-temp">>, IgnoreEls, _el); - {<<"SUFFIX">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_SUFFIX(<<"vcard-temp">>, IgnoreEls, _el); - {<<"PREFIX">>, <<"vcard-temp">>, _} -> - decode_vcard_PREFIX(<<"vcard-temp">>, IgnoreEls, _el); - {<<"PREFIX">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_PREFIX(<<"vcard-temp">>, IgnoreEls, _el); - {<<"MIDDLE">>, <<"vcard-temp">>, _} -> - decode_vcard_MIDDLE(<<"vcard-temp">>, IgnoreEls, _el); - {<<"MIDDLE">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_MIDDLE(<<"vcard-temp">>, IgnoreEls, _el); - {<<"GIVEN">>, <<"vcard-temp">>, _} -> - decode_vcard_GIVEN(<<"vcard-temp">>, IgnoreEls, _el); - {<<"GIVEN">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_GIVEN(<<"vcard-temp">>, IgnoreEls, _el); - {<<"FAMILY">>, <<"vcard-temp">>, _} -> - decode_vcard_FAMILY(<<"vcard-temp">>, IgnoreEls, _el); - {<<"FAMILY">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_FAMILY(<<"vcard-temp">>, IgnoreEls, _el); - {<<"X400">>, <<"vcard-temp">>, _} -> - decode_vcard_X400(<<"vcard-temp">>, IgnoreEls, _el); - {<<"X400">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_X400(<<"vcard-temp">>, IgnoreEls, _el); - {<<"INTERNET">>, <<"vcard-temp">>, _} -> - decode_vcard_INTERNET(<<"vcard-temp">>, IgnoreEls, _el); - {<<"INTERNET">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_INTERNET(<<"vcard-temp">>, IgnoreEls, _el); - {<<"PREF">>, <<"vcard-temp">>, _} -> - decode_vcard_PREF(<<"vcard-temp">>, IgnoreEls, _el); - {<<"PREF">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_PREF(<<"vcard-temp">>, IgnoreEls, _el); - {<<"INTL">>, <<"vcard-temp">>, _} -> - decode_vcard_INTL(<<"vcard-temp">>, IgnoreEls, _el); - {<<"INTL">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_INTL(<<"vcard-temp">>, IgnoreEls, _el); - {<<"DOM">>, <<"vcard-temp">>, _} -> - decode_vcard_DOM(<<"vcard-temp">>, IgnoreEls, _el); - {<<"DOM">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_DOM(<<"vcard-temp">>, IgnoreEls, _el); - {<<"PARCEL">>, <<"vcard-temp">>, _} -> - decode_vcard_PARCEL(<<"vcard-temp">>, IgnoreEls, _el); - {<<"PARCEL">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_PARCEL(<<"vcard-temp">>, IgnoreEls, _el); - {<<"POSTAL">>, <<"vcard-temp">>, _} -> - decode_vcard_POSTAL(<<"vcard-temp">>, IgnoreEls, _el); - {<<"POSTAL">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_POSTAL(<<"vcard-temp">>, IgnoreEls, _el); - {<<"PCS">>, <<"vcard-temp">>, _} -> - decode_vcard_PCS(<<"vcard-temp">>, IgnoreEls, _el); - {<<"PCS">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_PCS(<<"vcard-temp">>, IgnoreEls, _el); - {<<"ISDN">>, <<"vcard-temp">>, _} -> - decode_vcard_ISDN(<<"vcard-temp">>, IgnoreEls, _el); - {<<"ISDN">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_ISDN(<<"vcard-temp">>, IgnoreEls, _el); - {<<"MODEM">>, <<"vcard-temp">>, _} -> - decode_vcard_MODEM(<<"vcard-temp">>, IgnoreEls, _el); - {<<"MODEM">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_MODEM(<<"vcard-temp">>, IgnoreEls, _el); - {<<"BBS">>, <<"vcard-temp">>, _} -> - decode_vcard_BBS(<<"vcard-temp">>, IgnoreEls, _el); - {<<"BBS">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_BBS(<<"vcard-temp">>, IgnoreEls, _el); - {<<"VIDEO">>, <<"vcard-temp">>, _} -> - decode_vcard_VIDEO(<<"vcard-temp">>, IgnoreEls, _el); - {<<"VIDEO">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_VIDEO(<<"vcard-temp">>, IgnoreEls, _el); - {<<"CELL">>, <<"vcard-temp">>, _} -> - decode_vcard_CELL(<<"vcard-temp">>, IgnoreEls, _el); - {<<"CELL">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_CELL(<<"vcard-temp">>, IgnoreEls, _el); - {<<"MSG">>, <<"vcard-temp">>, _} -> - decode_vcard_MSG(<<"vcard-temp">>, IgnoreEls, _el); - {<<"MSG">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_MSG(<<"vcard-temp">>, IgnoreEls, _el); - {<<"PAGER">>, <<"vcard-temp">>, _} -> - decode_vcard_PAGER(<<"vcard-temp">>, IgnoreEls, _el); - {<<"PAGER">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_PAGER(<<"vcard-temp">>, IgnoreEls, _el); - {<<"FAX">>, <<"vcard-temp">>, _} -> - decode_vcard_FAX(<<"vcard-temp">>, IgnoreEls, _el); - {<<"FAX">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_FAX(<<"vcard-temp">>, IgnoreEls, _el); - {<<"VOICE">>, <<"vcard-temp">>, _} -> - decode_vcard_VOICE(<<"vcard-temp">>, IgnoreEls, _el); - {<<"VOICE">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_VOICE(<<"vcard-temp">>, IgnoreEls, _el); - {<<"WORK">>, <<"vcard-temp">>, _} -> - decode_vcard_WORK(<<"vcard-temp">>, IgnoreEls, _el); - {<<"WORK">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_WORK(<<"vcard-temp">>, IgnoreEls, _el); - {<<"HOME">>, <<"vcard-temp">>, _} -> - decode_vcard_HOME(<<"vcard-temp">>, IgnoreEls, _el); - {<<"HOME">>, <<>>, <<"vcard-temp">>} -> - decode_vcard_HOME(<<"vcard-temp">>, IgnoreEls, _el); - {<<"stream:error">>, <<"jabber:client">>, _} -> - decode_stream_error(<<"jabber:client">>, IgnoreEls, - _el); - {<<"stream:error">>, <<>>, <<"jabber:client">>} -> - decode_stream_error(<<"jabber:client">>, IgnoreEls, - _el); - {<<"stream:error">>, <<"jabber:server">>, _} -> - decode_stream_error(<<"jabber:server">>, IgnoreEls, - _el); - {<<"stream:error">>, <<>>, <<"jabber:server">>} -> - decode_stream_error(<<"jabber:server">>, IgnoreEls, - _el); - {<<"stream:error">>, <<"jabber:component:accept">>, - _} -> - decode_stream_error(<<"jabber:component:accept">>, - IgnoreEls, _el); - {<<"stream:error">>, <<>>, - <<"jabber:component:accept">>} -> - decode_stream_error(<<"jabber:component:accept">>, - IgnoreEls, _el); - {<<"unsupported-version">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - decode_stream_error_unsupported_version(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"unsupported-version">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - decode_stream_error_unsupported_version(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"unsupported-stanza-type">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - decode_stream_error_unsupported_stanza_type(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"unsupported-stanza-type">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - decode_stream_error_unsupported_stanza_type(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"unsupported-encoding">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - decode_stream_error_unsupported_encoding(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"unsupported-encoding">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - decode_stream_error_unsupported_encoding(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"undefined-condition">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - decode_stream_error_undefined_condition(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"undefined-condition">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - decode_stream_error_undefined_condition(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"system-shutdown">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - decode_stream_error_system_shutdown(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"system-shutdown">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - decode_stream_error_system_shutdown(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"see-other-host">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - decode_stream_error_see_other_host(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"see-other-host">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - decode_stream_error_see_other_host(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"restricted-xml">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - decode_stream_error_restricted_xml(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"restricted-xml">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - decode_stream_error_restricted_xml(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"resource-constraint">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - decode_stream_error_resource_constraint(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"resource-constraint">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - decode_stream_error_resource_constraint(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"reset">>, <<"urn:ietf:params:xml:ns:xmpp-streams">>, - _} -> - decode_stream_error_reset(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"reset">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - decode_stream_error_reset(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"remote-connection-failed">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - decode_stream_error_remote_connection_failed(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"remote-connection-failed">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - decode_stream_error_remote_connection_failed(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"policy-violation">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - decode_stream_error_policy_violation(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"policy-violation">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - decode_stream_error_policy_violation(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"not-well-formed">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - decode_stream_error_not_well_formed(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"not-well-formed">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - decode_stream_error_not_well_formed(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"not-authorized">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - decode_stream_error_not_authorized(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"not-authorized">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - decode_stream_error_not_authorized(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"invalid-xml">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - decode_stream_error_invalid_xml(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"invalid-xml">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - decode_stream_error_invalid_xml(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"invalid-namespace">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - decode_stream_error_invalid_namespace(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"invalid-namespace">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - decode_stream_error_invalid_namespace(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"invalid-id">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - decode_stream_error_invalid_id(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"invalid-id">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - decode_stream_error_invalid_id(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"invalid-from">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - decode_stream_error_invalid_from(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"invalid-from">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - decode_stream_error_invalid_from(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"internal-server-error">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - decode_stream_error_internal_server_error(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"internal-server-error">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - decode_stream_error_internal_server_error(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"improper-addressing">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - decode_stream_error_improper_addressing(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"improper-addressing">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - decode_stream_error_improper_addressing(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"host-unknown">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - decode_stream_error_host_unknown(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"host-unknown">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - decode_stream_error_host_unknown(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"host-gone">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - decode_stream_error_host_gone(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"host-gone">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - decode_stream_error_host_gone(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"connection-timeout">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - decode_stream_error_connection_timeout(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"connection-timeout">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - decode_stream_error_connection_timeout(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"conflict">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - decode_stream_error_conflict(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"conflict">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - decode_stream_error_conflict(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"bad-namespace-prefix">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - decode_stream_error_bad_namespace_prefix(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"bad-namespace-prefix">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - decode_stream_error_bad_namespace_prefix(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"bad-format">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - decode_stream_error_bad_format(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"bad-format">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - decode_stream_error_bad_format(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"text">>, <<"urn:ietf:params:xml:ns:xmpp-streams">>, - _} -> - decode_stream_error_text(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"text">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - decode_stream_error_text(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - IgnoreEls, _el); - {<<"time">>, <<"urn:xmpp:time">>, _} -> - decode_time(<<"urn:xmpp:time">>, IgnoreEls, _el); - {<<"time">>, <<>>, <<"urn:xmpp:time">>} -> - decode_time(<<"urn:xmpp:time">>, IgnoreEls, _el); - {<<"tzo">>, <<"urn:xmpp:time">>, _} -> - decode_time_tzo(<<"urn:xmpp:time">>, IgnoreEls, _el); - {<<"tzo">>, <<>>, <<"urn:xmpp:time">>} -> - decode_time_tzo(<<"urn:xmpp:time">>, IgnoreEls, _el); - {<<"utc">>, <<"urn:xmpp:time">>, _} -> - decode_time_utc(<<"urn:xmpp:time">>, IgnoreEls, _el); - {<<"utc">>, <<>>, <<"urn:xmpp:time">>} -> - decode_time_utc(<<"urn:xmpp:time">>, IgnoreEls, _el); - {<<"ping">>, <<"urn:xmpp:ping">>, _} -> - decode_ping(<<"urn:xmpp:ping">>, IgnoreEls, _el); - {<<"ping">>, <<>>, <<"urn:xmpp:ping">>} -> - decode_ping(<<"urn:xmpp:ping">>, IgnoreEls, _el); - {<<"session">>, - <<"urn:ietf:params:xml:ns:xmpp-session">>, _} -> - decode_session(<<"urn:ietf:params:xml:ns:xmpp-session">>, - IgnoreEls, _el); - {<<"session">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-session">>} -> - decode_session(<<"urn:ietf:params:xml:ns:xmpp-session">>, - IgnoreEls, _el); - {<<"optional">>, - <<"urn:ietf:params:xml:ns:xmpp-session">>, _} -> - decode_session_optional(<<"urn:ietf:params:xml:ns:xmpp-session">>, - IgnoreEls, _el); - {<<"optional">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-session">>} -> - decode_session_optional(<<"urn:ietf:params:xml:ns:xmpp-session">>, - IgnoreEls, _el); - {<<"query">>, <<"jabber:iq:register">>, _} -> - decode_register(<<"jabber:iq:register">>, IgnoreEls, - _el); - {<<"query">>, <<>>, <<"jabber:iq:register">>} -> - decode_register(<<"jabber:iq:register">>, IgnoreEls, - _el); - {<<"key">>, <<"jabber:iq:register">>, _} -> - decode_register_key(<<"jabber:iq:register">>, IgnoreEls, - _el); - {<<"key">>, <<>>, <<"jabber:iq:register">>} -> - decode_register_key(<<"jabber:iq:register">>, IgnoreEls, - _el); - {<<"text">>, <<"jabber:iq:register">>, _} -> - decode_register_text(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"text">>, <<>>, <<"jabber:iq:register">>} -> - decode_register_text(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"misc">>, <<"jabber:iq:register">>, _} -> - decode_register_misc(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"misc">>, <<>>, <<"jabber:iq:register">>} -> - decode_register_misc(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"date">>, <<"jabber:iq:register">>, _} -> - decode_register_date(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"date">>, <<>>, <<"jabber:iq:register">>} -> - decode_register_date(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"url">>, <<"jabber:iq:register">>, _} -> - decode_register_url(<<"jabber:iq:register">>, IgnoreEls, - _el); - {<<"url">>, <<>>, <<"jabber:iq:register">>} -> - decode_register_url(<<"jabber:iq:register">>, IgnoreEls, - _el); - {<<"phone">>, <<"jabber:iq:register">>, _} -> - decode_register_phone(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"phone">>, <<>>, <<"jabber:iq:register">>} -> - decode_register_phone(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"zip">>, <<"jabber:iq:register">>, _} -> - decode_register_zip(<<"jabber:iq:register">>, IgnoreEls, - _el); - {<<"zip">>, <<>>, <<"jabber:iq:register">>} -> - decode_register_zip(<<"jabber:iq:register">>, IgnoreEls, - _el); - {<<"state">>, <<"jabber:iq:register">>, _} -> - decode_register_state(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"state">>, <<>>, <<"jabber:iq:register">>} -> - decode_register_state(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"city">>, <<"jabber:iq:register">>, _} -> - decode_register_city(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"city">>, <<>>, <<"jabber:iq:register">>} -> - decode_register_city(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"address">>, <<"jabber:iq:register">>, _} -> - decode_register_address(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"address">>, <<>>, <<"jabber:iq:register">>} -> - decode_register_address(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"email">>, <<"jabber:iq:register">>, _} -> - decode_register_email(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"email">>, <<>>, <<"jabber:iq:register">>} -> - decode_register_email(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"last">>, <<"jabber:iq:register">>, _} -> - decode_register_last(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"last">>, <<>>, <<"jabber:iq:register">>} -> - decode_register_last(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"first">>, <<"jabber:iq:register">>, _} -> - decode_register_first(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"first">>, <<>>, <<"jabber:iq:register">>} -> - decode_register_first(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"name">>, <<"jabber:iq:register">>, _} -> - decode_register_name(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"name">>, <<>>, <<"jabber:iq:register">>} -> - decode_register_name(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"password">>, <<"jabber:iq:register">>, _} -> - decode_register_password(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"password">>, <<>>, <<"jabber:iq:register">>} -> - decode_register_password(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"nick">>, <<"jabber:iq:register">>, _} -> - decode_register_nick(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"nick">>, <<>>, <<"jabber:iq:register">>} -> - decode_register_nick(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"username">>, <<"jabber:iq:register">>, _} -> - decode_register_username(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"username">>, <<>>, <<"jabber:iq:register">>} -> - decode_register_username(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"instructions">>, <<"jabber:iq:register">>, _} -> - decode_register_instructions(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"instructions">>, <<>>, <<"jabber:iq:register">>} -> - decode_register_instructions(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"remove">>, <<"jabber:iq:register">>, _} -> - decode_register_remove(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"remove">>, <<>>, <<"jabber:iq:register">>} -> - decode_register_remove(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"registered">>, <<"jabber:iq:register">>, _} -> - decode_register_registered(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"registered">>, <<>>, <<"jabber:iq:register">>} -> - decode_register_registered(<<"jabber:iq:register">>, - IgnoreEls, _el); - {<<"register">>, - <<"http://jabber.org/features/iq-register">>, _} -> - decode_feature_register(<<"http://jabber.org/features/iq-register">>, - IgnoreEls, _el); - {<<"register">>, <<>>, - <<"http://jabber.org/features/iq-register">>} -> - decode_feature_register(<<"http://jabber.org/features/iq-register">>, - IgnoreEls, _el); - {<<"c">>, <<"http://jabber.org/protocol/caps">>, _} -> - decode_caps(<<"http://jabber.org/protocol/caps">>, - IgnoreEls, _el); - {<<"c">>, <<>>, - <<"http://jabber.org/protocol/caps">>} -> - decode_caps(<<"http://jabber.org/protocol/caps">>, - IgnoreEls, _el); - {<<"ack">>, <<"p1:ack">>, _} -> - decode_p1_ack(<<"p1:ack">>, IgnoreEls, _el); - {<<"ack">>, <<>>, <<"p1:ack">>} -> - decode_p1_ack(<<"p1:ack">>, IgnoreEls, _el); - {<<"rebind">>, <<"p1:rebind">>, _} -> - decode_p1_rebind(<<"p1:rebind">>, IgnoreEls, _el); - {<<"rebind">>, <<>>, <<"p1:rebind">>} -> - decode_p1_rebind(<<"p1:rebind">>, IgnoreEls, _el); - {<<"push">>, <<"p1:push">>, _} -> - decode_p1_push(<<"p1:push">>, IgnoreEls, _el); - {<<"push">>, <<>>, <<"p1:push">>} -> - decode_p1_push(<<"p1:push">>, IgnoreEls, _el); - {<<"stream:features">>, <<"jabber:client">>, _} -> - decode_stream_features(<<"jabber:client">>, IgnoreEls, - _el); - {<<"stream:features">>, <<>>, <<"jabber:client">>} -> - decode_stream_features(<<"jabber:client">>, IgnoreEls, - _el); - {<<"stream:features">>, <<"jabber:server">>, _} -> - decode_stream_features(<<"jabber:server">>, IgnoreEls, - _el); - {<<"stream:features">>, <<>>, <<"jabber:server">>} -> - decode_stream_features(<<"jabber:server">>, IgnoreEls, - _el); - {<<"compression">>, - <<"http://jabber.org/features/compress">>, _} -> - decode_compression(<<"http://jabber.org/features/compress">>, - IgnoreEls, _el); - {<<"compression">>, <<>>, - <<"http://jabber.org/features/compress">>} -> - decode_compression(<<"http://jabber.org/features/compress">>, - IgnoreEls, _el); - {<<"method">>, - <<"http://jabber.org/features/compress">>, _} -> - decode_compression_method(<<"http://jabber.org/features/compress">>, - IgnoreEls, _el); - {<<"method">>, <<>>, - <<"http://jabber.org/features/compress">>} -> - decode_compression_method(<<"http://jabber.org/features/compress">>, - IgnoreEls, _el); - {<<"compressed">>, - <<"http://jabber.org/protocol/compress">>, _} -> - decode_compressed(<<"http://jabber.org/protocol/compress">>, - IgnoreEls, _el); - {<<"compressed">>, <<>>, - <<"http://jabber.org/protocol/compress">>} -> - decode_compressed(<<"http://jabber.org/protocol/compress">>, - IgnoreEls, _el); - {<<"compress">>, - <<"http://jabber.org/protocol/compress">>, _} -> - decode_compress(<<"http://jabber.org/protocol/compress">>, - IgnoreEls, _el); - {<<"compress">>, <<>>, - <<"http://jabber.org/protocol/compress">>} -> - decode_compress(<<"http://jabber.org/protocol/compress">>, - IgnoreEls, _el); - {<<"method">>, - <<"http://jabber.org/protocol/compress">>, _} -> - decode_compress_method(<<"http://jabber.org/protocol/compress">>, - IgnoreEls, _el); - {<<"method">>, <<>>, - <<"http://jabber.org/protocol/compress">>} -> - decode_compress_method(<<"http://jabber.org/protocol/compress">>, - IgnoreEls, _el); - {<<"failure">>, - <<"http://jabber.org/protocol/compress">>, _} -> - decode_compress_failure(<<"http://jabber.org/protocol/compress">>, - IgnoreEls, _el); - {<<"failure">>, <<>>, - <<"http://jabber.org/protocol/compress">>} -> - decode_compress_failure(<<"http://jabber.org/protocol/compress">>, - IgnoreEls, _el); - {<<"unsupported-method">>, - <<"http://jabber.org/protocol/compress">>, _} -> - decode_compress_failure_unsupported_method(<<"http://jabber.org/protocol/compress">>, - IgnoreEls, _el); - {<<"unsupported-method">>, <<>>, - <<"http://jabber.org/protocol/compress">>} -> - decode_compress_failure_unsupported_method(<<"http://jabber.org/protocol/compress">>, - IgnoreEls, _el); - {<<"processing-failed">>, - <<"http://jabber.org/protocol/compress">>, _} -> - decode_compress_failure_processing_failed(<<"http://jabber.org/protocol/compress">>, - IgnoreEls, _el); - {<<"processing-failed">>, <<>>, - <<"http://jabber.org/protocol/compress">>} -> - decode_compress_failure_processing_failed(<<"http://jabber.org/protocol/compress">>, - IgnoreEls, _el); - {<<"setup-failed">>, - <<"http://jabber.org/protocol/compress">>, _} -> - decode_compress_failure_setup_failed(<<"http://jabber.org/protocol/compress">>, - IgnoreEls, _el); - {<<"setup-failed">>, <<>>, - <<"http://jabber.org/protocol/compress">>} -> - decode_compress_failure_setup_failed(<<"http://jabber.org/protocol/compress">>, - IgnoreEls, _el); - {<<"failure">>, <<"urn:ietf:params:xml:ns:xmpp-tls">>, - _} -> - decode_starttls_failure(<<"urn:ietf:params:xml:ns:xmpp-tls">>, - IgnoreEls, _el); - {<<"failure">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-tls">>} -> - decode_starttls_failure(<<"urn:ietf:params:xml:ns:xmpp-tls">>, - IgnoreEls, _el); - {<<"proceed">>, <<"urn:ietf:params:xml:ns:xmpp-tls">>, - _} -> - decode_starttls_proceed(<<"urn:ietf:params:xml:ns:xmpp-tls">>, - IgnoreEls, _el); - {<<"proceed">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-tls">>} -> - decode_starttls_proceed(<<"urn:ietf:params:xml:ns:xmpp-tls">>, - IgnoreEls, _el); - {<<"starttls">>, <<"urn:ietf:params:xml:ns:xmpp-tls">>, - _} -> - decode_starttls(<<"urn:ietf:params:xml:ns:xmpp-tls">>, - IgnoreEls, _el); - {<<"starttls">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-tls">>} -> - decode_starttls(<<"urn:ietf:params:xml:ns:xmpp-tls">>, - IgnoreEls, _el); - {<<"required">>, <<"urn:ietf:params:xml:ns:xmpp-tls">>, - _} -> - decode_starttls_required(<<"urn:ietf:params:xml:ns:xmpp-tls">>, - IgnoreEls, _el); - {<<"required">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-tls">>} -> - decode_starttls_required(<<"urn:ietf:params:xml:ns:xmpp-tls">>, - IgnoreEls, _el); - {<<"mechanisms">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - decode_sasl_mechanisms(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"mechanisms">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - decode_sasl_mechanisms(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"mechanism">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - decode_sasl_mechanism(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"mechanism">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - decode_sasl_mechanism(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"failure">>, <<"urn:ietf:params:xml:ns:xmpp-sasl">>, - _} -> - decode_sasl_failure(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"failure">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - decode_sasl_failure(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"temporary-auth-failure">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - decode_sasl_failure_temporary_auth_failure(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"temporary-auth-failure">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - decode_sasl_failure_temporary_auth_failure(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"bad-protocol">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - decode_sasl_failure_bad_protocol(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"bad-protocol">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - decode_sasl_failure_bad_protocol(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"not-authorized">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - decode_sasl_failure_not_authorized(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"not-authorized">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - decode_sasl_failure_not_authorized(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"mechanism-too-weak">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - decode_sasl_failure_mechanism_too_weak(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"mechanism-too-weak">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - decode_sasl_failure_mechanism_too_weak(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"malformed-request">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - decode_sasl_failure_malformed_request(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"malformed-request">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - decode_sasl_failure_malformed_request(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"invalid-mechanism">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - decode_sasl_failure_invalid_mechanism(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"invalid-mechanism">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - decode_sasl_failure_invalid_mechanism(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"invalid-authzid">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - decode_sasl_failure_invalid_authzid(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"invalid-authzid">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - decode_sasl_failure_invalid_authzid(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"incorrect-encoding">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - decode_sasl_failure_incorrect_encoding(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"incorrect-encoding">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - decode_sasl_failure_incorrect_encoding(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"encryption-required">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - decode_sasl_failure_encryption_required(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"encryption-required">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - decode_sasl_failure_encryption_required(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"credentials-expired">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - decode_sasl_failure_credentials_expired(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"credentials-expired">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - decode_sasl_failure_credentials_expired(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"account-disabled">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - decode_sasl_failure_account_disabled(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"account-disabled">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - decode_sasl_failure_account_disabled(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"aborted">>, <<"urn:ietf:params:xml:ns:xmpp-sasl">>, - _} -> - decode_sasl_failure_aborted(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"aborted">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - decode_sasl_failure_aborted(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"text">>, <<"urn:ietf:params:xml:ns:xmpp-sasl">>, - _} -> - decode_sasl_failure_text(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"text">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - decode_sasl_failure_text(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"success">>, <<"urn:ietf:params:xml:ns:xmpp-sasl">>, - _} -> - decode_sasl_success(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"success">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - decode_sasl_success(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"response">>, <<"urn:ietf:params:xml:ns:xmpp-sasl">>, - _} -> - decode_sasl_response(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"response">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - decode_sasl_response(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"challenge">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - decode_sasl_challenge(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"challenge">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - decode_sasl_challenge(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"abort">>, <<"urn:ietf:params:xml:ns:xmpp-sasl">>, - _} -> - decode_sasl_abort(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"abort">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - decode_sasl_abort(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"auth">>, <<"urn:ietf:params:xml:ns:xmpp-sasl">>, - _} -> - decode_sasl_auth(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"auth">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - decode_sasl_auth(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - IgnoreEls, _el); - {<<"query">>, <<"jabber:iq:auth">>, _} -> - decode_legacy_auth(<<"jabber:iq:auth">>, IgnoreEls, - _el); - {<<"query">>, <<>>, <<"jabber:iq:auth">>} -> - decode_legacy_auth(<<"jabber:iq:auth">>, IgnoreEls, - _el); - {<<"resource">>, <<"jabber:iq:auth">>, _} -> - decode_legacy_auth_resource(<<"jabber:iq:auth">>, - IgnoreEls, _el); - {<<"resource">>, <<>>, <<"jabber:iq:auth">>} -> - decode_legacy_auth_resource(<<"jabber:iq:auth">>, - IgnoreEls, _el); - {<<"digest">>, <<"jabber:iq:auth">>, _} -> - decode_legacy_auth_digest(<<"jabber:iq:auth">>, - IgnoreEls, _el); - {<<"digest">>, <<>>, <<"jabber:iq:auth">>} -> - decode_legacy_auth_digest(<<"jabber:iq:auth">>, - IgnoreEls, _el); - {<<"password">>, <<"jabber:iq:auth">>, _} -> - decode_legacy_auth_password(<<"jabber:iq:auth">>, - IgnoreEls, _el); - {<<"password">>, <<>>, <<"jabber:iq:auth">>} -> - decode_legacy_auth_password(<<"jabber:iq:auth">>, - IgnoreEls, _el); - {<<"username">>, <<"jabber:iq:auth">>, _} -> - decode_legacy_auth_username(<<"jabber:iq:auth">>, - IgnoreEls, _el); - {<<"username">>, <<>>, <<"jabber:iq:auth">>} -> - decode_legacy_auth_username(<<"jabber:iq:auth">>, - IgnoreEls, _el); - {<<"bind">>, <<"urn:ietf:params:xml:ns:xmpp-bind">>, - _} -> - decode_bind(<<"urn:ietf:params:xml:ns:xmpp-bind">>, - IgnoreEls, _el); - {<<"bind">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-bind">>} -> - decode_bind(<<"urn:ietf:params:xml:ns:xmpp-bind">>, - IgnoreEls, _el); - {<<"resource">>, <<"urn:ietf:params:xml:ns:xmpp-bind">>, - _} -> - decode_bind_resource(<<"urn:ietf:params:xml:ns:xmpp-bind">>, - IgnoreEls, _el); - {<<"resource">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-bind">>} -> - decode_bind_resource(<<"urn:ietf:params:xml:ns:xmpp-bind">>, - IgnoreEls, _el); - {<<"jid">>, <<"urn:ietf:params:xml:ns:xmpp-bind">>, - _} -> - decode_bind_jid(<<"urn:ietf:params:xml:ns:xmpp-bind">>, - IgnoreEls, _el); - {<<"jid">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-bind">>} -> - decode_bind_jid(<<"urn:ietf:params:xml:ns:xmpp-bind">>, - IgnoreEls, _el); - {<<"error">>, <<"jabber:client">>, _} -> - decode_error(<<"jabber:client">>, IgnoreEls, _el); - {<<"error">>, <<>>, <<"jabber:client">>} -> - decode_error(<<"jabber:client">>, IgnoreEls, _el); - {<<"error">>, <<"jabber:server">>, _} -> - decode_error(<<"jabber:server">>, IgnoreEls, _el); - {<<"error">>, <<>>, <<"jabber:server">>} -> - decode_error(<<"jabber:server">>, IgnoreEls, _el); - {<<"error">>, <<"jabber:component:accept">>, _} -> - decode_error(<<"jabber:component:accept">>, IgnoreEls, - _el); - {<<"error">>, <<>>, <<"jabber:component:accept">>} -> - decode_error(<<"jabber:component:accept">>, IgnoreEls, - _el); - {<<"text">>, <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - _} -> - decode_error_text(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"text">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - decode_error_text(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"unexpected-request">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - decode_error_unexpected_request(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"unexpected-request">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - decode_error_unexpected_request(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"undefined-condition">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - decode_error_undefined_condition(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"undefined-condition">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - decode_error_undefined_condition(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"subscription-required">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - decode_error_subscription_required(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"subscription-required">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - decode_error_subscription_required(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"service-unavailable">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - decode_error_service_unavailable(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"service-unavailable">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - decode_error_service_unavailable(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"resource-constraint">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - decode_error_resource_constraint(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"resource-constraint">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - decode_error_resource_constraint(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"remote-server-timeout">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - decode_error_remote_server_timeout(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"remote-server-timeout">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - decode_error_remote_server_timeout(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"remote-server-not-found">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - decode_error_remote_server_not_found(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"remote-server-not-found">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - decode_error_remote_server_not_found(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"registration-required">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - decode_error_registration_required(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"registration-required">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - decode_error_registration_required(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"redirect">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - decode_error_redirect(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"redirect">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - decode_error_redirect(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"recipient-unavailable">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - decode_error_recipient_unavailable(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"recipient-unavailable">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - decode_error_recipient_unavailable(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"policy-violation">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - decode_error_policy_violation(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"policy-violation">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - decode_error_policy_violation(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"payment-required">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - decode_error_payment_required(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"payment-required">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - decode_error_payment_required(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"not-authorized">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - decode_error_not_authorized(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"not-authorized">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - decode_error_not_authorized(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"not-allowed">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - decode_error_not_allowed(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"not-allowed">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - decode_error_not_allowed(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"not-acceptable">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - decode_error_not_acceptable(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"not-acceptable">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - decode_error_not_acceptable(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"jid-malformed">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - decode_error_jid_malformed(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"jid-malformed">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - decode_error_jid_malformed(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"item-not-found">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - decode_error_item_not_found(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"item-not-found">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - decode_error_item_not_found(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"internal-server-error">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - decode_error_internal_server_error(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"internal-server-error">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - decode_error_internal_server_error(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"gone">>, <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - _} -> - decode_error_gone(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"gone">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - decode_error_gone(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"forbidden">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - decode_error_forbidden(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"forbidden">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - decode_error_forbidden(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"feature-not-implemented">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - decode_error_feature_not_implemented(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"feature-not-implemented">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - decode_error_feature_not_implemented(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"conflict">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - decode_error_conflict(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"conflict">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - decode_error_conflict(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"bad-request">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - decode_error_bad_request(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"bad-request">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - decode_error_bad_request(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - IgnoreEls, _el); - {<<"presence">>, <<"jabber:client">>, _} -> - decode_presence(<<"jabber:client">>, IgnoreEls, _el); - {<<"presence">>, <<>>, <<"jabber:client">>} -> - decode_presence(<<"jabber:client">>, IgnoreEls, _el); - {<<"presence">>, <<"jabber:server">>, _} -> - decode_presence(<<"jabber:server">>, IgnoreEls, _el); - {<<"presence">>, <<>>, <<"jabber:server">>} -> - decode_presence(<<"jabber:server">>, IgnoreEls, _el); - {<<"presence">>, <<"jabber:component:accept">>, _} -> - decode_presence(<<"jabber:component:accept">>, - IgnoreEls, _el); - {<<"presence">>, <<>>, <<"jabber:component:accept">>} -> - decode_presence(<<"jabber:component:accept">>, - IgnoreEls, _el); - {<<"priority">>, <<"jabber:client">>, _} -> - decode_presence_priority(<<"jabber:client">>, IgnoreEls, - _el); - {<<"priority">>, <<>>, <<"jabber:client">>} -> - decode_presence_priority(<<"jabber:client">>, IgnoreEls, - _el); - {<<"priority">>, <<"jabber:server">>, _} -> - decode_presence_priority(<<"jabber:server">>, IgnoreEls, - _el); - {<<"priority">>, <<>>, <<"jabber:server">>} -> - decode_presence_priority(<<"jabber:server">>, IgnoreEls, - _el); - {<<"priority">>, <<"jabber:component:accept">>, _} -> - decode_presence_priority(<<"jabber:component:accept">>, - IgnoreEls, _el); - {<<"priority">>, <<>>, <<"jabber:component:accept">>} -> - decode_presence_priority(<<"jabber:component:accept">>, - IgnoreEls, _el); - {<<"status">>, <<"jabber:client">>, _} -> - decode_presence_status(<<"jabber:client">>, IgnoreEls, - _el); - {<<"status">>, <<>>, <<"jabber:client">>} -> - decode_presence_status(<<"jabber:client">>, IgnoreEls, - _el); - {<<"status">>, <<"jabber:server">>, _} -> - decode_presence_status(<<"jabber:server">>, IgnoreEls, - _el); - {<<"status">>, <<>>, <<"jabber:server">>} -> - decode_presence_status(<<"jabber:server">>, IgnoreEls, - _el); - {<<"status">>, <<"jabber:component:accept">>, _} -> - decode_presence_status(<<"jabber:component:accept">>, - IgnoreEls, _el); - {<<"status">>, <<>>, <<"jabber:component:accept">>} -> - decode_presence_status(<<"jabber:component:accept">>, - IgnoreEls, _el); - {<<"show">>, <<"jabber:client">>, _} -> - decode_presence_show(<<"jabber:client">>, IgnoreEls, - _el); - {<<"show">>, <<>>, <<"jabber:client">>} -> - decode_presence_show(<<"jabber:client">>, IgnoreEls, - _el); - {<<"show">>, <<"jabber:server">>, _} -> - decode_presence_show(<<"jabber:server">>, IgnoreEls, - _el); - {<<"show">>, <<>>, <<"jabber:server">>} -> - decode_presence_show(<<"jabber:server">>, IgnoreEls, - _el); - {<<"show">>, <<"jabber:component:accept">>, _} -> - decode_presence_show(<<"jabber:component:accept">>, - IgnoreEls, _el); - {<<"show">>, <<>>, <<"jabber:component:accept">>} -> - decode_presence_show(<<"jabber:component:accept">>, - IgnoreEls, _el); - {<<"message">>, <<"jabber:client">>, _} -> - decode_message(<<"jabber:client">>, IgnoreEls, _el); - {<<"message">>, <<>>, <<"jabber:client">>} -> - decode_message(<<"jabber:client">>, IgnoreEls, _el); - {<<"message">>, <<"jabber:server">>, _} -> - decode_message(<<"jabber:server">>, IgnoreEls, _el); - {<<"message">>, <<>>, <<"jabber:server">>} -> - decode_message(<<"jabber:server">>, IgnoreEls, _el); - {<<"message">>, <<"jabber:component:accept">>, _} -> - decode_message(<<"jabber:component:accept">>, IgnoreEls, - _el); - {<<"message">>, <<>>, <<"jabber:component:accept">>} -> - decode_message(<<"jabber:component:accept">>, IgnoreEls, - _el); - {<<"thread">>, <<"jabber:client">>, _} -> - decode_message_thread(<<"jabber:client">>, IgnoreEls, - _el); - {<<"thread">>, <<>>, <<"jabber:client">>} -> - decode_message_thread(<<"jabber:client">>, IgnoreEls, - _el); - {<<"thread">>, <<"jabber:server">>, _} -> - decode_message_thread(<<"jabber:server">>, IgnoreEls, - _el); - {<<"thread">>, <<>>, <<"jabber:server">>} -> - decode_message_thread(<<"jabber:server">>, IgnoreEls, - _el); - {<<"thread">>, <<"jabber:component:accept">>, _} -> - decode_message_thread(<<"jabber:component:accept">>, - IgnoreEls, _el); - {<<"thread">>, <<>>, <<"jabber:component:accept">>} -> - decode_message_thread(<<"jabber:component:accept">>, - IgnoreEls, _el); - {<<"body">>, <<"jabber:client">>, _} -> - decode_message_body(<<"jabber:client">>, IgnoreEls, - _el); - {<<"body">>, <<>>, <<"jabber:client">>} -> - decode_message_body(<<"jabber:client">>, IgnoreEls, - _el); - {<<"body">>, <<"jabber:server">>, _} -> - decode_message_body(<<"jabber:server">>, IgnoreEls, - _el); - {<<"body">>, <<>>, <<"jabber:server">>} -> - decode_message_body(<<"jabber:server">>, IgnoreEls, - _el); - {<<"body">>, <<"jabber:component:accept">>, _} -> - decode_message_body(<<"jabber:component:accept">>, - IgnoreEls, _el); - {<<"body">>, <<>>, <<"jabber:component:accept">>} -> - decode_message_body(<<"jabber:component:accept">>, - IgnoreEls, _el); - {<<"subject">>, <<"jabber:client">>, _} -> - decode_message_subject(<<"jabber:client">>, IgnoreEls, - _el); - {<<"subject">>, <<>>, <<"jabber:client">>} -> - decode_message_subject(<<"jabber:client">>, IgnoreEls, - _el); - {<<"subject">>, <<"jabber:server">>, _} -> - decode_message_subject(<<"jabber:server">>, IgnoreEls, - _el); - {<<"subject">>, <<>>, <<"jabber:server">>} -> - decode_message_subject(<<"jabber:server">>, IgnoreEls, - _el); - {<<"subject">>, <<"jabber:component:accept">>, _} -> - decode_message_subject(<<"jabber:component:accept">>, - IgnoreEls, _el); - {<<"subject">>, <<>>, <<"jabber:component:accept">>} -> - decode_message_subject(<<"jabber:component:accept">>, - IgnoreEls, _el); - {<<"iq">>, <<"jabber:client">>, _} -> - decode_iq(<<"jabber:client">>, IgnoreEls, _el); - {<<"iq">>, <<>>, <<"jabber:client">>} -> - decode_iq(<<"jabber:client">>, IgnoreEls, _el); - {<<"iq">>, <<"jabber:server">>, _} -> - decode_iq(<<"jabber:server">>, IgnoreEls, _el); - {<<"iq">>, <<>>, <<"jabber:server">>} -> - decode_iq(<<"jabber:server">>, IgnoreEls, _el); - {<<"iq">>, <<"jabber:component:accept">>, _} -> - decode_iq(<<"jabber:component:accept">>, IgnoreEls, - _el); - {<<"iq">>, <<>>, <<"jabber:component:accept">>} -> - decode_iq(<<"jabber:component:accept">>, IgnoreEls, - _el); - {<<"query">>, <<"http://jabber.org/protocol/stats">>, - _} -> - decode_stats(<<"http://jabber.org/protocol/stats">>, - IgnoreEls, _el); - {<<"query">>, <<>>, - <<"http://jabber.org/protocol/stats">>} -> - decode_stats(<<"http://jabber.org/protocol/stats">>, - IgnoreEls, _el); - {<<"stat">>, <<"http://jabber.org/protocol/stats">>, - _} -> - decode_stat(<<"http://jabber.org/protocol/stats">>, - IgnoreEls, _el); - {<<"stat">>, <<>>, - <<"http://jabber.org/protocol/stats">>} -> - decode_stat(<<"http://jabber.org/protocol/stats">>, - IgnoreEls, _el); - {<<"error">>, <<"http://jabber.org/protocol/stats">>, - _} -> - decode_stat_error(<<"http://jabber.org/protocol/stats">>, - IgnoreEls, _el); - {<<"error">>, <<>>, - <<"http://jabber.org/protocol/stats">>} -> - decode_stat_error(<<"http://jabber.org/protocol/stats">>, - IgnoreEls, _el); - {<<"storage">>, <<"storage:bookmarks">>, _} -> - decode_bookmarks_storage(<<"storage:bookmarks">>, - IgnoreEls, _el); - {<<"storage">>, <<>>, <<"storage:bookmarks">>} -> - decode_bookmarks_storage(<<"storage:bookmarks">>, - IgnoreEls, _el); - {<<"url">>, <<"storage:bookmarks">>, _} -> - decode_bookmark_url(<<"storage:bookmarks">>, IgnoreEls, - _el); - {<<"url">>, <<>>, <<"storage:bookmarks">>} -> - decode_bookmark_url(<<"storage:bookmarks">>, IgnoreEls, - _el); - {<<"conference">>, <<"storage:bookmarks">>, _} -> - decode_bookmark_conference(<<"storage:bookmarks">>, - IgnoreEls, _el); - {<<"conference">>, <<>>, <<"storage:bookmarks">>} -> - decode_bookmark_conference(<<"storage:bookmarks">>, - IgnoreEls, _el); - {<<"password">>, <<"storage:bookmarks">>, _} -> - decode_conference_password(<<"storage:bookmarks">>, - IgnoreEls, _el); - {<<"password">>, <<>>, <<"storage:bookmarks">>} -> - decode_conference_password(<<"storage:bookmarks">>, - IgnoreEls, _el); - {<<"nick">>, <<"storage:bookmarks">>, _} -> - decode_conference_nick(<<"storage:bookmarks">>, - IgnoreEls, _el); - {<<"nick">>, <<>>, <<"storage:bookmarks">>} -> - decode_conference_nick(<<"storage:bookmarks">>, - IgnoreEls, _el); - {<<"query">>, <<"jabber:iq:private">>, _} -> - decode_private(<<"jabber:iq:private">>, IgnoreEls, _el); - {<<"query">>, <<>>, <<"jabber:iq:private">>} -> - decode_private(<<"jabber:iq:private">>, IgnoreEls, _el); - {<<"query">>, - <<"http://jabber.org/protocol/disco#items">>, _} -> - decode_disco_items(<<"http://jabber.org/protocol/disco#items">>, - IgnoreEls, _el); - {<<"query">>, <<>>, - <<"http://jabber.org/protocol/disco#items">>} -> - decode_disco_items(<<"http://jabber.org/protocol/disco#items">>, - IgnoreEls, _el); - {<<"item">>, - <<"http://jabber.org/protocol/disco#items">>, _} -> - decode_disco_item(<<"http://jabber.org/protocol/disco#items">>, - IgnoreEls, _el); - {<<"item">>, <<>>, - <<"http://jabber.org/protocol/disco#items">>} -> - decode_disco_item(<<"http://jabber.org/protocol/disco#items">>, - IgnoreEls, _el); - {<<"query">>, - <<"http://jabber.org/protocol/disco#info">>, _} -> - decode_disco_info(<<"http://jabber.org/protocol/disco#info">>, - IgnoreEls, _el); - {<<"query">>, <<>>, - <<"http://jabber.org/protocol/disco#info">>} -> - decode_disco_info(<<"http://jabber.org/protocol/disco#info">>, - IgnoreEls, _el); - {<<"feature">>, - <<"http://jabber.org/protocol/disco#info">>, _} -> - decode_disco_feature(<<"http://jabber.org/protocol/disco#info">>, - IgnoreEls, _el); - {<<"feature">>, <<>>, - <<"http://jabber.org/protocol/disco#info">>} -> - decode_disco_feature(<<"http://jabber.org/protocol/disco#info">>, - IgnoreEls, _el); - {<<"identity">>, - <<"http://jabber.org/protocol/disco#info">>, _} -> - decode_disco_identity(<<"http://jabber.org/protocol/disco#info">>, - IgnoreEls, _el); - {<<"identity">>, <<>>, - <<"http://jabber.org/protocol/disco#info">>} -> - decode_disco_identity(<<"http://jabber.org/protocol/disco#info">>, - IgnoreEls, _el); - {<<"blocklist">>, <<"urn:xmpp:blocking">>, _} -> - decode_block_list(<<"urn:xmpp:blocking">>, IgnoreEls, - _el); - {<<"blocklist">>, <<>>, <<"urn:xmpp:blocking">>} -> - decode_block_list(<<"urn:xmpp:blocking">>, IgnoreEls, - _el); - {<<"unblock">>, <<"urn:xmpp:blocking">>, _} -> - decode_unblock(<<"urn:xmpp:blocking">>, IgnoreEls, _el); - {<<"unblock">>, <<>>, <<"urn:xmpp:blocking">>} -> - decode_unblock(<<"urn:xmpp:blocking">>, IgnoreEls, _el); - {<<"block">>, <<"urn:xmpp:blocking">>, _} -> - decode_block(<<"urn:xmpp:blocking">>, IgnoreEls, _el); - {<<"block">>, <<>>, <<"urn:xmpp:blocking">>} -> - decode_block(<<"urn:xmpp:blocking">>, IgnoreEls, _el); - {<<"item">>, <<"urn:xmpp:blocking">>, _} -> - decode_block_item(<<"urn:xmpp:blocking">>, IgnoreEls, - _el); - {<<"item">>, <<>>, <<"urn:xmpp:blocking">>} -> - decode_block_item(<<"urn:xmpp:blocking">>, IgnoreEls, - _el); - {<<"query">>, <<"jabber:iq:privacy">>, _} -> - decode_privacy(<<"jabber:iq:privacy">>, IgnoreEls, _el); - {<<"query">>, <<>>, <<"jabber:iq:privacy">>} -> - decode_privacy(<<"jabber:iq:privacy">>, IgnoreEls, _el); - {<<"active">>, <<"jabber:iq:privacy">>, _} -> - decode_privacy_active_list(<<"jabber:iq:privacy">>, - IgnoreEls, _el); - {<<"active">>, <<>>, <<"jabber:iq:privacy">>} -> - decode_privacy_active_list(<<"jabber:iq:privacy">>, - IgnoreEls, _el); - {<<"default">>, <<"jabber:iq:privacy">>, _} -> - decode_privacy_default_list(<<"jabber:iq:privacy">>, - IgnoreEls, _el); - {<<"default">>, <<>>, <<"jabber:iq:privacy">>} -> - decode_privacy_default_list(<<"jabber:iq:privacy">>, - IgnoreEls, _el); - {<<"list">>, <<"jabber:iq:privacy">>, _} -> - decode_privacy_list(<<"jabber:iq:privacy">>, IgnoreEls, - _el); - {<<"list">>, <<>>, <<"jabber:iq:privacy">>} -> - decode_privacy_list(<<"jabber:iq:privacy">>, IgnoreEls, - _el); - {<<"item">>, <<"jabber:iq:privacy">>, _} -> - decode_privacy_item(<<"jabber:iq:privacy">>, IgnoreEls, - _el); - {<<"item">>, <<>>, <<"jabber:iq:privacy">>} -> - decode_privacy_item(<<"jabber:iq:privacy">>, IgnoreEls, - _el); - {<<"presence-out">>, <<"jabber:iq:privacy">>, _} -> - decode_privacy_presence_out(<<"jabber:iq:privacy">>, - IgnoreEls, _el); - {<<"presence-out">>, <<>>, <<"jabber:iq:privacy">>} -> - decode_privacy_presence_out(<<"jabber:iq:privacy">>, - IgnoreEls, _el); - {<<"presence-in">>, <<"jabber:iq:privacy">>, _} -> - decode_privacy_presence_in(<<"jabber:iq:privacy">>, - IgnoreEls, _el); - {<<"presence-in">>, <<>>, <<"jabber:iq:privacy">>} -> - decode_privacy_presence_in(<<"jabber:iq:privacy">>, - IgnoreEls, _el); - {<<"iq">>, <<"jabber:iq:privacy">>, _} -> - decode_privacy_iq(<<"jabber:iq:privacy">>, IgnoreEls, - _el); - {<<"iq">>, <<>>, <<"jabber:iq:privacy">>} -> - decode_privacy_iq(<<"jabber:iq:privacy">>, IgnoreEls, - _el); - {<<"message">>, <<"jabber:iq:privacy">>, _} -> - decode_privacy_message(<<"jabber:iq:privacy">>, - IgnoreEls, _el); - {<<"message">>, <<>>, <<"jabber:iq:privacy">>} -> - decode_privacy_message(<<"jabber:iq:privacy">>, - IgnoreEls, _el); - {<<"ver">>, <<"urn:xmpp:features:rosterver">>, _} -> - decode_rosterver_feature(<<"urn:xmpp:features:rosterver">>, - IgnoreEls, _el); - {<<"ver">>, <<>>, <<"urn:xmpp:features:rosterver">>} -> - decode_rosterver_feature(<<"urn:xmpp:features:rosterver">>, - IgnoreEls, _el); - {<<"query">>, <<"jabber:iq:roster">>, _} -> - decode_roster_query(<<"jabber:iq:roster">>, IgnoreEls, - _el); - {<<"query">>, <<>>, <<"jabber:iq:roster">>} -> - decode_roster_query(<<"jabber:iq:roster">>, IgnoreEls, - _el); - {<<"item">>, <<"jabber:iq:roster">>, _} -> - decode_roster_item(<<"jabber:iq:roster">>, IgnoreEls, - _el); - {<<"item">>, <<>>, <<"jabber:iq:roster">>} -> - decode_roster_item(<<"jabber:iq:roster">>, IgnoreEls, - _el); - {<<"group">>, <<"jabber:iq:roster">>, _} -> - decode_roster_group(<<"jabber:iq:roster">>, IgnoreEls, - _el); - {<<"group">>, <<>>, <<"jabber:iq:roster">>} -> - decode_roster_group(<<"jabber:iq:roster">>, IgnoreEls, - _el); - {<<"query">>, <<"jabber:iq:version">>, _} -> - decode_version(<<"jabber:iq:version">>, IgnoreEls, _el); - {<<"query">>, <<>>, <<"jabber:iq:version">>} -> - decode_version(<<"jabber:iq:version">>, IgnoreEls, _el); - {<<"os">>, <<"jabber:iq:version">>, _} -> - decode_version_os(<<"jabber:iq:version">>, IgnoreEls, - _el); - {<<"os">>, <<>>, <<"jabber:iq:version">>} -> - decode_version_os(<<"jabber:iq:version">>, IgnoreEls, - _el); - {<<"version">>, <<"jabber:iq:version">>, _} -> - decode_version_ver(<<"jabber:iq:version">>, IgnoreEls, - _el); - {<<"version">>, <<>>, <<"jabber:iq:version">>} -> - decode_version_ver(<<"jabber:iq:version">>, IgnoreEls, - _el); - {<<"name">>, <<"jabber:iq:version">>, _} -> - decode_version_name(<<"jabber:iq:version">>, IgnoreEls, - _el); - {<<"name">>, <<>>, <<"jabber:iq:version">>} -> - decode_version_name(<<"jabber:iq:version">>, IgnoreEls, - _el); - {<<"query">>, <<"jabber:iq:last">>, _} -> - decode_last(<<"jabber:iq:last">>, IgnoreEls, _el); - {<<"query">>, <<>>, <<"jabber:iq:last">>} -> - decode_last(<<"jabber:iq:last">>, IgnoreEls, _el); - {_name, <<>>, <<>>} -> - erlang:error({xmpp_codec, {missing_tag_xmlns, _name}}); - {_name, <<>>, _} -> - erlang:error({xmpp_codec, - {unknown_tag, _name, TopXMLNS}}); - {_name, _xmlns, _} -> - erlang:error({xmpp_codec, {unknown_tag, _name, _xmlns}}) - end. - -is_known_tag({xmlel, _name, _attrs, _} = _el, - TopXMLNS) -> - case {_name, get_attr(<<"xmlns">>, _attrs), TopXMLNS} of - {<<"query">>, <<"urn:xmpp:delegation:1">>, _} -> true; - {<<"query">>, <<>>, <<"urn:xmpp:delegation:1">>} -> - true; - {<<"delegate">>, <<"urn:xmpp:delegation:1">>, _} -> - true; - {<<"delegate">>, <<>>, <<"urn:xmpp:delegation:1">>} -> - true; - {<<"delegation">>, <<"urn:xmpp:delegation:1">>, _} -> - true; - {<<"delegation">>, <<>>, <<"urn:xmpp:delegation:1">>} -> - true; - {<<"delegated">>, <<"urn:xmpp:delegation:1">>, _} -> - true; - {<<"delegated">>, <<>>, <<"urn:xmpp:delegation:1">>} -> - true; - {<<"attribute">>, <<"urn:xmpp:delegation:1">>, _} -> - true; - {<<"attribute">>, <<>>, <<"urn:xmpp:delegation:1">>} -> - true; - {<<"privilege">>, <<"urn:xmpp:privilege:1">>, _} -> - true; - {<<"privilege">>, <<>>, <<"urn:xmpp:privilege:1">>} -> - true; - {<<"perm">>, <<"urn:xmpp:privilege:1">>, _} -> true; - {<<"perm">>, <<>>, <<"urn:xmpp:privilege:1">>} -> true; - {<<"thumbnail">>, <<"urn:xmpp:thumbs:1">>, _} -> true; - {<<"thumbnail">>, <<>>, <<"urn:xmpp:thumbs:1">>} -> - true; - {<<"slot">>, <<"urn:xmpp:http:upload">>, _} -> true; - {<<"slot">>, <<>>, <<"urn:xmpp:http:upload">>} -> true; - {<<"slot">>, <<"eu:siacs:conversations:http:upload">>, - _} -> - true; - {<<"slot">>, <<>>, - <<"eu:siacs:conversations:http:upload">>} -> - true; - {<<"put">>, <<"urn:xmpp:http:upload">>, _} -> true; - {<<"put">>, <<>>, <<"urn:xmpp:http:upload">>} -> true; - {<<"put">>, <<"eu:siacs:conversations:http:upload">>, - _} -> - true; - {<<"put">>, <<>>, - <<"eu:siacs:conversations:http:upload">>} -> - true; - {<<"get">>, <<"urn:xmpp:http:upload">>, _} -> true; - {<<"get">>, <<>>, <<"urn:xmpp:http:upload">>} -> true; - {<<"get">>, <<"eu:siacs:conversations:http:upload">>, - _} -> - true; - {<<"get">>, <<>>, - <<"eu:siacs:conversations:http:upload">>} -> - true; - {<<"request">>, <<"urn:xmpp:http:upload">>, _} -> true; - {<<"request">>, <<>>, <<"urn:xmpp:http:upload">>} -> - true; - {<<"request">>, - <<"eu:siacs:conversations:http:upload">>, _} -> - true; - {<<"request">>, <<>>, - <<"eu:siacs:conversations:http:upload">>} -> - true; - {<<"content-type">>, <<"urn:xmpp:http:upload">>, _} -> - true; - {<<"content-type">>, <<>>, - <<"urn:xmpp:http:upload">>} -> - true; - {<<"content-type">>, - <<"eu:siacs:conversations:http:upload">>, _} -> - true; - {<<"content-type">>, <<>>, - <<"eu:siacs:conversations:http:upload">>} -> - true; - {<<"size">>, <<"urn:xmpp:http:upload">>, _} -> true; - {<<"size">>, <<>>, <<"urn:xmpp:http:upload">>} -> true; - {<<"size">>, <<"eu:siacs:conversations:http:upload">>, - _} -> - true; - {<<"size">>, <<>>, - <<"eu:siacs:conversations:http:upload">>} -> - true; - {<<"filename">>, <<"urn:xmpp:http:upload">>, _} -> true; - {<<"filename">>, <<>>, <<"urn:xmpp:http:upload">>} -> - true; - {<<"filename">>, - <<"eu:siacs:conversations:http:upload">>, _} -> - true; - {<<"filename">>, <<>>, - <<"eu:siacs:conversations:http:upload">>} -> - true; - {<<"address">>, <<"urn:xmpp:sic:0">>, _} -> true; - {<<"address">>, <<>>, <<"urn:xmpp:sic:0">>} -> true; - {<<"address">>, <<"urn:xmpp:sic:1">>, _} -> true; - {<<"address">>, <<>>, <<"urn:xmpp:sic:1">>} -> true; - {<<"port">>, <<"urn:xmpp:sic:1">>, _} -> true; - {<<"port">>, <<>>, <<"urn:xmpp:sic:1">>} -> true; - {<<"ip">>, <<"urn:xmpp:sic:0">>, _} -> true; - {<<"ip">>, <<>>, <<"urn:xmpp:sic:0">>} -> true; - {<<"ip">>, <<"urn:xmpp:sic:1">>, _} -> true; - {<<"ip">>, <<>>, <<"urn:xmpp:sic:1">>} -> true; - {<<"x">>, <<"jabber:x:oob">>, _} -> true; - {<<"x">>, <<>>, <<"jabber:x:oob">>} -> true; - {<<"desc">>, <<"jabber:x:oob">>, _} -> true; - {<<"desc">>, <<>>, <<"jabber:x:oob">>} -> true; - {<<"url">>, <<"jabber:x:oob">>, _} -> true; - {<<"url">>, <<>>, <<"jabber:x:oob">>} -> true; - {<<"media">>, <<"urn:xmpp:media-element">>, _} -> true; - {<<"media">>, <<>>, <<"urn:xmpp:media-element">>} -> - true; - {<<"uri">>, <<"urn:xmpp:media-element">>, _} -> true; - {<<"uri">>, <<>>, <<"urn:xmpp:media-element">>} -> true; - {<<"captcha">>, <<"urn:xmpp:captcha">>, _} -> true; - {<<"captcha">>, <<>>, <<"urn:xmpp:captcha">>} -> true; - {<<"data">>, <<"urn:xmpp:bob">>, _} -> true; - {<<"data">>, <<>>, <<"urn:xmpp:bob">>} -> true; - {<<"stream:stream">>, <<"jabber:client">>, _} -> true; - {<<"stream:stream">>, <<>>, <<"jabber:client">>} -> - true; - {<<"stream:stream">>, <<"jabber:server">>, _} -> true; - {<<"stream:stream">>, <<>>, <<"jabber:server">>} -> - true; - {<<"stream:stream">>, <<"jabber:component:accept">>, - _} -> - true; - {<<"stream:stream">>, <<>>, - <<"jabber:component:accept">>} -> - true; - {<<"handshake">>, <<"jabber:component:accept">>, _} -> - true; - {<<"handshake">>, <<>>, - <<"jabber:component:accept">>} -> - true; - {<<"db:verify">>, <<"jabber:server">>, _} -> true; - {<<"db:verify">>, <<>>, <<"jabber:server">>} -> true; - {<<"db:result">>, <<"jabber:server">>, _} -> true; - {<<"db:result">>, <<>>, <<"jabber:server">>} -> true; - {<<"command">>, - <<"http://jabber.org/protocol/commands">>, _} -> - true; - {<<"command">>, <<>>, - <<"http://jabber.org/protocol/commands">>} -> - true; - {<<"note">>, <<"http://jabber.org/protocol/commands">>, - _} -> - true; - {<<"note">>, <<>>, - <<"http://jabber.org/protocol/commands">>} -> - true; - {<<"actions">>, - <<"http://jabber.org/protocol/commands">>, _} -> - true; - {<<"actions">>, <<>>, - <<"http://jabber.org/protocol/commands">>} -> - true; - {<<"complete">>, - <<"http://jabber.org/protocol/commands">>, _} -> - true; - {<<"complete">>, <<>>, - <<"http://jabber.org/protocol/commands">>} -> - true; - {<<"next">>, <<"http://jabber.org/protocol/commands">>, - _} -> - true; - {<<"next">>, <<>>, - <<"http://jabber.org/protocol/commands">>} -> - true; - {<<"prev">>, <<"http://jabber.org/protocol/commands">>, - _} -> - true; - {<<"prev">>, <<>>, - <<"http://jabber.org/protocol/commands">>} -> - true; - {<<"client-id">>, <<"urn:xmpp:sid:0">>, _} -> true; - {<<"client-id">>, <<>>, <<"urn:xmpp:sid:0">>} -> true; - {<<"stanza-id">>, <<"urn:xmpp:sid:0">>, _} -> true; - {<<"stanza-id">>, <<>>, <<"urn:xmpp:sid:0">>} -> true; - {<<"addresses">>, - <<"http://jabber.org/protocol/address">>, _} -> - true; - {<<"addresses">>, <<>>, - <<"http://jabber.org/protocol/address">>} -> - true; - {<<"address">>, - <<"http://jabber.org/protocol/address">>, _} -> - true; - {<<"address">>, <<>>, - <<"http://jabber.org/protocol/address">>} -> - true; - {<<"nick">>, <<"http://jabber.org/protocol/nick">>, - _} -> - true; - {<<"nick">>, <<>>, - <<"http://jabber.org/protocol/nick">>} -> - true; - {<<"x">>, <<"jabber:x:expire">>, _} -> true; - {<<"x">>, <<>>, <<"jabber:x:expire">>} -> true; - {<<"x">>, <<"jabber:x:event">>, _} -> true; - {<<"x">>, <<>>, <<"jabber:x:event">>} -> true; - {<<"id">>, <<"jabber:x:event">>, _} -> true; - {<<"id">>, <<>>, <<"jabber:x:event">>} -> true; - {<<"composing">>, <<"jabber:x:event">>, _} -> true; - {<<"composing">>, <<>>, <<"jabber:x:event">>} -> true; - {<<"displayed">>, <<"jabber:x:event">>, _} -> true; - {<<"displayed">>, <<>>, <<"jabber:x:event">>} -> true; - {<<"delivered">>, <<"jabber:x:event">>, _} -> true; - {<<"delivered">>, <<>>, <<"jabber:x:event">>} -> true; - {<<"offline">>, <<"jabber:x:event">>, _} -> true; - {<<"offline">>, <<>>, <<"jabber:x:event">>} -> true; - {<<"query">>, <<"jabber:iq:search">>, _} -> true; - {<<"query">>, <<>>, <<"jabber:iq:search">>} -> true; - {<<"item">>, <<"jabber:iq:search">>, _} -> true; - {<<"item">>, <<>>, <<"jabber:iq:search">>} -> true; - {<<"email">>, <<"jabber:iq:search">>, _} -> true; - {<<"email">>, <<>>, <<"jabber:iq:search">>} -> true; - {<<"nick">>, <<"jabber:iq:search">>, _} -> true; - {<<"nick">>, <<>>, <<"jabber:iq:search">>} -> true; - {<<"last">>, <<"jabber:iq:search">>, _} -> true; - {<<"last">>, <<>>, <<"jabber:iq:search">>} -> true; - {<<"first">>, <<"jabber:iq:search">>, _} -> true; - {<<"first">>, <<>>, <<"jabber:iq:search">>} -> true; - {<<"instructions">>, <<"jabber:iq:search">>, _} -> true; - {<<"instructions">>, <<>>, <<"jabber:iq:search">>} -> - true; - {<<"no-permanent-storage">>, <<"urn:xmpp:hints">>, _} -> - true; - {<<"no-permanent-storage">>, <<>>, - <<"urn:xmpp:hints">>} -> - true; - {<<"no-permanent-store">>, <<"urn:xmpp:hints">>, _} -> - true; - {<<"no-permanent-store">>, <<>>, - <<"urn:xmpp:hints">>} -> - true; - {<<"store">>, <<"urn:xmpp:hints">>, _} -> true; - {<<"store">>, <<>>, <<"urn:xmpp:hints">>} -> true; - {<<"no-storage">>, <<"urn:xmpp:hints">>, _} -> true; - {<<"no-storage">>, <<>>, <<"urn:xmpp:hints">>} -> true; - {<<"no-store">>, <<"urn:xmpp:hints">>, _} -> true; - {<<"no-store">>, <<>>, <<"urn:xmpp:hints">>} -> true; - {<<"no-copy">>, <<"urn:xmpp:hints">>, _} -> true; - {<<"no-copy">>, <<>>, <<"urn:xmpp:hints">>} -> true; - {<<"participant">>, <<"urn:xmpp:mix:0">>, _} -> true; - {<<"participant">>, <<>>, <<"urn:xmpp:mix:0">>} -> true; - {<<"leave">>, <<"urn:xmpp:mix:0">>, _} -> true; - {<<"leave">>, <<>>, <<"urn:xmpp:mix:0">>} -> true; - {<<"join">>, <<"urn:xmpp:mix:0">>, _} -> true; - {<<"join">>, <<>>, <<"urn:xmpp:mix:0">>} -> true; - {<<"subscribe">>, <<"urn:xmpp:mix:0">>, _} -> true; - {<<"subscribe">>, <<>>, <<"urn:xmpp:mix:0">>} -> true; - {<<"offline">>, - <<"http://jabber.org/protocol/offline">>, _} -> - true; - {<<"offline">>, <<>>, - <<"http://jabber.org/protocol/offline">>} -> - true; - {<<"item">>, <<"http://jabber.org/protocol/offline">>, - _} -> - true; - {<<"item">>, <<>>, - <<"http://jabber.org/protocol/offline">>} -> - true; - {<<"fetch">>, <<"http://jabber.org/protocol/offline">>, - _} -> - true; - {<<"fetch">>, <<>>, - <<"http://jabber.org/protocol/offline">>} -> - true; - {<<"purge">>, <<"http://jabber.org/protocol/offline">>, - _} -> - true; - {<<"purge">>, <<>>, - <<"http://jabber.org/protocol/offline">>} -> - true; - {<<"failed">>, <<"urn:xmpp:sm:2">>, _} -> true; - {<<"failed">>, <<>>, <<"urn:xmpp:sm:2">>} -> true; - {<<"failed">>, <<"urn:xmpp:sm:3">>, _} -> true; - {<<"failed">>, <<>>, <<"urn:xmpp:sm:3">>} -> true; - {<<"a">>, <<"urn:xmpp:sm:2">>, _} -> true; - {<<"a">>, <<>>, <<"urn:xmpp:sm:2">>} -> true; - {<<"a">>, <<"urn:xmpp:sm:3">>, _} -> true; - {<<"a">>, <<>>, <<"urn:xmpp:sm:3">>} -> true; - {<<"r">>, <<"urn:xmpp:sm:2">>, _} -> true; - {<<"r">>, <<>>, <<"urn:xmpp:sm:2">>} -> true; - {<<"r">>, <<"urn:xmpp:sm:3">>, _} -> true; - {<<"r">>, <<>>, <<"urn:xmpp:sm:3">>} -> true; - {<<"resumed">>, <<"urn:xmpp:sm:2">>, _} -> true; - {<<"resumed">>, <<>>, <<"urn:xmpp:sm:2">>} -> true; - {<<"resumed">>, <<"urn:xmpp:sm:3">>, _} -> true; - {<<"resumed">>, <<>>, <<"urn:xmpp:sm:3">>} -> true; - {<<"resume">>, <<"urn:xmpp:sm:2">>, _} -> true; - {<<"resume">>, <<>>, <<"urn:xmpp:sm:2">>} -> true; - {<<"resume">>, <<"urn:xmpp:sm:3">>, _} -> true; - {<<"resume">>, <<>>, <<"urn:xmpp:sm:3">>} -> true; - {<<"enabled">>, <<"urn:xmpp:sm:2">>, _} -> true; - {<<"enabled">>, <<>>, <<"urn:xmpp:sm:2">>} -> true; - {<<"enabled">>, <<"urn:xmpp:sm:3">>, _} -> true; - {<<"enabled">>, <<>>, <<"urn:xmpp:sm:3">>} -> true; - {<<"enable">>, <<"urn:xmpp:sm:2">>, _} -> true; - {<<"enable">>, <<>>, <<"urn:xmpp:sm:2">>} -> true; - {<<"enable">>, <<"urn:xmpp:sm:3">>, _} -> true; - {<<"enable">>, <<>>, <<"urn:xmpp:sm:3">>} -> true; - {<<"sm">>, <<"urn:xmpp:sm:2">>, _} -> true; - {<<"sm">>, <<>>, <<"urn:xmpp:sm:2">>} -> true; - {<<"sm">>, <<"urn:xmpp:sm:3">>, _} -> true; - {<<"sm">>, <<>>, <<"urn:xmpp:sm:3">>} -> true; - {<<"inactive">>, <<"urn:xmpp:csi:0">>, _} -> true; - {<<"inactive">>, <<>>, <<"urn:xmpp:csi:0">>} -> true; - {<<"active">>, <<"urn:xmpp:csi:0">>, _} -> true; - {<<"active">>, <<>>, <<"urn:xmpp:csi:0">>} -> true; - {<<"csi">>, <<"urn:xmpp:csi:0">>, _} -> true; - {<<"csi">>, <<>>, <<"urn:xmpp:csi:0">>} -> true; - {<<"sent">>, <<"urn:xmpp:carbons:2">>, _} -> true; - {<<"sent">>, <<>>, <<"urn:xmpp:carbons:2">>} -> true; - {<<"received">>, <<"urn:xmpp:carbons:2">>, _} -> true; - {<<"received">>, <<>>, <<"urn:xmpp:carbons:2">>} -> - true; - {<<"private">>, <<"urn:xmpp:carbons:2">>, _} -> true; - {<<"private">>, <<>>, <<"urn:xmpp:carbons:2">>} -> true; - {<<"enable">>, <<"urn:xmpp:carbons:2">>, _} -> true; - {<<"enable">>, <<>>, <<"urn:xmpp:carbons:2">>} -> true; - {<<"disable">>, <<"urn:xmpp:carbons:2">>, _} -> true; - {<<"disable">>, <<>>, <<"urn:xmpp:carbons:2">>} -> true; - {<<"forwarded">>, <<"urn:xmpp:forward:0">>, _} -> true; - {<<"forwarded">>, <<>>, <<"urn:xmpp:forward:0">>} -> - true; - {<<"fin">>, <<"urn:xmpp:mam:0">>, _} -> true; - {<<"fin">>, <<>>, <<"urn:xmpp:mam:0">>} -> true; - {<<"fin">>, <<"urn:xmpp:mam:1">>, _} -> true; - {<<"fin">>, <<>>, <<"urn:xmpp:mam:1">>} -> true; - {<<"prefs">>, <<"urn:xmpp:mam:0">>, _} -> true; - {<<"prefs">>, <<>>, <<"urn:xmpp:mam:0">>} -> true; - {<<"prefs">>, <<"urn:xmpp:mam:1">>, _} -> true; - {<<"prefs">>, <<>>, <<"urn:xmpp:mam:1">>} -> true; - {<<"prefs">>, <<"urn:xmpp:mam:tmp">>, _} -> true; - {<<"prefs">>, <<>>, <<"urn:xmpp:mam:tmp">>} -> true; - {<<"always">>, <<"urn:xmpp:mam:0">>, _} -> true; - {<<"always">>, <<>>, <<"urn:xmpp:mam:0">>} -> true; - {<<"always">>, <<"urn:xmpp:mam:1">>, _} -> true; - {<<"always">>, <<>>, <<"urn:xmpp:mam:1">>} -> true; - {<<"always">>, <<"urn:xmpp:mam:tmp">>, _} -> true; - {<<"always">>, <<>>, <<"urn:xmpp:mam:tmp">>} -> true; - {<<"never">>, <<"urn:xmpp:mam:0">>, _} -> true; - {<<"never">>, <<>>, <<"urn:xmpp:mam:0">>} -> true; - {<<"never">>, <<"urn:xmpp:mam:1">>, _} -> true; - {<<"never">>, <<>>, <<"urn:xmpp:mam:1">>} -> true; - {<<"never">>, <<"urn:xmpp:mam:tmp">>, _} -> true; - {<<"never">>, <<>>, <<"urn:xmpp:mam:tmp">>} -> true; - {<<"jid">>, <<"urn:xmpp:mam:0">>, _} -> true; - {<<"jid">>, <<>>, <<"urn:xmpp:mam:0">>} -> true; - {<<"jid">>, <<"urn:xmpp:mam:1">>, _} -> true; - {<<"jid">>, <<>>, <<"urn:xmpp:mam:1">>} -> true; - {<<"jid">>, <<"urn:xmpp:mam:tmp">>, _} -> true; - {<<"jid">>, <<>>, <<"urn:xmpp:mam:tmp">>} -> true; - {<<"result">>, <<"urn:xmpp:mam:0">>, _} -> true; - {<<"result">>, <<>>, <<"urn:xmpp:mam:0">>} -> true; - {<<"result">>, <<"urn:xmpp:mam:1">>, _} -> true; - {<<"result">>, <<>>, <<"urn:xmpp:mam:1">>} -> true; - {<<"result">>, <<"urn:xmpp:mam:tmp">>, _} -> true; - {<<"result">>, <<>>, <<"urn:xmpp:mam:tmp">>} -> true; - {<<"archived">>, <<"urn:xmpp:mam:tmp">>, _} -> true; - {<<"archived">>, <<>>, <<"urn:xmpp:mam:tmp">>} -> true; - {<<"query">>, <<"urn:xmpp:mam:0">>, _} -> true; - {<<"query">>, <<>>, <<"urn:xmpp:mam:0">>} -> true; - {<<"query">>, <<"urn:xmpp:mam:1">>, _} -> true; - {<<"query">>, <<>>, <<"urn:xmpp:mam:1">>} -> true; - {<<"query">>, <<"urn:xmpp:mam:tmp">>, _} -> true; - {<<"query">>, <<>>, <<"urn:xmpp:mam:tmp">>} -> true; - {<<"withtext">>, <<"urn:xmpp:mam:tmp">>, _} -> true; - {<<"withtext">>, <<>>, <<"urn:xmpp:mam:tmp">>} -> true; - {<<"with">>, <<"urn:xmpp:mam:tmp">>, _} -> true; - {<<"with">>, <<>>, <<"urn:xmpp:mam:tmp">>} -> true; - {<<"end">>, <<"urn:xmpp:mam:tmp">>, _} -> true; - {<<"end">>, <<>>, <<"urn:xmpp:mam:tmp">>} -> true; - {<<"start">>, <<"urn:xmpp:mam:tmp">>, _} -> true; - {<<"start">>, <<>>, <<"urn:xmpp:mam:tmp">>} -> true; - {<<"set">>, <<"http://jabber.org/protocol/rsm">>, _} -> - true; - {<<"set">>, <<>>, - <<"http://jabber.org/protocol/rsm">>} -> - true; - {<<"first">>, <<"http://jabber.org/protocol/rsm">>, - _} -> - true; - {<<"first">>, <<>>, - <<"http://jabber.org/protocol/rsm">>} -> - true; - {<<"max">>, <<"http://jabber.org/protocol/rsm">>, _} -> - true; - {<<"max">>, <<>>, - <<"http://jabber.org/protocol/rsm">>} -> - true; - {<<"index">>, <<"http://jabber.org/protocol/rsm">>, - _} -> - true; - {<<"index">>, <<>>, - <<"http://jabber.org/protocol/rsm">>} -> - true; - {<<"count">>, <<"http://jabber.org/protocol/rsm">>, - _} -> - true; - {<<"count">>, <<>>, - <<"http://jabber.org/protocol/rsm">>} -> - true; - {<<"last">>, <<"http://jabber.org/protocol/rsm">>, _} -> - true; - {<<"last">>, <<>>, - <<"http://jabber.org/protocol/rsm">>} -> - true; - {<<"before">>, <<"http://jabber.org/protocol/rsm">>, - _} -> - true; - {<<"before">>, <<>>, - <<"http://jabber.org/protocol/rsm">>} -> - true; - {<<"after">>, <<"http://jabber.org/protocol/rsm">>, - _} -> - true; - {<<"after">>, <<>>, - <<"http://jabber.org/protocol/rsm">>} -> - true; - {<<"unsubscribe">>, <<"urn:xmpp:mucsub:0">>, _} -> true; - {<<"unsubscribe">>, <<>>, <<"urn:xmpp:mucsub:0">>} -> - true; - {<<"subscribe">>, <<"urn:xmpp:mucsub:0">>, _} -> true; - {<<"subscribe">>, <<>>, <<"urn:xmpp:mucsub:0">>} -> - true; - {<<"event">>, <<"urn:xmpp:mucsub:0">>, _} -> true; - {<<"event">>, <<>>, <<"urn:xmpp:mucsub:0">>} -> true; - {<<"subscriptions">>, <<"urn:xmpp:mucsub:0">>, _} -> - true; - {<<"subscriptions">>, <<>>, <<"urn:xmpp:mucsub:0">>} -> - true; - {<<"subscription">>, <<"urn:xmpp:mucsub:0">>, _} -> - true; - {<<"subscription">>, <<>>, <<"urn:xmpp:mucsub:0">>} -> - true; - {<<"x">>, <<"jabber:x:conference">>, _} -> true; - {<<"x">>, <<>>, <<"jabber:x:conference">>} -> true; - {<<"unique">>, - <<"http://jabber.org/protocol/muc#unique">>, _} -> - true; - {<<"unique">>, <<>>, - <<"http://jabber.org/protocol/muc#unique">>} -> - true; - {<<"x">>, <<"http://jabber.org/protocol/muc">>, _} -> - true; - {<<"x">>, <<>>, <<"http://jabber.org/protocol/muc">>} -> - true; - {<<"query">>, - <<"http://jabber.org/protocol/muc#admin">>, _} -> - true; - {<<"query">>, <<>>, - <<"http://jabber.org/protocol/muc#admin">>} -> - true; - {<<"continue">>, - <<"http://jabber.org/protocol/muc#admin">>, _} -> - true; - {<<"continue">>, <<>>, - <<"http://jabber.org/protocol/muc#admin">>} -> - true; - {<<"actor">>, - <<"http://jabber.org/protocol/muc#admin">>, _} -> - true; - {<<"actor">>, <<>>, - <<"http://jabber.org/protocol/muc#admin">>} -> - true; - {<<"item">>, <<"http://jabber.org/protocol/muc#admin">>, - _} -> - true; - {<<"item">>, <<>>, - <<"http://jabber.org/protocol/muc#admin">>} -> - true; - {<<"item">>, <<"http://jabber.org/protocol/muc#owner">>, - _} -> - true; - {<<"item">>, <<>>, - <<"http://jabber.org/protocol/muc#owner">>} -> - true; - {<<"query">>, - <<"http://jabber.org/protocol/muc#owner">>, _} -> - true; - {<<"query">>, <<>>, - <<"http://jabber.org/protocol/muc#owner">>} -> - true; - {<<"password">>, - <<"http://jabber.org/protocol/muc#owner">>, _} -> - true; - {<<"password">>, <<>>, - <<"http://jabber.org/protocol/muc#owner">>} -> - true; - {<<"password">>, - <<"http://jabber.org/protocol/muc#user">>, _} -> - true; - {<<"password">>, <<>>, - <<"http://jabber.org/protocol/muc#user">>} -> - true; - {<<"password">>, <<"http://jabber.org/protocol/muc">>, - _} -> - true; - {<<"password">>, <<>>, - <<"http://jabber.org/protocol/muc">>} -> - true; - {<<"x">>, <<"http://jabber.org/protocol/muc#user">>, - _} -> - true; - {<<"x">>, <<>>, - <<"http://jabber.org/protocol/muc#user">>} -> - true; - {<<"item">>, <<"http://jabber.org/protocol/muc#user">>, - _} -> - true; - {<<"item">>, <<>>, - <<"http://jabber.org/protocol/muc#user">>} -> - true; - {<<"status">>, - <<"http://jabber.org/protocol/muc#user">>, _} -> - true; - {<<"status">>, <<>>, - <<"http://jabber.org/protocol/muc#user">>} -> - true; - {<<"continue">>, - <<"http://jabber.org/protocol/muc#user">>, _} -> - true; - {<<"continue">>, <<>>, - <<"http://jabber.org/protocol/muc#user">>} -> - true; - {<<"actor">>, <<"http://jabber.org/protocol/muc#user">>, - _} -> - true; - {<<"actor">>, <<>>, - <<"http://jabber.org/protocol/muc#user">>} -> - true; - {<<"invite">>, - <<"http://jabber.org/protocol/muc#user">>, _} -> - true; - {<<"invite">>, <<>>, - <<"http://jabber.org/protocol/muc#user">>} -> - true; - {<<"destroy">>, - <<"http://jabber.org/protocol/muc#user">>, _} -> - true; - {<<"destroy">>, <<>>, - <<"http://jabber.org/protocol/muc#user">>} -> - true; - {<<"destroy">>, - <<"http://jabber.org/protocol/muc#owner">>, _} -> - true; - {<<"destroy">>, <<>>, - <<"http://jabber.org/protocol/muc#owner">>} -> - true; - {<<"decline">>, - <<"http://jabber.org/protocol/muc#user">>, _} -> - true; - {<<"decline">>, <<>>, - <<"http://jabber.org/protocol/muc#user">>} -> - true; - {<<"reason">>, - <<"http://jabber.org/protocol/muc#user">>, _} -> - true; - {<<"reason">>, <<>>, - <<"http://jabber.org/protocol/muc#user">>} -> - true; - {<<"reason">>, - <<"http://jabber.org/protocol/muc#admin">>, _} -> - true; - {<<"reason">>, <<>>, - <<"http://jabber.org/protocol/muc#admin">>} -> - true; - {<<"reason">>, - <<"http://jabber.org/protocol/muc#owner">>, _} -> - true; - {<<"reason">>, <<>>, - <<"http://jabber.org/protocol/muc#owner">>} -> - true; - {<<"history">>, <<"http://jabber.org/protocol/muc">>, - _} -> - true; - {<<"history">>, <<>>, - <<"http://jabber.org/protocol/muc">>} -> - true; - {<<"query">>, - <<"http://jabber.org/protocol/bytestreams">>, _} -> - true; - {<<"query">>, <<>>, - <<"http://jabber.org/protocol/bytestreams">>} -> - true; - {<<"activate">>, - <<"http://jabber.org/protocol/bytestreams">>, _} -> - true; - {<<"activate">>, <<>>, - <<"http://jabber.org/protocol/bytestreams">>} -> - true; - {<<"streamhost-used">>, - <<"http://jabber.org/protocol/bytestreams">>, _} -> - true; - {<<"streamhost-used">>, <<>>, - <<"http://jabber.org/protocol/bytestreams">>} -> - true; - {<<"streamhost">>, - <<"http://jabber.org/protocol/bytestreams">>, _} -> - true; - {<<"streamhost">>, <<>>, - <<"http://jabber.org/protocol/bytestreams">>} -> - true; - {<<"delay">>, <<"urn:xmpp:delay">>, _} -> true; - {<<"delay">>, <<>>, <<"urn:xmpp:delay">>} -> true; - {<<"paused">>, - <<"http://jabber.org/protocol/chatstates">>, _} -> - true; - {<<"paused">>, <<>>, - <<"http://jabber.org/protocol/chatstates">>} -> - true; - {<<"inactive">>, - <<"http://jabber.org/protocol/chatstates">>, _} -> - true; - {<<"inactive">>, <<>>, - <<"http://jabber.org/protocol/chatstates">>} -> - true; - {<<"gone">>, - <<"http://jabber.org/protocol/chatstates">>, _} -> - true; - {<<"gone">>, <<>>, - <<"http://jabber.org/protocol/chatstates">>} -> - true; - {<<"composing">>, - <<"http://jabber.org/protocol/chatstates">>, _} -> - true; - {<<"composing">>, <<>>, - <<"http://jabber.org/protocol/chatstates">>} -> - true; - {<<"active">>, - <<"http://jabber.org/protocol/chatstates">>, _} -> - true; - {<<"active">>, <<>>, - <<"http://jabber.org/protocol/chatstates">>} -> - true; - {<<"headers">>, <<"http://jabber.org/protocol/shim">>, - _} -> - true; - {<<"headers">>, <<>>, - <<"http://jabber.org/protocol/shim">>} -> - true; - {<<"header">>, <<"http://jabber.org/protocol/shim">>, - _} -> - true; - {<<"header">>, <<>>, - <<"http://jabber.org/protocol/shim">>} -> - true; - {<<"unsupported-access-model">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - true; - {<<"unsupported-access-model">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - true; - {<<"unsupported">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - true; - {<<"unsupported">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - true; - {<<"too-many-subscriptions">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - true; - {<<"too-many-subscriptions">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - true; - {<<"subid-required">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - true; - {<<"subid-required">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - true; - {<<"presence-subscription-required">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - true; - {<<"presence-subscription-required">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - true; - {<<"pending-subscription">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - true; - {<<"pending-subscription">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - true; - {<<"payload-required">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - true; - {<<"payload-required">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - true; - {<<"payload-too-big">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - true; - {<<"payload-too-big">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - true; - {<<"not-subscribed">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - true; - {<<"not-subscribed">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - true; - {<<"not-in-roster-group">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - true; - {<<"not-in-roster-group">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - true; - {<<"nodeid-required">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - true; - {<<"nodeid-required">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - true; - {<<"max-nodes-exceeded">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - true; - {<<"max-nodes-exceeded">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - true; - {<<"max-items-exceeded">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - true; - {<<"max-items-exceeded">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - true; - {<<"jid-required">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - true; - {<<"jid-required">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - true; - {<<"item-required">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - true; - {<<"item-required">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - true; - {<<"item-forbidden">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - true; - {<<"item-forbidden">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - true; - {<<"invalid-subid">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - true; - {<<"invalid-subid">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - true; - {<<"invalid-payload">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - true; - {<<"invalid-payload">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - true; - {<<"invalid-options">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - true; - {<<"invalid-options">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - true; - {<<"invalid-jid">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - true; - {<<"invalid-jid">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - true; - {<<"configuration-required">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - true; - {<<"configuration-required">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - true; - {<<"closed-node">>, - <<"http://jabber.org/protocol/pubsub#errors">>, _} -> - true; - {<<"closed-node">>, <<>>, - <<"http://jabber.org/protocol/pubsub#errors">>} -> - true; - {<<"pubsub">>, - <<"http://jabber.org/protocol/pubsub#owner">>, _} -> - true; - {<<"pubsub">>, <<>>, - <<"http://jabber.org/protocol/pubsub#owner">>} -> - true; - {<<"pubsub">>, <<"http://jabber.org/protocol/pubsub">>, - _} -> - true; - {<<"pubsub">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - true; - {<<"purge">>, <<"http://jabber.org/protocol/pubsub">>, - _} -> - true; - {<<"purge">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - true; - {<<"purge">>, - <<"http://jabber.org/protocol/pubsub#owner">>, _} -> - true; - {<<"purge">>, <<>>, - <<"http://jabber.org/protocol/pubsub#owner">>} -> - true; - {<<"purge">>, - <<"http://jabber.org/protocol/pubsub#event">>, _} -> - true; - {<<"purge">>, <<>>, - <<"http://jabber.org/protocol/pubsub#event">>} -> - true; - {<<"delete">>, <<"http://jabber.org/protocol/pubsub">>, - _} -> - true; - {<<"delete">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - true; - {<<"delete">>, - <<"http://jabber.org/protocol/pubsub#owner">>, _} -> - true; - {<<"delete">>, <<>>, - <<"http://jabber.org/protocol/pubsub#owner">>} -> - true; - {<<"delete">>, - <<"http://jabber.org/protocol/pubsub#event">>, _} -> - true; - {<<"delete">>, <<>>, - <<"http://jabber.org/protocol/pubsub#event">>} -> - true; - {<<"redirect">>, - <<"http://jabber.org/protocol/pubsub">>, _} -> - true; - {<<"redirect">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - true; - {<<"redirect">>, - <<"http://jabber.org/protocol/pubsub#owner">>, _} -> - true; - {<<"redirect">>, <<>>, - <<"http://jabber.org/protocol/pubsub#owner">>} -> - true; - {<<"redirect">>, - <<"http://jabber.org/protocol/pubsub#event">>, _} -> - true; - {<<"redirect">>, <<>>, - <<"http://jabber.org/protocol/pubsub#event">>} -> - true; - {<<"default">>, <<"http://jabber.org/protocol/pubsub">>, - _} -> - true; - {<<"default">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - true; - {<<"default">>, - <<"http://jabber.org/protocol/pubsub#owner">>, _} -> - true; - {<<"default">>, <<>>, - <<"http://jabber.org/protocol/pubsub#owner">>} -> - true; - {<<"publish-options">>, - <<"http://jabber.org/protocol/pubsub">>, _} -> - true; - {<<"publish-options">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - true; - {<<"configure">>, - <<"http://jabber.org/protocol/pubsub">>, _} -> - true; - {<<"configure">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - true; - {<<"configure">>, - <<"http://jabber.org/protocol/pubsub#owner">>, _} -> - true; - {<<"configure">>, <<>>, - <<"http://jabber.org/protocol/pubsub#owner">>} -> - true; - {<<"create">>, <<"http://jabber.org/protocol/pubsub">>, - _} -> - true; - {<<"create">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - true; - {<<"create">>, - <<"http://jabber.org/protocol/pubsub#event">>, _} -> - true; - {<<"create">>, <<>>, - <<"http://jabber.org/protocol/pubsub#event">>} -> - true; - {<<"retract">>, <<"http://jabber.org/protocol/pubsub">>, - _} -> - true; - {<<"retract">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - true; - {<<"options">>, <<"http://jabber.org/protocol/pubsub">>, - _} -> - true; - {<<"options">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - true; - {<<"publish">>, <<"http://jabber.org/protocol/pubsub">>, - _} -> - true; - {<<"publish">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - true; - {<<"unsubscribe">>, - <<"http://jabber.org/protocol/pubsub">>, _} -> - true; - {<<"unsubscribe">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - true; - {<<"subscribe">>, - <<"http://jabber.org/protocol/pubsub">>, _} -> - true; - {<<"subscribe">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - true; - {<<"affiliations">>, - <<"http://jabber.org/protocol/pubsub#owner">>, _} -> - true; - {<<"affiliations">>, <<>>, - <<"http://jabber.org/protocol/pubsub#owner">>} -> - true; - {<<"affiliations">>, - <<"http://jabber.org/protocol/pubsub">>, _} -> - true; - {<<"affiliations">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - true; - {<<"subscriptions">>, - <<"http://jabber.org/protocol/pubsub">>, _} -> - true; - {<<"subscriptions">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - true; - {<<"subscriptions">>, - <<"http://jabber.org/protocol/pubsub#owner">>, _} -> - true; - {<<"subscriptions">>, <<>>, - <<"http://jabber.org/protocol/pubsub#owner">>} -> - true; - {<<"event">>, - <<"http://jabber.org/protocol/pubsub#event">>, _} -> - true; - {<<"event">>, <<>>, - <<"http://jabber.org/protocol/pubsub#event">>} -> - true; - {<<"items">>, <<"http://jabber.org/protocol/pubsub">>, - _} -> - true; - {<<"items">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - true; - {<<"items">>, - <<"http://jabber.org/protocol/pubsub#event">>, _} -> - true; - {<<"items">>, <<>>, - <<"http://jabber.org/protocol/pubsub#event">>} -> - true; - {<<"item">>, <<"http://jabber.org/protocol/pubsub">>, - _} -> - true; - {<<"item">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - true; - {<<"item">>, - <<"http://jabber.org/protocol/pubsub#event">>, _} -> - true; - {<<"item">>, <<>>, - <<"http://jabber.org/protocol/pubsub#event">>} -> - true; - {<<"retract">>, - <<"http://jabber.org/protocol/pubsub#event">>, _} -> - true; - {<<"retract">>, <<>>, - <<"http://jabber.org/protocol/pubsub#event">>} -> - true; - {<<"configuration">>, - <<"http://jabber.org/protocol/pubsub#event">>, _} -> - true; - {<<"configuration">>, <<>>, - <<"http://jabber.org/protocol/pubsub#event">>} -> - true; - {<<"affiliation">>, - <<"http://jabber.org/protocol/pubsub#owner">>, _} -> - true; - {<<"affiliation">>, <<>>, - <<"http://jabber.org/protocol/pubsub#owner">>} -> - true; - {<<"affiliation">>, - <<"http://jabber.org/protocol/pubsub">>, _} -> - true; - {<<"affiliation">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - true; - {<<"subscription">>, - <<"http://jabber.org/protocol/pubsub">>, _} -> - true; - {<<"subscription">>, <<>>, - <<"http://jabber.org/protocol/pubsub">>} -> - true; - {<<"subscription">>, - <<"http://jabber.org/protocol/pubsub#owner">>, _} -> - true; - {<<"subscription">>, <<>>, - <<"http://jabber.org/protocol/pubsub#owner">>} -> - true; - {<<"subscription">>, - <<"http://jabber.org/protocol/pubsub#event">>, _} -> - true; - {<<"subscription">>, <<>>, - <<"http://jabber.org/protocol/pubsub#event">>} -> - true; - {<<"x">>, <<"jabber:x:data">>, _} -> true; - {<<"x">>, <<>>, <<"jabber:x:data">>} -> true; - {<<"item">>, <<"jabber:x:data">>, _} -> true; - {<<"item">>, <<>>, <<"jabber:x:data">>} -> true; - {<<"reported">>, <<"jabber:x:data">>, _} -> true; - {<<"reported">>, <<>>, <<"jabber:x:data">>} -> true; - {<<"title">>, <<"jabber:x:data">>, _} -> true; - {<<"title">>, <<>>, <<"jabber:x:data">>} -> true; - {<<"instructions">>, <<"jabber:x:data">>, _} -> true; - {<<"instructions">>, <<>>, <<"jabber:x:data">>} -> true; - {<<"field">>, <<"jabber:x:data">>, _} -> true; - {<<"field">>, <<>>, <<"jabber:x:data">>} -> true; - {<<"option">>, <<"jabber:x:data">>, _} -> true; - {<<"option">>, <<>>, <<"jabber:x:data">>} -> true; - {<<"value">>, <<"jabber:x:data">>, _} -> true; - {<<"value">>, <<>>, <<"jabber:x:data">>} -> true; - {<<"desc">>, <<"jabber:x:data">>, _} -> true; - {<<"desc">>, <<>>, <<"jabber:x:data">>} -> true; - {<<"required">>, <<"jabber:x:data">>, _} -> true; - {<<"required">>, <<>>, <<"jabber:x:data">>} -> true; - {<<"x">>, <<"vcard-temp:x:update">>, _} -> true; - {<<"x">>, <<>>, <<"vcard-temp:x:update">>} -> true; - {<<"photo">>, <<"vcard-temp:x:update">>, _} -> true; - {<<"photo">>, <<>>, <<"vcard-temp:x:update">>} -> true; - {<<"vCard">>, <<"vcard-temp">>, _} -> true; - {<<"vCard">>, <<>>, <<"vcard-temp">>} -> true; - {<<"CLASS">>, <<"vcard-temp">>, _} -> true; - {<<"CLASS">>, <<>>, <<"vcard-temp">>} -> true; - {<<"CATEGORIES">>, <<"vcard-temp">>, _} -> true; - {<<"CATEGORIES">>, <<>>, <<"vcard-temp">>} -> true; - {<<"KEY">>, <<"vcard-temp">>, _} -> true; - {<<"KEY">>, <<>>, <<"vcard-temp">>} -> true; - {<<"SOUND">>, <<"vcard-temp">>, _} -> true; - {<<"SOUND">>, <<>>, <<"vcard-temp">>} -> true; - {<<"ORG">>, <<"vcard-temp">>, _} -> true; - {<<"ORG">>, <<>>, <<"vcard-temp">>} -> true; - {<<"PHOTO">>, <<"vcard-temp">>, _} -> true; - {<<"PHOTO">>, <<>>, <<"vcard-temp">>} -> true; - {<<"LOGO">>, <<"vcard-temp">>, _} -> true; - {<<"LOGO">>, <<>>, <<"vcard-temp">>} -> true; - {<<"BINVAL">>, <<"vcard-temp">>, _} -> true; - {<<"BINVAL">>, <<>>, <<"vcard-temp">>} -> true; - {<<"GEO">>, <<"vcard-temp">>, _} -> true; - {<<"GEO">>, <<>>, <<"vcard-temp">>} -> true; - {<<"EMAIL">>, <<"vcard-temp">>, _} -> true; - {<<"EMAIL">>, <<>>, <<"vcard-temp">>} -> true; - {<<"TEL">>, <<"vcard-temp">>, _} -> true; - {<<"TEL">>, <<>>, <<"vcard-temp">>} -> true; - {<<"LABEL">>, <<"vcard-temp">>, _} -> true; - {<<"LABEL">>, <<>>, <<"vcard-temp">>} -> true; - {<<"ADR">>, <<"vcard-temp">>, _} -> true; - {<<"ADR">>, <<>>, <<"vcard-temp">>} -> true; - {<<"N">>, <<"vcard-temp">>, _} -> true; - {<<"N">>, <<>>, <<"vcard-temp">>} -> true; - {<<"CONFIDENTIAL">>, <<"vcard-temp">>, _} -> true; - {<<"CONFIDENTIAL">>, <<>>, <<"vcard-temp">>} -> true; - {<<"PRIVATE">>, <<"vcard-temp">>, _} -> true; - {<<"PRIVATE">>, <<>>, <<"vcard-temp">>} -> true; - {<<"PUBLIC">>, <<"vcard-temp">>, _} -> true; - {<<"PUBLIC">>, <<>>, <<"vcard-temp">>} -> true; - {<<"EXTVAL">>, <<"vcard-temp">>, _} -> true; - {<<"EXTVAL">>, <<>>, <<"vcard-temp">>} -> true; - {<<"TYPE">>, <<"vcard-temp">>, _} -> true; - {<<"TYPE">>, <<>>, <<"vcard-temp">>} -> true; - {<<"DESC">>, <<"vcard-temp">>, _} -> true; - {<<"DESC">>, <<>>, <<"vcard-temp">>} -> true; - {<<"URL">>, <<"vcard-temp">>, _} -> true; - {<<"URL">>, <<>>, <<"vcard-temp">>} -> true; - {<<"UID">>, <<"vcard-temp">>, _} -> true; - {<<"UID">>, <<>>, <<"vcard-temp">>} -> true; - {<<"SORT-STRING">>, <<"vcard-temp">>, _} -> true; - {<<"SORT-STRING">>, <<>>, <<"vcard-temp">>} -> true; - {<<"REV">>, <<"vcard-temp">>, _} -> true; - {<<"REV">>, <<>>, <<"vcard-temp">>} -> true; - {<<"PRODID">>, <<"vcard-temp">>, _} -> true; - {<<"PRODID">>, <<>>, <<"vcard-temp">>} -> true; - {<<"NOTE">>, <<"vcard-temp">>, _} -> true; - {<<"NOTE">>, <<>>, <<"vcard-temp">>} -> true; - {<<"KEYWORD">>, <<"vcard-temp">>, _} -> true; - {<<"KEYWORD">>, <<>>, <<"vcard-temp">>} -> true; - {<<"ROLE">>, <<"vcard-temp">>, _} -> true; - {<<"ROLE">>, <<>>, <<"vcard-temp">>} -> true; - {<<"TITLE">>, <<"vcard-temp">>, _} -> true; - {<<"TITLE">>, <<>>, <<"vcard-temp">>} -> true; - {<<"TZ">>, <<"vcard-temp">>, _} -> true; - {<<"TZ">>, <<>>, <<"vcard-temp">>} -> true; - {<<"MAILER">>, <<"vcard-temp">>, _} -> true; - {<<"MAILER">>, <<>>, <<"vcard-temp">>} -> true; - {<<"JABBERID">>, <<"vcard-temp">>, _} -> true; - {<<"JABBERID">>, <<>>, <<"vcard-temp">>} -> true; - {<<"BDAY">>, <<"vcard-temp">>, _} -> true; - {<<"BDAY">>, <<>>, <<"vcard-temp">>} -> true; - {<<"NICKNAME">>, <<"vcard-temp">>, _} -> true; - {<<"NICKNAME">>, <<>>, <<"vcard-temp">>} -> true; - {<<"FN">>, <<"vcard-temp">>, _} -> true; - {<<"FN">>, <<>>, <<"vcard-temp">>} -> true; - {<<"VERSION">>, <<"vcard-temp">>, _} -> true; - {<<"VERSION">>, <<>>, <<"vcard-temp">>} -> true; - {<<"CRED">>, <<"vcard-temp">>, _} -> true; - {<<"CRED">>, <<>>, <<"vcard-temp">>} -> true; - {<<"PHONETIC">>, <<"vcard-temp">>, _} -> true; - {<<"PHONETIC">>, <<>>, <<"vcard-temp">>} -> true; - {<<"ORGUNIT">>, <<"vcard-temp">>, _} -> true; - {<<"ORGUNIT">>, <<>>, <<"vcard-temp">>} -> true; - {<<"ORGNAME">>, <<"vcard-temp">>, _} -> true; - {<<"ORGNAME">>, <<>>, <<"vcard-temp">>} -> true; - {<<"LON">>, <<"vcard-temp">>, _} -> true; - {<<"LON">>, <<>>, <<"vcard-temp">>} -> true; - {<<"LAT">>, <<"vcard-temp">>, _} -> true; - {<<"LAT">>, <<>>, <<"vcard-temp">>} -> true; - {<<"USERID">>, <<"vcard-temp">>, _} -> true; - {<<"USERID">>, <<>>, <<"vcard-temp">>} -> true; - {<<"NUMBER">>, <<"vcard-temp">>, _} -> true; - {<<"NUMBER">>, <<>>, <<"vcard-temp">>} -> true; - {<<"LINE">>, <<"vcard-temp">>, _} -> true; - {<<"LINE">>, <<>>, <<"vcard-temp">>} -> true; - {<<"CTRY">>, <<"vcard-temp">>, _} -> true; - {<<"CTRY">>, <<>>, <<"vcard-temp">>} -> true; - {<<"PCODE">>, <<"vcard-temp">>, _} -> true; - {<<"PCODE">>, <<>>, <<"vcard-temp">>} -> true; - {<<"REGION">>, <<"vcard-temp">>, _} -> true; - {<<"REGION">>, <<>>, <<"vcard-temp">>} -> true; - {<<"LOCALITY">>, <<"vcard-temp">>, _} -> true; - {<<"LOCALITY">>, <<>>, <<"vcard-temp">>} -> true; - {<<"STREET">>, <<"vcard-temp">>, _} -> true; - {<<"STREET">>, <<>>, <<"vcard-temp">>} -> true; - {<<"EXTADD">>, <<"vcard-temp">>, _} -> true; - {<<"EXTADD">>, <<>>, <<"vcard-temp">>} -> true; - {<<"POBOX">>, <<"vcard-temp">>, _} -> true; - {<<"POBOX">>, <<>>, <<"vcard-temp">>} -> true; - {<<"SUFFIX">>, <<"vcard-temp">>, _} -> true; - {<<"SUFFIX">>, <<>>, <<"vcard-temp">>} -> true; - {<<"PREFIX">>, <<"vcard-temp">>, _} -> true; - {<<"PREFIX">>, <<>>, <<"vcard-temp">>} -> true; - {<<"MIDDLE">>, <<"vcard-temp">>, _} -> true; - {<<"MIDDLE">>, <<>>, <<"vcard-temp">>} -> true; - {<<"GIVEN">>, <<"vcard-temp">>, _} -> true; - {<<"GIVEN">>, <<>>, <<"vcard-temp">>} -> true; - {<<"FAMILY">>, <<"vcard-temp">>, _} -> true; - {<<"FAMILY">>, <<>>, <<"vcard-temp">>} -> true; - {<<"X400">>, <<"vcard-temp">>, _} -> true; - {<<"X400">>, <<>>, <<"vcard-temp">>} -> true; - {<<"INTERNET">>, <<"vcard-temp">>, _} -> true; - {<<"INTERNET">>, <<>>, <<"vcard-temp">>} -> true; - {<<"PREF">>, <<"vcard-temp">>, _} -> true; - {<<"PREF">>, <<>>, <<"vcard-temp">>} -> true; - {<<"INTL">>, <<"vcard-temp">>, _} -> true; - {<<"INTL">>, <<>>, <<"vcard-temp">>} -> true; - {<<"DOM">>, <<"vcard-temp">>, _} -> true; - {<<"DOM">>, <<>>, <<"vcard-temp">>} -> true; - {<<"PARCEL">>, <<"vcard-temp">>, _} -> true; - {<<"PARCEL">>, <<>>, <<"vcard-temp">>} -> true; - {<<"POSTAL">>, <<"vcard-temp">>, _} -> true; - {<<"POSTAL">>, <<>>, <<"vcard-temp">>} -> true; - {<<"PCS">>, <<"vcard-temp">>, _} -> true; - {<<"PCS">>, <<>>, <<"vcard-temp">>} -> true; - {<<"ISDN">>, <<"vcard-temp">>, _} -> true; - {<<"ISDN">>, <<>>, <<"vcard-temp">>} -> true; - {<<"MODEM">>, <<"vcard-temp">>, _} -> true; - {<<"MODEM">>, <<>>, <<"vcard-temp">>} -> true; - {<<"BBS">>, <<"vcard-temp">>, _} -> true; - {<<"BBS">>, <<>>, <<"vcard-temp">>} -> true; - {<<"VIDEO">>, <<"vcard-temp">>, _} -> true; - {<<"VIDEO">>, <<>>, <<"vcard-temp">>} -> true; - {<<"CELL">>, <<"vcard-temp">>, _} -> true; - {<<"CELL">>, <<>>, <<"vcard-temp">>} -> true; - {<<"MSG">>, <<"vcard-temp">>, _} -> true; - {<<"MSG">>, <<>>, <<"vcard-temp">>} -> true; - {<<"PAGER">>, <<"vcard-temp">>, _} -> true; - {<<"PAGER">>, <<>>, <<"vcard-temp">>} -> true; - {<<"FAX">>, <<"vcard-temp">>, _} -> true; - {<<"FAX">>, <<>>, <<"vcard-temp">>} -> true; - {<<"VOICE">>, <<"vcard-temp">>, _} -> true; - {<<"VOICE">>, <<>>, <<"vcard-temp">>} -> true; - {<<"WORK">>, <<"vcard-temp">>, _} -> true; - {<<"WORK">>, <<>>, <<"vcard-temp">>} -> true; - {<<"HOME">>, <<"vcard-temp">>, _} -> true; - {<<"HOME">>, <<>>, <<"vcard-temp">>} -> true; - {<<"stream:error">>, <<"jabber:client">>, _} -> true; - {<<"stream:error">>, <<>>, <<"jabber:client">>} -> true; - {<<"stream:error">>, <<"jabber:server">>, _} -> true; - {<<"stream:error">>, <<>>, <<"jabber:server">>} -> true; - {<<"stream:error">>, <<"jabber:component:accept">>, - _} -> - true; - {<<"stream:error">>, <<>>, - <<"jabber:component:accept">>} -> - true; - {<<"unsupported-version">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - true; - {<<"unsupported-version">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - true; - {<<"unsupported-stanza-type">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - true; - {<<"unsupported-stanza-type">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - true; - {<<"unsupported-encoding">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - true; - {<<"unsupported-encoding">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - true; - {<<"undefined-condition">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - true; - {<<"undefined-condition">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - true; - {<<"system-shutdown">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - true; - {<<"system-shutdown">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - true; - {<<"see-other-host">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - true; - {<<"see-other-host">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - true; - {<<"restricted-xml">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - true; - {<<"restricted-xml">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - true; - {<<"resource-constraint">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - true; - {<<"resource-constraint">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - true; - {<<"reset">>, <<"urn:ietf:params:xml:ns:xmpp-streams">>, - _} -> - true; - {<<"reset">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - true; - {<<"remote-connection-failed">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - true; - {<<"remote-connection-failed">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - true; - {<<"policy-violation">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - true; - {<<"policy-violation">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - true; - {<<"not-well-formed">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - true; - {<<"not-well-formed">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - true; - {<<"not-authorized">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - true; - {<<"not-authorized">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - true; - {<<"invalid-xml">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - true; - {<<"invalid-xml">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - true; - {<<"invalid-namespace">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - true; - {<<"invalid-namespace">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - true; - {<<"invalid-id">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - true; - {<<"invalid-id">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - true; - {<<"invalid-from">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - true; - {<<"invalid-from">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - true; - {<<"internal-server-error">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - true; - {<<"internal-server-error">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - true; - {<<"improper-addressing">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - true; - {<<"improper-addressing">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - true; - {<<"host-unknown">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - true; - {<<"host-unknown">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - true; - {<<"host-gone">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - true; - {<<"host-gone">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - true; - {<<"connection-timeout">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - true; - {<<"connection-timeout">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - true; - {<<"conflict">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - true; - {<<"conflict">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - true; - {<<"bad-namespace-prefix">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - true; - {<<"bad-namespace-prefix">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - true; - {<<"bad-format">>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>, _} -> - true; - {<<"bad-format">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - true; - {<<"text">>, <<"urn:ietf:params:xml:ns:xmpp-streams">>, - _} -> - true; - {<<"text">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-streams">>} -> - true; - {<<"time">>, <<"urn:xmpp:time">>, _} -> true; - {<<"time">>, <<>>, <<"urn:xmpp:time">>} -> true; - {<<"tzo">>, <<"urn:xmpp:time">>, _} -> true; - {<<"tzo">>, <<>>, <<"urn:xmpp:time">>} -> true; - {<<"utc">>, <<"urn:xmpp:time">>, _} -> true; - {<<"utc">>, <<>>, <<"urn:xmpp:time">>} -> true; - {<<"ping">>, <<"urn:xmpp:ping">>, _} -> true; - {<<"ping">>, <<>>, <<"urn:xmpp:ping">>} -> true; - {<<"session">>, - <<"urn:ietf:params:xml:ns:xmpp-session">>, _} -> - true; - {<<"session">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-session">>} -> - true; - {<<"optional">>, - <<"urn:ietf:params:xml:ns:xmpp-session">>, _} -> - true; - {<<"optional">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-session">>} -> - true; - {<<"query">>, <<"jabber:iq:register">>, _} -> true; - {<<"query">>, <<>>, <<"jabber:iq:register">>} -> true; - {<<"key">>, <<"jabber:iq:register">>, _} -> true; - {<<"key">>, <<>>, <<"jabber:iq:register">>} -> true; - {<<"text">>, <<"jabber:iq:register">>, _} -> true; - {<<"text">>, <<>>, <<"jabber:iq:register">>} -> true; - {<<"misc">>, <<"jabber:iq:register">>, _} -> true; - {<<"misc">>, <<>>, <<"jabber:iq:register">>} -> true; - {<<"date">>, <<"jabber:iq:register">>, _} -> true; - {<<"date">>, <<>>, <<"jabber:iq:register">>} -> true; - {<<"url">>, <<"jabber:iq:register">>, _} -> true; - {<<"url">>, <<>>, <<"jabber:iq:register">>} -> true; - {<<"phone">>, <<"jabber:iq:register">>, _} -> true; - {<<"phone">>, <<>>, <<"jabber:iq:register">>} -> true; - {<<"zip">>, <<"jabber:iq:register">>, _} -> true; - {<<"zip">>, <<>>, <<"jabber:iq:register">>} -> true; - {<<"state">>, <<"jabber:iq:register">>, _} -> true; - {<<"state">>, <<>>, <<"jabber:iq:register">>} -> true; - {<<"city">>, <<"jabber:iq:register">>, _} -> true; - {<<"city">>, <<>>, <<"jabber:iq:register">>} -> true; - {<<"address">>, <<"jabber:iq:register">>, _} -> true; - {<<"address">>, <<>>, <<"jabber:iq:register">>} -> true; - {<<"email">>, <<"jabber:iq:register">>, _} -> true; - {<<"email">>, <<>>, <<"jabber:iq:register">>} -> true; - {<<"last">>, <<"jabber:iq:register">>, _} -> true; - {<<"last">>, <<>>, <<"jabber:iq:register">>} -> true; - {<<"first">>, <<"jabber:iq:register">>, _} -> true; - {<<"first">>, <<>>, <<"jabber:iq:register">>} -> true; - {<<"name">>, <<"jabber:iq:register">>, _} -> true; - {<<"name">>, <<>>, <<"jabber:iq:register">>} -> true; - {<<"password">>, <<"jabber:iq:register">>, _} -> true; - {<<"password">>, <<>>, <<"jabber:iq:register">>} -> - true; - {<<"nick">>, <<"jabber:iq:register">>, _} -> true; - {<<"nick">>, <<>>, <<"jabber:iq:register">>} -> true; - {<<"username">>, <<"jabber:iq:register">>, _} -> true; - {<<"username">>, <<>>, <<"jabber:iq:register">>} -> - true; - {<<"instructions">>, <<"jabber:iq:register">>, _} -> - true; - {<<"instructions">>, <<>>, <<"jabber:iq:register">>} -> - true; - {<<"remove">>, <<"jabber:iq:register">>, _} -> true; - {<<"remove">>, <<>>, <<"jabber:iq:register">>} -> true; - {<<"registered">>, <<"jabber:iq:register">>, _} -> true; - {<<"registered">>, <<>>, <<"jabber:iq:register">>} -> - true; - {<<"register">>, - <<"http://jabber.org/features/iq-register">>, _} -> - true; - {<<"register">>, <<>>, - <<"http://jabber.org/features/iq-register">>} -> - true; - {<<"c">>, <<"http://jabber.org/protocol/caps">>, _} -> - true; - {<<"c">>, <<>>, - <<"http://jabber.org/protocol/caps">>} -> - true; - {<<"ack">>, <<"p1:ack">>, _} -> true; - {<<"ack">>, <<>>, <<"p1:ack">>} -> true; - {<<"rebind">>, <<"p1:rebind">>, _} -> true; - {<<"rebind">>, <<>>, <<"p1:rebind">>} -> true; - {<<"push">>, <<"p1:push">>, _} -> true; - {<<"push">>, <<>>, <<"p1:push">>} -> true; - {<<"stream:features">>, <<"jabber:client">>, _} -> true; - {<<"stream:features">>, <<>>, <<"jabber:client">>} -> - true; - {<<"stream:features">>, <<"jabber:server">>, _} -> true; - {<<"stream:features">>, <<>>, <<"jabber:server">>} -> - true; - {<<"compression">>, - <<"http://jabber.org/features/compress">>, _} -> - true; - {<<"compression">>, <<>>, - <<"http://jabber.org/features/compress">>} -> - true; - {<<"method">>, - <<"http://jabber.org/features/compress">>, _} -> - true; - {<<"method">>, <<>>, - <<"http://jabber.org/features/compress">>} -> - true; - {<<"compressed">>, - <<"http://jabber.org/protocol/compress">>, _} -> - true; - {<<"compressed">>, <<>>, - <<"http://jabber.org/protocol/compress">>} -> - true; - {<<"compress">>, - <<"http://jabber.org/protocol/compress">>, _} -> - true; - {<<"compress">>, <<>>, - <<"http://jabber.org/protocol/compress">>} -> - true; - {<<"method">>, - <<"http://jabber.org/protocol/compress">>, _} -> - true; - {<<"method">>, <<>>, - <<"http://jabber.org/protocol/compress">>} -> - true; - {<<"failure">>, - <<"http://jabber.org/protocol/compress">>, _} -> - true; - {<<"failure">>, <<>>, - <<"http://jabber.org/protocol/compress">>} -> - true; - {<<"unsupported-method">>, - <<"http://jabber.org/protocol/compress">>, _} -> - true; - {<<"unsupported-method">>, <<>>, - <<"http://jabber.org/protocol/compress">>} -> - true; - {<<"processing-failed">>, - <<"http://jabber.org/protocol/compress">>, _} -> - true; - {<<"processing-failed">>, <<>>, - <<"http://jabber.org/protocol/compress">>} -> - true; - {<<"setup-failed">>, - <<"http://jabber.org/protocol/compress">>, _} -> - true; - {<<"setup-failed">>, <<>>, - <<"http://jabber.org/protocol/compress">>} -> - true; - {<<"failure">>, <<"urn:ietf:params:xml:ns:xmpp-tls">>, - _} -> - true; - {<<"failure">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-tls">>} -> - true; - {<<"proceed">>, <<"urn:ietf:params:xml:ns:xmpp-tls">>, - _} -> - true; - {<<"proceed">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-tls">>} -> - true; - {<<"starttls">>, <<"urn:ietf:params:xml:ns:xmpp-tls">>, - _} -> - true; - {<<"starttls">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-tls">>} -> - true; - {<<"required">>, <<"urn:ietf:params:xml:ns:xmpp-tls">>, - _} -> - true; - {<<"required">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-tls">>} -> - true; - {<<"mechanisms">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - true; - {<<"mechanisms">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - true; - {<<"mechanism">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - true; - {<<"mechanism">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - true; - {<<"failure">>, <<"urn:ietf:params:xml:ns:xmpp-sasl">>, - _} -> - true; - {<<"failure">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - true; - {<<"temporary-auth-failure">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - true; - {<<"temporary-auth-failure">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - true; - {<<"bad-protocol">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - true; - {<<"bad-protocol">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - true; - {<<"not-authorized">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - true; - {<<"not-authorized">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - true; - {<<"mechanism-too-weak">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - true; - {<<"mechanism-too-weak">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - true; - {<<"malformed-request">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - true; - {<<"malformed-request">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - true; - {<<"invalid-mechanism">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - true; - {<<"invalid-mechanism">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - true; - {<<"invalid-authzid">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - true; - {<<"invalid-authzid">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - true; - {<<"incorrect-encoding">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - true; - {<<"incorrect-encoding">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - true; - {<<"encryption-required">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - true; - {<<"encryption-required">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - true; - {<<"credentials-expired">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - true; - {<<"credentials-expired">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - true; - {<<"account-disabled">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - true; - {<<"account-disabled">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - true; - {<<"aborted">>, <<"urn:ietf:params:xml:ns:xmpp-sasl">>, - _} -> - true; - {<<"aborted">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - true; - {<<"text">>, <<"urn:ietf:params:xml:ns:xmpp-sasl">>, - _} -> - true; - {<<"text">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - true; - {<<"success">>, <<"urn:ietf:params:xml:ns:xmpp-sasl">>, - _} -> - true; - {<<"success">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - true; - {<<"response">>, <<"urn:ietf:params:xml:ns:xmpp-sasl">>, - _} -> - true; - {<<"response">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - true; - {<<"challenge">>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>, _} -> - true; - {<<"challenge">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - true; - {<<"abort">>, <<"urn:ietf:params:xml:ns:xmpp-sasl">>, - _} -> - true; - {<<"abort">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - true; - {<<"auth">>, <<"urn:ietf:params:xml:ns:xmpp-sasl">>, - _} -> - true; - {<<"auth">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-sasl">>} -> - true; - {<<"query">>, <<"jabber:iq:auth">>, _} -> true; - {<<"query">>, <<>>, <<"jabber:iq:auth">>} -> true; - {<<"resource">>, <<"jabber:iq:auth">>, _} -> true; - {<<"resource">>, <<>>, <<"jabber:iq:auth">>} -> true; - {<<"digest">>, <<"jabber:iq:auth">>, _} -> true; - {<<"digest">>, <<>>, <<"jabber:iq:auth">>} -> true; - {<<"password">>, <<"jabber:iq:auth">>, _} -> true; - {<<"password">>, <<>>, <<"jabber:iq:auth">>} -> true; - {<<"username">>, <<"jabber:iq:auth">>, _} -> true; - {<<"username">>, <<>>, <<"jabber:iq:auth">>} -> true; - {<<"bind">>, <<"urn:ietf:params:xml:ns:xmpp-bind">>, - _} -> - true; - {<<"bind">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-bind">>} -> - true; - {<<"resource">>, <<"urn:ietf:params:xml:ns:xmpp-bind">>, - _} -> - true; - {<<"resource">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-bind">>} -> - true; - {<<"jid">>, <<"urn:ietf:params:xml:ns:xmpp-bind">>, - _} -> - true; - {<<"jid">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-bind">>} -> - true; - {<<"error">>, <<"jabber:client">>, _} -> true; - {<<"error">>, <<>>, <<"jabber:client">>} -> true; - {<<"error">>, <<"jabber:server">>, _} -> true; - {<<"error">>, <<>>, <<"jabber:server">>} -> true; - {<<"error">>, <<"jabber:component:accept">>, _} -> true; - {<<"error">>, <<>>, <<"jabber:component:accept">>} -> - true; - {<<"text">>, <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - _} -> - true; - {<<"text">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - true; - {<<"unexpected-request">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - true; - {<<"unexpected-request">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - true; - {<<"undefined-condition">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - true; - {<<"undefined-condition">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - true; - {<<"subscription-required">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - true; - {<<"subscription-required">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - true; - {<<"service-unavailable">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - true; - {<<"service-unavailable">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - true; - {<<"resource-constraint">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - true; - {<<"resource-constraint">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - true; - {<<"remote-server-timeout">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - true; - {<<"remote-server-timeout">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - true; - {<<"remote-server-not-found">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - true; - {<<"remote-server-not-found">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - true; - {<<"registration-required">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - true; - {<<"registration-required">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - true; - {<<"redirect">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - true; - {<<"redirect">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - true; - {<<"recipient-unavailable">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - true; - {<<"recipient-unavailable">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - true; - {<<"policy-violation">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - true; - {<<"policy-violation">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - true; - {<<"payment-required">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - true; - {<<"payment-required">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - true; - {<<"not-authorized">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - true; - {<<"not-authorized">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - true; - {<<"not-allowed">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - true; - {<<"not-allowed">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - true; - {<<"not-acceptable">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - true; - {<<"not-acceptable">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - true; - {<<"jid-malformed">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - true; - {<<"jid-malformed">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - true; - {<<"item-not-found">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - true; - {<<"item-not-found">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - true; - {<<"internal-server-error">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - true; - {<<"internal-server-error">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - true; - {<<"gone">>, <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - _} -> - true; - {<<"gone">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - true; - {<<"forbidden">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - true; - {<<"forbidden">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - true; - {<<"feature-not-implemented">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - true; - {<<"feature-not-implemented">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - true; - {<<"conflict">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - true; - {<<"conflict">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - true; - {<<"bad-request">>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, _} -> - true; - {<<"bad-request">>, <<>>, - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} -> - true; - {<<"presence">>, <<"jabber:client">>, _} -> true; - {<<"presence">>, <<>>, <<"jabber:client">>} -> true; - {<<"presence">>, <<"jabber:server">>, _} -> true; - {<<"presence">>, <<>>, <<"jabber:server">>} -> true; - {<<"presence">>, <<"jabber:component:accept">>, _} -> - true; - {<<"presence">>, <<>>, <<"jabber:component:accept">>} -> - true; - {<<"priority">>, <<"jabber:client">>, _} -> true; - {<<"priority">>, <<>>, <<"jabber:client">>} -> true; - {<<"priority">>, <<"jabber:server">>, _} -> true; - {<<"priority">>, <<>>, <<"jabber:server">>} -> true; - {<<"priority">>, <<"jabber:component:accept">>, _} -> - true; - {<<"priority">>, <<>>, <<"jabber:component:accept">>} -> - true; - {<<"status">>, <<"jabber:client">>, _} -> true; - {<<"status">>, <<>>, <<"jabber:client">>} -> true; - {<<"status">>, <<"jabber:server">>, _} -> true; - {<<"status">>, <<>>, <<"jabber:server">>} -> true; - {<<"status">>, <<"jabber:component:accept">>, _} -> - true; - {<<"status">>, <<>>, <<"jabber:component:accept">>} -> - true; - {<<"show">>, <<"jabber:client">>, _} -> true; - {<<"show">>, <<>>, <<"jabber:client">>} -> true; - {<<"show">>, <<"jabber:server">>, _} -> true; - {<<"show">>, <<>>, <<"jabber:server">>} -> true; - {<<"show">>, <<"jabber:component:accept">>, _} -> true; - {<<"show">>, <<>>, <<"jabber:component:accept">>} -> - true; - {<<"message">>, <<"jabber:client">>, _} -> true; - {<<"message">>, <<>>, <<"jabber:client">>} -> true; - {<<"message">>, <<"jabber:server">>, _} -> true; - {<<"message">>, <<>>, <<"jabber:server">>} -> true; - {<<"message">>, <<"jabber:component:accept">>, _} -> - true; - {<<"message">>, <<>>, <<"jabber:component:accept">>} -> - true; - {<<"thread">>, <<"jabber:client">>, _} -> true; - {<<"thread">>, <<>>, <<"jabber:client">>} -> true; - {<<"thread">>, <<"jabber:server">>, _} -> true; - {<<"thread">>, <<>>, <<"jabber:server">>} -> true; - {<<"thread">>, <<"jabber:component:accept">>, _} -> - true; - {<<"thread">>, <<>>, <<"jabber:component:accept">>} -> - true; - {<<"body">>, <<"jabber:client">>, _} -> true; - {<<"body">>, <<>>, <<"jabber:client">>} -> true; - {<<"body">>, <<"jabber:server">>, _} -> true; - {<<"body">>, <<>>, <<"jabber:server">>} -> true; - {<<"body">>, <<"jabber:component:accept">>, _} -> true; - {<<"body">>, <<>>, <<"jabber:component:accept">>} -> - true; - {<<"subject">>, <<"jabber:client">>, _} -> true; - {<<"subject">>, <<>>, <<"jabber:client">>} -> true; - {<<"subject">>, <<"jabber:server">>, _} -> true; - {<<"subject">>, <<>>, <<"jabber:server">>} -> true; - {<<"subject">>, <<"jabber:component:accept">>, _} -> - true; - {<<"subject">>, <<>>, <<"jabber:component:accept">>} -> - true; - {<<"iq">>, <<"jabber:client">>, _} -> true; - {<<"iq">>, <<>>, <<"jabber:client">>} -> true; - {<<"iq">>, <<"jabber:server">>, _} -> true; - {<<"iq">>, <<>>, <<"jabber:server">>} -> true; - {<<"iq">>, <<"jabber:component:accept">>, _} -> true; - {<<"iq">>, <<>>, <<"jabber:component:accept">>} -> true; - {<<"query">>, <<"http://jabber.org/protocol/stats">>, - _} -> - true; - {<<"query">>, <<>>, - <<"http://jabber.org/protocol/stats">>} -> - true; - {<<"stat">>, <<"http://jabber.org/protocol/stats">>, - _} -> - true; - {<<"stat">>, <<>>, - <<"http://jabber.org/protocol/stats">>} -> - true; - {<<"error">>, <<"http://jabber.org/protocol/stats">>, - _} -> - true; - {<<"error">>, <<>>, - <<"http://jabber.org/protocol/stats">>} -> - true; - {<<"storage">>, <<"storage:bookmarks">>, _} -> true; - {<<"storage">>, <<>>, <<"storage:bookmarks">>} -> true; - {<<"url">>, <<"storage:bookmarks">>, _} -> true; - {<<"url">>, <<>>, <<"storage:bookmarks">>} -> true; - {<<"conference">>, <<"storage:bookmarks">>, _} -> true; - {<<"conference">>, <<>>, <<"storage:bookmarks">>} -> - true; - {<<"password">>, <<"storage:bookmarks">>, _} -> true; - {<<"password">>, <<>>, <<"storage:bookmarks">>} -> true; - {<<"nick">>, <<"storage:bookmarks">>, _} -> true; - {<<"nick">>, <<>>, <<"storage:bookmarks">>} -> true; - {<<"query">>, <<"jabber:iq:private">>, _} -> true; - {<<"query">>, <<>>, <<"jabber:iq:private">>} -> true; - {<<"query">>, - <<"http://jabber.org/protocol/disco#items">>, _} -> - true; - {<<"query">>, <<>>, - <<"http://jabber.org/protocol/disco#items">>} -> - true; - {<<"item">>, - <<"http://jabber.org/protocol/disco#items">>, _} -> - true; - {<<"item">>, <<>>, - <<"http://jabber.org/protocol/disco#items">>} -> - true; - {<<"query">>, - <<"http://jabber.org/protocol/disco#info">>, _} -> - true; - {<<"query">>, <<>>, - <<"http://jabber.org/protocol/disco#info">>} -> - true; - {<<"feature">>, - <<"http://jabber.org/protocol/disco#info">>, _} -> - true; - {<<"feature">>, <<>>, - <<"http://jabber.org/protocol/disco#info">>} -> - true; - {<<"identity">>, - <<"http://jabber.org/protocol/disco#info">>, _} -> - true; - {<<"identity">>, <<>>, - <<"http://jabber.org/protocol/disco#info">>} -> - true; - {<<"blocklist">>, <<"urn:xmpp:blocking">>, _} -> true; - {<<"blocklist">>, <<>>, <<"urn:xmpp:blocking">>} -> - true; - {<<"unblock">>, <<"urn:xmpp:blocking">>, _} -> true; - {<<"unblock">>, <<>>, <<"urn:xmpp:blocking">>} -> true; - {<<"block">>, <<"urn:xmpp:blocking">>, _} -> true; - {<<"block">>, <<>>, <<"urn:xmpp:blocking">>} -> true; - {<<"item">>, <<"urn:xmpp:blocking">>, _} -> true; - {<<"item">>, <<>>, <<"urn:xmpp:blocking">>} -> true; - {<<"query">>, <<"jabber:iq:privacy">>, _} -> true; - {<<"query">>, <<>>, <<"jabber:iq:privacy">>} -> true; - {<<"active">>, <<"jabber:iq:privacy">>, _} -> true; - {<<"active">>, <<>>, <<"jabber:iq:privacy">>} -> true; - {<<"default">>, <<"jabber:iq:privacy">>, _} -> true; - {<<"default">>, <<>>, <<"jabber:iq:privacy">>} -> true; - {<<"list">>, <<"jabber:iq:privacy">>, _} -> true; - {<<"list">>, <<>>, <<"jabber:iq:privacy">>} -> true; - {<<"item">>, <<"jabber:iq:privacy">>, _} -> true; - {<<"item">>, <<>>, <<"jabber:iq:privacy">>} -> true; - {<<"presence-out">>, <<"jabber:iq:privacy">>, _} -> - true; - {<<"presence-out">>, <<>>, <<"jabber:iq:privacy">>} -> - true; - {<<"presence-in">>, <<"jabber:iq:privacy">>, _} -> true; - {<<"presence-in">>, <<>>, <<"jabber:iq:privacy">>} -> - true; - {<<"iq">>, <<"jabber:iq:privacy">>, _} -> true; - {<<"iq">>, <<>>, <<"jabber:iq:privacy">>} -> true; - {<<"message">>, <<"jabber:iq:privacy">>, _} -> true; - {<<"message">>, <<>>, <<"jabber:iq:privacy">>} -> true; - {<<"ver">>, <<"urn:xmpp:features:rosterver">>, _} -> - true; - {<<"ver">>, <<>>, <<"urn:xmpp:features:rosterver">>} -> - true; - {<<"query">>, <<"jabber:iq:roster">>, _} -> true; - {<<"query">>, <<>>, <<"jabber:iq:roster">>} -> true; - {<<"item">>, <<"jabber:iq:roster">>, _} -> true; - {<<"item">>, <<>>, <<"jabber:iq:roster">>} -> true; - {<<"group">>, <<"jabber:iq:roster">>, _} -> true; - {<<"group">>, <<>>, <<"jabber:iq:roster">>} -> true; - {<<"query">>, <<"jabber:iq:version">>, _} -> true; - {<<"query">>, <<>>, <<"jabber:iq:version">>} -> true; - {<<"os">>, <<"jabber:iq:version">>, _} -> true; - {<<"os">>, <<>>, <<"jabber:iq:version">>} -> true; - {<<"version">>, <<"jabber:iq:version">>, _} -> true; - {<<"version">>, <<>>, <<"jabber:iq:version">>} -> true; - {<<"name">>, <<"jabber:iq:version">>, _} -> true; - {<<"name">>, <<>>, <<"jabber:iq:version">>} -> true; - {<<"query">>, <<"jabber:iq:last">>, _} -> true; - {<<"query">>, <<>>, <<"jabber:iq:last">>} -> true; - _ -> false - end. - -encode(_el) -> encode(_el, <<>>). - -encode({xmlel, _, _, _} = El, _) -> El; -encode({last, _, _} = Query, TopXMLNS) -> - encode_last(Query, TopXMLNS); -encode({version, _, _, _} = Query, TopXMLNS) -> - encode_version(Query, TopXMLNS); -encode({roster_item, _, _, _, _, _} = Item, TopXMLNS) -> - encode_roster_item(Item, TopXMLNS); -encode({roster_query, _, _} = Query, TopXMLNS) -> - encode_roster_query(Query, TopXMLNS); -encode({rosterver_feature} = Ver, TopXMLNS) -> - encode_rosterver_feature(Ver, TopXMLNS); -encode({privacy_item, _, _, _, _, _, _, _, _} = Item, - TopXMLNS) -> - encode_privacy_item(Item, TopXMLNS); -encode({privacy_list, _, _} = List, TopXMLNS) -> - encode_privacy_list(List, TopXMLNS); -encode({privacy_query, _, _, _} = Query, TopXMLNS) -> - encode_privacy(Query, TopXMLNS); -encode({block, _} = Block, TopXMLNS) -> - encode_block(Block, TopXMLNS); -encode({unblock, _} = Unblock, TopXMLNS) -> - encode_unblock(Unblock, TopXMLNS); -encode({block_list, _} = Blocklist, TopXMLNS) -> - encode_block_list(Blocklist, TopXMLNS); -encode({identity, _, _, _, _} = Identity, TopXMLNS) -> - encode_disco_identity(Identity, TopXMLNS); -encode({disco_info, _, _, _, _} = Query, TopXMLNS) -> - encode_disco_info(Query, TopXMLNS); -encode({disco_item, _, _, _} = Item, TopXMLNS) -> - encode_disco_item(Item, TopXMLNS); -encode({disco_items, _, _, _} = Query, TopXMLNS) -> - encode_disco_items(Query, TopXMLNS); -encode({private, _} = Query, TopXMLNS) -> - encode_private(Query, TopXMLNS); -encode({bookmark_conference, _, _, _, _, _} = - Conference, - TopXMLNS) -> - encode_bookmark_conference(Conference, TopXMLNS); -encode({bookmark_url, _, _} = Url, TopXMLNS) -> - encode_bookmark_url(Url, TopXMLNS); -encode({bookmark_storage, _, _} = Storage, TopXMLNS) -> - encode_bookmarks_storage(Storage, TopXMLNS); -encode({stat_error, _, _} = Error, TopXMLNS) -> - encode_stat_error(Error, TopXMLNS); -encode({stat, _, _, _, _} = Stat, TopXMLNS) -> - encode_stat(Stat, TopXMLNS); -encode({stats, _, _} = Query, TopXMLNS) -> - encode_stats(Query, TopXMLNS); -encode({iq, _, _, _, _, _, _} = Iq, TopXMLNS) -> - encode_iq(Iq, TopXMLNS); -encode({message, _, _, _, _, _, _, _, _, _} = Message, - TopXMLNS) -> - encode_message(Message, TopXMLNS); -encode({presence, _, _, _, _, _, _, _, _, _} = Presence, - TopXMLNS) -> - encode_presence(Presence, TopXMLNS); -encode({gone, _} = Gone, TopXMLNS) -> - encode_error_gone(Gone, TopXMLNS); -encode({redirect, _} = Redirect, TopXMLNS) -> - encode_error_redirect(Redirect, TopXMLNS); -encode({stanza_error, _, _, _, _, _, _} = Error, - TopXMLNS) -> - encode_error(Error, TopXMLNS); -encode({bind, _, _} = Bind, TopXMLNS) -> - encode_bind(Bind, TopXMLNS); -encode({legacy_auth, _, _, _, _} = Query, TopXMLNS) -> - encode_legacy_auth(Query, TopXMLNS); -encode({sasl_auth, _, _} = Auth, TopXMLNS) -> - encode_sasl_auth(Auth, TopXMLNS); -encode({sasl_abort} = Abort, TopXMLNS) -> - encode_sasl_abort(Abort, TopXMLNS); -encode({sasl_challenge, _} = Challenge, TopXMLNS) -> - encode_sasl_challenge(Challenge, TopXMLNS); -encode({sasl_response, _} = Response, TopXMLNS) -> - encode_sasl_response(Response, TopXMLNS); -encode({sasl_success, _} = Success, TopXMLNS) -> - encode_sasl_success(Success, TopXMLNS); -encode({sasl_failure, _, _} = Failure, TopXMLNS) -> - encode_sasl_failure(Failure, TopXMLNS); -encode({sasl_mechanisms, _} = Mechanisms, TopXMLNS) -> - encode_sasl_mechanisms(Mechanisms, TopXMLNS); -encode({starttls, _} = Starttls, TopXMLNS) -> - encode_starttls(Starttls, TopXMLNS); -encode({starttls_proceed} = Proceed, TopXMLNS) -> - encode_starttls_proceed(Proceed, TopXMLNS); -encode({starttls_failure} = Failure, TopXMLNS) -> - encode_starttls_failure(Failure, TopXMLNS); -encode({compress_failure, _} = Failure, TopXMLNS) -> - encode_compress_failure(Failure, TopXMLNS); -encode({compress, _} = Compress, TopXMLNS) -> - encode_compress(Compress, TopXMLNS); -encode({compressed} = Compressed, TopXMLNS) -> - encode_compressed(Compressed, TopXMLNS); -encode({compression, _} = Compression, TopXMLNS) -> - encode_compression(Compression, TopXMLNS); -encode({stream_features, _} = Stream_features, - TopXMLNS) -> - encode_stream_features(Stream_features, TopXMLNS); -encode({p1_push} = Push, TopXMLNS) -> - encode_p1_push(Push, TopXMLNS); -encode({p1_rebind} = Rebind, TopXMLNS) -> - encode_p1_rebind(Rebind, TopXMLNS); -encode({p1_ack} = Ack, TopXMLNS) -> - encode_p1_ack(Ack, TopXMLNS); -encode({caps, _, _, _, _} = C, TopXMLNS) -> - encode_caps(C, TopXMLNS); -encode({feature_register} = Register, TopXMLNS) -> - encode_feature_register(Register, TopXMLNS); -encode({register, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _} = - Query, - TopXMLNS) -> - encode_register(Query, TopXMLNS); -encode({xmpp_session, _} = Session, TopXMLNS) -> - encode_session(Session, TopXMLNS); -encode({ping} = Ping, TopXMLNS) -> - encode_ping(Ping, TopXMLNS); -encode({time, _, _} = Time, TopXMLNS) -> - encode_time(Time, TopXMLNS); -encode({text, _, _} = Text, TopXMLNS) -> - encode_stream_error_text(Text, TopXMLNS); -encode({'see-other-host', _} = See_other_host, - TopXMLNS) -> - encode_stream_error_see_other_host(See_other_host, - TopXMLNS); -encode({stream_error, _, _} = Stream_error, TopXMLNS) -> - encode_stream_error(Stream_error, TopXMLNS); -encode({vcard_name, _, _, _, _, _} = N, TopXMLNS) -> - encode_vcard_N(N, TopXMLNS); -encode({vcard_adr, _, _, _, _, _, _, _, _, _, _, _, _, - _, _} = - Adr, - TopXMLNS) -> - encode_vcard_ADR(Adr, TopXMLNS); -encode({vcard_label, _, _, _, _, _, _, _, _} = Label, - TopXMLNS) -> - encode_vcard_LABEL(Label, TopXMLNS); -encode({vcard_tel, _, _, _, _, _, _, _, _, _, _, _, _, - _, _} = - Tel, - TopXMLNS) -> - encode_vcard_TEL(Tel, TopXMLNS); -encode({vcard_email, _, _, _, _, _, _} = Email, - TopXMLNS) -> - encode_vcard_EMAIL(Email, TopXMLNS); -encode({vcard_geo, _, _} = Geo, TopXMLNS) -> - encode_vcard_GEO(Geo, TopXMLNS); -encode({vcard_logo, _, _, _} = Logo, TopXMLNS) -> - encode_vcard_LOGO(Logo, TopXMLNS); -encode({vcard_photo, _, _, _} = Photo, TopXMLNS) -> - encode_vcard_PHOTO(Photo, TopXMLNS); -encode({vcard_org, _, _} = Org, TopXMLNS) -> - encode_vcard_ORG(Org, TopXMLNS); -encode({vcard_sound, _, _, _} = Sound, TopXMLNS) -> - encode_vcard_SOUND(Sound, TopXMLNS); -encode({vcard_key, _, _} = Key, TopXMLNS) -> - encode_vcard_KEY(Key, TopXMLNS); -encode({vcard_temp, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = - Vcard, - TopXMLNS) -> - encode_vcard_temp(Vcard, TopXMLNS); -encode({vcard_xupdate, _, _} = X, TopXMLNS) -> - encode_vcard_xupdate(X, TopXMLNS); -encode({xdata_option, _, _} = Option, TopXMLNS) -> - encode_xdata_field_option(Option, TopXMLNS); -encode({xdata_field, _, _, _, _, _, _, _, _} = Field, - TopXMLNS) -> - encode_xdata_field(Field, TopXMLNS); -encode({xdata, _, _, _, _, _, _} = X, TopXMLNS) -> - encode_xdata(X, TopXMLNS); -encode({ps_subscription, _, _, _, _, _, _} = - Subscription, - TopXMLNS) -> - encode_pubsub_subscription(Subscription, TopXMLNS); -encode({ps_affiliation, - <<"http://jabber.org/protocol/pubsub">>, _, _, _} = - Affiliation, - TopXMLNS) -> - encode_pubsub_affiliation(Affiliation, TopXMLNS); -encode({ps_affiliation, <<>>, _, _, _} = Affiliation, - TopXMLNS = <<"http://jabber.org/protocol/pubsub">>) -> - encode_pubsub_affiliation(Affiliation, TopXMLNS); -encode({ps_affiliation, - <<"http://jabber.org/protocol/pubsub#owner">>, _, _, - _} = - Affiliation, - TopXMLNS) -> - encode_pubsub_owner_affiliation(Affiliation, TopXMLNS); -encode({ps_affiliation, <<>>, _, _, _} = Affiliation, - TopXMLNS = - <<"http://jabber.org/protocol/pubsub#owner">>) -> - encode_pubsub_owner_affiliation(Affiliation, TopXMLNS); -encode({ps_item, _, _, _, _, _} = Item, TopXMLNS) -> - encode_pubsub_item(Item, TopXMLNS); -encode({ps_items, _, _, _, _, _, _} = Items, - TopXMLNS) -> - encode_pubsub_items(Items, TopXMLNS); -encode({ps_event, _, _, _, _, _, _} = Event, - TopXMLNS) -> - encode_pubsub_event(Event, TopXMLNS); -encode({ps_subscribe, _, _} = Subscribe, TopXMLNS) -> - encode_pubsub_subscribe(Subscribe, TopXMLNS); -encode({ps_unsubscribe, _, _, _} = Unsubscribe, - TopXMLNS) -> - encode_pubsub_unsubscribe(Unsubscribe, TopXMLNS); -encode({ps_publish, _, _} = Publish, TopXMLNS) -> - encode_pubsub_publish(Publish, TopXMLNS); -encode({ps_options, _, _, _, _} = Options, TopXMLNS) -> - encode_pubsub_options(Options, TopXMLNS); -encode({ps_retract, _, _, _} = Retract, TopXMLNS) -> - encode_pubsub_retract(Retract, TopXMLNS); -encode({pubsub, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _} = - Pubsub, - TopXMLNS) -> - encode_pubsub(Pubsub, TopXMLNS); -encode({pubsub_owner, _, _, _, _, _, _} = Pubsub, - TopXMLNS) -> - encode_pubsub_owner(Pubsub, TopXMLNS); -encode({ps_error, 'closed-node', _} = Closed_node, - TopXMLNS) -> - encode_pubsub_error_closed_node(Closed_node, TopXMLNS); -encode({ps_error, 'configuration-required', _} = - Configuration_required, - TopXMLNS) -> - encode_pubsub_error_configuration_required(Configuration_required, - TopXMLNS); -encode({ps_error, 'invalid-jid', _} = Invalid_jid, - TopXMLNS) -> - encode_pubsub_error_invalid_jid(Invalid_jid, TopXMLNS); -encode({ps_error, 'invalid-options', _} = - Invalid_options, - TopXMLNS) -> - encode_pubsub_error_invalid_options(Invalid_options, - TopXMLNS); -encode({ps_error, 'invalid-payload', _} = - Invalid_payload, - TopXMLNS) -> - encode_pubsub_error_invalid_payload(Invalid_payload, - TopXMLNS); -encode({ps_error, 'invalid-subid', _} = Invalid_subid, - TopXMLNS) -> - encode_pubsub_error_invalid_subid(Invalid_subid, - TopXMLNS); -encode({ps_error, 'item-forbidden', _} = Item_forbidden, - TopXMLNS) -> - encode_pubsub_error_item_forbidden(Item_forbidden, - TopXMLNS); -encode({ps_error, 'item-required', _} = Item_required, - TopXMLNS) -> - encode_pubsub_error_item_required(Item_required, - TopXMLNS); -encode({ps_error, 'jid-required', _} = Jid_required, - TopXMLNS) -> - encode_pubsub_error_jid_required(Jid_required, - TopXMLNS); -encode({ps_error, 'max-items-exceeded', _} = - Max_items_exceeded, - TopXMLNS) -> - encode_pubsub_error_max_items_exceeded(Max_items_exceeded, - TopXMLNS); -encode({ps_error, 'max-nodes-exceeded', _} = - Max_nodes_exceeded, - TopXMLNS) -> - encode_pubsub_error_max_nodes_exceeded(Max_nodes_exceeded, - TopXMLNS); -encode({ps_error, 'nodeid-required', _} = - Nodeid_required, - TopXMLNS) -> - encode_pubsub_error_nodeid_required(Nodeid_required, - TopXMLNS); -encode({ps_error, 'not-in-roster-group', _} = - Not_in_roster_group, - TopXMLNS) -> - encode_pubsub_error_not_in_roster_group(Not_in_roster_group, - TopXMLNS); -encode({ps_error, 'not-subscribed', _} = Not_subscribed, - TopXMLNS) -> - encode_pubsub_error_not_subscribed(Not_subscribed, - TopXMLNS); -encode({ps_error, 'payload-too-big', _} = - Payload_too_big, - TopXMLNS) -> - encode_pubsub_error_payload_too_big(Payload_too_big, - TopXMLNS); -encode({ps_error, 'payload-required', _} = - Payload_required, - TopXMLNS) -> - encode_pubsub_error_payload_required(Payload_required, - TopXMLNS); -encode({ps_error, 'pending-subscription', _} = - Pending_subscription, - TopXMLNS) -> - encode_pubsub_error_pending_subscription(Pending_subscription, - TopXMLNS); -encode({ps_error, 'presence-subscription-required', _} = - Presence_subscription_required, - TopXMLNS) -> - encode_pubsub_error_presence_subscription_required(Presence_subscription_required, - TopXMLNS); -encode({ps_error, 'subid-required', _} = Subid_required, - TopXMLNS) -> - encode_pubsub_error_subid_required(Subid_required, - TopXMLNS); -encode({ps_error, 'too-many-subscriptions', _} = - Too_many_subscriptions, - TopXMLNS) -> - encode_pubsub_error_too_many_subscriptions(Too_many_subscriptions, - TopXMLNS); -encode({ps_error, unsupported, _} = Unsupported, - TopXMLNS) -> - encode_pubsub_error_unsupported(Unsupported, TopXMLNS); -encode({ps_error, 'unsupported-access-model', _} = - Unsupported_access_model, - TopXMLNS) -> - encode_pubsub_error_unsupported_access_model(Unsupported_access_model, - TopXMLNS); -encode({shim, _} = Headers, TopXMLNS) -> - encode_shim_headers(Headers, TopXMLNS); -encode({chatstate, active} = Active, TopXMLNS) -> - encode_chatstate_active(Active, TopXMLNS); -encode({chatstate, composing} = Composing, TopXMLNS) -> - encode_chatstate_composing(Composing, TopXMLNS); -encode({chatstate, gone} = Gone, TopXMLNS) -> - encode_chatstate_gone(Gone, TopXMLNS); -encode({chatstate, inactive} = Inactive, TopXMLNS) -> - encode_chatstate_inactive(Inactive, TopXMLNS); -encode({chatstate, paused} = Paused, TopXMLNS) -> - encode_chatstate_paused(Paused, TopXMLNS); -encode({delay, _, _, _} = Delay, TopXMLNS) -> - encode_delay(Delay, TopXMLNS); -encode({streamhost, _, _, _} = Streamhost, TopXMLNS) -> - encode_bytestreams_streamhost(Streamhost, TopXMLNS); -encode({bytestreams, _, _, _, _, _, _} = Query, - TopXMLNS) -> - encode_bytestreams(Query, TopXMLNS); -encode({muc_history, _, _, _, _} = History, TopXMLNS) -> - encode_muc_history(History, TopXMLNS); -encode({muc_decline, _, _, _} = Decline, TopXMLNS) -> - encode_muc_user_decline(Decline, TopXMLNS); -encode({muc_destroy, _, _, _, _} = Destroy, TopXMLNS) -> - encode_muc_destroy(Destroy, TopXMLNS); -encode({muc_invite, _, _, _, _} = Invite, TopXMLNS) -> - encode_muc_user_invite(Invite, TopXMLNS); -encode({muc_user, _, _, _, _, _, _} = X, TopXMLNS) -> - encode_muc_user(X, TopXMLNS); -encode({muc_owner, _, _, _} = Query, TopXMLNS) -> - encode_muc_owner(Query, TopXMLNS); -encode({muc_item, _, _, _, _, _, _, _} = Item, - TopXMLNS) -> - encode_muc_admin_item(Item, TopXMLNS); -encode({muc_actor, _, _} = Actor, TopXMLNS) -> - encode_muc_admin_actor(Actor, TopXMLNS); -encode({muc_admin, _} = Query, TopXMLNS) -> - encode_muc_admin(Query, TopXMLNS); -encode({muc, _, _} = X, TopXMLNS) -> - encode_muc(X, TopXMLNS); -encode({muc_unique, _} = Unique, TopXMLNS) -> - encode_muc_unique(Unique, TopXMLNS); -encode({x_conference, _, _, _, _, _} = X, TopXMLNS) -> - encode_x_conference(X, TopXMLNS); -encode({muc_subscriptions, _} = Subscriptions, - TopXMLNS) -> - encode_muc_subscriptions(Subscriptions, TopXMLNS); -encode({muc_subscribe, _, _} = Subscribe, TopXMLNS) -> - encode_muc_subscribe(Subscribe, TopXMLNS); -encode({muc_unsubscribe} = Unsubscribe, TopXMLNS) -> - encode_muc_unsubscribe(Unsubscribe, TopXMLNS); -encode({rsm_first, _, _} = First, TopXMLNS) -> - encode_rsm_first(First, TopXMLNS); -encode({rsm_set, _, _, _, _, _, _, _} = Set, - TopXMLNS) -> - encode_rsm_set(Set, TopXMLNS); -encode({mam_query, _, _, _, _, _, _, _, _} = Query, - TopXMLNS) -> - encode_mam_query(Query, TopXMLNS); -encode({mam_archived, _, _} = Archived, TopXMLNS) -> - encode_mam_archived(Archived, TopXMLNS); -encode({mam_result, _, _, _, _} = Result, TopXMLNS) -> - encode_mam_result(Result, TopXMLNS); -encode({mam_prefs, _, _, _, _} = Prefs, TopXMLNS) -> - encode_mam_prefs(Prefs, TopXMLNS); -encode({mam_fin, _, _, _, _, _} = Fin, TopXMLNS) -> - encode_mam_fin(Fin, TopXMLNS); -encode({forwarded, _, _} = Forwarded, TopXMLNS) -> - encode_forwarded(Forwarded, TopXMLNS); -encode({carbons_disable} = Disable, TopXMLNS) -> - encode_carbons_disable(Disable, TopXMLNS); -encode({carbons_enable} = Enable, TopXMLNS) -> - encode_carbons_enable(Enable, TopXMLNS); -encode({carbons_private} = Private, TopXMLNS) -> - encode_carbons_private(Private, TopXMLNS); -encode({carbons_received, _} = Received, TopXMLNS) -> - encode_carbons_received(Received, TopXMLNS); -encode({carbons_sent, _} = Sent, TopXMLNS) -> - encode_carbons_sent(Sent, TopXMLNS); -encode({feature_csi, <<"urn:xmpp:csi:0">>} = Csi, - TopXMLNS) -> - encode_feature_csi(Csi, TopXMLNS); -encode({feature_csi, <<>>} = Csi, - TopXMLNS = <<"urn:xmpp:csi:0">>) -> - encode_feature_csi(Csi, TopXMLNS); -encode({csi, active} = Active, TopXMLNS) -> - encode_csi_active(Active, TopXMLNS); -encode({csi, inactive} = Inactive, TopXMLNS) -> - encode_csi_inactive(Inactive, TopXMLNS); -encode({feature_sm, _} = Sm, TopXMLNS) -> - encode_feature_sm(Sm, TopXMLNS); -encode({sm_enable, _, _, _} = Enable, TopXMLNS) -> - encode_sm_enable(Enable, TopXMLNS); -encode({sm_enabled, _, _, _, _, _} = Enabled, - TopXMLNS) -> - encode_sm_enabled(Enabled, TopXMLNS); -encode({sm_resume, _, _, _} = Resume, TopXMLNS) -> - encode_sm_resume(Resume, TopXMLNS); -encode({sm_resumed, _, _, _} = Resumed, TopXMLNS) -> - encode_sm_resumed(Resumed, TopXMLNS); -encode({sm_r, _} = R, TopXMLNS) -> - encode_sm_r(R, TopXMLNS); -encode({sm_a, _, _} = A, TopXMLNS) -> - encode_sm_a(A, TopXMLNS); -encode({sm_failed, _, _, _} = Failed, TopXMLNS) -> - encode_sm_failed(Failed, TopXMLNS); -encode({offline_item, _, _} = Item, TopXMLNS) -> - encode_offline_item(Item, TopXMLNS); -encode({offline, _, _, _} = Offline, TopXMLNS) -> - encode_offline(Offline, TopXMLNS); -encode({mix_join, _, _} = Join, TopXMLNS) -> - encode_mix_join(Join, TopXMLNS); -encode({mix_leave} = Leave, TopXMLNS) -> - encode_mix_leave(Leave, TopXMLNS); -encode({mix_participant, _, _} = Participant, - TopXMLNS) -> - encode_mix_participant(Participant, TopXMLNS); -encode({hint, 'no-copy'} = No_copy, TopXMLNS) -> - encode_hint_no_copy(No_copy, TopXMLNS); -encode({hint, 'no-store'} = No_store, TopXMLNS) -> - encode_hint_no_store(No_store, TopXMLNS); -encode({hint, 'no-storage'} = No_storage, TopXMLNS) -> - encode_hint_no_storage(No_storage, TopXMLNS); -encode({hint, store} = Store, TopXMLNS) -> - encode_hint_store(Store, TopXMLNS); -encode({hint, 'no-permanent-store'} = - No_permanent_store, - TopXMLNS) -> - encode_hint_no_permanent_store(No_permanent_store, - TopXMLNS); -encode({hint, 'no-permanent-storage'} = - No_permanent_storage, - TopXMLNS) -> - encode_hint_no_permanent_storage(No_permanent_storage, - TopXMLNS); -encode({search_item, _, _, _, _, _} = Item, TopXMLNS) -> - encode_search_item(Item, TopXMLNS); -encode({search, _, _, _, _, _, _, _} = Query, - TopXMLNS) -> - encode_search(Query, TopXMLNS); -encode({xevent, _, _, _, _, _} = X, TopXMLNS) -> - encode_xevent(X, TopXMLNS); -encode({expire, _, _} = X, TopXMLNS) -> - encode_expire(X, TopXMLNS); -encode({nick, _} = Nick, TopXMLNS) -> - encode_nick(Nick, TopXMLNS); -encode({address, _, _, _, _, _} = Address, TopXMLNS) -> - encode_address(Address, TopXMLNS); -encode({addresses, _} = Addresses, TopXMLNS) -> - encode_addresses(Addresses, TopXMLNS); -encode({stanza_id, _, _} = Stanza_id, TopXMLNS) -> - encode_stanza_id(Stanza_id, TopXMLNS); -encode({client_id, _} = Client_id, TopXMLNS) -> - encode_client_id(Client_id, TopXMLNS); -encode({adhoc_actions, _, _, _, _} = Actions, - TopXMLNS) -> - encode_adhoc_command_actions(Actions, TopXMLNS); -encode({adhoc_note, _, _} = Note, TopXMLNS) -> - encode_adhoc_command_notes(Note, TopXMLNS); -encode({adhoc_command, _, _, _, _, _, _, _, _} = - Command, - TopXMLNS) -> - encode_adhoc_command(Command, TopXMLNS); -encode({db_result, _, _, _, _, _} = Db_result, - TopXMLNS) -> - encode_db_result(Db_result, TopXMLNS); -encode({db_verify, _, _, _, _, _, _} = Db_verify, - TopXMLNS) -> - encode_db_verify(Db_verify, TopXMLNS); -encode({handshake, _} = Handshake, TopXMLNS) -> - encode_handshake(Handshake, TopXMLNS); -encode({stream_start, _, _, _, _, _, _, _, _} = - Stream_stream, - TopXMLNS) -> - encode_stream_start(Stream_stream, TopXMLNS); -encode({bob_data, _, _, _, _} = Data, TopXMLNS) -> - encode_bob_data(Data, TopXMLNS); -encode({xcaptcha, _} = Captcha, TopXMLNS) -> - encode_captcha(Captcha, TopXMLNS); -encode({media_uri, _, _} = Uri, TopXMLNS) -> - encode_media_uri(Uri, TopXMLNS); -encode({media, _, _, _} = Media, TopXMLNS) -> - encode_media(Media, TopXMLNS); -encode({oob_x, _, _, _} = X, TopXMLNS) -> - encode_oob_x(X, TopXMLNS); -encode({sic, _, _, _} = Address, TopXMLNS) -> - encode_sic(Address, TopXMLNS); -encode({upload_request, _, _, _, _} = Request, - TopXMLNS) -> - encode_upload_request(Request, TopXMLNS); -encode({upload_slot, _, _, _} = Slot, TopXMLNS) -> - encode_upload_slot(Slot, TopXMLNS); -encode({thumbnail, _, _, _, _} = Thumbnail, TopXMLNS) -> - encode_thumbnail(Thumbnail, TopXMLNS); -encode({privilege_perm, _, _} = Perm, TopXMLNS) -> - encode_privilege_perm(Perm, TopXMLNS); -encode({privilege, _, _} = Privilege, TopXMLNS) -> - encode_privilege(Privilege, TopXMLNS); -encode({delegated, _, _} = Delegated, TopXMLNS) -> - encode_delegated(Delegated, TopXMLNS); -encode({delegation, _, _} = Delegation, TopXMLNS) -> - encode_delegation(Delegation, TopXMLNS); -encode({delegation_query, _, _} = Query, TopXMLNS) -> - encode_delegation_query(Query, TopXMLNS). - -get_name({address, _, _, _, _, _}) -> <<"address">>; -get_name({addresses, _}) -> <<"addresses">>; -get_name({adhoc_actions, _, _, _, _}) -> <<"actions">>; -get_name({adhoc_command, _, _, _, _, _, _, _, _}) -> - <<"command">>; -get_name({adhoc_note, _, _}) -> <<"note">>; -get_name({bind, _, _}) -> <<"bind">>; -get_name({block, _}) -> <<"block">>; -get_name({block_list, _}) -> <<"blocklist">>; -get_name({bob_data, _, _, _, _}) -> <<"data">>; -get_name({bookmark_conference, _, _, _, _, _}) -> - <<"conference">>; -get_name({bookmark_storage, _, _}) -> <<"storage">>; -get_name({bookmark_url, _, _}) -> <<"url">>; -get_name({bytestreams, _, _, _, _, _, _}) -> - <<"query">>; -get_name({caps, _, _, _, _}) -> <<"c">>; -get_name({carbons_disable}) -> <<"disable">>; -get_name({carbons_enable}) -> <<"enable">>; -get_name({carbons_private}) -> <<"private">>; -get_name({carbons_received, _}) -> <<"received">>; -get_name({carbons_sent, _}) -> <<"sent">>; -get_name({chatstate, active}) -> <<"active">>; -get_name({chatstate, composing}) -> <<"composing">>; -get_name({chatstate, gone}) -> <<"gone">>; -get_name({chatstate, inactive}) -> <<"inactive">>; -get_name({chatstate, paused}) -> <<"paused">>; -get_name({client_id, _}) -> <<"client-id">>; -get_name({compress, _}) -> <<"compress">>; -get_name({compress_failure, _}) -> <<"failure">>; -get_name({compressed}) -> <<"compressed">>; -get_name({compression, _}) -> <<"compression">>; -get_name({csi, active}) -> <<"active">>; -get_name({csi, inactive}) -> <<"inactive">>; -get_name({db_result, _, _, _, _, _}) -> <<"db:result">>; -get_name({db_verify, _, _, _, _, _, _}) -> - <<"db:verify">>; -get_name({delay, _, _, _}) -> <<"delay">>; -get_name({delegated, _, _}) -> <<"delegated">>; -get_name({delegation, _, _}) -> <<"delegation">>; -get_name({delegation_query, _, _}) -> <<"query">>; -get_name({disco_info, _, _, _, _}) -> <<"query">>; -get_name({disco_item, _, _, _}) -> <<"item">>; -get_name({disco_items, _, _, _}) -> <<"query">>; -get_name({expire, _, _}) -> <<"x">>; -get_name({feature_csi, _}) -> <<"csi">>; -get_name({feature_register}) -> <<"register">>; -get_name({feature_sm, _}) -> <<"sm">>; -get_name({forwarded, _, _}) -> <<"forwarded">>; -get_name({gone, _}) -> <<"gone">>; -get_name({handshake, _}) -> <<"handshake">>; -get_name({hint, 'no-copy'}) -> <<"no-copy">>; -get_name({hint, 'no-permanent-storage'}) -> - <<"no-permanent-storage">>; -get_name({hint, 'no-permanent-store'}) -> - <<"no-permanent-store">>; -get_name({hint, 'no-storage'}) -> <<"no-storage">>; -get_name({hint, 'no-store'}) -> <<"no-store">>; -get_name({hint, store}) -> <<"store">>; -get_name({identity, _, _, _, _}) -> <<"identity">>; -get_name({iq, _, _, _, _, _, _}) -> <<"iq">>; -get_name({last, _, _}) -> <<"query">>; -get_name({legacy_auth, _, _, _, _}) -> <<"query">>; -get_name({mam_archived, _, _}) -> <<"archived">>; -get_name({mam_fin, _, _, _, _, _}) -> <<"fin">>; -get_name({mam_prefs, _, _, _, _}) -> <<"prefs">>; -get_name({mam_query, _, _, _, _, _, _, _, _}) -> - <<"query">>; -get_name({mam_result, _, _, _, _}) -> <<"result">>; -get_name({media, _, _, _}) -> <<"media">>; -get_name({media_uri, _, _}) -> <<"uri">>; -get_name({message, _, _, _, _, _, _, _, _, _}) -> - <<"message">>; -get_name({mix_join, _, _}) -> <<"join">>; -get_name({mix_leave}) -> <<"leave">>; -get_name({mix_participant, _, _}) -> <<"participant">>; -get_name({muc, _, _}) -> <<"x">>; -get_name({muc_actor, _, _}) -> <<"actor">>; -get_name({muc_admin, _}) -> <<"query">>; -get_name({muc_decline, _, _, _}) -> <<"decline">>; -get_name({muc_destroy, _, _, _, _}) -> <<"destroy">>; -get_name({muc_history, _, _, _, _}) -> <<"history">>; -get_name({muc_invite, _, _, _, _}) -> <<"invite">>; -get_name({muc_item, _, _, _, _, _, _, _}) -> <<"item">>; -get_name({muc_owner, _, _, _}) -> <<"query">>; -get_name({muc_subscribe, _, _}) -> <<"subscribe">>; -get_name({muc_subscriptions, _}) -> <<"subscriptions">>; -get_name({muc_unique, _}) -> <<"unique">>; -get_name({muc_unsubscribe}) -> <<"unsubscribe">>; -get_name({muc_user, _, _, _, _, _, _}) -> <<"x">>; -get_name({nick, _}) -> <<"nick">>; -get_name({offline, _, _, _}) -> <<"offline">>; -get_name({offline_item, _, _}) -> <<"item">>; -get_name({oob_x, _, _, _}) -> <<"x">>; -get_name({p1_ack}) -> <<"ack">>; -get_name({p1_push}) -> <<"push">>; -get_name({p1_rebind}) -> <<"rebind">>; -get_name({ping}) -> <<"ping">>; -get_name({presence, _, _, _, _, _, _, _, _, _}) -> - <<"presence">>; -get_name({privacy_item, _, _, _, _, _, _, _, _}) -> - <<"item">>; -get_name({privacy_list, _, _}) -> <<"list">>; -get_name({privacy_query, _, _, _}) -> <<"query">>; -get_name({private, _}) -> <<"query">>; -get_name({privilege, _, _}) -> <<"privilege">>; -get_name({privilege_perm, _, _}) -> <<"perm">>; -get_name({ps_affiliation, _, _, _, _}) -> - <<"affiliation">>; -get_name({ps_error, 'closed-node', _}) -> - <<"closed-node">>; -get_name({ps_error, 'configuration-required', _}) -> - <<"configuration-required">>; -get_name({ps_error, 'invalid-jid', _}) -> - <<"invalid-jid">>; -get_name({ps_error, 'invalid-options', _}) -> - <<"invalid-options">>; -get_name({ps_error, 'invalid-payload', _}) -> - <<"invalid-payload">>; -get_name({ps_error, 'invalid-subid', _}) -> - <<"invalid-subid">>; -get_name({ps_error, 'item-forbidden', _}) -> - <<"item-forbidden">>; -get_name({ps_error, 'item-required', _}) -> - <<"item-required">>; -get_name({ps_error, 'jid-required', _}) -> - <<"jid-required">>; -get_name({ps_error, 'max-items-exceeded', _}) -> - <<"max-items-exceeded">>; -get_name({ps_error, 'max-nodes-exceeded', _}) -> - <<"max-nodes-exceeded">>; -get_name({ps_error, 'nodeid-required', _}) -> - <<"nodeid-required">>; -get_name({ps_error, 'not-in-roster-group', _}) -> - <<"not-in-roster-group">>; -get_name({ps_error, 'not-subscribed', _}) -> - <<"not-subscribed">>; -get_name({ps_error, 'payload-required', _}) -> - <<"payload-required">>; -get_name({ps_error, 'payload-too-big', _}) -> - <<"payload-too-big">>; -get_name({ps_error, 'pending-subscription', _}) -> - <<"pending-subscription">>; -get_name({ps_error, 'presence-subscription-required', - _}) -> - <<"presence-subscription-required">>; -get_name({ps_error, 'subid-required', _}) -> - <<"subid-required">>; -get_name({ps_error, 'too-many-subscriptions', _}) -> - <<"too-many-subscriptions">>; -get_name({ps_error, unsupported, _}) -> - <<"unsupported">>; -get_name({ps_error, 'unsupported-access-model', _}) -> - <<"unsupported-access-model">>; -get_name({ps_event, _, _, _, _, _, _}) -> <<"event">>; -get_name({ps_item, _, _, _, _, _}) -> <<"item">>; -get_name({ps_items, _, _, _, _, _, _}) -> <<"items">>; -get_name({ps_options, _, _, _, _}) -> <<"options">>; -get_name({ps_publish, _, _}) -> <<"publish">>; -get_name({ps_retract, _, _, _}) -> <<"retract">>; -get_name({ps_subscribe, _, _}) -> <<"subscribe">>; -get_name({ps_subscription, _, _, _, _, _, _}) -> - <<"subscription">>; -get_name({ps_unsubscribe, _, _, _}) -> - <<"unsubscribe">>; -get_name({pubsub, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _}) -> - <<"pubsub">>; -get_name({pubsub_owner, _, _, _, _, _, _}) -> - <<"pubsub">>; -get_name({redirect, _}) -> <<"redirect">>; -get_name({register, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _}) -> - <<"query">>; -get_name({roster_item, _, _, _, _, _}) -> <<"item">>; -get_name({roster_query, _, _}) -> <<"query">>; -get_name({rosterver_feature}) -> <<"ver">>; -get_name({rsm_first, _, _}) -> <<"first">>; -get_name({rsm_set, _, _, _, _, _, _, _}) -> <<"set">>; -get_name({sasl_abort}) -> <<"abort">>; -get_name({sasl_auth, _, _}) -> <<"auth">>; -get_name({sasl_challenge, _}) -> <<"challenge">>; -get_name({sasl_failure, _, _}) -> <<"failure">>; -get_name({sasl_mechanisms, _}) -> <<"mechanisms">>; -get_name({sasl_response, _}) -> <<"response">>; -get_name({sasl_success, _}) -> <<"success">>; -get_name({search, _, _, _, _, _, _, _}) -> <<"query">>; -get_name({search_item, _, _, _, _, _}) -> <<"item">>; -get_name({'see-other-host', _}) -> <<"see-other-host">>; -get_name({shim, _}) -> <<"headers">>; -get_name({sic, _, _, _}) -> <<"address">>; -get_name({sm_a, _, _}) -> <<"a">>; -get_name({sm_enable, _, _, _}) -> <<"enable">>; -get_name({sm_enabled, _, _, _, _, _}) -> <<"enabled">>; -get_name({sm_failed, _, _, _}) -> <<"failed">>; -get_name({sm_r, _}) -> <<"r">>; -get_name({sm_resume, _, _, _}) -> <<"resume">>; -get_name({sm_resumed, _, _, _}) -> <<"resumed">>; -get_name({stanza_error, _, _, _, _, _, _}) -> - <<"error">>; -get_name({stanza_id, _, _}) -> <<"stanza-id">>; -get_name({starttls, _}) -> <<"starttls">>; -get_name({starttls_failure}) -> <<"failure">>; -get_name({starttls_proceed}) -> <<"proceed">>; -get_name({stat, _, _, _, _}) -> <<"stat">>; -get_name({stat_error, _, _}) -> <<"error">>; -get_name({stats, _, _}) -> <<"query">>; -get_name({stream_error, _, _}) -> <<"stream:error">>; -get_name({stream_features, _}) -> <<"stream:features">>; -get_name({stream_start, _, _, _, _, _, _, _, _}) -> - <<"stream:stream">>; -get_name({streamhost, _, _, _}) -> <<"streamhost">>; -get_name({text, _, _}) -> <<"text">>; -get_name({thumbnail, _, _, _, _}) -> <<"thumbnail">>; -get_name({time, _, _}) -> <<"time">>; -get_name({unblock, _}) -> <<"unblock">>; -get_name({upload_request, _, _, _, _}) -> <<"request">>; -get_name({upload_slot, _, _, _}) -> <<"slot">>; -get_name({vcard_adr, _, _, _, _, _, _, _, _, _, _, _, _, - _, _}) -> - <<"ADR">>; -get_name({vcard_email, _, _, _, _, _, _}) -> - <<"EMAIL">>; -get_name({vcard_geo, _, _}) -> <<"GEO">>; -get_name({vcard_key, _, _}) -> <<"KEY">>; -get_name({vcard_label, _, _, _, _, _, _, _, _}) -> - <<"LABEL">>; -get_name({vcard_logo, _, _, _}) -> <<"LOGO">>; -get_name({vcard_name, _, _, _, _, _}) -> <<"N">>; -get_name({vcard_org, _, _}) -> <<"ORG">>; -get_name({vcard_photo, _, _, _}) -> <<"PHOTO">>; -get_name({vcard_sound, _, _, _}) -> <<"SOUND">>; -get_name({vcard_tel, _, _, _, _, _, _, _, _, _, _, _, _, - _, _}) -> - <<"TEL">>; -get_name({vcard_temp, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _}) -> - <<"vCard">>; -get_name({vcard_xupdate, _, _}) -> <<"x">>; -get_name({version, _, _, _}) -> <<"query">>; -get_name({x_conference, _, _, _, _, _}) -> <<"x">>; -get_name({xcaptcha, _}) -> <<"captcha">>; -get_name({xdata, _, _, _, _, _, _}) -> <<"x">>; -get_name({xdata_field, _, _, _, _, _, _, _, _}) -> - <<"field">>; -get_name({xdata_option, _, _}) -> <<"option">>; -get_name({xevent, _, _, _, _, _}) -> <<"x">>; -get_name({xmpp_session, _}) -> <<"session">>. - -get_ns({address, _, _, _, _, _}) -> - <<"http://jabber.org/protocol/address">>; -get_ns({addresses, _}) -> - <<"http://jabber.org/protocol/address">>; -get_ns({adhoc_actions, _, _, _, _}) -> - <<"http://jabber.org/protocol/commands">>; -get_ns({adhoc_command, _, _, _, _, _, _, _, _}) -> - <<"http://jabber.org/protocol/commands">>; -get_ns({adhoc_note, _, _}) -> - <<"http://jabber.org/protocol/commands">>; -get_ns({bind, _, _}) -> - <<"urn:ietf:params:xml:ns:xmpp-bind">>; -get_ns({block, _}) -> <<"urn:xmpp:blocking">>; -get_ns({block_list, _}) -> <<"urn:xmpp:blocking">>; -get_ns({bob_data, _, _, _, _}) -> <<"urn:xmpp:bob">>; -get_ns({bookmark_conference, _, _, _, _, _}) -> - <<"storage:bookmarks">>; -get_ns({bookmark_storage, _, _}) -> - <<"storage:bookmarks">>; -get_ns({bookmark_url, _, _}) -> <<"storage:bookmarks">>; -get_ns({bytestreams, _, _, _, _, _, _}) -> - <<"http://jabber.org/protocol/bytestreams">>; -get_ns({caps, _, _, _, _}) -> - <<"http://jabber.org/protocol/caps">>; -get_ns({carbons_disable}) -> <<"urn:xmpp:carbons:2">>; -get_ns({carbons_enable}) -> <<"urn:xmpp:carbons:2">>; -get_ns({carbons_private}) -> <<"urn:xmpp:carbons:2">>; -get_ns({carbons_received, _}) -> - <<"urn:xmpp:carbons:2">>; -get_ns({carbons_sent, _}) -> <<"urn:xmpp:carbons:2">>; -get_ns({chatstate, active}) -> - <<"http://jabber.org/protocol/chatstates">>; -get_ns({chatstate, composing}) -> - <<"http://jabber.org/protocol/chatstates">>; -get_ns({chatstate, gone}) -> - <<"http://jabber.org/protocol/chatstates">>; -get_ns({chatstate, inactive}) -> - <<"http://jabber.org/protocol/chatstates">>; -get_ns({chatstate, paused}) -> - <<"http://jabber.org/protocol/chatstates">>; -get_ns({client_id, _}) -> <<"urn:xmpp:sid:0">>; -get_ns({compress, _}) -> - <<"http://jabber.org/protocol/compress">>; -get_ns({compress_failure, _}) -> - <<"http://jabber.org/protocol/compress">>; -get_ns({compressed}) -> - <<"http://jabber.org/protocol/compress">>; -get_ns({compression, _}) -> - <<"http://jabber.org/features/compress">>; -get_ns({csi, active}) -> <<"urn:xmpp:csi:0">>; -get_ns({csi, inactive}) -> <<"urn:xmpp:csi:0">>; -get_ns({db_result, _, _, _, _, _}) -> - <<"jabber:server">>; -get_ns({db_verify, _, _, _, _, _, _}) -> - <<"jabber:server">>; -get_ns({delay, _, _, _}) -> <<"urn:xmpp:delay">>; -get_ns({delegated, _, _}) -> - <<"urn:xmpp:delegation:1">>; -get_ns({delegation, _, _}) -> - <<"urn:xmpp:delegation:1">>; -get_ns({delegation_query, _, _}) -> - <<"urn:xmpp:delegation:1">>; -get_ns({disco_info, _, _, _, _}) -> - <<"http://jabber.org/protocol/disco#info">>; -get_ns({disco_item, _, _, _}) -> - <<"http://jabber.org/protocol/disco#items">>; -get_ns({disco_items, _, _, _}) -> - <<"http://jabber.org/protocol/disco#items">>; -get_ns({expire, _, _}) -> <<"jabber:x:expire">>; -get_ns({feature_csi, Xmlns}) -> Xmlns; -get_ns({feature_register}) -> - <<"http://jabber.org/features/iq-register">>; -get_ns({feature_sm, Xmlns}) -> Xmlns; -get_ns({forwarded, _, _}) -> <<"urn:xmpp:forward:0">>; -get_ns({gone, _}) -> - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>; -get_ns({handshake, _}) -> <<"jabber:component:accept">>; -get_ns({hint, 'no-copy'}) -> <<"urn:xmpp:hints">>; -get_ns({hint, 'no-permanent-storage'}) -> - <<"urn:xmpp:hints">>; -get_ns({hint, 'no-permanent-store'}) -> - <<"urn:xmpp:hints">>; -get_ns({hint, 'no-storage'}) -> <<"urn:xmpp:hints">>; -get_ns({hint, 'no-store'}) -> <<"urn:xmpp:hints">>; -get_ns({hint, store}) -> <<"urn:xmpp:hints">>; -get_ns({identity, _, _, _, _}) -> - <<"http://jabber.org/protocol/disco#info">>; -get_ns({iq, _, _, _, _, _, _}) -> <<"jabber:client">>; -get_ns({last, _, _}) -> <<"jabber:iq:last">>; -get_ns({legacy_auth, _, _, _, _}) -> - <<"jabber:iq:auth">>; -get_ns({mam_archived, _, _}) -> <<"urn:xmpp:mam:tmp">>; -get_ns({mam_fin, Xmlns, _, _, _, _}) -> Xmlns; -get_ns({mam_prefs, Xmlns, _, _, _}) -> Xmlns; -get_ns({mam_query, Xmlns, _, _, _, _, _, _, _}) -> - Xmlns; -get_ns({mam_result, Xmlns, _, _, _}) -> Xmlns; -get_ns({media, _, _, _}) -> - <<"urn:xmpp:media-element">>; -get_ns({media_uri, _, _}) -> - <<"urn:xmpp:media-element">>; -get_ns({message, _, _, _, _, _, _, _, _, _}) -> - <<"jabber:client">>; -get_ns({mix_join, _, _}) -> <<"urn:xmpp:mix:0">>; -get_ns({mix_leave}) -> <<"urn:xmpp:mix:0">>; -get_ns({mix_participant, _, _}) -> <<"urn:xmpp:mix:0">>; -get_ns({muc, _, _}) -> - <<"http://jabber.org/protocol/muc">>; -get_ns({muc_admin, _}) -> - <<"http://jabber.org/protocol/muc#admin">>; -get_ns({muc_decline, _, _, _}) -> - <<"http://jabber.org/protocol/muc#user">>; -get_ns({muc_destroy, Xmlns, _, _, _}) -> Xmlns; -get_ns({muc_history, _, _, _, _}) -> - <<"http://jabber.org/protocol/muc">>; -get_ns({muc_invite, _, _, _, _}) -> - <<"http://jabber.org/protocol/muc#user">>; -get_ns({muc_owner, _, _, _}) -> - <<"http://jabber.org/protocol/muc#owner">>; -get_ns({muc_subscribe, _, _}) -> - <<"urn:xmpp:mucsub:0">>; -get_ns({muc_subscriptions, _}) -> - <<"urn:xmpp:mucsub:0">>; -get_ns({muc_unique, _}) -> - <<"http://jabber.org/protocol/muc#unique">>; -get_ns({muc_unsubscribe}) -> <<"urn:xmpp:mucsub:0">>; -get_ns({muc_user, _, _, _, _, _, _}) -> - <<"http://jabber.org/protocol/muc#user">>; -get_ns({nick, _}) -> - <<"http://jabber.org/protocol/nick">>; -get_ns({offline, _, _, _}) -> - <<"http://jabber.org/protocol/offline">>; -get_ns({offline_item, _, _}) -> - <<"http://jabber.org/protocol/offline">>; -get_ns({oob_x, _, _, _}) -> <<"jabber:x:oob">>; -get_ns({p1_ack}) -> <<"p1:ack">>; -get_ns({p1_push}) -> <<"p1:push">>; -get_ns({p1_rebind}) -> <<"p1:rebind">>; -get_ns({ping}) -> <<"urn:xmpp:ping">>; -get_ns({presence, _, _, _, _, _, _, _, _, _}) -> - <<"jabber:client">>; -get_ns({privacy_item, _, _, _, _, _, _, _, _}) -> - <<"jabber:iq:privacy">>; -get_ns({privacy_list, _, _}) -> <<"jabber:iq:privacy">>; -get_ns({privacy_query, _, _, _}) -> - <<"jabber:iq:privacy">>; -get_ns({private, _}) -> <<"jabber:iq:private">>; -get_ns({privilege, _, _}) -> <<"urn:xmpp:privilege:1">>; -get_ns({privilege_perm, _, _}) -> - <<"urn:xmpp:privilege:1">>; -get_ns({ps_affiliation, Xmlns, _, _, _}) -> Xmlns; -get_ns({ps_error, 'closed-node', _}) -> - <<"http://jabber.org/protocol/pubsub#errors">>; -get_ns({ps_error, 'configuration-required', _}) -> - <<"http://jabber.org/protocol/pubsub#errors">>; -get_ns({ps_error, 'invalid-jid', _}) -> - <<"http://jabber.org/protocol/pubsub#errors">>; -get_ns({ps_error, 'invalid-options', _}) -> - <<"http://jabber.org/protocol/pubsub#errors">>; -get_ns({ps_error, 'invalid-payload', _}) -> - <<"http://jabber.org/protocol/pubsub#errors">>; -get_ns({ps_error, 'invalid-subid', _}) -> - <<"http://jabber.org/protocol/pubsub#errors">>; -get_ns({ps_error, 'item-forbidden', _}) -> - <<"http://jabber.org/protocol/pubsub#errors">>; -get_ns({ps_error, 'item-required', _}) -> - <<"http://jabber.org/protocol/pubsub#errors">>; -get_ns({ps_error, 'jid-required', _}) -> - <<"http://jabber.org/protocol/pubsub#errors">>; -get_ns({ps_error, 'max-items-exceeded', _}) -> - <<"http://jabber.org/protocol/pubsub#errors">>; -get_ns({ps_error, 'max-nodes-exceeded', _}) -> - <<"http://jabber.org/protocol/pubsub#errors">>; -get_ns({ps_error, 'nodeid-required', _}) -> - <<"http://jabber.org/protocol/pubsub#errors">>; -get_ns({ps_error, 'not-in-roster-group', _}) -> - <<"http://jabber.org/protocol/pubsub#errors">>; -get_ns({ps_error, 'not-subscribed', _}) -> - <<"http://jabber.org/protocol/pubsub#errors">>; -get_ns({ps_error, 'payload-required', _}) -> - <<"http://jabber.org/protocol/pubsub#errors">>; -get_ns({ps_error, 'payload-too-big', _}) -> - <<"http://jabber.org/protocol/pubsub#errors">>; -get_ns({ps_error, 'pending-subscription', _}) -> - <<"http://jabber.org/protocol/pubsub#errors">>; -get_ns({ps_error, 'presence-subscription-required', - _}) -> - <<"http://jabber.org/protocol/pubsub#errors">>; -get_ns({ps_error, 'subid-required', _}) -> - <<"http://jabber.org/protocol/pubsub#errors">>; -get_ns({ps_error, 'too-many-subscriptions', _}) -> - <<"http://jabber.org/protocol/pubsub#errors">>; -get_ns({ps_error, unsupported, _}) -> - <<"http://jabber.org/protocol/pubsub#errors">>; -get_ns({ps_error, 'unsupported-access-model', _}) -> - <<"http://jabber.org/protocol/pubsub#errors">>; -get_ns({ps_event, _, _, _, _, _, _}) -> - <<"http://jabber.org/protocol/pubsub#event">>; -get_ns({ps_item, Xmlns, _, _, _, _}) -> Xmlns; -get_ns({ps_items, Xmlns, _, _, _, _, _}) -> Xmlns; -get_ns({ps_options, _, _, _, _}) -> - <<"http://jabber.org/protocol/pubsub">>; -get_ns({ps_publish, _, _}) -> - <<"http://jabber.org/protocol/pubsub">>; -get_ns({ps_retract, _, _, _}) -> - <<"http://jabber.org/protocol/pubsub">>; -get_ns({ps_subscribe, _, _}) -> - <<"http://jabber.org/protocol/pubsub">>; -get_ns({ps_subscription, Xmlns, _, _, _, _, _}) -> - Xmlns; -get_ns({ps_unsubscribe, _, _, _}) -> - <<"http://jabber.org/protocol/pubsub">>; -get_ns({pubsub, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _}) -> - <<"http://jabber.org/protocol/pubsub">>; -get_ns({pubsub_owner, _, _, _, _, _, _}) -> - <<"http://jabber.org/protocol/pubsub#owner">>; -get_ns({redirect, _}) -> - <<"urn:ietf:params:xml:ns:xmpp-stanzas">>; -get_ns({register, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _}) -> - <<"jabber:iq:register">>; -get_ns({roster_item, _, _, _, _, _}) -> - <<"jabber:iq:roster">>; -get_ns({roster_query, _, _}) -> <<"jabber:iq:roster">>; -get_ns({rosterver_feature}) -> - <<"urn:xmpp:features:rosterver">>; -get_ns({rsm_first, _, _}) -> - <<"http://jabber.org/protocol/rsm">>; -get_ns({rsm_set, _, _, _, _, _, _, _}) -> - <<"http://jabber.org/protocol/rsm">>; -get_ns({sasl_abort}) -> - <<"urn:ietf:params:xml:ns:xmpp-sasl">>; -get_ns({sasl_auth, _, _}) -> - <<"urn:ietf:params:xml:ns:xmpp-sasl">>; -get_ns({sasl_challenge, _}) -> - <<"urn:ietf:params:xml:ns:xmpp-sasl">>; -get_ns({sasl_failure, _, _}) -> - <<"urn:ietf:params:xml:ns:xmpp-sasl">>; -get_ns({sasl_mechanisms, _}) -> - <<"urn:ietf:params:xml:ns:xmpp-sasl">>; -get_ns({sasl_response, _}) -> - <<"urn:ietf:params:xml:ns:xmpp-sasl">>; -get_ns({sasl_success, _}) -> - <<"urn:ietf:params:xml:ns:xmpp-sasl">>; -get_ns({search, _, _, _, _, _, _, _}) -> - <<"jabber:iq:search">>; -get_ns({search_item, _, _, _, _, _}) -> - <<"jabber:iq:search">>; -get_ns({'see-other-host', _}) -> - <<"urn:ietf:params:xml:ns:xmpp-streams">>; -get_ns({shim, _}) -> - <<"http://jabber.org/protocol/shim">>; -get_ns({sic, _, _, Xmlns}) -> Xmlns; -get_ns({sm_a, _, Xmlns}) -> Xmlns; -get_ns({sm_enable, _, _, Xmlns}) -> Xmlns; -get_ns({sm_enabled, _, _, _, _, Xmlns}) -> Xmlns; -get_ns({sm_failed, _, _, Xmlns}) -> Xmlns; -get_ns({sm_r, Xmlns}) -> Xmlns; -get_ns({sm_resume, _, _, Xmlns}) -> Xmlns; -get_ns({sm_resumed, _, _, Xmlns}) -> Xmlns; -get_ns({stanza_error, _, _, _, _, _, _}) -> - <<"jabber:client">>; -get_ns({stanza_id, _, _}) -> <<"urn:xmpp:sid:0">>; -get_ns({starttls, _}) -> - <<"urn:ietf:params:xml:ns:xmpp-tls">>; -get_ns({starttls_failure}) -> - <<"urn:ietf:params:xml:ns:xmpp-tls">>; -get_ns({starttls_proceed}) -> - <<"urn:ietf:params:xml:ns:xmpp-tls">>; -get_ns({stat, _, _, _, _}) -> - <<"http://jabber.org/protocol/stats">>; -get_ns({stat_error, _, _}) -> - <<"http://jabber.org/protocol/stats">>; -get_ns({stats, _, _}) -> - <<"http://jabber.org/protocol/stats">>; -get_ns({stream_error, _, _}) -> <<"jabber:client">>; -get_ns({stream_features, _}) -> <<"jabber:client">>; -get_ns({stream_start, _, _, _, _, Xmlns, _, _, _}) -> - Xmlns; -get_ns({streamhost, _, _, _}) -> - <<"http://jabber.org/protocol/bytestreams">>; -get_ns({thumbnail, _, _, _, _}) -> - <<"urn:xmpp:thumbs:1">>; -get_ns({time, _, _}) -> <<"urn:xmpp:time">>; -get_ns({unblock, _}) -> <<"urn:xmpp:blocking">>; -get_ns({upload_request, _, _, _, Xmlns}) -> Xmlns; -get_ns({upload_slot, _, _, Xmlns}) -> Xmlns; -get_ns({vcard_adr, _, _, _, _, _, _, _, _, _, _, _, _, - _, _}) -> - <<"vcard-temp">>; -get_ns({vcard_email, _, _, _, _, _, _}) -> - <<"vcard-temp">>; -get_ns({vcard_geo, _, _}) -> <<"vcard-temp">>; -get_ns({vcard_key, _, _}) -> <<"vcard-temp">>; -get_ns({vcard_label, _, _, _, _, _, _, _, _}) -> - <<"vcard-temp">>; -get_ns({vcard_logo, _, _, _}) -> <<"vcard-temp">>; -get_ns({vcard_name, _, _, _, _, _}) -> <<"vcard-temp">>; -get_ns({vcard_org, _, _}) -> <<"vcard-temp">>; -get_ns({vcard_photo, _, _, _}) -> <<"vcard-temp">>; -get_ns({vcard_sound, _, _, _}) -> <<"vcard-temp">>; -get_ns({vcard_tel, _, _, _, _, _, _, _, _, _, _, _, _, - _, _}) -> - <<"vcard-temp">>; -get_ns({vcard_temp, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _}) -> - <<"vcard-temp">>; -get_ns({vcard_xupdate, _, _}) -> - <<"vcard-temp:x:update">>; -get_ns({version, _, _, _}) -> <<"jabber:iq:version">>; -get_ns({x_conference, _, _, _, _, _}) -> - <<"jabber:x:conference">>; -get_ns({xcaptcha, _}) -> <<"urn:xmpp:captcha">>; -get_ns({xdata, _, _, _, _, _, _}) -> - <<"jabber:x:data">>; -get_ns({xdata_field, _, _, _, _, _, _, _, _}) -> - <<"jabber:x:data">>; -get_ns({xdata_option, _, _}) -> <<"jabber:x:data">>; -get_ns({xevent, _, _, _, _, _}) -> <<"jabber:x:event">>; -get_ns({xmpp_session, _}) -> - <<"urn:ietf:params:xml:ns:xmpp-session">>. - -dec_int(Val) -> dec_int(Val, infinity, infinity). - -dec_int(Val, Min, Max) -> - case list_to_integer(binary_to_list(Val)) of - Int when Int =< Max, Min == infinity -> Int; - Int when Int =< Max, Int >= Min -> Int - end. - -enc_int(Int) -> list_to_binary(integer_to_list(Int)). - -dec_enum(Val, Enums) -> - AtomVal = erlang:binary_to_existing_atom(Val, utf8), - case lists:member(AtomVal, Enums) of - true -> AtomVal - end. - -enc_enum(Atom) -> erlang:atom_to_binary(Atom, utf8). - -format_error({bad_attr_value, Attr, Tag, XMLNS}) -> - <<"Bad value of attribute '", Attr/binary, "' in tag <", - Tag/binary, "/> qualified by namespace '", XMLNS/binary, - "'">>; -format_error({bad_cdata_value, <<>>, Tag, XMLNS}) -> - <<"Bad value of cdata in tag <", Tag/binary, - "/> qualified by namespace '", XMLNS/binary, "'">>; -format_error({missing_tag, Tag, XMLNS}) -> - <<"Missing tag <", Tag/binary, - "/> qualified by namespace '", XMLNS/binary, "'">>; -format_error({missing_attr, Attr, Tag, XMLNS}) -> - <<"Missing attribute '", Attr/binary, "' in tag <", - Tag/binary, "/> qualified by namespace '", XMLNS/binary, - "'">>; -format_error({missing_cdata, <<>>, Tag, XMLNS}) -> - <<"Missing cdata in tag <", Tag/binary, - "/> qualified by namespace '", XMLNS/binary, "'">>; -format_error({unknown_tag, Tag, XMLNS}) -> - <<"Unknown tag <", Tag/binary, - "/> qualified by namespace '", XMLNS/binary, "'">>; -format_error({missing_tag_xmlns, Tag}) -> - <<"Missing namespace for tag <", Tag/binary, "/>">>. - -get_attr(Attr, Attrs) -> - case lists:keyfind(Attr, 1, Attrs) of - {_, Val} -> Val; - false -> <<>> - end. - -enc_xmlns_attrs(XMLNS, XMLNS) -> []; -enc_xmlns_attrs(XMLNS, _) -> [{<<"xmlns">>, XMLNS}]. - -choose_top_xmlns(<<>>, NSList, TopXMLNS) -> - case lists:member(TopXMLNS, NSList) of - true -> TopXMLNS; - false -> hd(NSList) - end; -choose_top_xmlns(XMLNS, _, _) -> XMLNS. - -pp(Term) -> io_lib_pretty:print(Term, fun pp/2). - -pp(last, 2) -> [seconds, status]; -pp(version, 3) -> [name, ver, os]; -pp(roster_item, 5) -> - [jid, name, groups, subscription, ask]; -pp(roster_query, 2) -> [items, ver]; -pp(rosterver_feature, 0) -> []; -pp(privacy_item, 8) -> - [order, action, type, value, message, iq, presence_in, - presence_out]; -pp(privacy_list, 2) -> [name, items]; -pp(privacy_query, 3) -> [lists, default, active]; -pp(block, 1) -> [items]; -pp(unblock, 1) -> [items]; -pp(block_list, 1) -> [items]; -pp(identity, 4) -> [category, type, lang, name]; -pp(disco_info, 4) -> - [node, identities, features, xdata]; -pp(disco_item, 3) -> [jid, name, node]; -pp(disco_items, 3) -> [node, items, rsm]; -pp(private, 1) -> [xml_els]; -pp(bookmark_conference, 5) -> - [name, jid, autojoin, nick, password]; -pp(bookmark_url, 2) -> [name, url]; -pp(bookmark_storage, 2) -> [conference, url]; -pp(stat_error, 2) -> [code, reason]; -pp(stat, 4) -> [name, units, value, error]; -pp(stats, 2) -> [list, node]; -pp(iq, 6) -> [id, type, lang, from, to, sub_els]; -pp(message, 9) -> - [id, type, lang, from, to, subject, body, thread, - sub_els]; -pp(presence, 9) -> - [id, type, lang, from, to, show, status, priority, - sub_els]; -pp(gone, 1) -> [uri]; -pp(redirect, 1) -> [uri]; -pp(stanza_error, 6) -> - [type, code, by, reason, text, sub_els]; -pp(bind, 2) -> [jid, resource]; -pp(legacy_auth, 4) -> - [username, password, digest, resource]; -pp(sasl_auth, 2) -> [mechanism, text]; -pp(sasl_abort, 0) -> []; -pp(sasl_challenge, 1) -> [text]; -pp(sasl_response, 1) -> [text]; -pp(sasl_success, 1) -> [text]; -pp(sasl_failure, 2) -> [reason, text]; -pp(sasl_mechanisms, 1) -> [list]; -pp(starttls, 1) -> [required]; -pp(starttls_proceed, 0) -> []; -pp(starttls_failure, 0) -> []; -pp(compress_failure, 1) -> [reason]; -pp(compress, 1) -> [methods]; -pp(compressed, 0) -> []; -pp(compression, 1) -> [methods]; -pp(stream_features, 1) -> [sub_els]; -pp(p1_push, 0) -> []; -pp(p1_rebind, 0) -> []; -pp(p1_ack, 0) -> []; -pp(caps, 4) -> [node, version, hash, exts]; -pp(feature_register, 0) -> []; -pp(register, 22) -> - [registered, remove, instructions, username, nick, - password, name, first, last, email, address, city, - state, zip, phone, url, date, misc, text, key, xdata, - sub_els]; -pp(xmpp_session, 1) -> [optional]; -pp(ping, 0) -> []; -pp(time, 2) -> [tzo, utc]; -pp(text, 2) -> [lang, data]; -pp('see-other-host', 1) -> [host]; -pp(stream_error, 2) -> [reason, text]; -pp(vcard_name, 5) -> - [family, given, middle, prefix, suffix]; -pp(vcard_adr, 14) -> - [home, work, postal, parcel, dom, intl, pref, pobox, - extadd, street, locality, region, pcode, ctry]; -pp(vcard_label, 8) -> - [home, work, postal, parcel, dom, intl, pref, line]; -pp(vcard_tel, 14) -> - [home, work, voice, fax, pager, msg, cell, video, bbs, - modem, isdn, pcs, pref, number]; -pp(vcard_email, 6) -> - [home, work, internet, pref, x400, userid]; -pp(vcard_geo, 2) -> [lat, lon]; -pp(vcard_logo, 3) -> [type, binval, extval]; -pp(vcard_photo, 3) -> [type, binval, extval]; -pp(vcard_org, 2) -> [name, units]; -pp(vcard_sound, 3) -> [phonetic, binval, extval]; -pp(vcard_key, 2) -> [type, cred]; -pp(vcard_temp, 29) -> - [version, fn, n, nickname, photo, bday, adr, label, tel, - email, jabberid, mailer, tz, geo, title, role, logo, - org, categories, note, prodid, rev, sort_string, sound, - uid, url, class, key, desc]; -pp(xdata_option, 2) -> [label, value]; -pp(xdata_field, 8) -> - [label, type, var, required, desc, values, options, - sub_els]; -pp(xdata, 6) -> - [type, instructions, title, reported, items, fields]; -pp(ps_subscription, 6) -> - [xmlns, jid, type, node, subid, expiry]; -pp(ps_item, 5) -> [xmlns, id, xml_els, node, publisher]; -pp(ps_items, 6) -> - [xmlns, node, items, max_items, subid, retract]; -pp(ps_event, 6) -> - [items, purge, subscription, delete, create, - configuration]; -pp(ps_subscribe, 2) -> [node, jid]; -pp(ps_unsubscribe, 3) -> [node, jid, subid]; -pp(ps_publish, 2) -> [node, items]; -pp(ps_options, 4) -> [node, jid, subid, xdata]; -pp(ps_retract, 3) -> [node, notify, items]; -pp(pubsub, 16) -> - [subscriptions, subscription, affiliations, publish, - publish_options, subscribe, unsubscribe, options, items, - retract, create, configure, default, delete, purge, - rsm]; -pp(pubsub_owner, 6) -> - [affiliations, configure, default, delete, purge, - subscriptions]; -pp(shim, 1) -> [headers]; -pp(delay, 3) -> [stamp, from, desc]; -pp(streamhost, 3) -> [jid, host, port]; -pp(bytestreams, 6) -> - [hosts, used, activate, dstaddr, mode, sid]; -pp(muc_history, 4) -> - [maxchars, maxstanzas, seconds, since]; -pp(muc_decline, 3) -> [reason, from, to]; -pp(muc_destroy, 4) -> [xmlns, jid, reason, password]; -pp(muc_invite, 4) -> [reason, from, to, continue]; -pp(muc_user, 6) -> - [decline, destroy, invites, items, status_codes, - password]; -pp(muc_owner, 3) -> [destroy, config, items]; -pp(muc_item, 7) -> - [actor, continue, reason, affiliation, role, jid, nick]; -pp(muc_actor, 2) -> [jid, nick]; -pp(muc_admin, 1) -> [items]; -pp(muc, 2) -> [history, password]; -pp(muc_unique, 1) -> [name]; -pp(x_conference, 5) -> - [jid, password, reason, continue, thread]; -pp(muc_subscriptions, 1) -> [list]; -pp(muc_subscribe, 2) -> [nick, events]; -pp(muc_unsubscribe, 0) -> []; -pp(rsm_first, 2) -> [index, data]; -pp(rsm_set, 7) -> - ['after', before, count, first, index, last, max]; -pp(mam_query, 8) -> - [xmlns, id, start, 'end', with, withtext, rsm, xdata]; -pp(mam_archived, 2) -> [by, id]; -pp(mam_result, 4) -> [xmlns, queryid, id, sub_els]; -pp(mam_prefs, 4) -> [xmlns, default, always, never]; -pp(mam_fin, 5) -> [xmlns, id, rsm, stable, complete]; -pp(forwarded, 2) -> [delay, xml_els]; -pp(carbons_disable, 0) -> []; -pp(carbons_enable, 0) -> []; -pp(carbons_private, 0) -> []; -pp(carbons_received, 1) -> [forwarded]; -pp(carbons_sent, 1) -> [forwarded]; -pp(feature_csi, 1) -> [xmlns]; -pp(feature_sm, 1) -> [xmlns]; -pp(sm_enable, 3) -> [max, resume, xmlns]; -pp(sm_enabled, 5) -> [id, location, max, resume, xmlns]; -pp(sm_resume, 3) -> [h, previd, xmlns]; -pp(sm_resumed, 3) -> [h, previd, xmlns]; -pp(sm_r, 1) -> [xmlns]; -pp(sm_a, 2) -> [h, xmlns]; -pp(sm_failed, 3) -> [reason, h, xmlns]; -pp(offline_item, 2) -> [node, action]; -pp(offline, 3) -> [items, purge, fetch]; -pp(mix_join, 2) -> [jid, subscribe]; -pp(mix_leave, 0) -> []; -pp(mix_participant, 2) -> [jid, nick]; -pp(search_item, 5) -> [jid, first, last, nick, email]; -pp(search, 7) -> - [instructions, first, last, nick, email, items, xdata]; -pp(xevent, 5) -> - [offline, delivered, displayed, composing, id]; -pp(expire, 2) -> [seconds, stored]; -pp(nick, 1) -> [name]; -pp(address, 5) -> [type, jid, desc, node, delivered]; -pp(addresses, 1) -> [list]; -pp(stanza_id, 2) -> [by, id]; -pp(client_id, 1) -> [id]; -pp(adhoc_actions, 4) -> [execute, prev, next, complete]; -pp(adhoc_note, 2) -> [type, data]; -pp(adhoc_command, 8) -> - [node, action, sid, status, lang, actions, notes, - xdata]; -pp(db_result, 5) -> [from, to, type, key, sub_els]; -pp(db_verify, 6) -> [from, to, id, type, key, sub_els]; -pp(handshake, 1) -> [data]; -pp(stream_start, 8) -> - [from, to, id, version, xmlns, stream_xmlns, db_xmlns, - lang]; -pp(bob_data, 4) -> [cid, 'max-age', type, data]; -pp(xcaptcha, 1) -> [xdata]; -pp(media_uri, 2) -> [type, uri]; -pp(media, 3) -> [height, width, uri]; -pp(oob_x, 3) -> [url, desc, sid]; -pp(sic, 3) -> [ip, port, xmlns]; -pp(upload_request, 4) -> - [filename, size, 'content-type', xmlns]; -pp(upload_slot, 3) -> [get, put, xmlns]; -pp(thumbnail, 4) -> [uri, 'media-type', width, height]; -pp(privilege_perm, 2) -> [access, type]; -pp(privilege, 2) -> [perms, forwarded]; -pp(delegated, 2) -> [ns, attrs]; -pp(delegation, 2) -> [delegated, forwarded]; -pp(delegation_query, 2) -> [to, delegate]; -pp(_, _) -> no. - -enc_ps_aff(member) -> <<"member">>; -enc_ps_aff(none) -> <<"none">>; -enc_ps_aff(outcast) -> <<"outcast">>; -enc_ps_aff(owner) -> <<"owner">>; -enc_ps_aff(publisher) -> <<"publisher">>; -enc_ps_aff(publish_only) -> <<"publish-only">>. - -dec_ps_aff(<<"member">>) -> member; -dec_ps_aff(<<"none">>) -> none; -dec_ps_aff(<<"outcast">>) -> outcast; -dec_ps_aff(<<"owner">>) -> owner; -dec_ps_aff(<<"publisher">>) -> publisher; -dec_ps_aff(<<"publish-only">>) -> publish_only. - -enc_version({Maj, Min}) -> - <<(integer_to_binary(Maj))/binary, $., - (integer_to_binary(Min))/binary>>. - -dec_version(S) -> - [Major, Minor] = binary:split(S, <<$.>>), - {binary_to_integer(Major), binary_to_integer(Minor)}. - -enc_host_port(Host) when is_binary(Host) -> Host; -enc_host_port({{_, _, _, _, _, _, _, _} = IPv6, - Port}) -> - enc_host_port({<<$[, (enc_ip(IPv6))/binary, $]>>, - Port}); -enc_host_port({{_, _, _, _} = IPv4, Port}) -> - enc_host_port({enc_ip(IPv4), Port}); -enc_host_port({Host, Port}) -> - <>; -enc_host_port(Addr) -> enc_ip(Addr). - -dec_host_port(<<$[, T/binary>>) -> - [IP, <<$:, Port/binary>>] = binary:split(T, <<$]>>), - {dec_ip(IP), dec_int(Port, 0, 65535)}; -dec_host_port(S) -> - case binary:split(S, <<$:>>) of - [S] -> try dec_ip(S) catch _:_ -> S end; - [S, P] -> - {try dec_ip(S) catch _:_ -> S end, dec_int(P, 0, 65535)} - end. - -enc_ip({0, 0, 0, 0, 0, 65535, A, B}) -> - enc_ip({(A bsr 8) band 255, A band 255, - (B bsr 8) band 255, B band 255}); -enc_ip(Addr) -> list_to_binary(inet_parse:ntoa(Addr)). - -dec_ip(S) -> - {ok, Addr} = inet_parse:address(binary_to_list(S)), - Addr. - -join([], _Sep) -> <<>>; -join([H | T], Sep) -> - <> || X <- T >>/binary>>. - -enc_bool(false) -> <<"false">>; -enc_bool(true) -> <<"true">>. - -dec_bool(<<"false">>) -> false; -dec_bool(<<"0">>) -> false; -dec_bool(<<"true">>) -> true; -dec_bool(<<"1">>) -> true. - -nameprep(S) -> - case jid:nameprep(S) of - error -> erlang:error(badarg); - S1 -> S1 - end. - -resourceprep(R) -> - case jid:resourceprep(R) of - error -> erlang:error(badarg); - R1 -> R1 - end. - -enc_jid(J) -> jid:to_string(J). - -dec_jid(Val) -> - case jid:from_string(Val) of - error -> erlang:error(badarg); - J -> J - end. - -enc_utc(Val) -> xmpp_util:encode_timestamp(Val). - -dec_utc(Val) -> xmpp_util:decode_timestamp(Val). - -enc_tzo({H, M}) -> - Sign = if H >= 0 -> <<>>; - true -> <<"-">> - end, - list_to_binary([Sign, - io_lib:format("~2..0w:~2..0w", [H, M])]). - -dec_tzo(Val) -> - [H1, M1] = str:tokens(Val, <<":">>), - H = binary_to_integer(H1), - M = binary_to_integer(M1), - if H >= -12, H =< 12, M >= 0, M < 60 -> {H, M} end. - -decode_delegation_query(__TopXMLNS, __IgnoreEls, - {xmlel, <<"query">>, _attrs, _els}) -> - Delegate = decode_delegation_query_els(__TopXMLNS, - __IgnoreEls, _els, []), - To = decode_delegation_query_attrs(__TopXMLNS, _attrs, - undefined), - {delegation_query, To, Delegate}. - -decode_delegation_query_els(__TopXMLNS, __IgnoreEls, [], - Delegate) -> - lists:reverse(Delegate); -decode_delegation_query_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"delegate">>, _attrs, _} = _el | _els], - Delegate) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"urn:xmpp:delegation:1">> -> - decode_delegation_query_els(__TopXMLNS, __IgnoreEls, - _els, - [decode_delegate(__TopXMLNS, __IgnoreEls, - _el) - | Delegate]); - <<"urn:xmpp:delegation:1">> -> - decode_delegation_query_els(__TopXMLNS, __IgnoreEls, - _els, - [decode_delegate(<<"urn:xmpp:delegation:1">>, - __IgnoreEls, _el) - | Delegate]); - _ -> - decode_delegation_query_els(__TopXMLNS, __IgnoreEls, - _els, Delegate) - end; -decode_delegation_query_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Delegate) -> - decode_delegation_query_els(__TopXMLNS, __IgnoreEls, - _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 = - choose_top_xmlns(<<"urn:xmpp:delegation:1">>, [], - __TopXMLNS), - _els = - lists:reverse('encode_delegation_query_$delegate'(Delegate, - __NewTopXMLNS, [])), - _attrs = encode_delegation_query_attr_to(To, - 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 dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"to">>, <<"query">>, __TopXMLNS}}); - _res -> _res - end. - -encode_delegation_query_attr_to(_val, _acc) -> - [{<<"to">>, enc_jid(_val)} | _acc]. - -decode_delegate(__TopXMLNS, __IgnoreEls, - {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 = - choose_top_xmlns(<<"urn:xmpp:delegation:1">>, [], - __TopXMLNS), - _els = [], - _attrs = encode_delegate_attr_namespace(Namespace, - 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, __IgnoreEls, - {xmlel, <<"delegation">>, _attrs, _els}) -> - {Forwarded, Delegated} = - decode_delegation_els(__TopXMLNS, __IgnoreEls, _els, - undefined, []), - {delegation, Delegated, Forwarded}. - -decode_delegation_els(__TopXMLNS, __IgnoreEls, [], - Forwarded, Delegated) -> - {Forwarded, lists:reverse(Delegated)}; -decode_delegation_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"delegated">>, _attrs, _} = _el | _els], - Forwarded, Delegated) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"urn:xmpp:delegation:1">> -> - decode_delegation_els(__TopXMLNS, __IgnoreEls, _els, - Forwarded, - [decode_delegated(__TopXMLNS, __IgnoreEls, _el) - | Delegated]); - <<"urn:xmpp:delegation:1">> -> - decode_delegation_els(__TopXMLNS, __IgnoreEls, _els, - Forwarded, - [decode_delegated(<<"urn:xmpp:delegation:1">>, - __IgnoreEls, _el) - | Delegated]); - _ -> - decode_delegation_els(__TopXMLNS, __IgnoreEls, _els, - Forwarded, Delegated) - end; -decode_delegation_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"forwarded">>, _attrs, _} = _el | _els], - Forwarded, Delegated) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:xmpp:forward:0">> -> - decode_delegation_els(__TopXMLNS, __IgnoreEls, _els, - decode_forwarded(<<"urn:xmpp:forward:0">>, - __IgnoreEls, _el), - Delegated); - _ -> - decode_delegation_els(__TopXMLNS, __IgnoreEls, _els, - Forwarded, Delegated) - end; -decode_delegation_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Forwarded, Delegated) -> - decode_delegation_els(__TopXMLNS, __IgnoreEls, _els, - Forwarded, Delegated). - -encode_delegation({delegation, Delegated, Forwarded}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:xmpp:delegation:1">>, [], - __TopXMLNS), - _els = - lists:reverse('encode_delegation_$forwarded'(Forwarded, - __NewTopXMLNS, - 'encode_delegation_$delegated'(Delegated, - __NewTopXMLNS, - []))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"delegation">>, _attrs, _els}. - -'encode_delegation_$forwarded'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_delegation_$forwarded'(Forwarded, __TopXMLNS, - _acc) -> - [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, __IgnoreEls, - {xmlel, <<"delegated">>, _attrs, _els}) -> - Attrs = decode_delegated_els(__TopXMLNS, __IgnoreEls, - _els, []), - Ns = decode_delegated_attrs(__TopXMLNS, _attrs, - undefined), - {delegated, Ns, Attrs}. - -decode_delegated_els(__TopXMLNS, __IgnoreEls, [], - Attrs) -> - lists:reverse(Attrs); -decode_delegated_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"attribute">>, _attrs, _} = _el | _els], - Attrs) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"urn:xmpp:delegation:1">> -> - decode_delegated_els(__TopXMLNS, __IgnoreEls, _els, - [decode_delegated_attribute(__TopXMLNS, - __IgnoreEls, _el) - | Attrs]); - <<"urn:xmpp:delegation:1">> -> - decode_delegated_els(__TopXMLNS, __IgnoreEls, _els, - [decode_delegated_attribute(<<"urn:xmpp:delegation:1">>, - __IgnoreEls, _el) - | Attrs]); - _ -> - decode_delegated_els(__TopXMLNS, __IgnoreEls, _els, - Attrs) - end; -decode_delegated_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Attrs) -> - decode_delegated_els(__TopXMLNS, __IgnoreEls, _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 = - choose_top_xmlns(<<"urn:xmpp:delegation:1">>, [], - __TopXMLNS), - _els = lists:reverse('encode_delegated_$attrs'(Attrs, - __NewTopXMLNS, [])), - _attrs = encode_delegated_attr_namespace(Ns, - 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, __IgnoreEls, - {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 = - choose_top_xmlns(<<"urn:xmpp:delegation:1">>, [], - __TopXMLNS), - _els = [], - _attrs = encode_delegated_attribute_attr_name(Name, - 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]. - -decode_privilege(__TopXMLNS, __IgnoreEls, - {xmlel, <<"privilege">>, _attrs, _els}) -> - {Perms, Forwarded} = decode_privilege_els(__TopXMLNS, - __IgnoreEls, _els, [], undefined), - {privilege, Perms, Forwarded}. - -decode_privilege_els(__TopXMLNS, __IgnoreEls, [], Perms, - Forwarded) -> - {lists:reverse(Perms), Forwarded}; -decode_privilege_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"perm">>, _attrs, _} = _el | _els], Perms, - Forwarded) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"urn:xmpp:privilege:1">> -> - decode_privilege_els(__TopXMLNS, __IgnoreEls, _els, - [decode_privilege_perm(__TopXMLNS, __IgnoreEls, - _el) - | Perms], - Forwarded); - <<"urn:xmpp:privilege:1">> -> - decode_privilege_els(__TopXMLNS, __IgnoreEls, _els, - [decode_privilege_perm(<<"urn:xmpp:privilege:1">>, - __IgnoreEls, _el) - | Perms], - Forwarded); - _ -> - decode_privilege_els(__TopXMLNS, __IgnoreEls, _els, - Perms, Forwarded) - end; -decode_privilege_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"forwarded">>, _attrs, _} = _el | _els], - Perms, Forwarded) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:xmpp:forward:0">> -> - decode_privilege_els(__TopXMLNS, __IgnoreEls, _els, - Perms, - decode_forwarded(<<"urn:xmpp:forward:0">>, - __IgnoreEls, _el)); - _ -> - decode_privilege_els(__TopXMLNS, __IgnoreEls, _els, - Perms, Forwarded) - end; -decode_privilege_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Perms, Forwarded) -> - decode_privilege_els(__TopXMLNS, __IgnoreEls, _els, - Perms, Forwarded). - -encode_privilege({privilege, Perms, Forwarded}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:xmpp:privilege:1">>, [], - __TopXMLNS), - _els = lists:reverse('encode_privilege_$perms'(Perms, - __NewTopXMLNS, - 'encode_privilege_$forwarded'(Forwarded, - __NewTopXMLNS, - []))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"privilege">>, _attrs, _els}. - -'encode_privilege_$perms'([], __TopXMLNS, _acc) -> _acc; -'encode_privilege_$perms'([Perms | _els], __TopXMLNS, - _acc) -> - 'encode_privilege_$perms'(_els, __TopXMLNS, - [encode_privilege_perm(Perms, __TopXMLNS) - | _acc]). - -'encode_privilege_$forwarded'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_privilege_$forwarded'(Forwarded, __TopXMLNS, - _acc) -> - [encode_forwarded(Forwarded, __TopXMLNS) | _acc]. - -decode_privilege_perm(__TopXMLNS, __IgnoreEls, - {xmlel, <<"perm">>, _attrs, _els}) -> - {Access, Type} = decode_privilege_perm_attrs(__TopXMLNS, - _attrs, undefined, undefined), - {privilege_perm, Access, Type}. - -decode_privilege_perm_attrs(__TopXMLNS, - [{<<"access">>, _val} | _attrs], _Access, Type) -> - decode_privilege_perm_attrs(__TopXMLNS, _attrs, _val, - Type); -decode_privilege_perm_attrs(__TopXMLNS, - [{<<"type">>, _val} | _attrs], Access, _Type) -> - decode_privilege_perm_attrs(__TopXMLNS, _attrs, Access, - _val); -decode_privilege_perm_attrs(__TopXMLNS, [_ | _attrs], - Access, Type) -> - decode_privilege_perm_attrs(__TopXMLNS, _attrs, Access, - Type); -decode_privilege_perm_attrs(__TopXMLNS, [], Access, - Type) -> - {decode_privilege_perm_attr_access(__TopXMLNS, Access), - decode_privilege_perm_attr_type(__TopXMLNS, Type)}. - -encode_privilege_perm({privilege_perm, Access, Type}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:xmpp:privilege:1">>, [], - __TopXMLNS), - _els = [], - _attrs = encode_privilege_perm_attr_type(Type, - encode_privilege_perm_attr_access(Access, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))), - {xmlel, <<"perm">>, _attrs, _els}. - -decode_privilege_perm_attr_access(__TopXMLNS, - undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"access">>, <<"perm">>, __TopXMLNS}}); -decode_privilege_perm_attr_access(__TopXMLNS, _val) -> - case catch dec_enum(_val, [roster, message, presence]) - of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"access">>, <<"perm">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_privilege_perm_attr_access(_val, _acc) -> - [{<<"access">>, enc_enum(_val)} | _acc]. - -decode_privilege_perm_attr_type(__TopXMLNS, - undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"type">>, <<"perm">>, __TopXMLNS}}); -decode_privilege_perm_attr_type(__TopXMLNS, _val) -> - case catch dec_enum(_val, - [none, get, set, both, outgoing, roster, - managed_entity]) - of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"type">>, <<"perm">>, __TopXMLNS}}); - _res -> _res - end. - -encode_privilege_perm_attr_type(_val, _acc) -> - [{<<"type">>, enc_enum(_val)} | _acc]. - -decode_thumbnail(__TopXMLNS, __IgnoreEls, - {xmlel, <<"thumbnail">>, _attrs, _els}) -> - {Uri, Media_type, Width, Height} = - decode_thumbnail_attrs(__TopXMLNS, _attrs, undefined, - undefined, undefined, undefined), - {thumbnail, Uri, Media_type, Width, Height}. - -decode_thumbnail_attrs(__TopXMLNS, - [{<<"uri">>, _val} | _attrs], _Uri, Media_type, Width, - Height) -> - decode_thumbnail_attrs(__TopXMLNS, _attrs, _val, - Media_type, Width, Height); -decode_thumbnail_attrs(__TopXMLNS, - [{<<"media-type">>, _val} | _attrs], Uri, _Media_type, - Width, Height) -> - decode_thumbnail_attrs(__TopXMLNS, _attrs, Uri, _val, - Width, Height); -decode_thumbnail_attrs(__TopXMLNS, - [{<<"width">>, _val} | _attrs], Uri, Media_type, _Width, - Height) -> - decode_thumbnail_attrs(__TopXMLNS, _attrs, Uri, - Media_type, _val, Height); -decode_thumbnail_attrs(__TopXMLNS, - [{<<"height">>, _val} | _attrs], Uri, Media_type, Width, - _Height) -> - decode_thumbnail_attrs(__TopXMLNS, _attrs, Uri, - Media_type, Width, _val); -decode_thumbnail_attrs(__TopXMLNS, [_ | _attrs], Uri, - Media_type, Width, Height) -> - decode_thumbnail_attrs(__TopXMLNS, _attrs, Uri, - Media_type, Width, Height); -decode_thumbnail_attrs(__TopXMLNS, [], Uri, Media_type, - Width, Height) -> - {decode_thumbnail_attr_uri(__TopXMLNS, Uri), - 'decode_thumbnail_attr_media-type'(__TopXMLNS, - Media_type), - decode_thumbnail_attr_width(__TopXMLNS, Width), - decode_thumbnail_attr_height(__TopXMLNS, Height)}. - -encode_thumbnail({thumbnail, Uri, Media_type, Width, - Height}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:xmpp:thumbs:1">>, [], - __TopXMLNS), - _els = [], - _attrs = encode_thumbnail_attr_height(Height, - encode_thumbnail_attr_width(Width, - 'encode_thumbnail_attr_media-type'(Media_type, - encode_thumbnail_attr_uri(Uri, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))))), - {xmlel, <<"thumbnail">>, _attrs, _els}. - -decode_thumbnail_attr_uri(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"uri">>, <<"thumbnail">>, - __TopXMLNS}}); -decode_thumbnail_attr_uri(__TopXMLNS, _val) -> _val. - -encode_thumbnail_attr_uri(_val, _acc) -> - [{<<"uri">>, _val} | _acc]. - -'decode_thumbnail_attr_media-type'(__TopXMLNS, - undefined) -> - <<>>; -'decode_thumbnail_attr_media-type'(__TopXMLNS, _val) -> - _val. - -'encode_thumbnail_attr_media-type'(<<>>, _acc) -> _acc; -'encode_thumbnail_attr_media-type'(_val, _acc) -> - [{<<"media-type">>, _val} | _acc]. - -decode_thumbnail_attr_width(__TopXMLNS, undefined) -> - undefined; -decode_thumbnail_attr_width(__TopXMLNS, _val) -> - case catch dec_int(_val, 0, infinity) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"width">>, <<"thumbnail">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_thumbnail_attr_width(undefined, _acc) -> _acc; -encode_thumbnail_attr_width(_val, _acc) -> - [{<<"width">>, enc_int(_val)} | _acc]. - -decode_thumbnail_attr_height(__TopXMLNS, undefined) -> - undefined; -decode_thumbnail_attr_height(__TopXMLNS, _val) -> - case catch dec_int(_val, 0, infinity) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"height">>, <<"thumbnail">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_thumbnail_attr_height(undefined, _acc) -> _acc; -encode_thumbnail_attr_height(_val, _acc) -> - [{<<"height">>, enc_int(_val)} | _acc]. - -decode_upload_slot(__TopXMLNS, __IgnoreEls, - {xmlel, <<"slot">>, _attrs, _els}) -> - {Put, Get} = decode_upload_slot_els(__TopXMLNS, - __IgnoreEls, _els, undefined, - undefined), - Xmlns = decode_upload_slot_attrs(__TopXMLNS, _attrs, - undefined), - {upload_slot, Get, Put, Xmlns}. - -decode_upload_slot_els(__TopXMLNS, __IgnoreEls, [], Put, - Get) -> - {Put, Get}; -decode_upload_slot_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"get">>, _attrs, _} = _el | _els], Put, - Get) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"eu:siacs:conversations:http:upload">>; - __TopXMLNS == <<"urn:xmpp:http:upload">> -> - decode_upload_slot_els(__TopXMLNS, __IgnoreEls, _els, - Put, - decode_upload_get(__TopXMLNS, __IgnoreEls, - _el)); - <<"urn:xmpp:http:upload">> -> - decode_upload_slot_els(__TopXMLNS, __IgnoreEls, _els, - Put, - decode_upload_get(<<"urn:xmpp:http:upload">>, - __IgnoreEls, _el)); - <<"eu:siacs:conversations:http:upload">> -> - decode_upload_slot_els(__TopXMLNS, __IgnoreEls, _els, - Put, - decode_upload_get(<<"eu:siacs:conversations:http:upload">>, - __IgnoreEls, _el)); - _ -> - decode_upload_slot_els(__TopXMLNS, __IgnoreEls, _els, - Put, Get) - end; -decode_upload_slot_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"put">>, _attrs, _} = _el | _els], Put, - Get) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"eu:siacs:conversations:http:upload">>; - __TopXMLNS == <<"urn:xmpp:http:upload">> -> - decode_upload_slot_els(__TopXMLNS, __IgnoreEls, _els, - decode_upload_put(__TopXMLNS, __IgnoreEls, - _el), - Get); - <<"urn:xmpp:http:upload">> -> - decode_upload_slot_els(__TopXMLNS, __IgnoreEls, _els, - decode_upload_put(<<"urn:xmpp:http:upload">>, - __IgnoreEls, _el), - Get); - <<"eu:siacs:conversations:http:upload">> -> - decode_upload_slot_els(__TopXMLNS, __IgnoreEls, _els, - decode_upload_put(<<"eu:siacs:conversations:http:upload">>, - __IgnoreEls, _el), - Get); - _ -> - decode_upload_slot_els(__TopXMLNS, __IgnoreEls, _els, - Put, Get) - end; -decode_upload_slot_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Put, Get) -> - decode_upload_slot_els(__TopXMLNS, __IgnoreEls, _els, - Put, Get). - -decode_upload_slot_attrs(__TopXMLNS, - [{<<"xmlns">>, _val} | _attrs], _Xmlns) -> - decode_upload_slot_attrs(__TopXMLNS, _attrs, _val); -decode_upload_slot_attrs(__TopXMLNS, [_ | _attrs], - Xmlns) -> - decode_upload_slot_attrs(__TopXMLNS, _attrs, Xmlns); -decode_upload_slot_attrs(__TopXMLNS, [], Xmlns) -> - decode_upload_slot_attr_xmlns(__TopXMLNS, Xmlns). - -encode_upload_slot({upload_slot, Get, Put, Xmlns}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(Xmlns, - [<<"urn:xmpp:http:upload">>, - <<"eu:siacs:conversations:http:upload">>], - __TopXMLNS), - _els = lists:reverse('encode_upload_slot_$put'(Put, - __NewTopXMLNS, - 'encode_upload_slot_$get'(Get, - __NewTopXMLNS, - []))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"slot">>, _attrs, _els}. - -'encode_upload_slot_$put'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_upload_slot_$put'(Put, __TopXMLNS, _acc) -> - [encode_upload_put(Put, __TopXMLNS) | _acc]. - -'encode_upload_slot_$get'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_upload_slot_$get'(Get, __TopXMLNS, _acc) -> - [encode_upload_get(Get, __TopXMLNS) | _acc]. - -decode_upload_slot_attr_xmlns(__TopXMLNS, undefined) -> - <<>>; -decode_upload_slot_attr_xmlns(__TopXMLNS, _val) -> _val. - -decode_upload_put(__TopXMLNS, __IgnoreEls, - {xmlel, <<"put">>, _attrs, _els}) -> - Cdata = decode_upload_put_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_upload_put_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_upload_put_cdata(__TopXMLNS, Cdata); -decode_upload_put_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_upload_put_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_upload_put_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_upload_put_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_upload_put(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"urn:xmpp:http:upload">>, - <<"eu:siacs:conversations:http:upload">>], - __TopXMLNS), - _els = encode_upload_put_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"put">>, _attrs, _els}. - -decode_upload_put_cdata(__TopXMLNS, <<>>) -> - erlang:error({xmpp_codec, - {missing_cdata, <<>>, <<"put">>, __TopXMLNS}}); -decode_upload_put_cdata(__TopXMLNS, _val) -> _val. - -encode_upload_put_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_upload_get(__TopXMLNS, __IgnoreEls, - {xmlel, <<"get">>, _attrs, _els}) -> - Cdata = decode_upload_get_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_upload_get_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_upload_get_cdata(__TopXMLNS, Cdata); -decode_upload_get_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_upload_get_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_upload_get_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_upload_get_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_upload_get(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"urn:xmpp:http:upload">>, - <<"eu:siacs:conversations:http:upload">>], - __TopXMLNS), - _els = encode_upload_get_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"get">>, _attrs, _els}. - -decode_upload_get_cdata(__TopXMLNS, <<>>) -> - erlang:error({xmpp_codec, - {missing_cdata, <<>>, <<"get">>, __TopXMLNS}}); -decode_upload_get_cdata(__TopXMLNS, _val) -> _val. - -encode_upload_get_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_upload_request(__TopXMLNS, __IgnoreEls, - {xmlel, <<"request">>, _attrs, _els}) -> - {Content_type, Size, Filename} = - decode_upload_request_els(__TopXMLNS, __IgnoreEls, _els, - <<>>, error, error), - Xmlns = decode_upload_request_attrs(__TopXMLNS, _attrs, - undefined), - {upload_request, Filename, Size, Content_type, Xmlns}. - -decode_upload_request_els(__TopXMLNS, __IgnoreEls, [], - Content_type, Size, Filename) -> - {Content_type, - case Size of - error -> - erlang:error({xmpp_codec, - {missing_tag, <<"size">>, __TopXMLNS}}); - {value, Size1} -> Size1 - end, - case Filename of - error -> - erlang:error({xmpp_codec, - {missing_tag, <<"filename">>, __TopXMLNS}}); - {value, Filename1} -> Filename1 - end}; -decode_upload_request_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"filename">>, _attrs, _} = _el | _els], - Content_type, Size, Filename) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"eu:siacs:conversations:http:upload">>; - __TopXMLNS == <<"urn:xmpp:http:upload">> -> - decode_upload_request_els(__TopXMLNS, __IgnoreEls, _els, - Content_type, Size, - {value, - decode_upload_filename(__TopXMLNS, - __IgnoreEls, _el)}); - <<"urn:xmpp:http:upload">> -> - decode_upload_request_els(__TopXMLNS, __IgnoreEls, _els, - Content_type, Size, - {value, - decode_upload_filename(<<"urn:xmpp:http:upload">>, - __IgnoreEls, _el)}); - <<"eu:siacs:conversations:http:upload">> -> - decode_upload_request_els(__TopXMLNS, __IgnoreEls, _els, - Content_type, Size, - {value, - decode_upload_filename(<<"eu:siacs:conversations:http:upload">>, - __IgnoreEls, _el)}); - _ -> - decode_upload_request_els(__TopXMLNS, __IgnoreEls, _els, - Content_type, Size, Filename) - end; -decode_upload_request_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"size">>, _attrs, _} = _el | _els], - Content_type, Size, Filename) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"eu:siacs:conversations:http:upload">>; - __TopXMLNS == <<"urn:xmpp:http:upload">> -> - decode_upload_request_els(__TopXMLNS, __IgnoreEls, _els, - Content_type, - {value, - decode_upload_size(__TopXMLNS, __IgnoreEls, - _el)}, - Filename); - <<"urn:xmpp:http:upload">> -> - decode_upload_request_els(__TopXMLNS, __IgnoreEls, _els, - Content_type, - {value, - decode_upload_size(<<"urn:xmpp:http:upload">>, - __IgnoreEls, _el)}, - Filename); - <<"eu:siacs:conversations:http:upload">> -> - decode_upload_request_els(__TopXMLNS, __IgnoreEls, _els, - Content_type, - {value, - decode_upload_size(<<"eu:siacs:conversations:http:upload">>, - __IgnoreEls, _el)}, - Filename); - _ -> - decode_upload_request_els(__TopXMLNS, __IgnoreEls, _els, - Content_type, Size, Filename) - end; -decode_upload_request_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"content-type">>, _attrs, _} = _el | _els], - Content_type, Size, Filename) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"eu:siacs:conversations:http:upload">>; - __TopXMLNS == <<"urn:xmpp:http:upload">> -> - decode_upload_request_els(__TopXMLNS, __IgnoreEls, _els, - decode_upload_content_type(__TopXMLNS, - __IgnoreEls, - _el), - Size, Filename); - <<"urn:xmpp:http:upload">> -> - decode_upload_request_els(__TopXMLNS, __IgnoreEls, _els, - decode_upload_content_type(<<"urn:xmpp:http:upload">>, - __IgnoreEls, - _el), - Size, Filename); - <<"eu:siacs:conversations:http:upload">> -> - decode_upload_request_els(__TopXMLNS, __IgnoreEls, _els, - decode_upload_content_type(<<"eu:siacs:conversations:http:upload">>, - __IgnoreEls, - _el), - Size, Filename); - _ -> - decode_upload_request_els(__TopXMLNS, __IgnoreEls, _els, - Content_type, Size, Filename) - end; -decode_upload_request_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Content_type, Size, Filename) -> - decode_upload_request_els(__TopXMLNS, __IgnoreEls, _els, - Content_type, Size, Filename). - -decode_upload_request_attrs(__TopXMLNS, - [{<<"xmlns">>, _val} | _attrs], _Xmlns) -> - decode_upload_request_attrs(__TopXMLNS, _attrs, _val); -decode_upload_request_attrs(__TopXMLNS, [_ | _attrs], - Xmlns) -> - decode_upload_request_attrs(__TopXMLNS, _attrs, Xmlns); -decode_upload_request_attrs(__TopXMLNS, [], Xmlns) -> - decode_upload_request_attr_xmlns(__TopXMLNS, Xmlns). - -encode_upload_request({upload_request, Filename, Size, - Content_type, Xmlns}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(Xmlns, - [<<"urn:xmpp:http:upload">>, - <<"eu:siacs:conversations:http:upload">>], - __TopXMLNS), - _els = - lists:reverse('encode_upload_request_$content-type'(Content_type, - __NewTopXMLNS, - 'encode_upload_request_$size'(Size, - __NewTopXMLNS, - 'encode_upload_request_$filename'(Filename, - __NewTopXMLNS, - [])))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"request">>, _attrs, _els}. - -'encode_upload_request_$content-type'(<<>>, __TopXMLNS, - _acc) -> - _acc; -'encode_upload_request_$content-type'(Content_type, - __TopXMLNS, _acc) -> - [encode_upload_content_type(Content_type, __TopXMLNS) - | _acc]. - -'encode_upload_request_$size'(Size, __TopXMLNS, _acc) -> - [encode_upload_size(Size, __TopXMLNS) | _acc]. - -'encode_upload_request_$filename'(Filename, __TopXMLNS, - _acc) -> - [encode_upload_filename(Filename, __TopXMLNS) | _acc]. - -decode_upload_request_attr_xmlns(__TopXMLNS, - undefined) -> - <<>>; -decode_upload_request_attr_xmlns(__TopXMLNS, _val) -> - _val. - -decode_upload_content_type(__TopXMLNS, __IgnoreEls, - {xmlel, <<"content-type">>, _attrs, _els}) -> - Cdata = decode_upload_content_type_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_upload_content_type_els(__TopXMLNS, __IgnoreEls, - [], Cdata) -> - decode_upload_content_type_cdata(__TopXMLNS, Cdata); -decode_upload_content_type_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_upload_content_type_els(__TopXMLNS, __IgnoreEls, - _els, <>); -decode_upload_content_type_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_upload_content_type_els(__TopXMLNS, __IgnoreEls, - _els, Cdata). - -encode_upload_content_type(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"urn:xmpp:http:upload">>, - <<"eu:siacs:conversations:http:upload">>], - __TopXMLNS), - _els = encode_upload_content_type_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"content-type">>, _attrs, _els}. - -decode_upload_content_type_cdata(__TopXMLNS, <<>>) -> - <<>>; -decode_upload_content_type_cdata(__TopXMLNS, _val) -> - _val. - -encode_upload_content_type_cdata(<<>>, _acc) -> _acc; -encode_upload_content_type_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_upload_size(__TopXMLNS, __IgnoreEls, - {xmlel, <<"size">>, _attrs, _els}) -> - Cdata = decode_upload_size_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_upload_size_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_upload_size_cdata(__TopXMLNS, Cdata); -decode_upload_size_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_upload_size_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_upload_size_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_upload_size_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_upload_size(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"urn:xmpp:http:upload">>, - <<"eu:siacs:conversations:http:upload">>], - __TopXMLNS), - _els = encode_upload_size_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"size">>, _attrs, _els}. - -decode_upload_size_cdata(__TopXMLNS, <<>>) -> - erlang:error({xmpp_codec, - {missing_cdata, <<>>, <<"size">>, __TopXMLNS}}); -decode_upload_size_cdata(__TopXMLNS, _val) -> - case catch dec_int(_val, 0, infinity) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_cdata_value, <<>>, <<"size">>, __TopXMLNS}}); - _res -> _res - end. - -encode_upload_size_cdata(_val, _acc) -> - [{xmlcdata, enc_int(_val)} | _acc]. - -decode_upload_filename(__TopXMLNS, __IgnoreEls, - {xmlel, <<"filename">>, _attrs, _els}) -> - Cdata = decode_upload_filename_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_upload_filename_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_upload_filename_cdata(__TopXMLNS, Cdata); -decode_upload_filename_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_upload_filename_els(__TopXMLNS, __IgnoreEls, - _els, <>); -decode_upload_filename_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_upload_filename_els(__TopXMLNS, __IgnoreEls, - _els, Cdata). - -encode_upload_filename(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"urn:xmpp:http:upload">>, - <<"eu:siacs:conversations:http:upload">>], - __TopXMLNS), - _els = encode_upload_filename_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"filename">>, _attrs, _els}. - -decode_upload_filename_cdata(__TopXMLNS, <<>>) -> - erlang:error({xmpp_codec, - {missing_cdata, <<>>, <<"filename">>, __TopXMLNS}}); -decode_upload_filename_cdata(__TopXMLNS, _val) -> _val. - -encode_upload_filename_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_sic(__TopXMLNS, __IgnoreEls, - {xmlel, <<"address">>, _attrs, _els}) -> - {Ip, Port} = decode_sic_els(__TopXMLNS, __IgnoreEls, - _els, undefined, undefined), - Xmlns = decode_sic_attrs(__TopXMLNS, _attrs, undefined), - {sic, Ip, Port, Xmlns}. - -decode_sic_els(__TopXMLNS, __IgnoreEls, [], Ip, Port) -> - {Ip, Port}; -decode_sic_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"ip">>, _attrs, _} = _el | _els], Ip, - Port) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == <<"urn:xmpp:sic:1">>; - __TopXMLNS == <<"urn:xmpp:sic:0">> -> - decode_sic_els(__TopXMLNS, __IgnoreEls, _els, - decode_sic_ip(__TopXMLNS, __IgnoreEls, _el), Port); - <<"urn:xmpp:sic:0">> -> - decode_sic_els(__TopXMLNS, __IgnoreEls, _els, - decode_sic_ip(<<"urn:xmpp:sic:0">>, __IgnoreEls, _el), - Port); - <<"urn:xmpp:sic:1">> -> - decode_sic_els(__TopXMLNS, __IgnoreEls, _els, - decode_sic_ip(<<"urn:xmpp:sic:1">>, __IgnoreEls, _el), - Port); - _ -> - decode_sic_els(__TopXMLNS, __IgnoreEls, _els, Ip, Port) - end; -decode_sic_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"port">>, _attrs, _} = _el | _els], Ip, - Port) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"urn:xmpp:sic:1">> -> - decode_sic_els(__TopXMLNS, __IgnoreEls, _els, Ip, - decode_sip_port(__TopXMLNS, __IgnoreEls, _el)); - <<"urn:xmpp:sic:1">> -> - decode_sic_els(__TopXMLNS, __IgnoreEls, _els, Ip, - decode_sip_port(<<"urn:xmpp:sic:1">>, __IgnoreEls, - _el)); - _ -> - decode_sic_els(__TopXMLNS, __IgnoreEls, _els, Ip, Port) - end; -decode_sic_els(__TopXMLNS, __IgnoreEls, [_ | _els], Ip, - Port) -> - decode_sic_els(__TopXMLNS, __IgnoreEls, _els, Ip, Port). - -decode_sic_attrs(__TopXMLNS, - [{<<"xmlns">>, _val} | _attrs], _Xmlns) -> - decode_sic_attrs(__TopXMLNS, _attrs, _val); -decode_sic_attrs(__TopXMLNS, [_ | _attrs], Xmlns) -> - decode_sic_attrs(__TopXMLNS, _attrs, Xmlns); -decode_sic_attrs(__TopXMLNS, [], Xmlns) -> - decode_sic_attr_xmlns(__TopXMLNS, Xmlns). - -encode_sic({sic, Ip, Port, Xmlns}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(Xmlns, - [<<"urn:xmpp:sic:0">>, - <<"urn:xmpp:sic:1">>], - __TopXMLNS), - _els = lists:reverse('encode_sic_$ip'(Ip, __NewTopXMLNS, - 'encode_sic_$port'(Port, - __NewTopXMLNS, - []))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"address">>, _attrs, _els}. - -'encode_sic_$ip'(undefined, __TopXMLNS, _acc) -> _acc; -'encode_sic_$ip'(Ip, __TopXMLNS, _acc) -> - [encode_sic_ip(Ip, __TopXMLNS) | _acc]. - -'encode_sic_$port'(undefined, __TopXMLNS, _acc) -> _acc; -'encode_sic_$port'(Port, __TopXMLNS, _acc) -> - [encode_sip_port(Port, __TopXMLNS) | _acc]. - -decode_sic_attr_xmlns(__TopXMLNS, undefined) -> <<>>; -decode_sic_attr_xmlns(__TopXMLNS, _val) -> _val. - -decode_sip_port(__TopXMLNS, __IgnoreEls, - {xmlel, <<"port">>, _attrs, _els}) -> - Cdata = decode_sip_port_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_sip_port_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_sip_port_cdata(__TopXMLNS, Cdata); -decode_sip_port_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_sip_port_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_sip_port_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Cdata) -> - decode_sip_port_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_sip_port(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"urn:xmpp:sic:1">>, - [], __TopXMLNS), - _els = encode_sip_port_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"port">>, _attrs, _els}. - -decode_sip_port_cdata(__TopXMLNS, <<>>) -> - erlang:error({xmpp_codec, - {missing_cdata, <<>>, <<"port">>, __TopXMLNS}}); -decode_sip_port_cdata(__TopXMLNS, _val) -> - case catch dec_int(_val, 0, 65535) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_cdata_value, <<>>, <<"port">>, __TopXMLNS}}); - _res -> _res - end. - -encode_sip_port_cdata(_val, _acc) -> - [{xmlcdata, enc_int(_val)} | _acc]. - -decode_sic_ip(__TopXMLNS, __IgnoreEls, - {xmlel, <<"ip">>, _attrs, _els}) -> - Cdata = decode_sic_ip_els(__TopXMLNS, __IgnoreEls, _els, - <<>>), - Cdata. - -decode_sic_ip_els(__TopXMLNS, __IgnoreEls, [], Cdata) -> - decode_sic_ip_cdata(__TopXMLNS, Cdata); -decode_sic_ip_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_sic_ip_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_sic_ip_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Cdata) -> - decode_sic_ip_els(__TopXMLNS, __IgnoreEls, _els, Cdata). - -encode_sic_ip(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"urn:xmpp:sic:0">>, - <<"urn:xmpp:sic:1">>], - __TopXMLNS), - _els = encode_sic_ip_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"ip">>, _attrs, _els}. - -decode_sic_ip_cdata(__TopXMLNS, <<>>) -> - erlang:error({xmpp_codec, - {missing_cdata, <<>>, <<"ip">>, __TopXMLNS}}); -decode_sic_ip_cdata(__TopXMLNS, _val) -> - case catch dec_ip(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_cdata_value, <<>>, <<"ip">>, __TopXMLNS}}); - _res -> _res - end. - -encode_sic_ip_cdata(_val, _acc) -> - [{xmlcdata, enc_ip(_val)} | _acc]. - -decode_oob_x(__TopXMLNS, __IgnoreEls, - {xmlel, <<"x">>, _attrs, _els}) -> - {Desc, Url} = decode_oob_x_els(__TopXMLNS, __IgnoreEls, - _els, <<>>, error), - Sid = decode_oob_x_attrs(__TopXMLNS, _attrs, undefined), - {oob_x, Url, Desc, Sid}. - -decode_oob_x_els(__TopXMLNS, __IgnoreEls, [], Desc, - Url) -> - {Desc, - case Url of - error -> - erlang:error({xmpp_codec, - {missing_tag, <<"url">>, __TopXMLNS}}); - {value, Url1} -> Url1 - end}; -decode_oob_x_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"url">>, _attrs, _} = _el | _els], Desc, - Url) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:x:oob">> -> - decode_oob_x_els(__TopXMLNS, __IgnoreEls, _els, Desc, - {value, - decode_oob_url(__TopXMLNS, __IgnoreEls, _el)}); - <<"jabber:x:oob">> -> - decode_oob_x_els(__TopXMLNS, __IgnoreEls, _els, Desc, - {value, - decode_oob_url(<<"jabber:x:oob">>, __IgnoreEls, - _el)}); - _ -> - decode_oob_x_els(__TopXMLNS, __IgnoreEls, _els, Desc, - Url) - end; -decode_oob_x_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"desc">>, _attrs, _} = _el | _els], Desc, - Url) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:x:oob">> -> - decode_oob_x_els(__TopXMLNS, __IgnoreEls, _els, - decode_oob_desc(__TopXMLNS, __IgnoreEls, _el), Url); - <<"jabber:x:oob">> -> - decode_oob_x_els(__TopXMLNS, __IgnoreEls, _els, - decode_oob_desc(<<"jabber:x:oob">>, __IgnoreEls, - _el), - Url); - _ -> - decode_oob_x_els(__TopXMLNS, __IgnoreEls, _els, Desc, - Url) - end; -decode_oob_x_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Desc, Url) -> - decode_oob_x_els(__TopXMLNS, __IgnoreEls, _els, Desc, - Url). - -decode_oob_x_attrs(__TopXMLNS, - [{<<"sid">>, _val} | _attrs], _Sid) -> - decode_oob_x_attrs(__TopXMLNS, _attrs, _val); -decode_oob_x_attrs(__TopXMLNS, [_ | _attrs], Sid) -> - decode_oob_x_attrs(__TopXMLNS, _attrs, Sid); -decode_oob_x_attrs(__TopXMLNS, [], Sid) -> - decode_oob_x_attr_sid(__TopXMLNS, Sid). - -encode_oob_x({oob_x, Url, Desc, Sid}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:x:oob">>, [], - __TopXMLNS), - _els = lists:reverse('encode_oob_x_$desc'(Desc, - __NewTopXMLNS, - 'encode_oob_x_$url'(Url, - __NewTopXMLNS, - []))), - _attrs = encode_oob_x_attr_sid(Sid, - enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS)), - {xmlel, <<"x">>, _attrs, _els}. - -'encode_oob_x_$desc'(<<>>, __TopXMLNS, _acc) -> _acc; -'encode_oob_x_$desc'(Desc, __TopXMLNS, _acc) -> - [encode_oob_desc(Desc, __TopXMLNS) | _acc]. - -'encode_oob_x_$url'(Url, __TopXMLNS, _acc) -> - [encode_oob_url(Url, __TopXMLNS) | _acc]. - -decode_oob_x_attr_sid(__TopXMLNS, undefined) -> <<>>; -decode_oob_x_attr_sid(__TopXMLNS, _val) -> _val. - -encode_oob_x_attr_sid(<<>>, _acc) -> _acc; -encode_oob_x_attr_sid(_val, _acc) -> - [{<<"sid">>, _val} | _acc]. - -decode_oob_desc(__TopXMLNS, __IgnoreEls, - {xmlel, <<"desc">>, _attrs, _els}) -> - Cdata = decode_oob_desc_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_oob_desc_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_oob_desc_cdata(__TopXMLNS, Cdata); -decode_oob_desc_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_oob_desc_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_oob_desc_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Cdata) -> - decode_oob_desc_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_oob_desc(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:x:oob">>, [], - __TopXMLNS), - _els = encode_oob_desc_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"desc">>, _attrs, _els}. - -decode_oob_desc_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_oob_desc_cdata(__TopXMLNS, _val) -> _val. - -encode_oob_desc_cdata(<<>>, _acc) -> _acc; -encode_oob_desc_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_oob_url(__TopXMLNS, __IgnoreEls, - {xmlel, <<"url">>, _attrs, _els}) -> - Cdata = decode_oob_url_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_oob_url_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_oob_url_cdata(__TopXMLNS, Cdata); -decode_oob_url_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_oob_url_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_oob_url_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Cdata) -> - decode_oob_url_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_oob_url(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:x:oob">>, [], - __TopXMLNS), - _els = encode_oob_url_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"url">>, _attrs, _els}. - -decode_oob_url_cdata(__TopXMLNS, <<>>) -> - erlang:error({xmpp_codec, - {missing_cdata, <<>>, <<"url">>, __TopXMLNS}}); -decode_oob_url_cdata(__TopXMLNS, _val) -> _val. - -encode_oob_url_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_media(__TopXMLNS, __IgnoreEls, - {xmlel, <<"media">>, _attrs, _els}) -> - Uri = decode_media_els(__TopXMLNS, __IgnoreEls, _els, - []), - {Height, Width} = decode_media_attrs(__TopXMLNS, _attrs, - undefined, undefined), - {media, Height, Width, Uri}. - -decode_media_els(__TopXMLNS, __IgnoreEls, [], Uri) -> - lists:reverse(Uri); -decode_media_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"uri">>, _attrs, _} = _el | _els], Uri) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == <<"urn:xmpp:media-element">> -> - decode_media_els(__TopXMLNS, __IgnoreEls, _els, - [decode_media_uri(__TopXMLNS, __IgnoreEls, _el) - | Uri]); - <<"urn:xmpp:media-element">> -> - decode_media_els(__TopXMLNS, __IgnoreEls, _els, - [decode_media_uri(<<"urn:xmpp:media-element">>, - __IgnoreEls, _el) - | Uri]); - _ -> - decode_media_els(__TopXMLNS, __IgnoreEls, _els, Uri) - end; -decode_media_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Uri) -> - decode_media_els(__TopXMLNS, __IgnoreEls, _els, Uri). - -decode_media_attrs(__TopXMLNS, - [{<<"height">>, _val} | _attrs], _Height, Width) -> - decode_media_attrs(__TopXMLNS, _attrs, _val, Width); -decode_media_attrs(__TopXMLNS, - [{<<"width">>, _val} | _attrs], Height, _Width) -> - decode_media_attrs(__TopXMLNS, _attrs, Height, _val); -decode_media_attrs(__TopXMLNS, [_ | _attrs], Height, - Width) -> - decode_media_attrs(__TopXMLNS, _attrs, Height, Width); -decode_media_attrs(__TopXMLNS, [], Height, Width) -> - {decode_media_attr_height(__TopXMLNS, Height), - decode_media_attr_width(__TopXMLNS, Width)}. - -encode_media({media, Height, Width, Uri}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:xmpp:media-element">>, [], - __TopXMLNS), - _els = lists:reverse('encode_media_$uri'(Uri, - __NewTopXMLNS, [])), - _attrs = encode_media_attr_width(Width, - encode_media_attr_height(Height, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))), - {xmlel, <<"media">>, _attrs, _els}. - -'encode_media_$uri'([], __TopXMLNS, _acc) -> _acc; -'encode_media_$uri'([Uri | _els], __TopXMLNS, _acc) -> - 'encode_media_$uri'(_els, __TopXMLNS, - [encode_media_uri(Uri, __TopXMLNS) | _acc]). - -decode_media_attr_height(__TopXMLNS, undefined) -> - undefined; -decode_media_attr_height(__TopXMLNS, _val) -> - case catch dec_int(_val, 0, infinity) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"height">>, <<"media">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_media_attr_height(undefined, _acc) -> _acc; -encode_media_attr_height(_val, _acc) -> - [{<<"height">>, enc_int(_val)} | _acc]. - -decode_media_attr_width(__TopXMLNS, undefined) -> - undefined; -decode_media_attr_width(__TopXMLNS, _val) -> - case catch dec_int(_val, 0, inifinity) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"width">>, <<"media">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_media_attr_width(undefined, _acc) -> _acc; -encode_media_attr_width(_val, _acc) -> - [{<<"width">>, enc_int(_val)} | _acc]. - -decode_media_uri(__TopXMLNS, __IgnoreEls, - {xmlel, <<"uri">>, _attrs, _els}) -> - Uri = decode_media_uri_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Type = decode_media_uri_attrs(__TopXMLNS, _attrs, - undefined), - {media_uri, Type, Uri}. - -decode_media_uri_els(__TopXMLNS, __IgnoreEls, [], - Uri) -> - decode_media_uri_cdata(__TopXMLNS, Uri); -decode_media_uri_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Uri) -> - decode_media_uri_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_media_uri_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Uri) -> - decode_media_uri_els(__TopXMLNS, __IgnoreEls, _els, - Uri). - -decode_media_uri_attrs(__TopXMLNS, - [{<<"type">>, _val} | _attrs], _Type) -> - decode_media_uri_attrs(__TopXMLNS, _attrs, _val); -decode_media_uri_attrs(__TopXMLNS, [_ | _attrs], - Type) -> - decode_media_uri_attrs(__TopXMLNS, _attrs, Type); -decode_media_uri_attrs(__TopXMLNS, [], Type) -> - decode_media_uri_attr_type(__TopXMLNS, Type). - -encode_media_uri({media_uri, Type, Uri}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:xmpp:media-element">>, [], - __TopXMLNS), - _els = encode_media_uri_cdata(Uri, []), - _attrs = encode_media_uri_attr_type(Type, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"uri">>, _attrs, _els}. - -decode_media_uri_attr_type(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"type">>, <<"uri">>, __TopXMLNS}}); -decode_media_uri_attr_type(__TopXMLNS, _val) -> _val. - -encode_media_uri_attr_type(_val, _acc) -> - [{<<"type">>, _val} | _acc]. - -decode_media_uri_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_media_uri_cdata(__TopXMLNS, _val) -> _val. - -encode_media_uri_cdata(<<>>, _acc) -> _acc; -encode_media_uri_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_captcha(__TopXMLNS, __IgnoreEls, - {xmlel, <<"captcha">>, _attrs, _els}) -> - Xdata = decode_captcha_els(__TopXMLNS, __IgnoreEls, - _els, error), - {xcaptcha, Xdata}. - -decode_captcha_els(__TopXMLNS, __IgnoreEls, [], - Xdata) -> - case Xdata of - error -> - erlang:error({xmpp_codec, - {missing_tag, <<"x">>, __TopXMLNS}}); - {value, Xdata1} -> Xdata1 - end; -decode_captcha_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"x">>, _attrs, _} = _el | _els], Xdata) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"jabber:x:data">> -> - decode_captcha_els(__TopXMLNS, __IgnoreEls, _els, - {value, - decode_xdata(<<"jabber:x:data">>, __IgnoreEls, - _el)}); - _ -> - decode_captcha_els(__TopXMLNS, __IgnoreEls, _els, Xdata) - end; -decode_captcha_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Xdata) -> - decode_captcha_els(__TopXMLNS, __IgnoreEls, _els, - Xdata). - -encode_captcha({xcaptcha, Xdata}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"urn:xmpp:captcha">>, - [], __TopXMLNS), - _els = lists:reverse('encode_captcha_$xdata'(Xdata, - __NewTopXMLNS, [])), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"captcha">>, _attrs, _els}. - -'encode_captcha_$xdata'(Xdata, __TopXMLNS, _acc) -> - [encode_xdata(Xdata, __TopXMLNS) | _acc]. - -decode_bob_data(__TopXMLNS, __IgnoreEls, - {xmlel, <<"data">>, _attrs, _els}) -> - Data = decode_bob_data_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - {Cid, Max_age, Type} = decode_bob_data_attrs(__TopXMLNS, - _attrs, undefined, undefined, - undefined), - {bob_data, Cid, Max_age, Type, Data}. - -decode_bob_data_els(__TopXMLNS, __IgnoreEls, [], - Data) -> - decode_bob_data_cdata(__TopXMLNS, Data); -decode_bob_data_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Data) -> - decode_bob_data_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_bob_data_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Data) -> - decode_bob_data_els(__TopXMLNS, __IgnoreEls, _els, - Data). - -decode_bob_data_attrs(__TopXMLNS, - [{<<"cid">>, _val} | _attrs], _Cid, Max_age, Type) -> - decode_bob_data_attrs(__TopXMLNS, _attrs, _val, Max_age, - Type); -decode_bob_data_attrs(__TopXMLNS, - [{<<"max-age">>, _val} | _attrs], Cid, _Max_age, - Type) -> - decode_bob_data_attrs(__TopXMLNS, _attrs, Cid, _val, - Type); -decode_bob_data_attrs(__TopXMLNS, - [{<<"type">>, _val} | _attrs], Cid, Max_age, _Type) -> - decode_bob_data_attrs(__TopXMLNS, _attrs, Cid, Max_age, - _val); -decode_bob_data_attrs(__TopXMLNS, [_ | _attrs], Cid, - Max_age, Type) -> - decode_bob_data_attrs(__TopXMLNS, _attrs, Cid, Max_age, - Type); -decode_bob_data_attrs(__TopXMLNS, [], Cid, Max_age, - Type) -> - {decode_bob_data_attr_cid(__TopXMLNS, Cid), - 'decode_bob_data_attr_max-age'(__TopXMLNS, Max_age), - decode_bob_data_attr_type(__TopXMLNS, Type)}. - -encode_bob_data({bob_data, Cid, Max_age, Type, Data}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"urn:xmpp:bob">>, [], - __TopXMLNS), - _els = encode_bob_data_cdata(Data, []), - _attrs = encode_bob_data_attr_type(Type, - 'encode_bob_data_attr_max-age'(Max_age, - encode_bob_data_attr_cid(Cid, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)))), - {xmlel, <<"data">>, _attrs, _els}. - -decode_bob_data_attr_cid(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"cid">>, <<"data">>, __TopXMLNS}}); -decode_bob_data_attr_cid(__TopXMLNS, _val) -> _val. - -encode_bob_data_attr_cid(_val, _acc) -> - [{<<"cid">>, _val} | _acc]. - -'decode_bob_data_attr_max-age'(__TopXMLNS, undefined) -> - undefined; -'decode_bob_data_attr_max-age'(__TopXMLNS, _val) -> - case catch dec_int(_val, 0, infinity) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"max-age">>, <<"data">>, - __TopXMLNS}}); - _res -> _res - end. - -'encode_bob_data_attr_max-age'(undefined, _acc) -> _acc; -'encode_bob_data_attr_max-age'(_val, _acc) -> - [{<<"max-age">>, enc_int(_val)} | _acc]. - -decode_bob_data_attr_type(__TopXMLNS, undefined) -> - <<>>; -decode_bob_data_attr_type(__TopXMLNS, _val) -> _val. - -encode_bob_data_attr_type(<<>>, _acc) -> _acc; -encode_bob_data_attr_type(_val, _acc) -> - [{<<"type">>, _val} | _acc]. - -decode_bob_data_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_bob_data_cdata(__TopXMLNS, _val) -> - case catch base64:decode(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_cdata_value, <<>>, <<"data">>, __TopXMLNS}}); - _res -> _res - end. - -encode_bob_data_cdata(<<>>, _acc) -> _acc; -encode_bob_data_cdata(_val, _acc) -> - [{xmlcdata, base64:encode(_val)} | _acc]. - -decode_stream_start(__TopXMLNS, __IgnoreEls, - {xmlel, <<"stream:stream">>, _attrs, _els}) -> - {From, To, Xmlns, Stream_xmlns, Db_xmlns, Lang, Version, - Id} = - decode_stream_start_attrs(__TopXMLNS, _attrs, undefined, - undefined, undefined, undefined, undefined, - undefined, undefined, undefined), - {stream_start, From, To, Id, Version, Xmlns, - Stream_xmlns, Db_xmlns, Lang}. - -decode_stream_start_attrs(__TopXMLNS, - [{<<"from">>, _val} | _attrs], _From, To, Xmlns, - Stream_xmlns, Db_xmlns, Lang, Version, Id) -> - decode_stream_start_attrs(__TopXMLNS, _attrs, _val, To, - Xmlns, Stream_xmlns, Db_xmlns, Lang, Version, Id); -decode_stream_start_attrs(__TopXMLNS, - [{<<"to">>, _val} | _attrs], From, _To, Xmlns, - Stream_xmlns, Db_xmlns, Lang, Version, Id) -> - decode_stream_start_attrs(__TopXMLNS, _attrs, From, - _val, Xmlns, Stream_xmlns, Db_xmlns, Lang, - Version, Id); -decode_stream_start_attrs(__TopXMLNS, - [{<<"xmlns">>, _val} | _attrs], From, To, _Xmlns, - Stream_xmlns, Db_xmlns, Lang, Version, Id) -> - decode_stream_start_attrs(__TopXMLNS, _attrs, From, To, - _val, Stream_xmlns, Db_xmlns, Lang, Version, Id); -decode_stream_start_attrs(__TopXMLNS, - [{<<"xmlns:stream">>, _val} | _attrs], From, To, - Xmlns, _Stream_xmlns, Db_xmlns, Lang, Version, Id) -> - decode_stream_start_attrs(__TopXMLNS, _attrs, From, To, - Xmlns, _val, Db_xmlns, Lang, Version, Id); -decode_stream_start_attrs(__TopXMLNS, - [{<<"xmlns:db">>, _val} | _attrs], From, To, Xmlns, - Stream_xmlns, _Db_xmlns, Lang, Version, Id) -> - decode_stream_start_attrs(__TopXMLNS, _attrs, From, To, - Xmlns, Stream_xmlns, _val, Lang, Version, Id); -decode_stream_start_attrs(__TopXMLNS, - [{<<"xml:lang">>, _val} | _attrs], From, To, Xmlns, - Stream_xmlns, Db_xmlns, _Lang, Version, Id) -> - decode_stream_start_attrs(__TopXMLNS, _attrs, From, To, - Xmlns, Stream_xmlns, Db_xmlns, _val, Version, Id); -decode_stream_start_attrs(__TopXMLNS, - [{<<"version">>, _val} | _attrs], From, To, Xmlns, - Stream_xmlns, Db_xmlns, Lang, _Version, Id) -> - decode_stream_start_attrs(__TopXMLNS, _attrs, From, To, - Xmlns, Stream_xmlns, Db_xmlns, Lang, _val, Id); -decode_stream_start_attrs(__TopXMLNS, - [{<<"id">>, _val} | _attrs], From, To, Xmlns, - Stream_xmlns, Db_xmlns, Lang, Version, _Id) -> - decode_stream_start_attrs(__TopXMLNS, _attrs, From, To, - Xmlns, Stream_xmlns, Db_xmlns, Lang, Version, - _val); -decode_stream_start_attrs(__TopXMLNS, [_ | _attrs], - From, To, Xmlns, Stream_xmlns, Db_xmlns, Lang, - Version, Id) -> - decode_stream_start_attrs(__TopXMLNS, _attrs, From, To, - Xmlns, Stream_xmlns, Db_xmlns, Lang, Version, Id); -decode_stream_start_attrs(__TopXMLNS, [], From, To, - Xmlns, Stream_xmlns, Db_xmlns, Lang, Version, Id) -> - {decode_stream_start_attr_from(__TopXMLNS, From), - decode_stream_start_attr_to(__TopXMLNS, To), - decode_stream_start_attr_xmlns(__TopXMLNS, Xmlns), - 'decode_stream_start_attr_xmlns:stream'(__TopXMLNS, - Stream_xmlns), - 'decode_stream_start_attr_xmlns:db'(__TopXMLNS, - Db_xmlns), - 'decode_stream_start_attr_xml:lang'(__TopXMLNS, Lang), - decode_stream_start_attr_version(__TopXMLNS, Version), - decode_stream_start_attr_id(__TopXMLNS, Id)}. - -encode_stream_start({stream_start, From, To, Id, - Version, Xmlns, Stream_xmlns, Db_xmlns, Lang}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(Xmlns, - [<<"jabber:client">>, <<"jabber:server">>, - <<"jabber:component:accept">>], - __TopXMLNS), - _els = [], - _attrs = encode_stream_start_attr_id(Id, - encode_stream_start_attr_version(Version, - 'encode_stream_start_attr_xml:lang'(Lang, - 'encode_stream_start_attr_xmlns:db'(Db_xmlns, - 'encode_stream_start_attr_xmlns:stream'(Stream_xmlns, - encode_stream_start_attr_to(To, - encode_stream_start_attr_from(From, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)))))))), - {xmlel, <<"stream:stream">>, _attrs, _els}. - -decode_stream_start_attr_from(__TopXMLNS, undefined) -> - undefined; -decode_stream_start_attr_from(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"from">>, <<"stream:stream">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_stream_start_attr_from(undefined, _acc) -> _acc; -encode_stream_start_attr_from(_val, _acc) -> - [{<<"from">>, enc_jid(_val)} | _acc]. - -decode_stream_start_attr_to(__TopXMLNS, undefined) -> - undefined; -decode_stream_start_attr_to(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"to">>, <<"stream:stream">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_stream_start_attr_to(undefined, _acc) -> _acc; -encode_stream_start_attr_to(_val, _acc) -> - [{<<"to">>, enc_jid(_val)} | _acc]. - -decode_stream_start_attr_xmlns(__TopXMLNS, undefined) -> - <<>>; -decode_stream_start_attr_xmlns(__TopXMLNS, _val) -> - _val. - -'decode_stream_start_attr_xmlns:stream'(__TopXMLNS, - undefined) -> - <<>>; -'decode_stream_start_attr_xmlns:stream'(__TopXMLNS, - _val) -> - _val. - -'encode_stream_start_attr_xmlns:stream'(<<>>, _acc) -> - _acc; -'encode_stream_start_attr_xmlns:stream'(_val, _acc) -> - [{<<"xmlns:stream">>, _val} | _acc]. - -'decode_stream_start_attr_xmlns:db'(__TopXMLNS, - undefined) -> - <<>>; -'decode_stream_start_attr_xmlns:db'(__TopXMLNS, _val) -> - _val. - -'encode_stream_start_attr_xmlns:db'(<<>>, _acc) -> _acc; -'encode_stream_start_attr_xmlns:db'(_val, _acc) -> - [{<<"xmlns:db">>, _val} | _acc]. - -'decode_stream_start_attr_xml:lang'(__TopXMLNS, - undefined) -> - <<>>; -'decode_stream_start_attr_xml:lang'(__TopXMLNS, _val) -> - _val. - -'encode_stream_start_attr_xml:lang'(<<>>, _acc) -> _acc; -'encode_stream_start_attr_xml:lang'(_val, _acc) -> - [{<<"xml:lang">>, _val} | _acc]. - -decode_stream_start_attr_version(__TopXMLNS, - undefined) -> - undefined; -decode_stream_start_attr_version(__TopXMLNS, _val) -> - case catch dec_version(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"version">>, <<"stream:stream">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_stream_start_attr_version(undefined, _acc) -> - _acc; -encode_stream_start_attr_version(_val, _acc) -> - [{<<"version">>, enc_version(_val)} | _acc]. - -decode_stream_start_attr_id(__TopXMLNS, undefined) -> - <<>>; -decode_stream_start_attr_id(__TopXMLNS, _val) -> _val. - -encode_stream_start_attr_id(<<>>, _acc) -> _acc; -encode_stream_start_attr_id(_val, _acc) -> - [{<<"id">>, _val} | _acc]. - -decode_handshake(__TopXMLNS, __IgnoreEls, - {xmlel, <<"handshake">>, _attrs, _els}) -> - Data = decode_handshake_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - {handshake, Data}. - -decode_handshake_els(__TopXMLNS, __IgnoreEls, [], - Data) -> - decode_handshake_cdata(__TopXMLNS, Data); -decode_handshake_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Data) -> - decode_handshake_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_handshake_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Data) -> - decode_handshake_els(__TopXMLNS, __IgnoreEls, _els, - Data). - -encode_handshake({handshake, Data}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:component:accept">>, [], - __TopXMLNS), - _els = encode_handshake_cdata(Data, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"handshake">>, _attrs, _els}. - -decode_handshake_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_handshake_cdata(__TopXMLNS, _val) -> _val. - -encode_handshake_cdata(<<>>, _acc) -> _acc; -encode_handshake_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_db_verify(__TopXMLNS, __IgnoreEls, - {xmlel, <<"db:verify">>, _attrs, _els}) -> - {Key, __Els} = decode_db_verify_els(__TopXMLNS, - __IgnoreEls, _els, <<>>, []), - {From, To, Id, Type} = - decode_db_verify_attrs(__TopXMLNS, _attrs, undefined, - undefined, undefined, undefined), - {db_verify, From, To, Id, Type, Key, __Els}. - -decode_db_verify_els(__TopXMLNS, __IgnoreEls, [], Key, - __Els) -> - {decode_db_verify_cdata(__TopXMLNS, Key), - lists:reverse(__Els)}; -decode_db_verify_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Key, __Els) -> - decode_db_verify_els(__TopXMLNS, __IgnoreEls, _els, - <>, __Els); -decode_db_verify_els(__TopXMLNS, __IgnoreEls, - [{xmlel, _, _, _} = _el | _els], Key, __Els) -> - if __IgnoreEls -> - decode_db_verify_els(__TopXMLNS, __IgnoreEls, _els, Key, - [_el | __Els]); - true -> - case is_known_tag(_el, __TopXMLNS) of - true -> - decode_db_verify_els(__TopXMLNS, __IgnoreEls, _els, Key, - [decode(_el, __TopXMLNS, []) | __Els]); - false -> - decode_db_verify_els(__TopXMLNS, __IgnoreEls, _els, Key, - __Els) - end - end. - -decode_db_verify_attrs(__TopXMLNS, - [{<<"from">>, _val} | _attrs], _From, To, Id, Type) -> - decode_db_verify_attrs(__TopXMLNS, _attrs, _val, To, Id, - Type); -decode_db_verify_attrs(__TopXMLNS, - [{<<"to">>, _val} | _attrs], From, _To, Id, Type) -> - decode_db_verify_attrs(__TopXMLNS, _attrs, From, _val, - Id, Type); -decode_db_verify_attrs(__TopXMLNS, - [{<<"id">>, _val} | _attrs], From, To, _Id, Type) -> - decode_db_verify_attrs(__TopXMLNS, _attrs, From, To, - _val, Type); -decode_db_verify_attrs(__TopXMLNS, - [{<<"type">>, _val} | _attrs], From, To, Id, _Type) -> - decode_db_verify_attrs(__TopXMLNS, _attrs, From, To, Id, - _val); -decode_db_verify_attrs(__TopXMLNS, [_ | _attrs], From, - To, Id, Type) -> - decode_db_verify_attrs(__TopXMLNS, _attrs, From, To, Id, - Type); -decode_db_verify_attrs(__TopXMLNS, [], From, To, Id, - Type) -> - {decode_db_verify_attr_from(__TopXMLNS, From), - decode_db_verify_attr_to(__TopXMLNS, To), - decode_db_verify_attr_id(__TopXMLNS, Id), - decode_db_verify_attr_type(__TopXMLNS, Type)}. - -encode_db_verify({db_verify, From, To, Id, Type, Key, - __Els}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:server">>, - [], __TopXMLNS), - _els = [encode(_el, __NewTopXMLNS) || _el <- __Els] ++ - encode_db_verify_cdata(Key, []), - _attrs = encode_db_verify_attr_type(Type, - encode_db_verify_attr_id(Id, - encode_db_verify_attr_to(To, - encode_db_verify_attr_from(From, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))))), - {xmlel, <<"db:verify">>, _attrs, _els}. - -decode_db_verify_attr_from(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"from">>, <<"db:verify">>, - __TopXMLNS}}); -decode_db_verify_attr_from(__TopXMLNS, _val) -> - case catch nameprep(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"from">>, <<"db:verify">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_db_verify_attr_from(_val, _acc) -> - [{<<"from">>, nameprep(_val)} | _acc]. - -decode_db_verify_attr_to(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"to">>, <<"db:verify">>, __TopXMLNS}}); -decode_db_verify_attr_to(__TopXMLNS, _val) -> - case catch nameprep(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"to">>, <<"db:verify">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_db_verify_attr_to(_val, _acc) -> - [{<<"to">>, nameprep(_val)} | _acc]. - -decode_db_verify_attr_id(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"id">>, <<"db:verify">>, __TopXMLNS}}); -decode_db_verify_attr_id(__TopXMLNS, _val) -> _val. - -encode_db_verify_attr_id(_val, _acc) -> - [{<<"id">>, _val} | _acc]. - -decode_db_verify_attr_type(__TopXMLNS, undefined) -> - undefined; -decode_db_verify_attr_type(__TopXMLNS, _val) -> - case catch dec_enum(_val, [valid, invalid, error]) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"type">>, <<"db:verify">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_db_verify_attr_type(undefined, _acc) -> _acc; -encode_db_verify_attr_type(_val, _acc) -> - [{<<"type">>, enc_enum(_val)} | _acc]. - -decode_db_verify_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_db_verify_cdata(__TopXMLNS, _val) -> _val. - -encode_db_verify_cdata(<<>>, _acc) -> _acc; -encode_db_verify_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_db_result(__TopXMLNS, __IgnoreEls, - {xmlel, <<"db:result">>, _attrs, _els}) -> - {Key, __Els} = decode_db_result_els(__TopXMLNS, - __IgnoreEls, _els, <<>>, []), - {From, To, Type} = decode_db_result_attrs(__TopXMLNS, - _attrs, undefined, undefined, - undefined), - {db_result, From, To, Type, Key, __Els}. - -decode_db_result_els(__TopXMLNS, __IgnoreEls, [], Key, - __Els) -> - {decode_db_result_cdata(__TopXMLNS, Key), - lists:reverse(__Els)}; -decode_db_result_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Key, __Els) -> - decode_db_result_els(__TopXMLNS, __IgnoreEls, _els, - <>, __Els); -decode_db_result_els(__TopXMLNS, __IgnoreEls, - [{xmlel, _, _, _} = _el | _els], Key, __Els) -> - if __IgnoreEls -> - decode_db_result_els(__TopXMLNS, __IgnoreEls, _els, Key, - [_el | __Els]); - true -> - case is_known_tag(_el, __TopXMLNS) of - true -> - decode_db_result_els(__TopXMLNS, __IgnoreEls, _els, Key, - [decode(_el, __TopXMLNS, []) | __Els]); - false -> - decode_db_result_els(__TopXMLNS, __IgnoreEls, _els, Key, - __Els) - end - end. - -decode_db_result_attrs(__TopXMLNS, - [{<<"from">>, _val} | _attrs], _From, To, Type) -> - decode_db_result_attrs(__TopXMLNS, _attrs, _val, To, - Type); -decode_db_result_attrs(__TopXMLNS, - [{<<"to">>, _val} | _attrs], From, _To, Type) -> - decode_db_result_attrs(__TopXMLNS, _attrs, From, _val, - Type); -decode_db_result_attrs(__TopXMLNS, - [{<<"type">>, _val} | _attrs], From, To, _Type) -> - decode_db_result_attrs(__TopXMLNS, _attrs, From, To, - _val); -decode_db_result_attrs(__TopXMLNS, [_ | _attrs], From, - To, Type) -> - decode_db_result_attrs(__TopXMLNS, _attrs, From, To, - Type); -decode_db_result_attrs(__TopXMLNS, [], From, To, - Type) -> - {decode_db_result_attr_from(__TopXMLNS, From), - decode_db_result_attr_to(__TopXMLNS, To), - decode_db_result_attr_type(__TopXMLNS, Type)}. - -encode_db_result({db_result, From, To, Type, Key, - __Els}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:server">>, - [], __TopXMLNS), - _els = [encode(_el, __NewTopXMLNS) || _el <- __Els] ++ - encode_db_result_cdata(Key, []), - _attrs = encode_db_result_attr_type(Type, - encode_db_result_attr_to(To, - encode_db_result_attr_from(From, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)))), - {xmlel, <<"db:result">>, _attrs, _els}. - -decode_db_result_attr_from(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"from">>, <<"db:result">>, - __TopXMLNS}}); -decode_db_result_attr_from(__TopXMLNS, _val) -> - case catch nameprep(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"from">>, <<"db:result">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_db_result_attr_from(_val, _acc) -> - [{<<"from">>, nameprep(_val)} | _acc]. - -decode_db_result_attr_to(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"to">>, <<"db:result">>, __TopXMLNS}}); -decode_db_result_attr_to(__TopXMLNS, _val) -> - case catch nameprep(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"to">>, <<"db:result">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_db_result_attr_to(_val, _acc) -> - [{<<"to">>, nameprep(_val)} | _acc]. - -decode_db_result_attr_type(__TopXMLNS, undefined) -> - undefined; -decode_db_result_attr_type(__TopXMLNS, _val) -> - case catch dec_enum(_val, [valid, invalid, error]) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"type">>, <<"db:result">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_db_result_attr_type(undefined, _acc) -> _acc; -encode_db_result_attr_type(_val, _acc) -> - [{<<"type">>, enc_enum(_val)} | _acc]. - -decode_db_result_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_db_result_cdata(__TopXMLNS, _val) -> _val. - -encode_db_result_cdata(<<>>, _acc) -> _acc; -encode_db_result_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_adhoc_command(__TopXMLNS, __IgnoreEls, - {xmlel, <<"command">>, _attrs, _els}) -> - {Xdata, Notes, Actions} = - decode_adhoc_command_els(__TopXMLNS, __IgnoreEls, _els, - undefined, [], undefined), - {Node, Lang, Sid, Status, Action} = - decode_adhoc_command_attrs(__TopXMLNS, _attrs, - undefined, undefined, undefined, undefined, - undefined), - {adhoc_command, Node, Action, Sid, Status, Lang, - Actions, Notes, Xdata}. - -decode_adhoc_command_els(__TopXMLNS, __IgnoreEls, [], - Xdata, Notes, Actions) -> - {Xdata, lists:reverse(Notes), Actions}; -decode_adhoc_command_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"actions">>, _attrs, _} = _el | _els], - Xdata, Notes, Actions) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/commands">> -> - decode_adhoc_command_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, Notes, - decode_adhoc_command_actions(__TopXMLNS, - __IgnoreEls, - _el)); - <<"http://jabber.org/protocol/commands">> -> - decode_adhoc_command_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, Notes, - decode_adhoc_command_actions(<<"http://jabber.org/protocol/commands">>, - __IgnoreEls, - _el)); - _ -> - decode_adhoc_command_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, Notes, Actions) - end; -decode_adhoc_command_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"x">>, _attrs, _} = _el | _els], Xdata, - Notes, Actions) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"jabber:x:data">> -> - decode_adhoc_command_els(__TopXMLNS, __IgnoreEls, _els, - decode_xdata(<<"jabber:x:data">>, - __IgnoreEls, _el), - Notes, Actions); - _ -> - decode_adhoc_command_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, Notes, Actions) - end; -decode_adhoc_command_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"note">>, _attrs, _} = _el | _els], Xdata, - Notes, Actions) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/commands">> -> - decode_adhoc_command_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, - [decode_adhoc_command_notes(__TopXMLNS, - __IgnoreEls, _el) - | Notes], - Actions); - <<"http://jabber.org/protocol/commands">> -> - decode_adhoc_command_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, - [decode_adhoc_command_notes(<<"http://jabber.org/protocol/commands">>, - __IgnoreEls, _el) - | Notes], - Actions); - _ -> - decode_adhoc_command_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, Notes, Actions) - end; -decode_adhoc_command_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Xdata, Notes, Actions) -> - decode_adhoc_command_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, Notes, Actions). - -decode_adhoc_command_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], _Node, Lang, Sid, - Status, Action) -> - decode_adhoc_command_attrs(__TopXMLNS, _attrs, _val, - Lang, Sid, Status, Action); -decode_adhoc_command_attrs(__TopXMLNS, - [{<<"xml:lang">>, _val} | _attrs], Node, _Lang, Sid, - Status, Action) -> - decode_adhoc_command_attrs(__TopXMLNS, _attrs, Node, - _val, Sid, Status, Action); -decode_adhoc_command_attrs(__TopXMLNS, - [{<<"sessionid">>, _val} | _attrs], Node, Lang, _Sid, - Status, Action) -> - decode_adhoc_command_attrs(__TopXMLNS, _attrs, Node, - Lang, _val, Status, Action); -decode_adhoc_command_attrs(__TopXMLNS, - [{<<"status">>, _val} | _attrs], Node, Lang, Sid, - _Status, Action) -> - decode_adhoc_command_attrs(__TopXMLNS, _attrs, Node, - Lang, Sid, _val, Action); -decode_adhoc_command_attrs(__TopXMLNS, - [{<<"action">>, _val} | _attrs], Node, Lang, Sid, - Status, _Action) -> - decode_adhoc_command_attrs(__TopXMLNS, _attrs, Node, - Lang, Sid, Status, _val); -decode_adhoc_command_attrs(__TopXMLNS, [_ | _attrs], - Node, Lang, Sid, Status, Action) -> - decode_adhoc_command_attrs(__TopXMLNS, _attrs, Node, - Lang, Sid, Status, Action); -decode_adhoc_command_attrs(__TopXMLNS, [], Node, Lang, - Sid, Status, Action) -> - {decode_adhoc_command_attr_node(__TopXMLNS, Node), - 'decode_adhoc_command_attr_xml:lang'(__TopXMLNS, Lang), - decode_adhoc_command_attr_sessionid(__TopXMLNS, Sid), - decode_adhoc_command_attr_status(__TopXMLNS, Status), - decode_adhoc_command_attr_action(__TopXMLNS, Action)}. - -encode_adhoc_command({adhoc_command, Node, Action, Sid, - Status, Lang, Actions, Notes, Xdata}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/commands">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_adhoc_command_$xdata'(Xdata, - __NewTopXMLNS, - 'encode_adhoc_command_$notes'(Notes, - __NewTopXMLNS, - 'encode_adhoc_command_$actions'(Actions, - __NewTopXMLNS, - [])))), - _attrs = encode_adhoc_command_attr_action(Action, - encode_adhoc_command_attr_status(Status, - encode_adhoc_command_attr_sessionid(Sid, - 'encode_adhoc_command_attr_xml:lang'(Lang, - encode_adhoc_command_attr_node(Node, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)))))), - {xmlel, <<"command">>, _attrs, _els}. - -'encode_adhoc_command_$xdata'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_adhoc_command_$xdata'(Xdata, __TopXMLNS, - _acc) -> - [encode_xdata(Xdata, __TopXMLNS) | _acc]. - -'encode_adhoc_command_$notes'([], __TopXMLNS, _acc) -> - _acc; -'encode_adhoc_command_$notes'([Notes | _els], - __TopXMLNS, _acc) -> - 'encode_adhoc_command_$notes'(_els, __TopXMLNS, - [encode_adhoc_command_notes(Notes, __TopXMLNS) - | _acc]). - -'encode_adhoc_command_$actions'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_adhoc_command_$actions'(Actions, __TopXMLNS, - _acc) -> - [encode_adhoc_command_actions(Actions, __TopXMLNS) - | _acc]. - -decode_adhoc_command_attr_node(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"node">>, <<"command">>, __TopXMLNS}}); -decode_adhoc_command_attr_node(__TopXMLNS, _val) -> - _val. - -encode_adhoc_command_attr_node(_val, _acc) -> - [{<<"node">>, _val} | _acc]. - -'decode_adhoc_command_attr_xml:lang'(__TopXMLNS, - undefined) -> - <<>>; -'decode_adhoc_command_attr_xml:lang'(__TopXMLNS, - _val) -> - _val. - -'encode_adhoc_command_attr_xml:lang'(<<>>, _acc) -> - _acc; -'encode_adhoc_command_attr_xml:lang'(_val, _acc) -> - [{<<"xml:lang">>, _val} | _acc]. - -decode_adhoc_command_attr_sessionid(__TopXMLNS, - undefined) -> - <<>>; -decode_adhoc_command_attr_sessionid(__TopXMLNS, _val) -> - _val. - -encode_adhoc_command_attr_sessionid(<<>>, _acc) -> _acc; -encode_adhoc_command_attr_sessionid(_val, _acc) -> - [{<<"sessionid">>, _val} | _acc]. - -decode_adhoc_command_attr_status(__TopXMLNS, - undefined) -> - undefined; -decode_adhoc_command_attr_status(__TopXMLNS, _val) -> - case catch dec_enum(_val, - [canceled, completed, executing]) - of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"status">>, <<"command">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_adhoc_command_attr_status(undefined, _acc) -> - _acc; -encode_adhoc_command_attr_status(_val, _acc) -> - [{<<"status">>, enc_enum(_val)} | _acc]. - -decode_adhoc_command_attr_action(__TopXMLNS, - undefined) -> - execute; -decode_adhoc_command_attr_action(__TopXMLNS, _val) -> - case catch dec_enum(_val, - [cancel, complete, execute, next, prev]) - of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"action">>, <<"command">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_adhoc_command_attr_action(execute, _acc) -> _acc; -encode_adhoc_command_attr_action(_val, _acc) -> - [{<<"action">>, enc_enum(_val)} | _acc]. - -decode_adhoc_command_notes(__TopXMLNS, __IgnoreEls, - {xmlel, <<"note">>, _attrs, _els}) -> - Data = decode_adhoc_command_notes_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Type = decode_adhoc_command_notes_attrs(__TopXMLNS, - _attrs, undefined), - {adhoc_note, Type, Data}. - -decode_adhoc_command_notes_els(__TopXMLNS, __IgnoreEls, - [], Data) -> - decode_adhoc_command_notes_cdata(__TopXMLNS, Data); -decode_adhoc_command_notes_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Data) -> - decode_adhoc_command_notes_els(__TopXMLNS, __IgnoreEls, - _els, <>); -decode_adhoc_command_notes_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Data) -> - decode_adhoc_command_notes_els(__TopXMLNS, __IgnoreEls, - _els, Data). - -decode_adhoc_command_notes_attrs(__TopXMLNS, - [{<<"type">>, _val} | _attrs], _Type) -> - decode_adhoc_command_notes_attrs(__TopXMLNS, _attrs, - _val); -decode_adhoc_command_notes_attrs(__TopXMLNS, - [_ | _attrs], Type) -> - decode_adhoc_command_notes_attrs(__TopXMLNS, _attrs, - Type); -decode_adhoc_command_notes_attrs(__TopXMLNS, [], - Type) -> - decode_adhoc_command_notes_attr_type(__TopXMLNS, Type). - -encode_adhoc_command_notes({adhoc_note, Type, Data}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/commands">>, - [], __TopXMLNS), - _els = encode_adhoc_command_notes_cdata(Data, []), - _attrs = encode_adhoc_command_notes_attr_type(Type, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"note">>, _attrs, _els}. - -decode_adhoc_command_notes_attr_type(__TopXMLNS, - undefined) -> - info; -decode_adhoc_command_notes_attr_type(__TopXMLNS, - _val) -> - case catch dec_enum(_val, [info, warn, error]) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"type">>, <<"note">>, __TopXMLNS}}); - _res -> _res - end. - -encode_adhoc_command_notes_attr_type(info, _acc) -> - _acc; -encode_adhoc_command_notes_attr_type(_val, _acc) -> - [{<<"type">>, enc_enum(_val)} | _acc]. - -decode_adhoc_command_notes_cdata(__TopXMLNS, <<>>) -> - <<>>; -decode_adhoc_command_notes_cdata(__TopXMLNS, _val) -> - _val. - -encode_adhoc_command_notes_cdata(<<>>, _acc) -> _acc; -encode_adhoc_command_notes_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_adhoc_command_actions(__TopXMLNS, __IgnoreEls, - {xmlel, <<"actions">>, _attrs, _els}) -> - {Next, Complete, Prev} = - decode_adhoc_command_actions_els(__TopXMLNS, - __IgnoreEls, _els, false, false, - false), - Execute = decode_adhoc_command_actions_attrs(__TopXMLNS, - _attrs, undefined), - {adhoc_actions, Execute, Prev, Next, Complete}. - -decode_adhoc_command_actions_els(__TopXMLNS, - __IgnoreEls, [], Next, Complete, Prev) -> - {Next, Complete, Prev}; -decode_adhoc_command_actions_els(__TopXMLNS, - __IgnoreEls, - [{xmlel, <<"prev">>, _attrs, _} = _el | _els], - Next, Complete, Prev) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/commands">> -> - decode_adhoc_command_actions_els(__TopXMLNS, - __IgnoreEls, _els, Next, Complete, - decode_adhoc_command_prev(__TopXMLNS, - __IgnoreEls, - _el)); - <<"http://jabber.org/protocol/commands">> -> - decode_adhoc_command_actions_els(__TopXMLNS, - __IgnoreEls, _els, Next, Complete, - decode_adhoc_command_prev(<<"http://jabber.org/protocol/commands">>, - __IgnoreEls, - _el)); - _ -> - decode_adhoc_command_actions_els(__TopXMLNS, - __IgnoreEls, _els, Next, Complete, - Prev) - end; -decode_adhoc_command_actions_els(__TopXMLNS, - __IgnoreEls, - [{xmlel, <<"next">>, _attrs, _} = _el | _els], - Next, Complete, Prev) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/commands">> -> - decode_adhoc_command_actions_els(__TopXMLNS, - __IgnoreEls, _els, - decode_adhoc_command_next(__TopXMLNS, - __IgnoreEls, - _el), - Complete, Prev); - <<"http://jabber.org/protocol/commands">> -> - decode_adhoc_command_actions_els(__TopXMLNS, - __IgnoreEls, _els, - decode_adhoc_command_next(<<"http://jabber.org/protocol/commands">>, - __IgnoreEls, - _el), - Complete, Prev); - _ -> - decode_adhoc_command_actions_els(__TopXMLNS, - __IgnoreEls, _els, Next, Complete, - Prev) - end; -decode_adhoc_command_actions_els(__TopXMLNS, - __IgnoreEls, - [{xmlel, <<"complete">>, _attrs, _} = _el - | _els], - Next, Complete, Prev) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/commands">> -> - decode_adhoc_command_actions_els(__TopXMLNS, - __IgnoreEls, _els, Next, - decode_adhoc_command_complete(__TopXMLNS, - __IgnoreEls, - _el), - Prev); - <<"http://jabber.org/protocol/commands">> -> - decode_adhoc_command_actions_els(__TopXMLNS, - __IgnoreEls, _els, Next, - decode_adhoc_command_complete(<<"http://jabber.org/protocol/commands">>, - __IgnoreEls, - _el), - Prev); - _ -> - decode_adhoc_command_actions_els(__TopXMLNS, - __IgnoreEls, _els, Next, Complete, - Prev) - end; -decode_adhoc_command_actions_els(__TopXMLNS, - __IgnoreEls, [_ | _els], Next, Complete, - Prev) -> - decode_adhoc_command_actions_els(__TopXMLNS, - __IgnoreEls, _els, Next, Complete, Prev). - -decode_adhoc_command_actions_attrs(__TopXMLNS, - [{<<"execute">>, _val} | _attrs], - _Execute) -> - decode_adhoc_command_actions_attrs(__TopXMLNS, _attrs, - _val); -decode_adhoc_command_actions_attrs(__TopXMLNS, - [_ | _attrs], Execute) -> - decode_adhoc_command_actions_attrs(__TopXMLNS, _attrs, - Execute); -decode_adhoc_command_actions_attrs(__TopXMLNS, [], - Execute) -> - decode_adhoc_command_actions_attr_execute(__TopXMLNS, - Execute). - -encode_adhoc_command_actions({adhoc_actions, Execute, - Prev, Next, Complete}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/commands">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_adhoc_command_actions_$next'(Next, - __NewTopXMLNS, - 'encode_adhoc_command_actions_$complete'(Complete, - __NewTopXMLNS, - 'encode_adhoc_command_actions_$prev'(Prev, - __NewTopXMLNS, - [])))), - _attrs = - encode_adhoc_command_actions_attr_execute(Execute, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"actions">>, _attrs, _els}. - -'encode_adhoc_command_actions_$next'(false, __TopXMLNS, - _acc) -> - _acc; -'encode_adhoc_command_actions_$next'(Next, __TopXMLNS, - _acc) -> - [encode_adhoc_command_next(Next, __TopXMLNS) | _acc]. - -'encode_adhoc_command_actions_$complete'(false, - __TopXMLNS, _acc) -> - _acc; -'encode_adhoc_command_actions_$complete'(Complete, - __TopXMLNS, _acc) -> - [encode_adhoc_command_complete(Complete, __TopXMLNS) - | _acc]. - -'encode_adhoc_command_actions_$prev'(false, __TopXMLNS, - _acc) -> - _acc; -'encode_adhoc_command_actions_$prev'(Prev, __TopXMLNS, - _acc) -> - [encode_adhoc_command_prev(Prev, __TopXMLNS) | _acc]. - -decode_adhoc_command_actions_attr_execute(__TopXMLNS, - undefined) -> - undefined; -decode_adhoc_command_actions_attr_execute(__TopXMLNS, - _val) -> - case catch dec_enum(_val, [complete, next, prev]) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"execute">>, <<"actions">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_adhoc_command_actions_attr_execute(undefined, - _acc) -> - _acc; -encode_adhoc_command_actions_attr_execute(_val, _acc) -> - [{<<"execute">>, enc_enum(_val)} | _acc]. - -decode_adhoc_command_complete(__TopXMLNS, __IgnoreEls, - {xmlel, <<"complete">>, _attrs, _els}) -> - true. - -encode_adhoc_command_complete(true, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/commands">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"complete">>, _attrs, _els}. - -decode_adhoc_command_next(__TopXMLNS, __IgnoreEls, - {xmlel, <<"next">>, _attrs, _els}) -> - true. - -encode_adhoc_command_next(true, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/commands">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"next">>, _attrs, _els}. - -decode_adhoc_command_prev(__TopXMLNS, __IgnoreEls, - {xmlel, <<"prev">>, _attrs, _els}) -> - true. - -encode_adhoc_command_prev(true, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/commands">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"prev">>, _attrs, _els}. - -decode_client_id(__TopXMLNS, __IgnoreEls, - {xmlel, <<"client-id">>, _attrs, _els}) -> - Id = decode_client_id_attrs(__TopXMLNS, _attrs, - undefined), - {client_id, Id}. - -decode_client_id_attrs(__TopXMLNS, - [{<<"id">>, _val} | _attrs], _Id) -> - decode_client_id_attrs(__TopXMLNS, _attrs, _val); -decode_client_id_attrs(__TopXMLNS, [_ | _attrs], Id) -> - decode_client_id_attrs(__TopXMLNS, _attrs, Id); -decode_client_id_attrs(__TopXMLNS, [], Id) -> - decode_client_id_attr_id(__TopXMLNS, Id). - -encode_client_id({client_id, Id}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"urn:xmpp:sid:0">>, - [], __TopXMLNS), - _els = [], - _attrs = encode_client_id_attr_id(Id, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"client-id">>, _attrs, _els}. - -decode_client_id_attr_id(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"id">>, <<"client-id">>, __TopXMLNS}}); -decode_client_id_attr_id(__TopXMLNS, _val) -> _val. - -encode_client_id_attr_id(_val, _acc) -> - [{<<"id">>, _val} | _acc]. - -decode_stanza_id(__TopXMLNS, __IgnoreEls, - {xmlel, <<"stanza-id">>, _attrs, _els}) -> - {Id, By} = decode_stanza_id_attrs(__TopXMLNS, _attrs, - undefined, undefined), - {stanza_id, By, Id}. - -decode_stanza_id_attrs(__TopXMLNS, - [{<<"id">>, _val} | _attrs], _Id, By) -> - decode_stanza_id_attrs(__TopXMLNS, _attrs, _val, By); -decode_stanza_id_attrs(__TopXMLNS, - [{<<"by">>, _val} | _attrs], Id, _By) -> - decode_stanza_id_attrs(__TopXMLNS, _attrs, Id, _val); -decode_stanza_id_attrs(__TopXMLNS, [_ | _attrs], Id, - By) -> - decode_stanza_id_attrs(__TopXMLNS, _attrs, Id, By); -decode_stanza_id_attrs(__TopXMLNS, [], Id, By) -> - {decode_stanza_id_attr_id(__TopXMLNS, Id), - decode_stanza_id_attr_by(__TopXMLNS, By)}. - -encode_stanza_id({stanza_id, By, Id}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"urn:xmpp:sid:0">>, - [], __TopXMLNS), - _els = [], - _attrs = encode_stanza_id_attr_by(By, - encode_stanza_id_attr_id(Id, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))), - {xmlel, <<"stanza-id">>, _attrs, _els}. - -decode_stanza_id_attr_id(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"id">>, <<"stanza-id">>, __TopXMLNS}}); -decode_stanza_id_attr_id(__TopXMLNS, _val) -> _val. - -encode_stanza_id_attr_id(_val, _acc) -> - [{<<"id">>, _val} | _acc]. - -decode_stanza_id_attr_by(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"by">>, <<"stanza-id">>, __TopXMLNS}}); -decode_stanza_id_attr_by(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"by">>, <<"stanza-id">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_stanza_id_attr_by(_val, _acc) -> - [{<<"by">>, enc_jid(_val)} | _acc]. - -decode_addresses(__TopXMLNS, __IgnoreEls, - {xmlel, <<"addresses">>, _attrs, _els}) -> - List = decode_addresses_els(__TopXMLNS, __IgnoreEls, - _els, []), - {addresses, List}. - -decode_addresses_els(__TopXMLNS, __IgnoreEls, [], - List) -> - lists:reverse(List); -decode_addresses_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"address">>, _attrs, _} = _el | _els], - List) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/address">> -> - decode_addresses_els(__TopXMLNS, __IgnoreEls, _els, - [decode_address(__TopXMLNS, __IgnoreEls, _el) - | List]); - <<"http://jabber.org/protocol/address">> -> - decode_addresses_els(__TopXMLNS, __IgnoreEls, _els, - [decode_address(<<"http://jabber.org/protocol/address">>, - __IgnoreEls, _el) - | List]); - _ -> - decode_addresses_els(__TopXMLNS, __IgnoreEls, _els, - List) - end; -decode_addresses_els(__TopXMLNS, __IgnoreEls, - [_ | _els], List) -> - decode_addresses_els(__TopXMLNS, __IgnoreEls, _els, - List). - -encode_addresses({addresses, List}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/address">>, - [], __TopXMLNS), - _els = lists:reverse('encode_addresses_$list'(List, - __NewTopXMLNS, [])), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"addresses">>, _attrs, _els}. - -'encode_addresses_$list'([], __TopXMLNS, _acc) -> _acc; -'encode_addresses_$list'([List | _els], __TopXMLNS, - _acc) -> - 'encode_addresses_$list'(_els, __TopXMLNS, - [encode_address(List, __TopXMLNS) | _acc]). - -decode_address(__TopXMLNS, __IgnoreEls, - {xmlel, <<"address">>, _attrs, _els}) -> - {Type, Jid, Desc, Node, Delivered} = - decode_address_attrs(__TopXMLNS, _attrs, undefined, - undefined, undefined, undefined, undefined), - {address, Type, Jid, Desc, Node, Delivered}. - -decode_address_attrs(__TopXMLNS, - [{<<"type">>, _val} | _attrs], _Type, Jid, Desc, Node, - Delivered) -> - decode_address_attrs(__TopXMLNS, _attrs, _val, Jid, - Desc, Node, Delivered); -decode_address_attrs(__TopXMLNS, - [{<<"jid">>, _val} | _attrs], Type, _Jid, Desc, Node, - Delivered) -> - decode_address_attrs(__TopXMLNS, _attrs, Type, _val, - Desc, Node, Delivered); -decode_address_attrs(__TopXMLNS, - [{<<"desc">>, _val} | _attrs], Type, Jid, _Desc, Node, - Delivered) -> - decode_address_attrs(__TopXMLNS, _attrs, Type, Jid, - _val, Node, Delivered); -decode_address_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], Type, Jid, Desc, _Node, - Delivered) -> - decode_address_attrs(__TopXMLNS, _attrs, Type, Jid, - Desc, _val, Delivered); -decode_address_attrs(__TopXMLNS, - [{<<"delivered">>, _val} | _attrs], Type, Jid, Desc, - Node, _Delivered) -> - decode_address_attrs(__TopXMLNS, _attrs, Type, Jid, - Desc, Node, _val); -decode_address_attrs(__TopXMLNS, [_ | _attrs], Type, - Jid, Desc, Node, Delivered) -> - decode_address_attrs(__TopXMLNS, _attrs, Type, Jid, - Desc, Node, Delivered); -decode_address_attrs(__TopXMLNS, [], Type, Jid, Desc, - Node, Delivered) -> - {decode_address_attr_type(__TopXMLNS, Type), - decode_address_attr_jid(__TopXMLNS, Jid), - decode_address_attr_desc(__TopXMLNS, Desc), - decode_address_attr_node(__TopXMLNS, Node), - decode_address_attr_delivered(__TopXMLNS, Delivered)}. - -encode_address({address, Type, Jid, Desc, Node, - Delivered}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/address">>, - [], __TopXMLNS), - _els = [], - _attrs = encode_address_attr_delivered(Delivered, - encode_address_attr_node(Node, - encode_address_attr_desc(Desc, - encode_address_attr_jid(Jid, - encode_address_attr_type(Type, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)))))), - {xmlel, <<"address">>, _attrs, _els}. - -decode_address_attr_type(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"type">>, <<"address">>, __TopXMLNS}}); -decode_address_attr_type(__TopXMLNS, _val) -> - case catch dec_enum(_val, - [bcc, cc, noreply, ofrom, replyroom, replyto, to]) - of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"type">>, <<"address">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_address_attr_type(_val, _acc) -> - [{<<"type">>, enc_enum(_val)} | _acc]. - -decode_address_attr_jid(__TopXMLNS, undefined) -> - undefined; -decode_address_attr_jid(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"jid">>, <<"address">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_address_attr_jid(undefined, _acc) -> _acc; -encode_address_attr_jid(_val, _acc) -> - [{<<"jid">>, enc_jid(_val)} | _acc]. - -decode_address_attr_desc(__TopXMLNS, undefined) -> <<>>; -decode_address_attr_desc(__TopXMLNS, _val) -> _val. - -encode_address_attr_desc(<<>>, _acc) -> _acc; -encode_address_attr_desc(_val, _acc) -> - [{<<"desc">>, _val} | _acc]. - -decode_address_attr_node(__TopXMLNS, undefined) -> <<>>; -decode_address_attr_node(__TopXMLNS, _val) -> _val. - -encode_address_attr_node(<<>>, _acc) -> _acc; -encode_address_attr_node(_val, _acc) -> - [{<<"node">>, _val} | _acc]. - -decode_address_attr_delivered(__TopXMLNS, undefined) -> - undefined; -decode_address_attr_delivered(__TopXMLNS, _val) -> - case catch dec_bool(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"delivered">>, <<"address">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_address_attr_delivered(undefined, _acc) -> _acc; -encode_address_attr_delivered(_val, _acc) -> - [{<<"delivered">>, enc_bool(_val)} | _acc]. - -decode_nick(__TopXMLNS, __IgnoreEls, - {xmlel, <<"nick">>, _attrs, _els}) -> - Name = decode_nick_els(__TopXMLNS, __IgnoreEls, _els, - <<>>), - {nick, Name}. - -decode_nick_els(__TopXMLNS, __IgnoreEls, [], Name) -> - decode_nick_cdata(__TopXMLNS, Name); -decode_nick_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Name) -> - decode_nick_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_nick_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Name) -> - decode_nick_els(__TopXMLNS, __IgnoreEls, _els, Name). - -encode_nick({nick, Name}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/nick">>, - [], __TopXMLNS), - _els = encode_nick_cdata(Name, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"nick">>, _attrs, _els}. - -decode_nick_cdata(__TopXMLNS, <<>>) -> - erlang:error({xmpp_codec, - {missing_cdata, <<>>, <<"nick">>, __TopXMLNS}}); -decode_nick_cdata(__TopXMLNS, _val) -> _val. - -encode_nick_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_expire(__TopXMLNS, __IgnoreEls, - {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 = choose_top_xmlns(<<"jabber:x:expire">>, - [], __TopXMLNS), - _els = [], - _attrs = encode_expire_attr_stored(Stored, - encode_expire_attr_seconds(Seconds, - 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]. - -decode_xevent(__TopXMLNS, __IgnoreEls, - {xmlel, <<"x">>, _attrs, _els}) -> - {Id, Displayed, Delivered, Offline, Composing} = - decode_xevent_els(__TopXMLNS, __IgnoreEls, _els, - undefined, false, false, false, false), - {xevent, Offline, Delivered, Displayed, Composing, Id}. - -decode_xevent_els(__TopXMLNS, __IgnoreEls, [], Id, - Displayed, Delivered, Offline, Composing) -> - {Id, Displayed, Delivered, Offline, Composing}; -decode_xevent_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"offline">>, _attrs, _} = _el | _els], Id, - Displayed, Delivered, Offline, Composing) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:x:event">> -> - decode_xevent_els(__TopXMLNS, __IgnoreEls, _els, Id, - Displayed, Delivered, - decode_xevent_offline(__TopXMLNS, __IgnoreEls, _el), - Composing); - <<"jabber:x:event">> -> - decode_xevent_els(__TopXMLNS, __IgnoreEls, _els, Id, - Displayed, Delivered, - decode_xevent_offline(<<"jabber:x:event">>, - __IgnoreEls, _el), - Composing); - _ -> - decode_xevent_els(__TopXMLNS, __IgnoreEls, _els, Id, - Displayed, Delivered, Offline, Composing) - end; -decode_xevent_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"delivered">>, _attrs, _} = _el | _els], Id, - Displayed, Delivered, Offline, Composing) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:x:event">> -> - decode_xevent_els(__TopXMLNS, __IgnoreEls, _els, Id, - Displayed, - decode_xevent_delivered(__TopXMLNS, __IgnoreEls, - _el), - Offline, Composing); - <<"jabber:x:event">> -> - decode_xevent_els(__TopXMLNS, __IgnoreEls, _els, Id, - Displayed, - decode_xevent_delivered(<<"jabber:x:event">>, - __IgnoreEls, _el), - Offline, Composing); - _ -> - decode_xevent_els(__TopXMLNS, __IgnoreEls, _els, Id, - Displayed, Delivered, Offline, Composing) - end; -decode_xevent_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"displayed">>, _attrs, _} = _el | _els], Id, - Displayed, Delivered, Offline, Composing) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:x:event">> -> - decode_xevent_els(__TopXMLNS, __IgnoreEls, _els, Id, - decode_xevent_displayed(__TopXMLNS, __IgnoreEls, - _el), - Delivered, Offline, Composing); - <<"jabber:x:event">> -> - decode_xevent_els(__TopXMLNS, __IgnoreEls, _els, Id, - decode_xevent_displayed(<<"jabber:x:event">>, - __IgnoreEls, _el), - Delivered, Offline, Composing); - _ -> - decode_xevent_els(__TopXMLNS, __IgnoreEls, _els, Id, - Displayed, Delivered, Offline, Composing) - end; -decode_xevent_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"composing">>, _attrs, _} = _el | _els], Id, - Displayed, Delivered, Offline, Composing) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:x:event">> -> - decode_xevent_els(__TopXMLNS, __IgnoreEls, _els, Id, - Displayed, Delivered, Offline, - decode_xevent_composing(__TopXMLNS, __IgnoreEls, - _el)); - <<"jabber:x:event">> -> - decode_xevent_els(__TopXMLNS, __IgnoreEls, _els, Id, - Displayed, Delivered, Offline, - decode_xevent_composing(<<"jabber:x:event">>, - __IgnoreEls, _el)); - _ -> - decode_xevent_els(__TopXMLNS, __IgnoreEls, _els, Id, - Displayed, Delivered, Offline, Composing) - end; -decode_xevent_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"id">>, _attrs, _} = _el | _els], Id, - Displayed, Delivered, Offline, Composing) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:x:event">> -> - decode_xevent_els(__TopXMLNS, __IgnoreEls, _els, - decode_xevent_id(__TopXMLNS, __IgnoreEls, _el), - Displayed, Delivered, Offline, Composing); - <<"jabber:x:event">> -> - decode_xevent_els(__TopXMLNS, __IgnoreEls, _els, - decode_xevent_id(<<"jabber:x:event">>, __IgnoreEls, - _el), - Displayed, Delivered, Offline, Composing); - _ -> - decode_xevent_els(__TopXMLNS, __IgnoreEls, _els, Id, - Displayed, Delivered, Offline, Composing) - end; -decode_xevent_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Id, Displayed, Delivered, Offline, Composing) -> - decode_xevent_els(__TopXMLNS, __IgnoreEls, _els, Id, - Displayed, Delivered, Offline, Composing). - -encode_xevent({xevent, Offline, Delivered, Displayed, - Composing, Id}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:x:event">>, - [], __TopXMLNS), - _els = lists:reverse('encode_xevent_$id'(Id, - __NewTopXMLNS, - 'encode_xevent_$displayed'(Displayed, - __NewTopXMLNS, - 'encode_xevent_$delivered'(Delivered, - __NewTopXMLNS, - 'encode_xevent_$offline'(Offline, - __NewTopXMLNS, - 'encode_xevent_$composing'(Composing, - __NewTopXMLNS, - [])))))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"x">>, _attrs, _els}. - -'encode_xevent_$id'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_xevent_$id'(Id, __TopXMLNS, _acc) -> - [encode_xevent_id(Id, __TopXMLNS) | _acc]. - -'encode_xevent_$displayed'(false, __TopXMLNS, _acc) -> - _acc; -'encode_xevent_$displayed'(Displayed, __TopXMLNS, - _acc) -> - [encode_xevent_displayed(Displayed, __TopXMLNS) | _acc]. - -'encode_xevent_$delivered'(false, __TopXMLNS, _acc) -> - _acc; -'encode_xevent_$delivered'(Delivered, __TopXMLNS, - _acc) -> - [encode_xevent_delivered(Delivered, __TopXMLNS) | _acc]. - -'encode_xevent_$offline'(false, __TopXMLNS, _acc) -> - _acc; -'encode_xevent_$offline'(Offline, __TopXMLNS, _acc) -> - [encode_xevent_offline(Offline, __TopXMLNS) | _acc]. - -'encode_xevent_$composing'(false, __TopXMLNS, _acc) -> - _acc; -'encode_xevent_$composing'(Composing, __TopXMLNS, - _acc) -> - [encode_xevent_composing(Composing, __TopXMLNS) | _acc]. - -decode_xevent_id(__TopXMLNS, __IgnoreEls, - {xmlel, <<"id">>, _attrs, _els}) -> - Cdata = decode_xevent_id_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_xevent_id_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_xevent_id_cdata(__TopXMLNS, Cdata); -decode_xevent_id_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_xevent_id_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_xevent_id_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_xevent_id_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_xevent_id(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:x:event">>, - [], __TopXMLNS), - _els = encode_xevent_id_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"id">>, _attrs, _els}. - -decode_xevent_id_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_xevent_id_cdata(__TopXMLNS, _val) -> _val. - -encode_xevent_id_cdata(<<>>, _acc) -> _acc; -encode_xevent_id_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_xevent_composing(__TopXMLNS, __IgnoreEls, - {xmlel, <<"composing">>, _attrs, _els}) -> - true. - -encode_xevent_composing(true, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:x:event">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"composing">>, _attrs, _els}. - -decode_xevent_displayed(__TopXMLNS, __IgnoreEls, - {xmlel, <<"displayed">>, _attrs, _els}) -> - true. - -encode_xevent_displayed(true, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:x:event">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"displayed">>, _attrs, _els}. - -decode_xevent_delivered(__TopXMLNS, __IgnoreEls, - {xmlel, <<"delivered">>, _attrs, _els}) -> - true. - -encode_xevent_delivered(true, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:x:event">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"delivered">>, _attrs, _els}. - -decode_xevent_offline(__TopXMLNS, __IgnoreEls, - {xmlel, <<"offline">>, _attrs, _els}) -> - true. - -encode_xevent_offline(true, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:x:event">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"offline">>, _attrs, _els}. - -decode_search(__TopXMLNS, __IgnoreEls, - {xmlel, <<"query">>, _attrs, _els}) -> - {Xdata, Items, Instructions, Last, First, Nick, Email} = - decode_search_els(__TopXMLNS, __IgnoreEls, _els, - undefined, [], undefined, undefined, undefined, - undefined, undefined), - {search, Instructions, First, Last, Nick, Email, Items, - Xdata}. - -decode_search_els(__TopXMLNS, __IgnoreEls, [], Xdata, - Items, Instructions, Last, First, Nick, Email) -> - {Xdata, lists:reverse(Items), Instructions, Last, First, - Nick, Email}; -decode_search_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"instructions">>, _attrs, _} = _el | _els], - Xdata, Items, Instructions, Last, First, Nick, Email) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:search">> -> - decode_search_els(__TopXMLNS, __IgnoreEls, _els, Xdata, - Items, - decode_search_instructions(__TopXMLNS, __IgnoreEls, - _el), - Last, First, Nick, Email); - <<"jabber:iq:search">> -> - decode_search_els(__TopXMLNS, __IgnoreEls, _els, Xdata, - Items, - decode_search_instructions(<<"jabber:iq:search">>, - __IgnoreEls, _el), - Last, First, Nick, Email); - _ -> - decode_search_els(__TopXMLNS, __IgnoreEls, _els, Xdata, - Items, Instructions, Last, First, Nick, Email) - end; -decode_search_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"first">>, _attrs, _} = _el | _els], Xdata, - Items, Instructions, Last, First, Nick, Email) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:search">> -> - decode_search_els(__TopXMLNS, __IgnoreEls, _els, Xdata, - Items, Instructions, Last, - decode_search_first(__TopXMLNS, __IgnoreEls, _el), - Nick, Email); - <<"jabber:iq:search">> -> - decode_search_els(__TopXMLNS, __IgnoreEls, _els, Xdata, - Items, Instructions, Last, - decode_search_first(<<"jabber:iq:search">>, - __IgnoreEls, _el), - Nick, Email); - _ -> - decode_search_els(__TopXMLNS, __IgnoreEls, _els, Xdata, - Items, Instructions, Last, First, Nick, Email) - end; -decode_search_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"last">>, _attrs, _} = _el | _els], Xdata, - Items, Instructions, Last, First, Nick, Email) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:search">> -> - decode_search_els(__TopXMLNS, __IgnoreEls, _els, Xdata, - Items, Instructions, - decode_search_last(__TopXMLNS, __IgnoreEls, _el), - First, Nick, Email); - <<"jabber:iq:search">> -> - decode_search_els(__TopXMLNS, __IgnoreEls, _els, Xdata, - Items, Instructions, - decode_search_last(<<"jabber:iq:search">>, - __IgnoreEls, _el), - First, Nick, Email); - _ -> - decode_search_els(__TopXMLNS, __IgnoreEls, _els, Xdata, - Items, Instructions, Last, First, Nick, Email) - end; -decode_search_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"nick">>, _attrs, _} = _el | _els], Xdata, - Items, Instructions, Last, First, Nick, Email) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:search">> -> - decode_search_els(__TopXMLNS, __IgnoreEls, _els, Xdata, - Items, Instructions, Last, First, - decode_search_nick(__TopXMLNS, __IgnoreEls, _el), - Email); - <<"jabber:iq:search">> -> - decode_search_els(__TopXMLNS, __IgnoreEls, _els, Xdata, - Items, Instructions, Last, First, - decode_search_nick(<<"jabber:iq:search">>, - __IgnoreEls, _el), - Email); - _ -> - decode_search_els(__TopXMLNS, __IgnoreEls, _els, Xdata, - Items, Instructions, Last, First, Nick, Email) - end; -decode_search_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"email">>, _attrs, _} = _el | _els], Xdata, - Items, Instructions, Last, First, Nick, Email) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:search">> -> - decode_search_els(__TopXMLNS, __IgnoreEls, _els, Xdata, - Items, Instructions, Last, First, Nick, - decode_search_email(__TopXMLNS, __IgnoreEls, _el)); - <<"jabber:iq:search">> -> - decode_search_els(__TopXMLNS, __IgnoreEls, _els, Xdata, - Items, Instructions, Last, First, Nick, - decode_search_email(<<"jabber:iq:search">>, - __IgnoreEls, _el)); - _ -> - decode_search_els(__TopXMLNS, __IgnoreEls, _els, Xdata, - Items, Instructions, Last, First, Nick, Email) - end; -decode_search_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"item">>, _attrs, _} = _el | _els], Xdata, - Items, Instructions, Last, First, Nick, Email) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:search">> -> - decode_search_els(__TopXMLNS, __IgnoreEls, _els, Xdata, - [decode_search_item(__TopXMLNS, __IgnoreEls, _el) - | Items], - Instructions, Last, First, Nick, Email); - <<"jabber:iq:search">> -> - decode_search_els(__TopXMLNS, __IgnoreEls, _els, Xdata, - [decode_search_item(<<"jabber:iq:search">>, - __IgnoreEls, _el) - | Items], - Instructions, Last, First, Nick, Email); - _ -> - decode_search_els(__TopXMLNS, __IgnoreEls, _els, Xdata, - Items, Instructions, Last, First, Nick, Email) - end; -decode_search_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"x">>, _attrs, _} = _el | _els], Xdata, - Items, Instructions, Last, First, Nick, Email) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"jabber:x:data">> -> - decode_search_els(__TopXMLNS, __IgnoreEls, _els, - decode_xdata(<<"jabber:x:data">>, __IgnoreEls, _el), - Items, Instructions, Last, First, Nick, Email); - _ -> - decode_search_els(__TopXMLNS, __IgnoreEls, _els, Xdata, - Items, Instructions, Last, First, Nick, Email) - end; -decode_search_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Xdata, Items, Instructions, Last, First, Nick, Email) -> - decode_search_els(__TopXMLNS, __IgnoreEls, _els, Xdata, - Items, Instructions, Last, First, Nick, Email). - -encode_search({search, Instructions, First, Last, Nick, - Email, Items, Xdata}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:iq:search">>, - [], __TopXMLNS), - _els = lists:reverse('encode_search_$xdata'(Xdata, - __NewTopXMLNS, - 'encode_search_$items'(Items, - __NewTopXMLNS, - 'encode_search_$instructions'(Instructions, - __NewTopXMLNS, - 'encode_search_$last'(Last, - __NewTopXMLNS, - 'encode_search_$first'(First, - __NewTopXMLNS, - 'encode_search_$nick'(Nick, - __NewTopXMLNS, - 'encode_search_$email'(Email, - __NewTopXMLNS, - [])))))))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"query">>, _attrs, _els}. - -'encode_search_$xdata'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_search_$xdata'(Xdata, __TopXMLNS, _acc) -> - [encode_xdata(Xdata, __TopXMLNS) | _acc]. - -'encode_search_$items'([], __TopXMLNS, _acc) -> _acc; -'encode_search_$items'([Items | _els], __TopXMLNS, - _acc) -> - 'encode_search_$items'(_els, __TopXMLNS, - [encode_search_item(Items, __TopXMLNS) | _acc]). - -'encode_search_$instructions'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_search_$instructions'(Instructions, __TopXMLNS, - _acc) -> - [encode_search_instructions(Instructions, __TopXMLNS) - | _acc]. - -'encode_search_$last'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_search_$last'(Last, __TopXMLNS, _acc) -> - [encode_search_last(Last, __TopXMLNS) | _acc]. - -'encode_search_$first'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_search_$first'(First, __TopXMLNS, _acc) -> - [encode_search_first(First, __TopXMLNS) | _acc]. - -'encode_search_$nick'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_search_$nick'(Nick, __TopXMLNS, _acc) -> - [encode_search_nick(Nick, __TopXMLNS) | _acc]. - -'encode_search_$email'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_search_$email'(Email, __TopXMLNS, _acc) -> - [encode_search_email(Email, __TopXMLNS) | _acc]. - -decode_search_item(__TopXMLNS, __IgnoreEls, - {xmlel, <<"item">>, _attrs, _els}) -> - {Last, First, Nick, Email} = - decode_search_item_els(__TopXMLNS, __IgnoreEls, _els, - undefined, undefined, undefined, undefined), - Jid = decode_search_item_attrs(__TopXMLNS, _attrs, - undefined), - {search_item, Jid, First, Last, Nick, Email}. - -decode_search_item_els(__TopXMLNS, __IgnoreEls, [], - Last, First, Nick, Email) -> - {Last, First, Nick, Email}; -decode_search_item_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"first">>, _attrs, _} = _el | _els], Last, - First, Nick, Email) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:search">> -> - decode_search_item_els(__TopXMLNS, __IgnoreEls, _els, - Last, - decode_search_first(__TopXMLNS, __IgnoreEls, - _el), - Nick, Email); - <<"jabber:iq:search">> -> - decode_search_item_els(__TopXMLNS, __IgnoreEls, _els, - Last, - decode_search_first(<<"jabber:iq:search">>, - __IgnoreEls, _el), - Nick, Email); - _ -> - decode_search_item_els(__TopXMLNS, __IgnoreEls, _els, - Last, First, Nick, Email) - end; -decode_search_item_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"last">>, _attrs, _} = _el | _els], Last, - First, Nick, Email) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:search">> -> - decode_search_item_els(__TopXMLNS, __IgnoreEls, _els, - decode_search_last(__TopXMLNS, __IgnoreEls, - _el), - First, Nick, Email); - <<"jabber:iq:search">> -> - decode_search_item_els(__TopXMLNS, __IgnoreEls, _els, - decode_search_last(<<"jabber:iq:search">>, - __IgnoreEls, _el), - First, Nick, Email); - _ -> - decode_search_item_els(__TopXMLNS, __IgnoreEls, _els, - Last, First, Nick, Email) - end; -decode_search_item_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"nick">>, _attrs, _} = _el | _els], Last, - First, Nick, Email) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:search">> -> - decode_search_item_els(__TopXMLNS, __IgnoreEls, _els, - Last, First, - decode_search_nick(__TopXMLNS, __IgnoreEls, - _el), - Email); - <<"jabber:iq:search">> -> - decode_search_item_els(__TopXMLNS, __IgnoreEls, _els, - Last, First, - decode_search_nick(<<"jabber:iq:search">>, - __IgnoreEls, _el), - Email); - _ -> - decode_search_item_els(__TopXMLNS, __IgnoreEls, _els, - Last, First, Nick, Email) - end; -decode_search_item_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"email">>, _attrs, _} = _el | _els], Last, - First, Nick, Email) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:search">> -> - decode_search_item_els(__TopXMLNS, __IgnoreEls, _els, - Last, First, Nick, - decode_search_email(__TopXMLNS, __IgnoreEls, - _el)); - <<"jabber:iq:search">> -> - decode_search_item_els(__TopXMLNS, __IgnoreEls, _els, - Last, First, Nick, - decode_search_email(<<"jabber:iq:search">>, - __IgnoreEls, _el)); - _ -> - decode_search_item_els(__TopXMLNS, __IgnoreEls, _els, - Last, First, Nick, Email) - end; -decode_search_item_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Last, First, Nick, Email) -> - decode_search_item_els(__TopXMLNS, __IgnoreEls, _els, - Last, First, Nick, Email). - -decode_search_item_attrs(__TopXMLNS, - [{<<"jid">>, _val} | _attrs], _Jid) -> - decode_search_item_attrs(__TopXMLNS, _attrs, _val); -decode_search_item_attrs(__TopXMLNS, [_ | _attrs], - Jid) -> - decode_search_item_attrs(__TopXMLNS, _attrs, Jid); -decode_search_item_attrs(__TopXMLNS, [], Jid) -> - decode_search_item_attr_jid(__TopXMLNS, Jid). - -encode_search_item({search_item, Jid, First, Last, Nick, - Email}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:iq:search">>, - [], __TopXMLNS), - _els = lists:reverse('encode_search_item_$last'(Last, - __NewTopXMLNS, - 'encode_search_item_$first'(First, - __NewTopXMLNS, - 'encode_search_item_$nick'(Nick, - __NewTopXMLNS, - 'encode_search_item_$email'(Email, - __NewTopXMLNS, - []))))), - _attrs = encode_search_item_attr_jid(Jid, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"item">>, _attrs, _els}. - -'encode_search_item_$last'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_search_item_$last'(Last, __TopXMLNS, _acc) -> - [encode_search_last(Last, __TopXMLNS) | _acc]. - -'encode_search_item_$first'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_search_item_$first'(First, __TopXMLNS, _acc) -> - [encode_search_first(First, __TopXMLNS) | _acc]. - -'encode_search_item_$nick'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_search_item_$nick'(Nick, __TopXMLNS, _acc) -> - [encode_search_nick(Nick, __TopXMLNS) | _acc]. - -'encode_search_item_$email'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_search_item_$email'(Email, __TopXMLNS, _acc) -> - [encode_search_email(Email, __TopXMLNS) | _acc]. - -decode_search_item_attr_jid(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"jid">>, <<"item">>, __TopXMLNS}}); -decode_search_item_attr_jid(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"jid">>, <<"item">>, __TopXMLNS}}); - _res -> _res - end. - -encode_search_item_attr_jid(_val, _acc) -> - [{<<"jid">>, enc_jid(_val)} | _acc]. - -decode_search_email(__TopXMLNS, __IgnoreEls, - {xmlel, <<"email">>, _attrs, _els}) -> - Cdata = decode_search_email_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_search_email_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_search_email_cdata(__TopXMLNS, Cdata); -decode_search_email_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_search_email_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_search_email_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_search_email_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_search_email(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:iq:search">>, - [], __TopXMLNS), - _els = encode_search_email_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"email">>, _attrs, _els}. - -decode_search_email_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_search_email_cdata(__TopXMLNS, _val) -> _val. - -encode_search_email_cdata(<<>>, _acc) -> _acc; -encode_search_email_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_search_nick(__TopXMLNS, __IgnoreEls, - {xmlel, <<"nick">>, _attrs, _els}) -> - Cdata = decode_search_nick_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_search_nick_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_search_nick_cdata(__TopXMLNS, Cdata); -decode_search_nick_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_search_nick_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_search_nick_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_search_nick_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_search_nick(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:iq:search">>, - [], __TopXMLNS), - _els = encode_search_nick_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"nick">>, _attrs, _els}. - -decode_search_nick_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_search_nick_cdata(__TopXMLNS, _val) -> _val. - -encode_search_nick_cdata(<<>>, _acc) -> _acc; -encode_search_nick_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_search_last(__TopXMLNS, __IgnoreEls, - {xmlel, <<"last">>, _attrs, _els}) -> - Cdata = decode_search_last_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_search_last_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_search_last_cdata(__TopXMLNS, Cdata); -decode_search_last_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_search_last_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_search_last_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_search_last_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_search_last(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:iq:search">>, - [], __TopXMLNS), - _els = encode_search_last_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"last">>, _attrs, _els}. - -decode_search_last_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_search_last_cdata(__TopXMLNS, _val) -> _val. - -encode_search_last_cdata(<<>>, _acc) -> _acc; -encode_search_last_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_search_first(__TopXMLNS, __IgnoreEls, - {xmlel, <<"first">>, _attrs, _els}) -> - Cdata = decode_search_first_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_search_first_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_search_first_cdata(__TopXMLNS, Cdata); -decode_search_first_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_search_first_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_search_first_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_search_first_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_search_first(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:iq:search">>, - [], __TopXMLNS), - _els = encode_search_first_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"first">>, _attrs, _els}. - -decode_search_first_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_search_first_cdata(__TopXMLNS, _val) -> _val. - -encode_search_first_cdata(<<>>, _acc) -> _acc; -encode_search_first_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_search_instructions(__TopXMLNS, __IgnoreEls, - {xmlel, <<"instructions">>, _attrs, _els}) -> - Cdata = decode_search_instructions_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_search_instructions_els(__TopXMLNS, __IgnoreEls, - [], Cdata) -> - decode_search_instructions_cdata(__TopXMLNS, Cdata); -decode_search_instructions_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_search_instructions_els(__TopXMLNS, __IgnoreEls, - _els, <>); -decode_search_instructions_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_search_instructions_els(__TopXMLNS, __IgnoreEls, - _els, Cdata). - -encode_search_instructions(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:iq:search">>, - [], __TopXMLNS), - _els = encode_search_instructions_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"instructions">>, _attrs, _els}. - -decode_search_instructions_cdata(__TopXMLNS, <<>>) -> - <<>>; -decode_search_instructions_cdata(__TopXMLNS, _val) -> - _val. - -encode_search_instructions_cdata(<<>>, _acc) -> _acc; -encode_search_instructions_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_hint_no_permanent_storage(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"no-permanent-storage">>, _attrs, - _els}) -> - {hint, 'no-permanent-storage'}. - -encode_hint_no_permanent_storage({hint, - 'no-permanent-storage'}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"urn:xmpp:hints">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"no-permanent-storage">>, _attrs, _els}. - -decode_hint_no_permanent_store(__TopXMLNS, __IgnoreEls, - {xmlel, <<"no-permanent-store">>, _attrs, - _els}) -> - {hint, 'no-permanent-store'}. - -encode_hint_no_permanent_store({hint, - 'no-permanent-store'}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"urn:xmpp:hints">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"no-permanent-store">>, _attrs, _els}. - -decode_hint_store(__TopXMLNS, __IgnoreEls, - {xmlel, <<"store">>, _attrs, _els}) -> - {hint, store}. - -encode_hint_store({hint, store}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"urn:xmpp:hints">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"store">>, _attrs, _els}. - -decode_hint_no_storage(__TopXMLNS, __IgnoreEls, - {xmlel, <<"no-storage">>, _attrs, _els}) -> - {hint, 'no-storage'}. - -encode_hint_no_storage({hint, 'no-storage'}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"urn:xmpp:hints">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"no-storage">>, _attrs, _els}. - -decode_hint_no_store(__TopXMLNS, __IgnoreEls, - {xmlel, <<"no-store">>, _attrs, _els}) -> - {hint, 'no-store'}. - -encode_hint_no_store({hint, 'no-store'}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"urn:xmpp:hints">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"no-store">>, _attrs, _els}. - -decode_hint_no_copy(__TopXMLNS, __IgnoreEls, - {xmlel, <<"no-copy">>, _attrs, _els}) -> - {hint, 'no-copy'}. - -encode_hint_no_copy({hint, 'no-copy'}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"urn:xmpp:hints">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"no-copy">>, _attrs, _els}. - -decode_mix_participant(__TopXMLNS, __IgnoreEls, - {xmlel, <<"participant">>, _attrs, _els}) -> - {Jid, Nick} = decode_mix_participant_attrs(__TopXMLNS, - _attrs, undefined, undefined), - {mix_participant, Jid, Nick}. - -decode_mix_participant_attrs(__TopXMLNS, - [{<<"jid">>, _val} | _attrs], _Jid, Nick) -> - decode_mix_participant_attrs(__TopXMLNS, _attrs, _val, - Nick); -decode_mix_participant_attrs(__TopXMLNS, - [{<<"nick">>, _val} | _attrs], Jid, _Nick) -> - decode_mix_participant_attrs(__TopXMLNS, _attrs, Jid, - _val); -decode_mix_participant_attrs(__TopXMLNS, [_ | _attrs], - Jid, Nick) -> - decode_mix_participant_attrs(__TopXMLNS, _attrs, Jid, - Nick); -decode_mix_participant_attrs(__TopXMLNS, [], Jid, - Nick) -> - {decode_mix_participant_attr_jid(__TopXMLNS, Jid), - decode_mix_participant_attr_nick(__TopXMLNS, Nick)}. - -encode_mix_participant({mix_participant, Jid, Nick}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"urn:xmpp:mix:0">>, - [], __TopXMLNS), - _els = [], - _attrs = encode_mix_participant_attr_nick(Nick, - encode_mix_participant_attr_jid(Jid, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))), - {xmlel, <<"participant">>, _attrs, _els}. - -decode_mix_participant_attr_jid(__TopXMLNS, - undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"jid">>, <<"participant">>, - __TopXMLNS}}); -decode_mix_participant_attr_jid(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"jid">>, <<"participant">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_mix_participant_attr_jid(_val, _acc) -> - [{<<"jid">>, enc_jid(_val)} | _acc]. - -decode_mix_participant_attr_nick(__TopXMLNS, - undefined) -> - <<>>; -decode_mix_participant_attr_nick(__TopXMLNS, _val) -> - _val. - -encode_mix_participant_attr_nick(<<>>, _acc) -> _acc; -encode_mix_participant_attr_nick(_val, _acc) -> - [{<<"nick">>, _val} | _acc]. - -decode_mix_leave(__TopXMLNS, __IgnoreEls, - {xmlel, <<"leave">>, _attrs, _els}) -> - {mix_leave}. - -encode_mix_leave({mix_leave}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"urn:xmpp:mix:0">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"leave">>, _attrs, _els}. - -decode_mix_join(__TopXMLNS, __IgnoreEls, - {xmlel, <<"join">>, _attrs, _els}) -> - Subscribe = decode_mix_join_els(__TopXMLNS, __IgnoreEls, - _els, []), - Jid = decode_mix_join_attrs(__TopXMLNS, _attrs, - undefined), - {mix_join, Jid, Subscribe}. - -decode_mix_join_els(__TopXMLNS, __IgnoreEls, [], - Subscribe) -> - lists:reverse(Subscribe); -decode_mix_join_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"subscribe">>, _attrs, _} = _el | _els], - Subscribe) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"urn:xmpp:mix:0">> -> - decode_mix_join_els(__TopXMLNS, __IgnoreEls, _els, - [decode_mix_subscribe(__TopXMLNS, __IgnoreEls, - _el) - | Subscribe]); - <<"urn:xmpp:mix:0">> -> - decode_mix_join_els(__TopXMLNS, __IgnoreEls, _els, - [decode_mix_subscribe(<<"urn:xmpp:mix:0">>, - __IgnoreEls, _el) - | Subscribe]); - _ -> - decode_mix_join_els(__TopXMLNS, __IgnoreEls, _els, - Subscribe) - end; -decode_mix_join_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Subscribe) -> - decode_mix_join_els(__TopXMLNS, __IgnoreEls, _els, - Subscribe). - -decode_mix_join_attrs(__TopXMLNS, - [{<<"jid">>, _val} | _attrs], _Jid) -> - decode_mix_join_attrs(__TopXMLNS, _attrs, _val); -decode_mix_join_attrs(__TopXMLNS, [_ | _attrs], Jid) -> - decode_mix_join_attrs(__TopXMLNS, _attrs, Jid); -decode_mix_join_attrs(__TopXMLNS, [], Jid) -> - decode_mix_join_attr_jid(__TopXMLNS, Jid). - -encode_mix_join({mix_join, Jid, Subscribe}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"urn:xmpp:mix:0">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_mix_join_$subscribe'(Subscribe, - __NewTopXMLNS, [])), - _attrs = encode_mix_join_attr_jid(Jid, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"join">>, _attrs, _els}. - -'encode_mix_join_$subscribe'([], __TopXMLNS, _acc) -> - _acc; -'encode_mix_join_$subscribe'([Subscribe | _els], - __TopXMLNS, _acc) -> - 'encode_mix_join_$subscribe'(_els, __TopXMLNS, - [encode_mix_subscribe(Subscribe, __TopXMLNS) - | _acc]). - -decode_mix_join_attr_jid(__TopXMLNS, undefined) -> - undefined; -decode_mix_join_attr_jid(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"jid">>, <<"join">>, __TopXMLNS}}); - _res -> _res - end. - -encode_mix_join_attr_jid(undefined, _acc) -> _acc; -encode_mix_join_attr_jid(_val, _acc) -> - [{<<"jid">>, enc_jid(_val)} | _acc]. - -decode_mix_subscribe(__TopXMLNS, __IgnoreEls, - {xmlel, <<"subscribe">>, _attrs, _els}) -> - Node = decode_mix_subscribe_attrs(__TopXMLNS, _attrs, - undefined), - Node. - -decode_mix_subscribe_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], _Node) -> - decode_mix_subscribe_attrs(__TopXMLNS, _attrs, _val); -decode_mix_subscribe_attrs(__TopXMLNS, [_ | _attrs], - Node) -> - decode_mix_subscribe_attrs(__TopXMLNS, _attrs, Node); -decode_mix_subscribe_attrs(__TopXMLNS, [], Node) -> - decode_mix_subscribe_attr_node(__TopXMLNS, Node). - -encode_mix_subscribe(Node, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"urn:xmpp:mix:0">>, - [], __TopXMLNS), - _els = [], - _attrs = encode_mix_subscribe_attr_node(Node, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"subscribe">>, _attrs, _els}. - -decode_mix_subscribe_attr_node(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"node">>, <<"subscribe">>, - __TopXMLNS}}); -decode_mix_subscribe_attr_node(__TopXMLNS, _val) -> - _val. - -encode_mix_subscribe_attr_node(_val, _acc) -> - [{<<"node">>, _val} | _acc]. - -decode_offline(__TopXMLNS, __IgnoreEls, - {xmlel, <<"offline">>, _attrs, _els}) -> - {Items, Purge, Fetch} = decode_offline_els(__TopXMLNS, - __IgnoreEls, _els, [], false, - false), - {offline, Items, Purge, Fetch}. - -decode_offline_els(__TopXMLNS, __IgnoreEls, [], Items, - Purge, Fetch) -> - {lists:reverse(Items), Purge, Fetch}; -decode_offline_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"purge">>, _attrs, _} = _el | _els], Items, - Purge, Fetch) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/offline">> -> - decode_offline_els(__TopXMLNS, __IgnoreEls, _els, Items, - decode_offline_purge(__TopXMLNS, __IgnoreEls, _el), - Fetch); - <<"http://jabber.org/protocol/offline">> -> - decode_offline_els(__TopXMLNS, __IgnoreEls, _els, Items, - decode_offline_purge(<<"http://jabber.org/protocol/offline">>, - __IgnoreEls, _el), - Fetch); - _ -> - decode_offline_els(__TopXMLNS, __IgnoreEls, _els, Items, - Purge, Fetch) - end; -decode_offline_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"fetch">>, _attrs, _} = _el | _els], Items, - Purge, Fetch) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/offline">> -> - decode_offline_els(__TopXMLNS, __IgnoreEls, _els, Items, - Purge, - decode_offline_fetch(__TopXMLNS, __IgnoreEls, - _el)); - <<"http://jabber.org/protocol/offline">> -> - decode_offline_els(__TopXMLNS, __IgnoreEls, _els, Items, - Purge, - decode_offline_fetch(<<"http://jabber.org/protocol/offline">>, - __IgnoreEls, _el)); - _ -> - decode_offline_els(__TopXMLNS, __IgnoreEls, _els, Items, - Purge, Fetch) - end; -decode_offline_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"item">>, _attrs, _} = _el | _els], Items, - Purge, Fetch) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/offline">> -> - decode_offline_els(__TopXMLNS, __IgnoreEls, _els, - [decode_offline_item(__TopXMLNS, __IgnoreEls, _el) - | Items], - Purge, Fetch); - <<"http://jabber.org/protocol/offline">> -> - decode_offline_els(__TopXMLNS, __IgnoreEls, _els, - [decode_offline_item(<<"http://jabber.org/protocol/offline">>, - __IgnoreEls, _el) - | Items], - Purge, Fetch); - _ -> - decode_offline_els(__TopXMLNS, __IgnoreEls, _els, Items, - Purge, Fetch) - end; -decode_offline_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Items, Purge, Fetch) -> - decode_offline_els(__TopXMLNS, __IgnoreEls, _els, Items, - Purge, Fetch). - -encode_offline({offline, Items, Purge, Fetch}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/offline">>, - [], __TopXMLNS), - _els = lists:reverse('encode_offline_$items'(Items, - __NewTopXMLNS, - 'encode_offline_$purge'(Purge, - __NewTopXMLNS, - 'encode_offline_$fetch'(Fetch, - __NewTopXMLNS, - [])))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"offline">>, _attrs, _els}. - -'encode_offline_$items'([], __TopXMLNS, _acc) -> _acc; -'encode_offline_$items'([Items | _els], __TopXMLNS, - _acc) -> - 'encode_offline_$items'(_els, __TopXMLNS, - [encode_offline_item(Items, __TopXMLNS) | _acc]). - -'encode_offline_$purge'(false, __TopXMLNS, _acc) -> - _acc; -'encode_offline_$purge'(Purge, __TopXMLNS, _acc) -> - [encode_offline_purge(Purge, __TopXMLNS) | _acc]. - -'encode_offline_$fetch'(false, __TopXMLNS, _acc) -> - _acc; -'encode_offline_$fetch'(Fetch, __TopXMLNS, _acc) -> - [encode_offline_fetch(Fetch, __TopXMLNS) | _acc]. - -decode_offline_item(__TopXMLNS, __IgnoreEls, - {xmlel, <<"item">>, _attrs, _els}) -> - {Node, Action} = decode_offline_item_attrs(__TopXMLNS, - _attrs, undefined, undefined), - {offline_item, Node, Action}. - -decode_offline_item_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], _Node, Action) -> - decode_offline_item_attrs(__TopXMLNS, _attrs, _val, - Action); -decode_offline_item_attrs(__TopXMLNS, - [{<<"action">>, _val} | _attrs], Node, _Action) -> - decode_offline_item_attrs(__TopXMLNS, _attrs, Node, - _val); -decode_offline_item_attrs(__TopXMLNS, [_ | _attrs], - Node, Action) -> - decode_offline_item_attrs(__TopXMLNS, _attrs, Node, - Action); -decode_offline_item_attrs(__TopXMLNS, [], Node, - Action) -> - {decode_offline_item_attr_node(__TopXMLNS, Node), - decode_offline_item_attr_action(__TopXMLNS, Action)}. - -encode_offline_item({offline_item, Node, Action}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/offline">>, - [], __TopXMLNS), - _els = [], - _attrs = encode_offline_item_attr_action(Action, - encode_offline_item_attr_node(Node, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))), - {xmlel, <<"item">>, _attrs, _els}. - -decode_offline_item_attr_node(__TopXMLNS, undefined) -> - <<>>; -decode_offline_item_attr_node(__TopXMLNS, _val) -> _val. - -encode_offline_item_attr_node(<<>>, _acc) -> _acc; -encode_offline_item_attr_node(_val, _acc) -> - [{<<"node">>, _val} | _acc]. - -decode_offline_item_attr_action(__TopXMLNS, - undefined) -> - undefined; -decode_offline_item_attr_action(__TopXMLNS, _val) -> - case catch dec_enum(_val, [view, remove]) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"action">>, <<"item">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_offline_item_attr_action(undefined, _acc) -> - _acc; -encode_offline_item_attr_action(_val, _acc) -> - [{<<"action">>, enc_enum(_val)} | _acc]. - -decode_offline_fetch(__TopXMLNS, __IgnoreEls, - {xmlel, <<"fetch">>, _attrs, _els}) -> - true. - -encode_offline_fetch(true, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/offline">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"fetch">>, _attrs, _els}. - -decode_offline_purge(__TopXMLNS, __IgnoreEls, - {xmlel, <<"purge">>, _attrs, _els}) -> - true. - -encode_offline_purge(true, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/offline">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"purge">>, _attrs, _els}. - -decode_sm_failed(__TopXMLNS, __IgnoreEls, - {xmlel, <<"failed">>, _attrs, _els}) -> - Reason = decode_sm_failed_els(__TopXMLNS, __IgnoreEls, - _els, undefined), - {H, Xmlns} = decode_sm_failed_attrs(__TopXMLNS, _attrs, - undefined, undefined), - {sm_failed, Reason, H, Xmlns}. - -decode_sm_failed_els(__TopXMLNS, __IgnoreEls, [], - Reason) -> - Reason; -decode_sm_failed_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"bad-request">>, _attrs, _} = _el | _els], - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - decode_error_bad_request(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el)); - _ -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - Reason) - end; -decode_sm_failed_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"conflict">>, _attrs, _} = _el | _els], - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - decode_error_conflict(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el)); - _ -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - Reason) - end; -decode_sm_failed_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"feature-not-implemented">>, _attrs, _} = _el - | _els], - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - decode_error_feature_not_implemented(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, - _el)); - _ -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - Reason) - end; -decode_sm_failed_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"forbidden">>, _attrs, _} = _el | _els], - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - decode_error_forbidden(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el)); - _ -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - Reason) - end; -decode_sm_failed_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"gone">>, _attrs, _} = _el | _els], - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - decode_error_gone(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el)); - _ -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - Reason) - end; -decode_sm_failed_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"internal-server-error">>, _attrs, _} = _el - | _els], - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - decode_error_internal_server_error(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, - _el)); - _ -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - Reason) - end; -decode_sm_failed_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"item-not-found">>, _attrs, _} = _el | _els], - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - decode_error_item_not_found(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el)); - _ -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - Reason) - end; -decode_sm_failed_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"jid-malformed">>, _attrs, _} = _el | _els], - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - decode_error_jid_malformed(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el)); - _ -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - Reason) - end; -decode_sm_failed_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"not-acceptable">>, _attrs, _} = _el | _els], - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - decode_error_not_acceptable(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el)); - _ -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - Reason) - end; -decode_sm_failed_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"not-allowed">>, _attrs, _} = _el | _els], - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - decode_error_not_allowed(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el)); - _ -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - Reason) - end; -decode_sm_failed_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"not-authorized">>, _attrs, _} = _el | _els], - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - decode_error_not_authorized(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el)); - _ -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - Reason) - end; -decode_sm_failed_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"policy-violation">>, _attrs, _} = _el - | _els], - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - decode_error_policy_violation(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el)); - _ -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - Reason) - end; -decode_sm_failed_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"recipient-unavailable">>, _attrs, _} = _el - | _els], - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - decode_error_recipient_unavailable(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, - _el)); - _ -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - Reason) - end; -decode_sm_failed_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"redirect">>, _attrs, _} = _el | _els], - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - decode_error_redirect(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el)); - _ -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - Reason) - end; -decode_sm_failed_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"registration-required">>, _attrs, _} = _el - | _els], - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - decode_error_registration_required(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, - _el)); - _ -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - Reason) - end; -decode_sm_failed_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"remote-server-not-found">>, _attrs, _} = _el - | _els], - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - decode_error_remote_server_not_found(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, - _el)); - _ -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - Reason) - end; -decode_sm_failed_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"remote-server-timeout">>, _attrs, _} = _el - | _els], - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - decode_error_remote_server_timeout(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, - _el)); - _ -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - Reason) - end; -decode_sm_failed_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"resource-constraint">>, _attrs, _} = _el - | _els], - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - decode_error_resource_constraint(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, - _el)); - _ -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - Reason) - end; -decode_sm_failed_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"service-unavailable">>, _attrs, _} = _el - | _els], - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - decode_error_service_unavailable(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, - _el)); - _ -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - Reason) - end; -decode_sm_failed_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"subscription-required">>, _attrs, _} = _el - | _els], - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - decode_error_subscription_required(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, - _el)); - _ -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - Reason) - end; -decode_sm_failed_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"undefined-condition">>, _attrs, _} = _el - | _els], - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - decode_error_undefined_condition(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, - _el)); - _ -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - Reason) - end; -decode_sm_failed_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"unexpected-request">>, _attrs, _} = _el - | _els], - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - decode_error_unexpected_request(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, - _el)); - _ -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - Reason) - end; -decode_sm_failed_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Reason) -> - decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els, - Reason). - -decode_sm_failed_attrs(__TopXMLNS, - [{<<"h">>, _val} | _attrs], _H, Xmlns) -> - decode_sm_failed_attrs(__TopXMLNS, _attrs, _val, Xmlns); -decode_sm_failed_attrs(__TopXMLNS, - [{<<"xmlns">>, _val} | _attrs], H, _Xmlns) -> - decode_sm_failed_attrs(__TopXMLNS, _attrs, H, _val); -decode_sm_failed_attrs(__TopXMLNS, [_ | _attrs], H, - Xmlns) -> - decode_sm_failed_attrs(__TopXMLNS, _attrs, H, Xmlns); -decode_sm_failed_attrs(__TopXMLNS, [], H, Xmlns) -> - {decode_sm_failed_attr_h(__TopXMLNS, H), - decode_sm_failed_attr_xmlns(__TopXMLNS, Xmlns)}. - -encode_sm_failed({sm_failed, Reason, H, Xmlns}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(Xmlns, - [<<"urn:xmpp:sm:2">>, <<"urn:xmpp:sm:3">>], - __TopXMLNS), - _els = lists:reverse('encode_sm_failed_$reason'(Reason, - __NewTopXMLNS, [])), - _attrs = encode_sm_failed_attr_h(H, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"failed">>, _attrs, _els}. - -'encode_sm_failed_$reason'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_sm_failed_$reason'('bad-request' = Reason, - __TopXMLNS, _acc) -> - [encode_error_bad_request(Reason, __TopXMLNS) | _acc]; -'encode_sm_failed_$reason'(conflict = Reason, - __TopXMLNS, _acc) -> - [encode_error_conflict(Reason, __TopXMLNS) | _acc]; -'encode_sm_failed_$reason'('feature-not-implemented' = - Reason, - __TopXMLNS, _acc) -> - [encode_error_feature_not_implemented(Reason, - __TopXMLNS) - | _acc]; -'encode_sm_failed_$reason'(forbidden = Reason, - __TopXMLNS, _acc) -> - [encode_error_forbidden(Reason, __TopXMLNS) | _acc]; -'encode_sm_failed_$reason'({gone, _} = Reason, - __TopXMLNS, _acc) -> - [encode_error_gone(Reason, __TopXMLNS) | _acc]; -'encode_sm_failed_$reason'('internal-server-error' = - Reason, - __TopXMLNS, _acc) -> - [encode_error_internal_server_error(Reason, __TopXMLNS) - | _acc]; -'encode_sm_failed_$reason'('item-not-found' = Reason, - __TopXMLNS, _acc) -> - [encode_error_item_not_found(Reason, __TopXMLNS) - | _acc]; -'encode_sm_failed_$reason'('jid-malformed' = Reason, - __TopXMLNS, _acc) -> - [encode_error_jid_malformed(Reason, __TopXMLNS) | _acc]; -'encode_sm_failed_$reason'('not-acceptable' = Reason, - __TopXMLNS, _acc) -> - [encode_error_not_acceptable(Reason, __TopXMLNS) - | _acc]; -'encode_sm_failed_$reason'('not-allowed' = Reason, - __TopXMLNS, _acc) -> - [encode_error_not_allowed(Reason, __TopXMLNS) | _acc]; -'encode_sm_failed_$reason'('not-authorized' = Reason, - __TopXMLNS, _acc) -> - [encode_error_not_authorized(Reason, __TopXMLNS) - | _acc]; -'encode_sm_failed_$reason'('policy-violation' = Reason, - __TopXMLNS, _acc) -> - [encode_error_policy_violation(Reason, __TopXMLNS) - | _acc]; -'encode_sm_failed_$reason'('recipient-unavailable' = - Reason, - __TopXMLNS, _acc) -> - [encode_error_recipient_unavailable(Reason, __TopXMLNS) - | _acc]; -'encode_sm_failed_$reason'({redirect, _} = Reason, - __TopXMLNS, _acc) -> - [encode_error_redirect(Reason, __TopXMLNS) | _acc]; -'encode_sm_failed_$reason'('registration-required' = - Reason, - __TopXMLNS, _acc) -> - [encode_error_registration_required(Reason, __TopXMLNS) - | _acc]; -'encode_sm_failed_$reason'('remote-server-not-found' = - Reason, - __TopXMLNS, _acc) -> - [encode_error_remote_server_not_found(Reason, - __TopXMLNS) - | _acc]; -'encode_sm_failed_$reason'('remote-server-timeout' = - Reason, - __TopXMLNS, _acc) -> - [encode_error_remote_server_timeout(Reason, __TopXMLNS) - | _acc]; -'encode_sm_failed_$reason'('resource-constraint' = - Reason, - __TopXMLNS, _acc) -> - [encode_error_resource_constraint(Reason, __TopXMLNS) - | _acc]; -'encode_sm_failed_$reason'('service-unavailable' = - Reason, - __TopXMLNS, _acc) -> - [encode_error_service_unavailable(Reason, __TopXMLNS) - | _acc]; -'encode_sm_failed_$reason'('subscription-required' = - Reason, - __TopXMLNS, _acc) -> - [encode_error_subscription_required(Reason, __TopXMLNS) - | _acc]; -'encode_sm_failed_$reason'('undefined-condition' = - Reason, - __TopXMLNS, _acc) -> - [encode_error_undefined_condition(Reason, __TopXMLNS) - | _acc]; -'encode_sm_failed_$reason'('unexpected-request' = - Reason, - __TopXMLNS, _acc) -> - [encode_error_unexpected_request(Reason, __TopXMLNS) - | _acc]. - -decode_sm_failed_attr_h(__TopXMLNS, undefined) -> - undefined; -decode_sm_failed_attr_h(__TopXMLNS, _val) -> - case catch dec_int(_val, 0, infinity) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"h">>, <<"failed">>, __TopXMLNS}}); - _res -> _res - end. - -encode_sm_failed_attr_h(undefined, _acc) -> _acc; -encode_sm_failed_attr_h(_val, _acc) -> - [{<<"h">>, enc_int(_val)} | _acc]. - -decode_sm_failed_attr_xmlns(__TopXMLNS, undefined) -> - <<>>; -decode_sm_failed_attr_xmlns(__TopXMLNS, _val) -> _val. - -decode_sm_a(__TopXMLNS, __IgnoreEls, - {xmlel, <<"a">>, _attrs, _els}) -> - {H, Xmlns} = decode_sm_a_attrs(__TopXMLNS, _attrs, - undefined, undefined), - {sm_a, H, Xmlns}. - -decode_sm_a_attrs(__TopXMLNS, - [{<<"h">>, _val} | _attrs], _H, Xmlns) -> - decode_sm_a_attrs(__TopXMLNS, _attrs, _val, Xmlns); -decode_sm_a_attrs(__TopXMLNS, - [{<<"xmlns">>, _val} | _attrs], H, _Xmlns) -> - decode_sm_a_attrs(__TopXMLNS, _attrs, H, _val); -decode_sm_a_attrs(__TopXMLNS, [_ | _attrs], H, Xmlns) -> - decode_sm_a_attrs(__TopXMLNS, _attrs, H, Xmlns); -decode_sm_a_attrs(__TopXMLNS, [], H, Xmlns) -> - {decode_sm_a_attr_h(__TopXMLNS, H), - decode_sm_a_attr_xmlns(__TopXMLNS, Xmlns)}. - -encode_sm_a({sm_a, H, Xmlns}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(Xmlns, - [<<"urn:xmpp:sm:2">>, <<"urn:xmpp:sm:3">>], - __TopXMLNS), - _els = [], - _attrs = encode_sm_a_attr_h(H, - enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS)), - {xmlel, <<"a">>, _attrs, _els}. - -decode_sm_a_attr_h(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"h">>, <<"a">>, __TopXMLNS}}); -decode_sm_a_attr_h(__TopXMLNS, _val) -> - case catch dec_int(_val, 0, infinity) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"h">>, <<"a">>, __TopXMLNS}}); - _res -> _res - end. - -encode_sm_a_attr_h(_val, _acc) -> - [{<<"h">>, enc_int(_val)} | _acc]. - -decode_sm_a_attr_xmlns(__TopXMLNS, undefined) -> <<>>; -decode_sm_a_attr_xmlns(__TopXMLNS, _val) -> _val. - -decode_sm_r(__TopXMLNS, __IgnoreEls, - {xmlel, <<"r">>, _attrs, _els}) -> - Xmlns = decode_sm_r_attrs(__TopXMLNS, _attrs, - undefined), - {sm_r, Xmlns}. - -decode_sm_r_attrs(__TopXMLNS, - [{<<"xmlns">>, _val} | _attrs], _Xmlns) -> - decode_sm_r_attrs(__TopXMLNS, _attrs, _val); -decode_sm_r_attrs(__TopXMLNS, [_ | _attrs], Xmlns) -> - decode_sm_r_attrs(__TopXMLNS, _attrs, Xmlns); -decode_sm_r_attrs(__TopXMLNS, [], Xmlns) -> - decode_sm_r_attr_xmlns(__TopXMLNS, Xmlns). - -encode_sm_r({sm_r, Xmlns}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(Xmlns, - [<<"urn:xmpp:sm:2">>, <<"urn:xmpp:sm:3">>], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"r">>, _attrs, _els}. - -decode_sm_r_attr_xmlns(__TopXMLNS, undefined) -> <<>>; -decode_sm_r_attr_xmlns(__TopXMLNS, _val) -> _val. - -decode_sm_resumed(__TopXMLNS, __IgnoreEls, - {xmlel, <<"resumed">>, _attrs, _els}) -> - {H, Xmlns, Previd} = decode_sm_resumed_attrs(__TopXMLNS, - _attrs, undefined, undefined, - undefined), - {sm_resumed, H, Previd, Xmlns}. - -decode_sm_resumed_attrs(__TopXMLNS, - [{<<"h">>, _val} | _attrs], _H, Xmlns, Previd) -> - decode_sm_resumed_attrs(__TopXMLNS, _attrs, _val, Xmlns, - Previd); -decode_sm_resumed_attrs(__TopXMLNS, - [{<<"xmlns">>, _val} | _attrs], H, _Xmlns, Previd) -> - decode_sm_resumed_attrs(__TopXMLNS, _attrs, H, _val, - Previd); -decode_sm_resumed_attrs(__TopXMLNS, - [{<<"previd">>, _val} | _attrs], H, Xmlns, _Previd) -> - decode_sm_resumed_attrs(__TopXMLNS, _attrs, H, Xmlns, - _val); -decode_sm_resumed_attrs(__TopXMLNS, [_ | _attrs], H, - Xmlns, Previd) -> - decode_sm_resumed_attrs(__TopXMLNS, _attrs, H, Xmlns, - Previd); -decode_sm_resumed_attrs(__TopXMLNS, [], H, Xmlns, - Previd) -> - {decode_sm_resumed_attr_h(__TopXMLNS, H), - decode_sm_resumed_attr_xmlns(__TopXMLNS, Xmlns), - decode_sm_resumed_attr_previd(__TopXMLNS, Previd)}. - -encode_sm_resumed({sm_resumed, H, Previd, Xmlns}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(Xmlns, - [<<"urn:xmpp:sm:2">>, <<"urn:xmpp:sm:3">>], - __TopXMLNS), - _els = [], - _attrs = encode_sm_resumed_attr_previd(Previd, - encode_sm_resumed_attr_h(H, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))), - {xmlel, <<"resumed">>, _attrs, _els}. - -decode_sm_resumed_attr_h(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"h">>, <<"resumed">>, __TopXMLNS}}); -decode_sm_resumed_attr_h(__TopXMLNS, _val) -> - case catch dec_int(_val, 0, infinity) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"h">>, <<"resumed">>, __TopXMLNS}}); - _res -> _res - end. - -encode_sm_resumed_attr_h(_val, _acc) -> - [{<<"h">>, enc_int(_val)} | _acc]. - -decode_sm_resumed_attr_xmlns(__TopXMLNS, undefined) -> - <<>>; -decode_sm_resumed_attr_xmlns(__TopXMLNS, _val) -> _val. - -decode_sm_resumed_attr_previd(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"previd">>, <<"resumed">>, - __TopXMLNS}}); -decode_sm_resumed_attr_previd(__TopXMLNS, _val) -> _val. - -encode_sm_resumed_attr_previd(_val, _acc) -> - [{<<"previd">>, _val} | _acc]. - -decode_sm_resume(__TopXMLNS, __IgnoreEls, - {xmlel, <<"resume">>, _attrs, _els}) -> - {H, Xmlns, Previd} = decode_sm_resume_attrs(__TopXMLNS, - _attrs, undefined, undefined, - undefined), - {sm_resume, H, Previd, Xmlns}. - -decode_sm_resume_attrs(__TopXMLNS, - [{<<"h">>, _val} | _attrs], _H, Xmlns, Previd) -> - decode_sm_resume_attrs(__TopXMLNS, _attrs, _val, Xmlns, - Previd); -decode_sm_resume_attrs(__TopXMLNS, - [{<<"xmlns">>, _val} | _attrs], H, _Xmlns, Previd) -> - decode_sm_resume_attrs(__TopXMLNS, _attrs, H, _val, - Previd); -decode_sm_resume_attrs(__TopXMLNS, - [{<<"previd">>, _val} | _attrs], H, Xmlns, _Previd) -> - decode_sm_resume_attrs(__TopXMLNS, _attrs, H, Xmlns, - _val); -decode_sm_resume_attrs(__TopXMLNS, [_ | _attrs], H, - Xmlns, Previd) -> - decode_sm_resume_attrs(__TopXMLNS, _attrs, H, Xmlns, - Previd); -decode_sm_resume_attrs(__TopXMLNS, [], H, Xmlns, - Previd) -> - {decode_sm_resume_attr_h(__TopXMLNS, H), - decode_sm_resume_attr_xmlns(__TopXMLNS, Xmlns), - decode_sm_resume_attr_previd(__TopXMLNS, Previd)}. - -encode_sm_resume({sm_resume, H, Previd, Xmlns}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(Xmlns, - [<<"urn:xmpp:sm:2">>, <<"urn:xmpp:sm:3">>], - __TopXMLNS), - _els = [], - _attrs = encode_sm_resume_attr_previd(Previd, - encode_sm_resume_attr_h(H, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))), - {xmlel, <<"resume">>, _attrs, _els}. - -decode_sm_resume_attr_h(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"h">>, <<"resume">>, __TopXMLNS}}); -decode_sm_resume_attr_h(__TopXMLNS, _val) -> - case catch dec_int(_val, 0, infinity) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"h">>, <<"resume">>, __TopXMLNS}}); - _res -> _res - end. - -encode_sm_resume_attr_h(_val, _acc) -> - [{<<"h">>, enc_int(_val)} | _acc]. - -decode_sm_resume_attr_xmlns(__TopXMLNS, undefined) -> - <<>>; -decode_sm_resume_attr_xmlns(__TopXMLNS, _val) -> _val. - -decode_sm_resume_attr_previd(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"previd">>, <<"resume">>, - __TopXMLNS}}); -decode_sm_resume_attr_previd(__TopXMLNS, _val) -> _val. - -encode_sm_resume_attr_previd(_val, _acc) -> - [{<<"previd">>, _val} | _acc]. - -decode_sm_enabled(__TopXMLNS, __IgnoreEls, - {xmlel, <<"enabled">>, _attrs, _els}) -> - {Id, Location, Xmlns, Max, Resume} = - decode_sm_enabled_attrs(__TopXMLNS, _attrs, undefined, - undefined, undefined, undefined, undefined), - {sm_enabled, Id, Location, Max, Resume, Xmlns}. - -decode_sm_enabled_attrs(__TopXMLNS, - [{<<"id">>, _val} | _attrs], _Id, Location, Xmlns, Max, - Resume) -> - decode_sm_enabled_attrs(__TopXMLNS, _attrs, _val, - Location, Xmlns, Max, Resume); -decode_sm_enabled_attrs(__TopXMLNS, - [{<<"location">>, _val} | _attrs], Id, _Location, Xmlns, - Max, Resume) -> - decode_sm_enabled_attrs(__TopXMLNS, _attrs, Id, _val, - Xmlns, Max, Resume); -decode_sm_enabled_attrs(__TopXMLNS, - [{<<"xmlns">>, _val} | _attrs], Id, Location, _Xmlns, - Max, Resume) -> - decode_sm_enabled_attrs(__TopXMLNS, _attrs, Id, - Location, _val, Max, Resume); -decode_sm_enabled_attrs(__TopXMLNS, - [{<<"max">>, _val} | _attrs], Id, Location, Xmlns, _Max, - Resume) -> - decode_sm_enabled_attrs(__TopXMLNS, _attrs, Id, - Location, Xmlns, _val, Resume); -decode_sm_enabled_attrs(__TopXMLNS, - [{<<"resume">>, _val} | _attrs], Id, Location, Xmlns, - Max, _Resume) -> - decode_sm_enabled_attrs(__TopXMLNS, _attrs, Id, - Location, Xmlns, Max, _val); -decode_sm_enabled_attrs(__TopXMLNS, [_ | _attrs], Id, - Location, Xmlns, Max, Resume) -> - decode_sm_enabled_attrs(__TopXMLNS, _attrs, Id, - Location, Xmlns, Max, Resume); -decode_sm_enabled_attrs(__TopXMLNS, [], Id, Location, - Xmlns, Max, Resume) -> - {decode_sm_enabled_attr_id(__TopXMLNS, Id), - decode_sm_enabled_attr_location(__TopXMLNS, Location), - decode_sm_enabled_attr_xmlns(__TopXMLNS, Xmlns), - decode_sm_enabled_attr_max(__TopXMLNS, Max), - decode_sm_enabled_attr_resume(__TopXMLNS, Resume)}. - -encode_sm_enabled({sm_enabled, Id, Location, Max, - Resume, Xmlns}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(Xmlns, - [<<"urn:xmpp:sm:2">>, <<"urn:xmpp:sm:3">>], - __TopXMLNS), - _els = [], - _attrs = encode_sm_enabled_attr_resume(Resume, - encode_sm_enabled_attr_max(Max, - encode_sm_enabled_attr_location(Location, - encode_sm_enabled_attr_id(Id, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))))), - {xmlel, <<"enabled">>, _attrs, _els}. - -decode_sm_enabled_attr_id(__TopXMLNS, undefined) -> - <<>>; -decode_sm_enabled_attr_id(__TopXMLNS, _val) -> _val. - -encode_sm_enabled_attr_id(<<>>, _acc) -> _acc; -encode_sm_enabled_attr_id(_val, _acc) -> - [{<<"id">>, _val} | _acc]. - -decode_sm_enabled_attr_location(__TopXMLNS, - undefined) -> - <<>>; -decode_sm_enabled_attr_location(__TopXMLNS, _val) -> - _val. - -encode_sm_enabled_attr_location(<<>>, _acc) -> _acc; -encode_sm_enabled_attr_location(_val, _acc) -> - [{<<"location">>, _val} | _acc]. - -decode_sm_enabled_attr_xmlns(__TopXMLNS, undefined) -> - <<>>; -decode_sm_enabled_attr_xmlns(__TopXMLNS, _val) -> _val. - -decode_sm_enabled_attr_max(__TopXMLNS, undefined) -> - undefined; -decode_sm_enabled_attr_max(__TopXMLNS, _val) -> - case catch dec_int(_val, 0, infinity) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"max">>, <<"enabled">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_sm_enabled_attr_max(undefined, _acc) -> _acc; -encode_sm_enabled_attr_max(_val, _acc) -> - [{<<"max">>, enc_int(_val)} | _acc]. - -decode_sm_enabled_attr_resume(__TopXMLNS, undefined) -> - false; -decode_sm_enabled_attr_resume(__TopXMLNS, _val) -> - case catch dec_bool(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"resume">>, <<"enabled">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_sm_enabled_attr_resume(false, _acc) -> _acc; -encode_sm_enabled_attr_resume(_val, _acc) -> - [{<<"resume">>, enc_bool(_val)} | _acc]. - -decode_sm_enable(__TopXMLNS, __IgnoreEls, - {xmlel, <<"enable">>, _attrs, _els}) -> - {Max, Xmlns, Resume} = - decode_sm_enable_attrs(__TopXMLNS, _attrs, undefined, - undefined, undefined), - {sm_enable, Max, Resume, Xmlns}. - -decode_sm_enable_attrs(__TopXMLNS, - [{<<"max">>, _val} | _attrs], _Max, Xmlns, Resume) -> - decode_sm_enable_attrs(__TopXMLNS, _attrs, _val, Xmlns, - Resume); -decode_sm_enable_attrs(__TopXMLNS, - [{<<"xmlns">>, _val} | _attrs], Max, _Xmlns, Resume) -> - decode_sm_enable_attrs(__TopXMLNS, _attrs, Max, _val, - Resume); -decode_sm_enable_attrs(__TopXMLNS, - [{<<"resume">>, _val} | _attrs], Max, Xmlns, _Resume) -> - decode_sm_enable_attrs(__TopXMLNS, _attrs, Max, Xmlns, - _val); -decode_sm_enable_attrs(__TopXMLNS, [_ | _attrs], Max, - Xmlns, Resume) -> - decode_sm_enable_attrs(__TopXMLNS, _attrs, Max, Xmlns, - Resume); -decode_sm_enable_attrs(__TopXMLNS, [], Max, Xmlns, - Resume) -> - {decode_sm_enable_attr_max(__TopXMLNS, Max), - decode_sm_enable_attr_xmlns(__TopXMLNS, Xmlns), - decode_sm_enable_attr_resume(__TopXMLNS, Resume)}. - -encode_sm_enable({sm_enable, Max, Resume, Xmlns}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(Xmlns, - [<<"urn:xmpp:sm:2">>, <<"urn:xmpp:sm:3">>], - __TopXMLNS), - _els = [], - _attrs = encode_sm_enable_attr_resume(Resume, - encode_sm_enable_attr_max(Max, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))), - {xmlel, <<"enable">>, _attrs, _els}. - -decode_sm_enable_attr_max(__TopXMLNS, undefined) -> - undefined; -decode_sm_enable_attr_max(__TopXMLNS, _val) -> - case catch dec_int(_val, 0, infinity) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"max">>, <<"enable">>, __TopXMLNS}}); - _res -> _res - end. - -encode_sm_enable_attr_max(undefined, _acc) -> _acc; -encode_sm_enable_attr_max(_val, _acc) -> - [{<<"max">>, enc_int(_val)} | _acc]. - -decode_sm_enable_attr_xmlns(__TopXMLNS, undefined) -> - <<>>; -decode_sm_enable_attr_xmlns(__TopXMLNS, _val) -> _val. - -decode_sm_enable_attr_resume(__TopXMLNS, undefined) -> - false; -decode_sm_enable_attr_resume(__TopXMLNS, _val) -> - case catch dec_bool(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"resume">>, <<"enable">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_sm_enable_attr_resume(false, _acc) -> _acc; -encode_sm_enable_attr_resume(_val, _acc) -> - [{<<"resume">>, enc_bool(_val)} | _acc]. - -decode_feature_sm(__TopXMLNS, __IgnoreEls, - {xmlel, <<"sm">>, _attrs, _els}) -> - Xmlns = decode_feature_sm_attrs(__TopXMLNS, _attrs, - undefined), - {feature_sm, Xmlns}. - -decode_feature_sm_attrs(__TopXMLNS, - [{<<"xmlns">>, _val} | _attrs], _Xmlns) -> - decode_feature_sm_attrs(__TopXMLNS, _attrs, _val); -decode_feature_sm_attrs(__TopXMLNS, [_ | _attrs], - Xmlns) -> - decode_feature_sm_attrs(__TopXMLNS, _attrs, Xmlns); -decode_feature_sm_attrs(__TopXMLNS, [], Xmlns) -> - decode_feature_sm_attr_xmlns(__TopXMLNS, Xmlns). - -encode_feature_sm({feature_sm, Xmlns}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(Xmlns, - [<<"urn:xmpp:sm:2">>, <<"urn:xmpp:sm:3">>], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"sm">>, _attrs, _els}. - -decode_feature_sm_attr_xmlns(__TopXMLNS, undefined) -> - <<>>; -decode_feature_sm_attr_xmlns(__TopXMLNS, _val) -> _val. - -decode_csi_inactive(__TopXMLNS, __IgnoreEls, - {xmlel, <<"inactive">>, _attrs, _els}) -> - {csi, inactive}. - -encode_csi_inactive({csi, inactive}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"urn:xmpp:csi:0">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"inactive">>, _attrs, _els}. - -decode_csi_active(__TopXMLNS, __IgnoreEls, - {xmlel, <<"active">>, _attrs, _els}) -> - {csi, active}. - -encode_csi_active({csi, active}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"urn:xmpp:csi:0">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"active">>, _attrs, _els}. - -decode_feature_csi(__TopXMLNS, __IgnoreEls, - {xmlel, <<"csi">>, _attrs, _els}) -> - Xmlns = decode_feature_csi_attrs(__TopXMLNS, _attrs, - undefined), - {feature_csi, Xmlns}. - -decode_feature_csi_attrs(__TopXMLNS, - [{<<"xmlns">>, _val} | _attrs], _Xmlns) -> - decode_feature_csi_attrs(__TopXMLNS, _attrs, _val); -decode_feature_csi_attrs(__TopXMLNS, [_ | _attrs], - Xmlns) -> - decode_feature_csi_attrs(__TopXMLNS, _attrs, Xmlns); -decode_feature_csi_attrs(__TopXMLNS, [], Xmlns) -> - decode_feature_csi_attr_xmlns(__TopXMLNS, Xmlns). - -encode_feature_csi({feature_csi, Xmlns}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(Xmlns, - [<<"urn:xmpp:csi:0">>], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"csi">>, _attrs, _els}. - -decode_feature_csi_attr_xmlns(__TopXMLNS, undefined) -> - <<>>; -decode_feature_csi_attr_xmlns(__TopXMLNS, _val) -> _val. - -decode_carbons_sent(__TopXMLNS, __IgnoreEls, - {xmlel, <<"sent">>, _attrs, _els}) -> - Forwarded = decode_carbons_sent_els(__TopXMLNS, - __IgnoreEls, _els, error), - {carbons_sent, Forwarded}. - -decode_carbons_sent_els(__TopXMLNS, __IgnoreEls, [], - Forwarded) -> - case Forwarded of - error -> - erlang:error({xmpp_codec, - {missing_tag, <<"forwarded">>, __TopXMLNS}}); - {value, Forwarded1} -> Forwarded1 - end; -decode_carbons_sent_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"forwarded">>, _attrs, _} = _el | _els], - Forwarded) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:xmpp:forward:0">> -> - decode_carbons_sent_els(__TopXMLNS, __IgnoreEls, _els, - {value, - decode_forwarded(<<"urn:xmpp:forward:0">>, - __IgnoreEls, _el)}); - _ -> - decode_carbons_sent_els(__TopXMLNS, __IgnoreEls, _els, - Forwarded) - end; -decode_carbons_sent_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Forwarded) -> - decode_carbons_sent_els(__TopXMLNS, __IgnoreEls, _els, - Forwarded). - -encode_carbons_sent({carbons_sent, Forwarded}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:xmpp:carbons:2">>, [], - __TopXMLNS), - _els = - lists:reverse('encode_carbons_sent_$forwarded'(Forwarded, - __NewTopXMLNS, [])), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"sent">>, _attrs, _els}. - -'encode_carbons_sent_$forwarded'(Forwarded, __TopXMLNS, - _acc) -> - [encode_forwarded(Forwarded, __TopXMLNS) | _acc]. - -decode_carbons_received(__TopXMLNS, __IgnoreEls, - {xmlel, <<"received">>, _attrs, _els}) -> - Forwarded = decode_carbons_received_els(__TopXMLNS, - __IgnoreEls, _els, error), - {carbons_received, Forwarded}. - -decode_carbons_received_els(__TopXMLNS, __IgnoreEls, [], - Forwarded) -> - case Forwarded of - error -> - erlang:error({xmpp_codec, - {missing_tag, <<"forwarded">>, __TopXMLNS}}); - {value, Forwarded1} -> Forwarded1 - end; -decode_carbons_received_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"forwarded">>, _attrs, _} = _el | _els], - Forwarded) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:xmpp:forward:0">> -> - decode_carbons_received_els(__TopXMLNS, __IgnoreEls, - _els, - {value, - decode_forwarded(<<"urn:xmpp:forward:0">>, - __IgnoreEls, _el)}); - _ -> - decode_carbons_received_els(__TopXMLNS, __IgnoreEls, - _els, Forwarded) - end; -decode_carbons_received_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Forwarded) -> - decode_carbons_received_els(__TopXMLNS, __IgnoreEls, - _els, Forwarded). - -encode_carbons_received({carbons_received, Forwarded}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:xmpp:carbons:2">>, [], - __TopXMLNS), - _els = - lists:reverse('encode_carbons_received_$forwarded'(Forwarded, - __NewTopXMLNS, [])), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"received">>, _attrs, _els}. - -'encode_carbons_received_$forwarded'(Forwarded, - __TopXMLNS, _acc) -> - [encode_forwarded(Forwarded, __TopXMLNS) | _acc]. - -decode_carbons_private(__TopXMLNS, __IgnoreEls, - {xmlel, <<"private">>, _attrs, _els}) -> - {carbons_private}. - -encode_carbons_private({carbons_private}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:xmpp:carbons:2">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"private">>, _attrs, _els}. - -decode_carbons_enable(__TopXMLNS, __IgnoreEls, - {xmlel, <<"enable">>, _attrs, _els}) -> - {carbons_enable}. - -encode_carbons_enable({carbons_enable}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:xmpp:carbons:2">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"enable">>, _attrs, _els}. - -decode_carbons_disable(__TopXMLNS, __IgnoreEls, - {xmlel, <<"disable">>, _attrs, _els}) -> - {carbons_disable}. - -encode_carbons_disable({carbons_disable}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:xmpp:carbons:2">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"disable">>, _attrs, _els}. - -decode_forwarded(__TopXMLNS, __IgnoreEls, - {xmlel, <<"forwarded">>, _attrs, _els}) -> - {Delay, __Xmls} = decode_forwarded_els(__TopXMLNS, - __IgnoreEls, _els, undefined, []), - {forwarded, Delay, __Xmls}. - -decode_forwarded_els(__TopXMLNS, __IgnoreEls, [], Delay, - __Xmls) -> - {Delay, lists:reverse(__Xmls)}; -decode_forwarded_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"delay">>, _attrs, _} = _el | _els], Delay, - __Xmls) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:xmpp:delay">> -> - decode_forwarded_els(__TopXMLNS, __IgnoreEls, _els, - decode_delay(<<"urn:xmpp:delay">>, __IgnoreEls, - _el), - __Xmls); - _ -> - decode_forwarded_els(__TopXMLNS, __IgnoreEls, _els, - Delay, __Xmls) - end; -decode_forwarded_els(__TopXMLNS, __IgnoreEls, - [{xmlel, _, _, _} = _el | _els], Delay, __Xmls) -> - decode_forwarded_els(__TopXMLNS, __IgnoreEls, _els, - Delay, [_el | __Xmls]); -decode_forwarded_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Delay, __Xmls) -> - decode_forwarded_els(__TopXMLNS, __IgnoreEls, _els, - Delay, __Xmls). - -encode_forwarded({forwarded, Delay, __Xmls}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:xmpp:forward:0">>, [], - __TopXMLNS), - _els = __Xmls ++ - lists:reverse('encode_forwarded_$delay'(Delay, - __NewTopXMLNS, [])), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"forwarded">>, _attrs, _els}. - -'encode_forwarded_$delay'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_forwarded_$delay'(Delay, __TopXMLNS, _acc) -> - [encode_delay(Delay, __TopXMLNS) | _acc]. - -decode_mam_fin(__TopXMLNS, __IgnoreEls, - {xmlel, <<"fin">>, _attrs, _els}) -> - Rsm = decode_mam_fin_els(__TopXMLNS, __IgnoreEls, _els, - undefined), - {Id, Xmlns, Stable, Complete} = - decode_mam_fin_attrs(__TopXMLNS, _attrs, undefined, - undefined, undefined, undefined), - {mam_fin, Xmlns, Id, Rsm, Stable, Complete}. - -decode_mam_fin_els(__TopXMLNS, __IgnoreEls, [], Rsm) -> - Rsm; -decode_mam_fin_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"set">>, _attrs, _} = _el | _els], Rsm) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"http://jabber.org/protocol/rsm">> -> - decode_mam_fin_els(__TopXMLNS, __IgnoreEls, _els, - decode_rsm_set(<<"http://jabber.org/protocol/rsm">>, - __IgnoreEls, _el)); - _ -> - decode_mam_fin_els(__TopXMLNS, __IgnoreEls, _els, Rsm) - end; -decode_mam_fin_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Rsm) -> - decode_mam_fin_els(__TopXMLNS, __IgnoreEls, _els, Rsm). - -decode_mam_fin_attrs(__TopXMLNS, - [{<<"queryid">>, _val} | _attrs], _Id, Xmlns, Stable, - Complete) -> - decode_mam_fin_attrs(__TopXMLNS, _attrs, _val, Xmlns, - Stable, Complete); -decode_mam_fin_attrs(__TopXMLNS, - [{<<"xmlns">>, _val} | _attrs], Id, _Xmlns, Stable, - Complete) -> - decode_mam_fin_attrs(__TopXMLNS, _attrs, Id, _val, - Stable, Complete); -decode_mam_fin_attrs(__TopXMLNS, - [{<<"stable">>, _val} | _attrs], Id, Xmlns, _Stable, - Complete) -> - decode_mam_fin_attrs(__TopXMLNS, _attrs, Id, Xmlns, - _val, Complete); -decode_mam_fin_attrs(__TopXMLNS, - [{<<"complete">>, _val} | _attrs], Id, Xmlns, Stable, - _Complete) -> - decode_mam_fin_attrs(__TopXMLNS, _attrs, Id, Xmlns, - Stable, _val); -decode_mam_fin_attrs(__TopXMLNS, [_ | _attrs], Id, - Xmlns, Stable, Complete) -> - decode_mam_fin_attrs(__TopXMLNS, _attrs, Id, Xmlns, - Stable, Complete); -decode_mam_fin_attrs(__TopXMLNS, [], Id, Xmlns, Stable, - Complete) -> - {decode_mam_fin_attr_queryid(__TopXMLNS, Id), - decode_mam_fin_attr_xmlns(__TopXMLNS, Xmlns), - decode_mam_fin_attr_stable(__TopXMLNS, Stable), - decode_mam_fin_attr_complete(__TopXMLNS, Complete)}. - -encode_mam_fin({mam_fin, Xmlns, Id, Rsm, Stable, - Complete}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(Xmlns, - [<<"urn:xmpp:mam:0">>, - <<"urn:xmpp:mam:1">>], - __TopXMLNS), - _els = lists:reverse('encode_mam_fin_$rsm'(Rsm, - __NewTopXMLNS, [])), - _attrs = encode_mam_fin_attr_complete(Complete, - encode_mam_fin_attr_stable(Stable, - encode_mam_fin_attr_queryid(Id, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)))), - {xmlel, <<"fin">>, _attrs, _els}. - -'encode_mam_fin_$rsm'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_mam_fin_$rsm'(Rsm, __TopXMLNS, _acc) -> - [encode_rsm_set(Rsm, __TopXMLNS) | _acc]. - -decode_mam_fin_attr_queryid(__TopXMLNS, undefined) -> - <<>>; -decode_mam_fin_attr_queryid(__TopXMLNS, _val) -> _val. - -encode_mam_fin_attr_queryid(<<>>, _acc) -> _acc; -encode_mam_fin_attr_queryid(_val, _acc) -> - [{<<"queryid">>, _val} | _acc]. - -decode_mam_fin_attr_xmlns(__TopXMLNS, undefined) -> - <<>>; -decode_mam_fin_attr_xmlns(__TopXMLNS, _val) -> _val. - -decode_mam_fin_attr_stable(__TopXMLNS, undefined) -> - undefined; -decode_mam_fin_attr_stable(__TopXMLNS, _val) -> - case catch dec_bool(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"stable">>, <<"fin">>, __TopXMLNS}}); - _res -> _res - end. - -encode_mam_fin_attr_stable(undefined, _acc) -> _acc; -encode_mam_fin_attr_stable(_val, _acc) -> - [{<<"stable">>, enc_bool(_val)} | _acc]. - -decode_mam_fin_attr_complete(__TopXMLNS, undefined) -> - undefined; -decode_mam_fin_attr_complete(__TopXMLNS, _val) -> - case catch dec_bool(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"complete">>, <<"fin">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_mam_fin_attr_complete(undefined, _acc) -> _acc; -encode_mam_fin_attr_complete(_val, _acc) -> - [{<<"complete">>, enc_bool(_val)} | _acc]. - -decode_mam_prefs(__TopXMLNS, __IgnoreEls, - {xmlel, <<"prefs">>, _attrs, _els}) -> - {Never, Always} = decode_mam_prefs_els(__TopXMLNS, - __IgnoreEls, _els, undefined, - undefined), - {Default, Xmlns} = decode_mam_prefs_attrs(__TopXMLNS, - _attrs, undefined, undefined), - {mam_prefs, Xmlns, Default, Always, Never}. - -decode_mam_prefs_els(__TopXMLNS, __IgnoreEls, [], Never, - Always) -> - {Never, Always}; -decode_mam_prefs_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"always">>, _attrs, _} = _el | _els], Never, - Always) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == <<"urn:xmpp:mam:1">>; - __TopXMLNS == <<"urn:xmpp:mam:0">>; - __TopXMLNS == <<"urn:xmpp:mam:tmp">> -> - decode_mam_prefs_els(__TopXMLNS, __IgnoreEls, _els, - Never, - decode_mam_always(__TopXMLNS, __IgnoreEls, _el)); - <<"urn:xmpp:mam:0">> -> - decode_mam_prefs_els(__TopXMLNS, __IgnoreEls, _els, - Never, - decode_mam_always(<<"urn:xmpp:mam:0">>, - __IgnoreEls, _el)); - <<"urn:xmpp:mam:1">> -> - decode_mam_prefs_els(__TopXMLNS, __IgnoreEls, _els, - Never, - decode_mam_always(<<"urn:xmpp:mam:1">>, - __IgnoreEls, _el)); - <<"urn:xmpp:mam:tmp">> -> - decode_mam_prefs_els(__TopXMLNS, __IgnoreEls, _els, - Never, - decode_mam_always(<<"urn:xmpp:mam:tmp">>, - __IgnoreEls, _el)); - _ -> - decode_mam_prefs_els(__TopXMLNS, __IgnoreEls, _els, - Never, Always) - end; -decode_mam_prefs_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"never">>, _attrs, _} = _el | _els], Never, - Always) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == <<"urn:xmpp:mam:1">>; - __TopXMLNS == <<"urn:xmpp:mam:0">>; - __TopXMLNS == <<"urn:xmpp:mam:tmp">> -> - decode_mam_prefs_els(__TopXMLNS, __IgnoreEls, _els, - decode_mam_never(__TopXMLNS, __IgnoreEls, _el), - Always); - <<"urn:xmpp:mam:0">> -> - decode_mam_prefs_els(__TopXMLNS, __IgnoreEls, _els, - decode_mam_never(<<"urn:xmpp:mam:0">>, - __IgnoreEls, _el), - Always); - <<"urn:xmpp:mam:1">> -> - decode_mam_prefs_els(__TopXMLNS, __IgnoreEls, _els, - decode_mam_never(<<"urn:xmpp:mam:1">>, - __IgnoreEls, _el), - Always); - <<"urn:xmpp:mam:tmp">> -> - decode_mam_prefs_els(__TopXMLNS, __IgnoreEls, _els, - decode_mam_never(<<"urn:xmpp:mam:tmp">>, - __IgnoreEls, _el), - Always); - _ -> - decode_mam_prefs_els(__TopXMLNS, __IgnoreEls, _els, - Never, Always) - end; -decode_mam_prefs_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Never, Always) -> - decode_mam_prefs_els(__TopXMLNS, __IgnoreEls, _els, - Never, Always). - -decode_mam_prefs_attrs(__TopXMLNS, - [{<<"default">>, _val} | _attrs], _Default, Xmlns) -> - decode_mam_prefs_attrs(__TopXMLNS, _attrs, _val, Xmlns); -decode_mam_prefs_attrs(__TopXMLNS, - [{<<"xmlns">>, _val} | _attrs], Default, _Xmlns) -> - decode_mam_prefs_attrs(__TopXMLNS, _attrs, Default, - _val); -decode_mam_prefs_attrs(__TopXMLNS, [_ | _attrs], - Default, Xmlns) -> - decode_mam_prefs_attrs(__TopXMLNS, _attrs, Default, - Xmlns); -decode_mam_prefs_attrs(__TopXMLNS, [], Default, - Xmlns) -> - {decode_mam_prefs_attr_default(__TopXMLNS, Default), - decode_mam_prefs_attr_xmlns(__TopXMLNS, Xmlns)}. - -encode_mam_prefs({mam_prefs, Xmlns, Default, Always, - Never}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(Xmlns, - [<<"urn:xmpp:mam:0">>, - <<"urn:xmpp:mam:1">>, - <<"urn:xmpp:mam:tmp">>], - __TopXMLNS), - _els = lists:reverse('encode_mam_prefs_$never'(Never, - __NewTopXMLNS, - 'encode_mam_prefs_$always'(Always, - __NewTopXMLNS, - []))), - _attrs = encode_mam_prefs_attr_default(Default, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"prefs">>, _attrs, _els}. - -'encode_mam_prefs_$never'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_mam_prefs_$never'(Never, __TopXMLNS, _acc) -> - [encode_mam_never(Never, __TopXMLNS) | _acc]. - -'encode_mam_prefs_$always'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_mam_prefs_$always'(Always, __TopXMLNS, _acc) -> - [encode_mam_always(Always, __TopXMLNS) | _acc]. - -decode_mam_prefs_attr_default(__TopXMLNS, undefined) -> - undefined; -decode_mam_prefs_attr_default(__TopXMLNS, _val) -> - case catch dec_enum(_val, [always, never, roster]) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"default">>, <<"prefs">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_mam_prefs_attr_default(undefined, _acc) -> _acc; -encode_mam_prefs_attr_default(_val, _acc) -> - [{<<"default">>, enc_enum(_val)} | _acc]. - -decode_mam_prefs_attr_xmlns(__TopXMLNS, undefined) -> - <<>>; -decode_mam_prefs_attr_xmlns(__TopXMLNS, _val) -> _val. - -decode_mam_always(__TopXMLNS, __IgnoreEls, - {xmlel, <<"always">>, _attrs, _els}) -> - Jids = decode_mam_always_els(__TopXMLNS, __IgnoreEls, - _els, []), - Jids. - -decode_mam_always_els(__TopXMLNS, __IgnoreEls, [], - Jids) -> - lists:reverse(Jids); -decode_mam_always_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"jid">>, _attrs, _} = _el | _els], Jids) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == <<"urn:xmpp:mam:1">>; - __TopXMLNS == <<"urn:xmpp:mam:0">>; - __TopXMLNS == <<"urn:xmpp:mam:tmp">> -> - decode_mam_always_els(__TopXMLNS, __IgnoreEls, _els, - [decode_mam_jid(__TopXMLNS, __IgnoreEls, _el) - | Jids]); - <<"urn:xmpp:mam:0">> -> - decode_mam_always_els(__TopXMLNS, __IgnoreEls, _els, - [decode_mam_jid(<<"urn:xmpp:mam:0">>, - __IgnoreEls, _el) - | Jids]); - <<"urn:xmpp:mam:1">> -> - decode_mam_always_els(__TopXMLNS, __IgnoreEls, _els, - [decode_mam_jid(<<"urn:xmpp:mam:1">>, - __IgnoreEls, _el) - | Jids]); - <<"urn:xmpp:mam:tmp">> -> - decode_mam_always_els(__TopXMLNS, __IgnoreEls, _els, - [decode_mam_jid(<<"urn:xmpp:mam:tmp">>, - __IgnoreEls, _el) - | Jids]); - _ -> - decode_mam_always_els(__TopXMLNS, __IgnoreEls, _els, - Jids) - end; -decode_mam_always_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Jids) -> - decode_mam_always_els(__TopXMLNS, __IgnoreEls, _els, - Jids). - -encode_mam_always(Jids, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"urn:xmpp:mam:0">>, - <<"urn:xmpp:mam:1">>, - <<"urn:xmpp:mam:tmp">>], - __TopXMLNS), - _els = lists:reverse('encode_mam_always_$jids'(Jids, - __NewTopXMLNS, [])), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"always">>, _attrs, _els}. - -'encode_mam_always_$jids'([], __TopXMLNS, _acc) -> _acc; -'encode_mam_always_$jids'([Jids | _els], __TopXMLNS, - _acc) -> - 'encode_mam_always_$jids'(_els, __TopXMLNS, - [encode_mam_jid(Jids, __TopXMLNS) | _acc]). - -decode_mam_never(__TopXMLNS, __IgnoreEls, - {xmlel, <<"never">>, _attrs, _els}) -> - Jids = decode_mam_never_els(__TopXMLNS, __IgnoreEls, - _els, []), - Jids. - -decode_mam_never_els(__TopXMLNS, __IgnoreEls, [], - Jids) -> - lists:reverse(Jids); -decode_mam_never_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"jid">>, _attrs, _} = _el | _els], Jids) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == <<"urn:xmpp:mam:1">>; - __TopXMLNS == <<"urn:xmpp:mam:0">>; - __TopXMLNS == <<"urn:xmpp:mam:tmp">> -> - decode_mam_never_els(__TopXMLNS, __IgnoreEls, _els, - [decode_mam_jid(__TopXMLNS, __IgnoreEls, _el) - | Jids]); - <<"urn:xmpp:mam:0">> -> - decode_mam_never_els(__TopXMLNS, __IgnoreEls, _els, - [decode_mam_jid(<<"urn:xmpp:mam:0">>, - __IgnoreEls, _el) - | Jids]); - <<"urn:xmpp:mam:1">> -> - decode_mam_never_els(__TopXMLNS, __IgnoreEls, _els, - [decode_mam_jid(<<"urn:xmpp:mam:1">>, - __IgnoreEls, _el) - | Jids]); - <<"urn:xmpp:mam:tmp">> -> - decode_mam_never_els(__TopXMLNS, __IgnoreEls, _els, - [decode_mam_jid(<<"urn:xmpp:mam:tmp">>, - __IgnoreEls, _el) - | Jids]); - _ -> - decode_mam_never_els(__TopXMLNS, __IgnoreEls, _els, - Jids) - end; -decode_mam_never_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Jids) -> - decode_mam_never_els(__TopXMLNS, __IgnoreEls, _els, - Jids). - -encode_mam_never(Jids, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"urn:xmpp:mam:0">>, - <<"urn:xmpp:mam:1">>, - <<"urn:xmpp:mam:tmp">>], - __TopXMLNS), - _els = lists:reverse('encode_mam_never_$jids'(Jids, - __NewTopXMLNS, [])), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"never">>, _attrs, _els}. - -'encode_mam_never_$jids'([], __TopXMLNS, _acc) -> _acc; -'encode_mam_never_$jids'([Jids | _els], __TopXMLNS, - _acc) -> - 'encode_mam_never_$jids'(_els, __TopXMLNS, - [encode_mam_jid(Jids, __TopXMLNS) | _acc]). - -decode_mam_jid(__TopXMLNS, __IgnoreEls, - {xmlel, <<"jid">>, _attrs, _els}) -> - Cdata = decode_mam_jid_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_mam_jid_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_mam_jid_cdata(__TopXMLNS, Cdata); -decode_mam_jid_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_mam_jid_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_mam_jid_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Cdata) -> - decode_mam_jid_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_mam_jid(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"urn:xmpp:mam:0">>, - <<"urn:xmpp:mam:1">>, - <<"urn:xmpp:mam:tmp">>], - __TopXMLNS), - _els = encode_mam_jid_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"jid">>, _attrs, _els}. - -decode_mam_jid_cdata(__TopXMLNS, <<>>) -> - erlang:error({xmpp_codec, - {missing_cdata, <<>>, <<"jid">>, __TopXMLNS}}); -decode_mam_jid_cdata(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_cdata_value, <<>>, <<"jid">>, __TopXMLNS}}); - _res -> _res - end. - -encode_mam_jid_cdata(_val, _acc) -> - [{xmlcdata, enc_jid(_val)} | _acc]. - -decode_mam_result(__TopXMLNS, __IgnoreEls, - {xmlel, <<"result">>, _attrs, _els}) -> - __Els = decode_mam_result_els(__TopXMLNS, __IgnoreEls, - _els, []), - {Queryid, Xmlns, Id} = - decode_mam_result_attrs(__TopXMLNS, _attrs, undefined, - undefined, undefined), - {mam_result, Xmlns, Queryid, Id, __Els}. - -decode_mam_result_els(__TopXMLNS, __IgnoreEls, [], - __Els) -> - lists:reverse(__Els); -decode_mam_result_els(__TopXMLNS, __IgnoreEls, - [{xmlel, _, _, _} = _el | _els], __Els) -> - if __IgnoreEls -> - decode_mam_result_els(__TopXMLNS, __IgnoreEls, _els, - [_el | __Els]); - true -> - case is_known_tag(_el, __TopXMLNS) of - true -> - decode_mam_result_els(__TopXMLNS, __IgnoreEls, _els, - [decode(_el, __TopXMLNS, []) | __Els]); - false -> - decode_mam_result_els(__TopXMLNS, __IgnoreEls, _els, - __Els) - end - end; -decode_mam_result_els(__TopXMLNS, __IgnoreEls, - [_ | _els], __Els) -> - decode_mam_result_els(__TopXMLNS, __IgnoreEls, _els, - __Els). - -decode_mam_result_attrs(__TopXMLNS, - [{<<"queryid">>, _val} | _attrs], _Queryid, Xmlns, - Id) -> - decode_mam_result_attrs(__TopXMLNS, _attrs, _val, Xmlns, - Id); -decode_mam_result_attrs(__TopXMLNS, - [{<<"xmlns">>, _val} | _attrs], Queryid, _Xmlns, Id) -> - decode_mam_result_attrs(__TopXMLNS, _attrs, Queryid, - _val, Id); -decode_mam_result_attrs(__TopXMLNS, - [{<<"id">>, _val} | _attrs], Queryid, Xmlns, _Id) -> - decode_mam_result_attrs(__TopXMLNS, _attrs, Queryid, - Xmlns, _val); -decode_mam_result_attrs(__TopXMLNS, [_ | _attrs], - Queryid, Xmlns, Id) -> - decode_mam_result_attrs(__TopXMLNS, _attrs, Queryid, - Xmlns, Id); -decode_mam_result_attrs(__TopXMLNS, [], Queryid, Xmlns, - Id) -> - {decode_mam_result_attr_queryid(__TopXMLNS, Queryid), - decode_mam_result_attr_xmlns(__TopXMLNS, Xmlns), - decode_mam_result_attr_id(__TopXMLNS, Id)}. - -encode_mam_result({mam_result, Xmlns, Queryid, Id, - __Els}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(Xmlns, - [<<"urn:xmpp:mam:0">>, - <<"urn:xmpp:mam:1">>, - <<"urn:xmpp:mam:tmp">>], - __TopXMLNS), - _els = [encode(_el, __NewTopXMLNS) || _el <- __Els], - _attrs = encode_mam_result_attr_id(Id, - encode_mam_result_attr_queryid(Queryid, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))), - {xmlel, <<"result">>, _attrs, _els}. - -decode_mam_result_attr_queryid(__TopXMLNS, undefined) -> - <<>>; -decode_mam_result_attr_queryid(__TopXMLNS, _val) -> - _val. - -encode_mam_result_attr_queryid(<<>>, _acc) -> _acc; -encode_mam_result_attr_queryid(_val, _acc) -> - [{<<"queryid">>, _val} | _acc]. - -decode_mam_result_attr_xmlns(__TopXMLNS, undefined) -> - <<>>; -decode_mam_result_attr_xmlns(__TopXMLNS, _val) -> _val. - -decode_mam_result_attr_id(__TopXMLNS, undefined) -> - <<>>; -decode_mam_result_attr_id(__TopXMLNS, _val) -> _val. - -encode_mam_result_attr_id(<<>>, _acc) -> _acc; -encode_mam_result_attr_id(_val, _acc) -> - [{<<"id">>, _val} | _acc]. - -decode_mam_archived(__TopXMLNS, __IgnoreEls, - {xmlel, <<"archived">>, _attrs, _els}) -> - {Id, By} = decode_mam_archived_attrs(__TopXMLNS, _attrs, - undefined, undefined), - {mam_archived, By, Id}. - -decode_mam_archived_attrs(__TopXMLNS, - [{<<"id">>, _val} | _attrs], _Id, By) -> - decode_mam_archived_attrs(__TopXMLNS, _attrs, _val, By); -decode_mam_archived_attrs(__TopXMLNS, - [{<<"by">>, _val} | _attrs], Id, _By) -> - decode_mam_archived_attrs(__TopXMLNS, _attrs, Id, _val); -decode_mam_archived_attrs(__TopXMLNS, [_ | _attrs], Id, - By) -> - decode_mam_archived_attrs(__TopXMLNS, _attrs, Id, By); -decode_mam_archived_attrs(__TopXMLNS, [], Id, By) -> - {decode_mam_archived_attr_id(__TopXMLNS, Id), - decode_mam_archived_attr_by(__TopXMLNS, By)}. - -encode_mam_archived({mam_archived, By, Id}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"urn:xmpp:mam:tmp">>, - [], __TopXMLNS), - _els = [], - _attrs = encode_mam_archived_attr_by(By, - encode_mam_archived_attr_id(Id, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))), - {xmlel, <<"archived">>, _attrs, _els}. - -decode_mam_archived_attr_id(__TopXMLNS, undefined) -> - <<>>; -decode_mam_archived_attr_id(__TopXMLNS, _val) -> _val. - -encode_mam_archived_attr_id(<<>>, _acc) -> _acc; -encode_mam_archived_attr_id(_val, _acc) -> - [{<<"id">>, _val} | _acc]. - -decode_mam_archived_attr_by(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"by">>, <<"archived">>, __TopXMLNS}}); -decode_mam_archived_attr_by(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"by">>, <<"archived">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_mam_archived_attr_by(_val, _acc) -> - [{<<"by">>, enc_jid(_val)} | _acc]. - -decode_mam_query(__TopXMLNS, __IgnoreEls, - {xmlel, <<"query">>, _attrs, _els}) -> - {Xdata, Withtext, End, Start, With, Rsm} = - decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els, - undefined, undefined, undefined, undefined, - undefined, undefined), - {Id, Xmlns} = decode_mam_query_attrs(__TopXMLNS, _attrs, - undefined, undefined), - {mam_query, Xmlns, Id, Start, End, With, Withtext, Rsm, - Xdata}. - -decode_mam_query_els(__TopXMLNS, __IgnoreEls, [], Xdata, - Withtext, End, Start, With, Rsm) -> - {Xdata, Withtext, End, Start, With, Rsm}; -decode_mam_query_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"start">>, _attrs, _} = _el | _els], Xdata, - Withtext, End, Start, With, Rsm) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"urn:xmpp:mam:tmp">> -> - decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, Withtext, End, - decode_mam_start(__TopXMLNS, __IgnoreEls, _el), - With, Rsm); - <<"urn:xmpp:mam:tmp">> -> - decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, Withtext, End, - decode_mam_start(<<"urn:xmpp:mam:tmp">>, - __IgnoreEls, _el), - With, Rsm); - _ -> - decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, Withtext, End, Start, With, Rsm) - end; -decode_mam_query_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"end">>, _attrs, _} = _el | _els], Xdata, - Withtext, End, Start, With, Rsm) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"urn:xmpp:mam:tmp">> -> - decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, Withtext, - decode_mam_end(__TopXMLNS, __IgnoreEls, _el), - Start, With, Rsm); - <<"urn:xmpp:mam:tmp">> -> - decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, Withtext, - decode_mam_end(<<"urn:xmpp:mam:tmp">>, - __IgnoreEls, _el), - Start, With, Rsm); - _ -> - decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, Withtext, End, Start, With, Rsm) - end; -decode_mam_query_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"with">>, _attrs, _} = _el | _els], Xdata, - Withtext, End, Start, With, Rsm) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"urn:xmpp:mam:tmp">> -> - decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, Withtext, End, Start, - decode_mam_with(__TopXMLNS, __IgnoreEls, _el), - Rsm); - <<"urn:xmpp:mam:tmp">> -> - decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, Withtext, End, Start, - decode_mam_with(<<"urn:xmpp:mam:tmp">>, - __IgnoreEls, _el), - Rsm); - _ -> - decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, Withtext, End, Start, With, Rsm) - end; -decode_mam_query_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"withtext">>, _attrs, _} = _el | _els], - Xdata, Withtext, End, Start, With, Rsm) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"urn:xmpp:mam:tmp">> -> - decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, - decode_mam_withtext(__TopXMLNS, __IgnoreEls, - _el), - End, Start, With, Rsm); - <<"urn:xmpp:mam:tmp">> -> - decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, - decode_mam_withtext(<<"urn:xmpp:mam:tmp">>, - __IgnoreEls, _el), - End, Start, With, Rsm); - _ -> - decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, Withtext, End, Start, With, Rsm) - end; -decode_mam_query_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"set">>, _attrs, _} = _el | _els], Xdata, - Withtext, End, Start, With, Rsm) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"http://jabber.org/protocol/rsm">> -> - decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, Withtext, End, Start, With, - decode_rsm_set(<<"http://jabber.org/protocol/rsm">>, - __IgnoreEls, _el)); - _ -> - decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, Withtext, End, Start, With, Rsm) - end; -decode_mam_query_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"x">>, _attrs, _} = _el | _els], Xdata, - Withtext, End, Start, With, Rsm) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"jabber:x:data">> -> - decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els, - decode_xdata(<<"jabber:x:data">>, __IgnoreEls, - _el), - Withtext, End, Start, With, Rsm); - _ -> - decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, Withtext, End, Start, With, Rsm) - end; -decode_mam_query_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Xdata, Withtext, End, Start, With, Rsm) -> - decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, Withtext, End, Start, With, Rsm). - -decode_mam_query_attrs(__TopXMLNS, - [{<<"queryid">>, _val} | _attrs], _Id, Xmlns) -> - decode_mam_query_attrs(__TopXMLNS, _attrs, _val, Xmlns); -decode_mam_query_attrs(__TopXMLNS, - [{<<"xmlns">>, _val} | _attrs], Id, _Xmlns) -> - decode_mam_query_attrs(__TopXMLNS, _attrs, Id, _val); -decode_mam_query_attrs(__TopXMLNS, [_ | _attrs], Id, - Xmlns) -> - decode_mam_query_attrs(__TopXMLNS, _attrs, Id, Xmlns); -decode_mam_query_attrs(__TopXMLNS, [], Id, Xmlns) -> - {decode_mam_query_attr_queryid(__TopXMLNS, Id), - decode_mam_query_attr_xmlns(__TopXMLNS, Xmlns)}. - -encode_mam_query({mam_query, Xmlns, Id, Start, End, - With, Withtext, Rsm, Xdata}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(Xmlns, - [<<"urn:xmpp:mam:0">>, - <<"urn:xmpp:mam:1">>, - <<"urn:xmpp:mam:tmp">>], - __TopXMLNS), - _els = lists:reverse('encode_mam_query_$xdata'(Xdata, - __NewTopXMLNS, - 'encode_mam_query_$withtext'(Withtext, - __NewTopXMLNS, - 'encode_mam_query_$end'(End, - __NewTopXMLNS, - 'encode_mam_query_$start'(Start, - __NewTopXMLNS, - 'encode_mam_query_$with'(With, - __NewTopXMLNS, - 'encode_mam_query_$rsm'(Rsm, - __NewTopXMLNS, - []))))))), - _attrs = encode_mam_query_attr_queryid(Id, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"query">>, _attrs, _els}. - -'encode_mam_query_$xdata'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_mam_query_$xdata'(Xdata, __TopXMLNS, _acc) -> - [encode_xdata(Xdata, __TopXMLNS) | _acc]. - -'encode_mam_query_$withtext'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_mam_query_$withtext'(Withtext, __TopXMLNS, - _acc) -> - [encode_mam_withtext(Withtext, __TopXMLNS) | _acc]. - -'encode_mam_query_$end'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_mam_query_$end'(End, __TopXMLNS, _acc) -> - [encode_mam_end(End, __TopXMLNS) | _acc]. - -'encode_mam_query_$start'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_mam_query_$start'(Start, __TopXMLNS, _acc) -> - [encode_mam_start(Start, __TopXMLNS) | _acc]. - -'encode_mam_query_$with'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_mam_query_$with'(With, __TopXMLNS, _acc) -> - [encode_mam_with(With, __TopXMLNS) | _acc]. - -'encode_mam_query_$rsm'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_mam_query_$rsm'(Rsm, __TopXMLNS, _acc) -> - [encode_rsm_set(Rsm, __TopXMLNS) | _acc]. - -decode_mam_query_attr_queryid(__TopXMLNS, undefined) -> - <<>>; -decode_mam_query_attr_queryid(__TopXMLNS, _val) -> _val. - -encode_mam_query_attr_queryid(<<>>, _acc) -> _acc; -encode_mam_query_attr_queryid(_val, _acc) -> - [{<<"queryid">>, _val} | _acc]. - -decode_mam_query_attr_xmlns(__TopXMLNS, undefined) -> - <<>>; -decode_mam_query_attr_xmlns(__TopXMLNS, _val) -> _val. - -decode_mam_withtext(__TopXMLNS, __IgnoreEls, - {xmlel, <<"withtext">>, _attrs, _els}) -> - Cdata = decode_mam_withtext_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_mam_withtext_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_mam_withtext_cdata(__TopXMLNS, Cdata); -decode_mam_withtext_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_mam_withtext_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_mam_withtext_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_mam_withtext_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_mam_withtext(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"urn:xmpp:mam:tmp">>, - [], __TopXMLNS), - _els = encode_mam_withtext_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"withtext">>, _attrs, _els}. - -decode_mam_withtext_cdata(__TopXMLNS, <<>>) -> - erlang:error({xmpp_codec, - {missing_cdata, <<>>, <<"withtext">>, __TopXMLNS}}); -decode_mam_withtext_cdata(__TopXMLNS, _val) -> _val. - -encode_mam_withtext_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_mam_with(__TopXMLNS, __IgnoreEls, - {xmlel, <<"with">>, _attrs, _els}) -> - Cdata = decode_mam_with_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_mam_with_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_mam_with_cdata(__TopXMLNS, Cdata); -decode_mam_with_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_mam_with_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_mam_with_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Cdata) -> - decode_mam_with_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_mam_with(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"urn:xmpp:mam:tmp">>, - [], __TopXMLNS), - _els = encode_mam_with_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"with">>, _attrs, _els}. - -decode_mam_with_cdata(__TopXMLNS, <<>>) -> - erlang:error({xmpp_codec, - {missing_cdata, <<>>, <<"with">>, __TopXMLNS}}); -decode_mam_with_cdata(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_cdata_value, <<>>, <<"with">>, __TopXMLNS}}); - _res -> _res - end. - -encode_mam_with_cdata(_val, _acc) -> - [{xmlcdata, enc_jid(_val)} | _acc]. - -decode_mam_end(__TopXMLNS, __IgnoreEls, - {xmlel, <<"end">>, _attrs, _els}) -> - Cdata = decode_mam_end_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_mam_end_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_mam_end_cdata(__TopXMLNS, Cdata); -decode_mam_end_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_mam_end_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_mam_end_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Cdata) -> - decode_mam_end_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_mam_end(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"urn:xmpp:mam:tmp">>, - [], __TopXMLNS), - _els = encode_mam_end_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"end">>, _attrs, _els}. - -decode_mam_end_cdata(__TopXMLNS, <<>>) -> - erlang:error({xmpp_codec, - {missing_cdata, <<>>, <<"end">>, __TopXMLNS}}); -decode_mam_end_cdata(__TopXMLNS, _val) -> - case catch dec_utc(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_cdata_value, <<>>, <<"end">>, __TopXMLNS}}); - _res -> _res - end. - -encode_mam_end_cdata(_val, _acc) -> - [{xmlcdata, enc_utc(_val)} | _acc]. - -decode_mam_start(__TopXMLNS, __IgnoreEls, - {xmlel, <<"start">>, _attrs, _els}) -> - Cdata = decode_mam_start_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_mam_start_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_mam_start_cdata(__TopXMLNS, Cdata); -decode_mam_start_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_mam_start_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_mam_start_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_mam_start_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_mam_start(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"urn:xmpp:mam:tmp">>, - [], __TopXMLNS), - _els = encode_mam_start_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"start">>, _attrs, _els}. - -decode_mam_start_cdata(__TopXMLNS, <<>>) -> - erlang:error({xmpp_codec, - {missing_cdata, <<>>, <<"start">>, __TopXMLNS}}); -decode_mam_start_cdata(__TopXMLNS, _val) -> - case catch dec_utc(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_cdata_value, <<>>, <<"start">>, __TopXMLNS}}); - _res -> _res - end. - -encode_mam_start_cdata(_val, _acc) -> - [{xmlcdata, enc_utc(_val)} | _acc]. - -decode_rsm_set(__TopXMLNS, __IgnoreEls, - {xmlel, <<"set">>, _attrs, _els}) -> - {After, Last, First, Count, Before, Max, Index} = - decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, - undefined, undefined, undefined, undefined, - undefined, undefined, undefined), - {rsm_set, After, Before, Count, First, Index, Last, - Max}. - -decode_rsm_set_els(__TopXMLNS, __IgnoreEls, [], After, - Last, First, Count, Before, Max, Index) -> - {After, Last, First, Count, Before, Max, Index}; -decode_rsm_set_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"after">>, _attrs, _} = _el | _els], After, - Last, First, Count, Before, Max, Index) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/rsm">> -> - decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, - decode_rsm_after(__TopXMLNS, __IgnoreEls, _el), - Last, First, Count, Before, Max, Index); - <<"http://jabber.org/protocol/rsm">> -> - decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, - decode_rsm_after(<<"http://jabber.org/protocol/rsm">>, - __IgnoreEls, _el), - Last, First, Count, Before, Max, Index); - _ -> - decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After, - Last, First, Count, Before, Max, Index) - end; -decode_rsm_set_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"before">>, _attrs, _} = _el | _els], After, - Last, First, Count, Before, Max, Index) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/rsm">> -> - decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After, - Last, First, Count, - decode_rsm_before(__TopXMLNS, __IgnoreEls, _el), - Max, Index); - <<"http://jabber.org/protocol/rsm">> -> - decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After, - Last, First, Count, - decode_rsm_before(<<"http://jabber.org/protocol/rsm">>, - __IgnoreEls, _el), - Max, Index); - _ -> - decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After, - Last, First, Count, Before, Max, Index) - end; -decode_rsm_set_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"count">>, _attrs, _} = _el | _els], After, - Last, First, Count, Before, Max, Index) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/rsm">> -> - decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After, - Last, First, - decode_rsm_count(__TopXMLNS, __IgnoreEls, _el), - Before, Max, Index); - <<"http://jabber.org/protocol/rsm">> -> - decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After, - Last, First, - decode_rsm_count(<<"http://jabber.org/protocol/rsm">>, - __IgnoreEls, _el), - Before, Max, Index); - _ -> - decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After, - Last, First, Count, Before, Max, Index) - end; -decode_rsm_set_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"first">>, _attrs, _} = _el | _els], After, - Last, First, Count, Before, Max, Index) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/rsm">> -> - decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After, - Last, - decode_rsm_first(__TopXMLNS, __IgnoreEls, _el), - Count, Before, Max, Index); - <<"http://jabber.org/protocol/rsm">> -> - decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After, - Last, - decode_rsm_first(<<"http://jabber.org/protocol/rsm">>, - __IgnoreEls, _el), - Count, Before, Max, Index); - _ -> - decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After, - Last, First, Count, Before, Max, Index) - end; -decode_rsm_set_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"index">>, _attrs, _} = _el | _els], After, - Last, First, Count, Before, Max, Index) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/rsm">> -> - decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After, - Last, First, Count, Before, Max, - decode_rsm_index(__TopXMLNS, __IgnoreEls, _el)); - <<"http://jabber.org/protocol/rsm">> -> - decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After, - Last, First, Count, Before, Max, - decode_rsm_index(<<"http://jabber.org/protocol/rsm">>, - __IgnoreEls, _el)); - _ -> - decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After, - Last, First, Count, Before, Max, Index) - end; -decode_rsm_set_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"last">>, _attrs, _} = _el | _els], After, - Last, First, Count, Before, Max, Index) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/rsm">> -> - decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After, - decode_rsm_last(__TopXMLNS, __IgnoreEls, _el), - First, Count, Before, Max, Index); - <<"http://jabber.org/protocol/rsm">> -> - decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After, - decode_rsm_last(<<"http://jabber.org/protocol/rsm">>, - __IgnoreEls, _el), - First, Count, Before, Max, Index); - _ -> - decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After, - Last, First, Count, Before, Max, Index) - end; -decode_rsm_set_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"max">>, _attrs, _} = _el | _els], After, - Last, First, Count, Before, Max, Index) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/rsm">> -> - decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After, - Last, First, Count, Before, - decode_rsm_max(__TopXMLNS, __IgnoreEls, _el), - Index); - <<"http://jabber.org/protocol/rsm">> -> - decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After, - Last, First, Count, Before, - decode_rsm_max(<<"http://jabber.org/protocol/rsm">>, - __IgnoreEls, _el), - Index); - _ -> - decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After, - Last, First, Count, Before, Max, Index) - end; -decode_rsm_set_els(__TopXMLNS, __IgnoreEls, [_ | _els], - After, Last, First, Count, Before, Max, Index) -> - decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After, - Last, First, Count, Before, Max, Index). - -encode_rsm_set({rsm_set, After, Before, Count, First, - Index, Last, Max}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/rsm">>, - [], __TopXMLNS), - _els = lists:reverse('encode_rsm_set_$after'(After, - __NewTopXMLNS, - 'encode_rsm_set_$last'(Last, - __NewTopXMLNS, - 'encode_rsm_set_$first'(First, - __NewTopXMLNS, - 'encode_rsm_set_$count'(Count, - __NewTopXMLNS, - 'encode_rsm_set_$before'(Before, - __NewTopXMLNS, - 'encode_rsm_set_$max'(Max, - __NewTopXMLNS, - 'encode_rsm_set_$index'(Index, - __NewTopXMLNS, - [])))))))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"set">>, _attrs, _els}. - -'encode_rsm_set_$after'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_rsm_set_$after'(After, __TopXMLNS, _acc) -> - [encode_rsm_after(After, __TopXMLNS) | _acc]. - -'encode_rsm_set_$last'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_rsm_set_$last'(Last, __TopXMLNS, _acc) -> - [encode_rsm_last(Last, __TopXMLNS) | _acc]. - -'encode_rsm_set_$first'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_rsm_set_$first'(First, __TopXMLNS, _acc) -> - [encode_rsm_first(First, __TopXMLNS) | _acc]. - -'encode_rsm_set_$count'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_rsm_set_$count'(Count, __TopXMLNS, _acc) -> - [encode_rsm_count(Count, __TopXMLNS) | _acc]. - -'encode_rsm_set_$before'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_rsm_set_$before'(Before, __TopXMLNS, _acc) -> - [encode_rsm_before(Before, __TopXMLNS) | _acc]. - -'encode_rsm_set_$max'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_rsm_set_$max'(Max, __TopXMLNS, _acc) -> - [encode_rsm_max(Max, __TopXMLNS) | _acc]. - -'encode_rsm_set_$index'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_rsm_set_$index'(Index, __TopXMLNS, _acc) -> - [encode_rsm_index(Index, __TopXMLNS) | _acc]. - -decode_rsm_first(__TopXMLNS, __IgnoreEls, - {xmlel, <<"first">>, _attrs, _els}) -> - Data = decode_rsm_first_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Index = decode_rsm_first_attrs(__TopXMLNS, _attrs, - undefined), - {rsm_first, Index, Data}. - -decode_rsm_first_els(__TopXMLNS, __IgnoreEls, [], - Data) -> - decode_rsm_first_cdata(__TopXMLNS, Data); -decode_rsm_first_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Data) -> - decode_rsm_first_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_rsm_first_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Data) -> - decode_rsm_first_els(__TopXMLNS, __IgnoreEls, _els, - Data). - -decode_rsm_first_attrs(__TopXMLNS, - [{<<"index">>, _val} | _attrs], _Index) -> - decode_rsm_first_attrs(__TopXMLNS, _attrs, _val); -decode_rsm_first_attrs(__TopXMLNS, [_ | _attrs], - Index) -> - decode_rsm_first_attrs(__TopXMLNS, _attrs, Index); -decode_rsm_first_attrs(__TopXMLNS, [], Index) -> - decode_rsm_first_attr_index(__TopXMLNS, Index). - -encode_rsm_first({rsm_first, Index, Data}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/rsm">>, - [], __TopXMLNS), - _els = encode_rsm_first_cdata(Data, []), - _attrs = encode_rsm_first_attr_index(Index, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"first">>, _attrs, _els}. - -decode_rsm_first_attr_index(__TopXMLNS, undefined) -> - undefined; -decode_rsm_first_attr_index(__TopXMLNS, _val) -> - case catch dec_int(_val, 0, infinity) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"index">>, <<"first">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_rsm_first_attr_index(undefined, _acc) -> _acc; -encode_rsm_first_attr_index(_val, _acc) -> - [{<<"index">>, enc_int(_val)} | _acc]. - -decode_rsm_first_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_rsm_first_cdata(__TopXMLNS, _val) -> _val. - -encode_rsm_first_cdata(<<>>, _acc) -> _acc; -encode_rsm_first_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_rsm_max(__TopXMLNS, __IgnoreEls, - {xmlel, <<"max">>, _attrs, _els}) -> - Cdata = decode_rsm_max_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_rsm_max_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_rsm_max_cdata(__TopXMLNS, Cdata); -decode_rsm_max_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_rsm_max_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_rsm_max_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Cdata) -> - decode_rsm_max_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_rsm_max(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/rsm">>, - [], __TopXMLNS), - _els = encode_rsm_max_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"max">>, _attrs, _els}. - -decode_rsm_max_cdata(__TopXMLNS, <<>>) -> undefined; -decode_rsm_max_cdata(__TopXMLNS, _val) -> - case catch dec_int(_val, 0, infinity) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_cdata_value, <<>>, <<"max">>, __TopXMLNS}}); - _res -> _res - end. - -encode_rsm_max_cdata(undefined, _acc) -> _acc; -encode_rsm_max_cdata(_val, _acc) -> - [{xmlcdata, enc_int(_val)} | _acc]. - -decode_rsm_index(__TopXMLNS, __IgnoreEls, - {xmlel, <<"index">>, _attrs, _els}) -> - Cdata = decode_rsm_index_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_rsm_index_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_rsm_index_cdata(__TopXMLNS, Cdata); -decode_rsm_index_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_rsm_index_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_rsm_index_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_rsm_index_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_rsm_index(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/rsm">>, - [], __TopXMLNS), - _els = encode_rsm_index_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"index">>, _attrs, _els}. - -decode_rsm_index_cdata(__TopXMLNS, <<>>) -> undefined; -decode_rsm_index_cdata(__TopXMLNS, _val) -> - case catch dec_int(_val, 0, infinity) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_cdata_value, <<>>, <<"index">>, __TopXMLNS}}); - _res -> _res - end. - -encode_rsm_index_cdata(undefined, _acc) -> _acc; -encode_rsm_index_cdata(_val, _acc) -> - [{xmlcdata, enc_int(_val)} | _acc]. - -decode_rsm_count(__TopXMLNS, __IgnoreEls, - {xmlel, <<"count">>, _attrs, _els}) -> - Cdata = decode_rsm_count_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_rsm_count_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_rsm_count_cdata(__TopXMLNS, Cdata); -decode_rsm_count_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_rsm_count_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_rsm_count_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_rsm_count_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_rsm_count(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/rsm">>, - [], __TopXMLNS), - _els = encode_rsm_count_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"count">>, _attrs, _els}. - -decode_rsm_count_cdata(__TopXMLNS, <<>>) -> undefined; -decode_rsm_count_cdata(__TopXMLNS, _val) -> - case catch dec_int(_val, 0, infinity) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_cdata_value, <<>>, <<"count">>, __TopXMLNS}}); - _res -> _res - end. - -encode_rsm_count_cdata(undefined, _acc) -> _acc; -encode_rsm_count_cdata(_val, _acc) -> - [{xmlcdata, enc_int(_val)} | _acc]. - -decode_rsm_last(__TopXMLNS, __IgnoreEls, - {xmlel, <<"last">>, _attrs, _els}) -> - Cdata = decode_rsm_last_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_rsm_last_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_rsm_last_cdata(__TopXMLNS, Cdata); -decode_rsm_last_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_rsm_last_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_rsm_last_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Cdata) -> - decode_rsm_last_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_rsm_last(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/rsm">>, - [], __TopXMLNS), - _els = encode_rsm_last_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"last">>, _attrs, _els}. - -decode_rsm_last_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_rsm_last_cdata(__TopXMLNS, _val) -> _val. - -encode_rsm_last_cdata(<<>>, _acc) -> _acc; -encode_rsm_last_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_rsm_before(__TopXMLNS, __IgnoreEls, - {xmlel, <<"before">>, _attrs, _els}) -> - Cdata = decode_rsm_before_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_rsm_before_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_rsm_before_cdata(__TopXMLNS, Cdata); -decode_rsm_before_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_rsm_before_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_rsm_before_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_rsm_before_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_rsm_before(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/rsm">>, - [], __TopXMLNS), - _els = encode_rsm_before_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"before">>, _attrs, _els}. - -decode_rsm_before_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_rsm_before_cdata(__TopXMLNS, _val) -> _val. - -encode_rsm_before_cdata(<<>>, _acc) -> _acc; -encode_rsm_before_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_rsm_after(__TopXMLNS, __IgnoreEls, - {xmlel, <<"after">>, _attrs, _els}) -> - Cdata = decode_rsm_after_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_rsm_after_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_rsm_after_cdata(__TopXMLNS, Cdata); -decode_rsm_after_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_rsm_after_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_rsm_after_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_rsm_after_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_rsm_after(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/rsm">>, - [], __TopXMLNS), - _els = encode_rsm_after_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"after">>, _attrs, _els}. - -decode_rsm_after_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_rsm_after_cdata(__TopXMLNS, _val) -> _val. - -encode_rsm_after_cdata(<<>>, _acc) -> _acc; -encode_rsm_after_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_muc_unsubscribe(__TopXMLNS, __IgnoreEls, - {xmlel, <<"unsubscribe">>, _attrs, _els}) -> - {muc_unsubscribe}. - -encode_muc_unsubscribe({muc_unsubscribe}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:xmpp:mucsub:0">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"unsubscribe">>, _attrs, _els}. - -decode_muc_subscribe(__TopXMLNS, __IgnoreEls, - {xmlel, <<"subscribe">>, _attrs, _els}) -> - Events = decode_muc_subscribe_els(__TopXMLNS, - __IgnoreEls, _els, []), - Nick = decode_muc_subscribe_attrs(__TopXMLNS, _attrs, - undefined), - {muc_subscribe, Nick, Events}. - -decode_muc_subscribe_els(__TopXMLNS, __IgnoreEls, [], - Events) -> - lists:reverse(Events); -decode_muc_subscribe_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"event">>, _attrs, _} = _el | _els], - Events) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"urn:xmpp:mucsub:0">> -> - decode_muc_subscribe_els(__TopXMLNS, __IgnoreEls, _els, - [decode_muc_subscribe_event(__TopXMLNS, - __IgnoreEls, _el) - | Events]); - <<"urn:xmpp:mucsub:0">> -> - decode_muc_subscribe_els(__TopXMLNS, __IgnoreEls, _els, - [decode_muc_subscribe_event(<<"urn:xmpp:mucsub:0">>, - __IgnoreEls, _el) - | Events]); - _ -> - decode_muc_subscribe_els(__TopXMLNS, __IgnoreEls, _els, - Events) - end; -decode_muc_subscribe_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Events) -> - decode_muc_subscribe_els(__TopXMLNS, __IgnoreEls, _els, - Events). - -decode_muc_subscribe_attrs(__TopXMLNS, - [{<<"nick">>, _val} | _attrs], _Nick) -> - decode_muc_subscribe_attrs(__TopXMLNS, _attrs, _val); -decode_muc_subscribe_attrs(__TopXMLNS, [_ | _attrs], - Nick) -> - decode_muc_subscribe_attrs(__TopXMLNS, _attrs, Nick); -decode_muc_subscribe_attrs(__TopXMLNS, [], Nick) -> - decode_muc_subscribe_attr_nick(__TopXMLNS, Nick). - -encode_muc_subscribe({muc_subscribe, Nick, Events}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:xmpp:mucsub:0">>, [], - __TopXMLNS), - _els = - lists:reverse('encode_muc_subscribe_$events'(Events, - __NewTopXMLNS, [])), - _attrs = encode_muc_subscribe_attr_nick(Nick, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"subscribe">>, _attrs, _els}. - -'encode_muc_subscribe_$events'([], __TopXMLNS, _acc) -> - _acc; -'encode_muc_subscribe_$events'([Events | _els], - __TopXMLNS, _acc) -> - 'encode_muc_subscribe_$events'(_els, __TopXMLNS, - [encode_muc_subscribe_event(Events, - __TopXMLNS) - | _acc]). - -decode_muc_subscribe_attr_nick(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"nick">>, <<"subscribe">>, - __TopXMLNS}}); -decode_muc_subscribe_attr_nick(__TopXMLNS, _val) -> - _val. - -encode_muc_subscribe_attr_nick(_val, _acc) -> - [{<<"nick">>, _val} | _acc]. - -decode_muc_subscribe_event(__TopXMLNS, __IgnoreEls, - {xmlel, <<"event">>, _attrs, _els}) -> - Node = decode_muc_subscribe_event_attrs(__TopXMLNS, - _attrs, undefined), - Node. - -decode_muc_subscribe_event_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], _Node) -> - decode_muc_subscribe_event_attrs(__TopXMLNS, _attrs, - _val); -decode_muc_subscribe_event_attrs(__TopXMLNS, - [_ | _attrs], Node) -> - decode_muc_subscribe_event_attrs(__TopXMLNS, _attrs, - Node); -decode_muc_subscribe_event_attrs(__TopXMLNS, [], - Node) -> - decode_muc_subscribe_event_attr_node(__TopXMLNS, Node). - -encode_muc_subscribe_event(Node, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:xmpp:mucsub:0">>, [], - __TopXMLNS), - _els = [], - _attrs = encode_muc_subscribe_event_attr_node(Node, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"event">>, _attrs, _els}. - -decode_muc_subscribe_event_attr_node(__TopXMLNS, - undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"node">>, <<"event">>, __TopXMLNS}}); -decode_muc_subscribe_event_attr_node(__TopXMLNS, - _val) -> - _val. - -encode_muc_subscribe_event_attr_node(_val, _acc) -> - [{<<"node">>, _val} | _acc]. - -decode_muc_subscriptions(__TopXMLNS, __IgnoreEls, - {xmlel, <<"subscriptions">>, _attrs, _els}) -> - List = decode_muc_subscriptions_els(__TopXMLNS, - __IgnoreEls, _els, []), - {muc_subscriptions, List}. - -decode_muc_subscriptions_els(__TopXMLNS, __IgnoreEls, - [], List) -> - lists:reverse(List); -decode_muc_subscriptions_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"subscription">>, _attrs, _} = _el - | _els], - List) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"urn:xmpp:mucsub:0">> -> - decode_muc_subscriptions_els(__TopXMLNS, __IgnoreEls, - _els, - [decode_muc_subscription(__TopXMLNS, - __IgnoreEls, - _el) - | List]); - <<"urn:xmpp:mucsub:0">> -> - decode_muc_subscriptions_els(__TopXMLNS, __IgnoreEls, - _els, - [decode_muc_subscription(<<"urn:xmpp:mucsub:0">>, - __IgnoreEls, - _el) - | List]); - _ -> - decode_muc_subscriptions_els(__TopXMLNS, __IgnoreEls, - _els, List) - end; -decode_muc_subscriptions_els(__TopXMLNS, __IgnoreEls, - [_ | _els], List) -> - decode_muc_subscriptions_els(__TopXMLNS, __IgnoreEls, - _els, List). - -encode_muc_subscriptions({muc_subscriptions, List}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:xmpp:mucsub:0">>, [], - __TopXMLNS), - _els = - lists:reverse('encode_muc_subscriptions_$list'(List, - __NewTopXMLNS, [])), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"subscriptions">>, _attrs, _els}. - -'encode_muc_subscriptions_$list'([], __TopXMLNS, - _acc) -> - _acc; -'encode_muc_subscriptions_$list'([List | _els], - __TopXMLNS, _acc) -> - 'encode_muc_subscriptions_$list'(_els, __TopXMLNS, - [encode_muc_subscription(List, __TopXMLNS) - | _acc]). - -decode_muc_subscription(__TopXMLNS, __IgnoreEls, - {xmlel, <<"subscription">>, _attrs, _els}) -> - Jid = decode_muc_subscription_attrs(__TopXMLNS, _attrs, - undefined), - Jid. - -decode_muc_subscription_attrs(__TopXMLNS, - [{<<"jid">>, _val} | _attrs], _Jid) -> - decode_muc_subscription_attrs(__TopXMLNS, _attrs, _val); -decode_muc_subscription_attrs(__TopXMLNS, [_ | _attrs], - Jid) -> - decode_muc_subscription_attrs(__TopXMLNS, _attrs, Jid); -decode_muc_subscription_attrs(__TopXMLNS, [], Jid) -> - decode_muc_subscription_attr_jid(__TopXMLNS, Jid). - -encode_muc_subscription(Jid, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:xmpp:mucsub:0">>, [], - __TopXMLNS), - _els = [], - _attrs = encode_muc_subscription_attr_jid(Jid, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"subscription">>, _attrs, _els}. - -decode_muc_subscription_attr_jid(__TopXMLNS, - undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"jid">>, <<"subscription">>, - __TopXMLNS}}); -decode_muc_subscription_attr_jid(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"jid">>, <<"subscription">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_muc_subscription_attr_jid(_val, _acc) -> - [{<<"jid">>, enc_jid(_val)} | _acc]. - -decode_x_conference(__TopXMLNS, __IgnoreEls, - {xmlel, <<"x">>, _attrs, _els}) -> - {Jid, Password, Reason, Thread, Continue} = - decode_x_conference_attrs(__TopXMLNS, _attrs, undefined, - undefined, undefined, undefined, undefined), - {x_conference, Jid, Password, Reason, Continue, Thread}. - -decode_x_conference_attrs(__TopXMLNS, - [{<<"jid">>, _val} | _attrs], _Jid, Password, Reason, - Thread, Continue) -> - decode_x_conference_attrs(__TopXMLNS, _attrs, _val, - Password, Reason, Thread, Continue); -decode_x_conference_attrs(__TopXMLNS, - [{<<"password">>, _val} | _attrs], Jid, _Password, - Reason, Thread, Continue) -> - decode_x_conference_attrs(__TopXMLNS, _attrs, Jid, _val, - Reason, Thread, Continue); -decode_x_conference_attrs(__TopXMLNS, - [{<<"reason">>, _val} | _attrs], Jid, Password, - _Reason, Thread, Continue) -> - decode_x_conference_attrs(__TopXMLNS, _attrs, Jid, - Password, _val, Thread, Continue); -decode_x_conference_attrs(__TopXMLNS, - [{<<"thread">>, _val} | _attrs], Jid, Password, - Reason, _Thread, Continue) -> - decode_x_conference_attrs(__TopXMLNS, _attrs, Jid, - Password, Reason, _val, Continue); -decode_x_conference_attrs(__TopXMLNS, - [{<<"continue">>, _val} | _attrs], Jid, Password, - Reason, Thread, _Continue) -> - decode_x_conference_attrs(__TopXMLNS, _attrs, Jid, - Password, Reason, Thread, _val); -decode_x_conference_attrs(__TopXMLNS, [_ | _attrs], Jid, - Password, Reason, Thread, Continue) -> - decode_x_conference_attrs(__TopXMLNS, _attrs, Jid, - Password, Reason, Thread, Continue); -decode_x_conference_attrs(__TopXMLNS, [], Jid, Password, - Reason, Thread, Continue) -> - {decode_x_conference_attr_jid(__TopXMLNS, Jid), - decode_x_conference_attr_password(__TopXMLNS, Password), - decode_x_conference_attr_reason(__TopXMLNS, Reason), - decode_x_conference_attr_thread(__TopXMLNS, Thread), - decode_x_conference_attr_continue(__TopXMLNS, - Continue)}. - -encode_x_conference({x_conference, Jid, Password, - Reason, Continue, Thread}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:x:conference">>, [], - __TopXMLNS), - _els = [], - _attrs = encode_x_conference_attr_continue(Continue, - encode_x_conference_attr_thread(Thread, - encode_x_conference_attr_reason(Reason, - encode_x_conference_attr_password(Password, - encode_x_conference_attr_jid(Jid, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)))))), - {xmlel, <<"x">>, _attrs, _els}. - -decode_x_conference_attr_jid(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"jid">>, <<"x">>, __TopXMLNS}}); -decode_x_conference_attr_jid(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"jid">>, <<"x">>, __TopXMLNS}}); - _res -> _res - end. - -encode_x_conference_attr_jid(_val, _acc) -> - [{<<"jid">>, enc_jid(_val)} | _acc]. - -decode_x_conference_attr_password(__TopXMLNS, - undefined) -> - <<>>; -decode_x_conference_attr_password(__TopXMLNS, _val) -> - _val. - -encode_x_conference_attr_password(<<>>, _acc) -> _acc; -encode_x_conference_attr_password(_val, _acc) -> - [{<<"password">>, _val} | _acc]. - -decode_x_conference_attr_reason(__TopXMLNS, - undefined) -> - <<>>; -decode_x_conference_attr_reason(__TopXMLNS, _val) -> - _val. - -encode_x_conference_attr_reason(<<>>, _acc) -> _acc; -encode_x_conference_attr_reason(_val, _acc) -> - [{<<"reason">>, _val} | _acc]. - -decode_x_conference_attr_thread(__TopXMLNS, - undefined) -> - <<>>; -decode_x_conference_attr_thread(__TopXMLNS, _val) -> - _val. - -encode_x_conference_attr_thread(<<>>, _acc) -> _acc; -encode_x_conference_attr_thread(_val, _acc) -> - [{<<"thread">>, _val} | _acc]. - -decode_x_conference_attr_continue(__TopXMLNS, - undefined) -> - undefined; -decode_x_conference_attr_continue(__TopXMLNS, _val) -> - case catch dec_bool(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"continue">>, <<"x">>, __TopXMLNS}}); - _res -> _res - end. - -encode_x_conference_attr_continue(undefined, _acc) -> - _acc; -encode_x_conference_attr_continue(_val, _acc) -> - [{<<"continue">>, enc_bool(_val)} | _acc]. - -decode_muc_unique(__TopXMLNS, __IgnoreEls, - {xmlel, <<"unique">>, _attrs, _els}) -> - Name = decode_muc_unique_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - {muc_unique, Name}. - -decode_muc_unique_els(__TopXMLNS, __IgnoreEls, [], - Name) -> - decode_muc_unique_cdata(__TopXMLNS, Name); -decode_muc_unique_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Name) -> - decode_muc_unique_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_muc_unique_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Name) -> - decode_muc_unique_els(__TopXMLNS, __IgnoreEls, _els, - Name). - -encode_muc_unique({muc_unique, Name}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/muc#unique">>, - [], __TopXMLNS), - _els = encode_muc_unique_cdata(Name, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"unique">>, _attrs, _els}. - -decode_muc_unique_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_muc_unique_cdata(__TopXMLNS, _val) -> _val. - -encode_muc_unique_cdata(<<>>, _acc) -> _acc; -encode_muc_unique_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_muc(__TopXMLNS, __IgnoreEls, - {xmlel, <<"x">>, _attrs, _els}) -> - {Password, History} = decode_muc_els(__TopXMLNS, - __IgnoreEls, _els, undefined, - undefined), - {muc, History, Password}. - -decode_muc_els(__TopXMLNS, __IgnoreEls, [], Password, - History) -> - {Password, History}; -decode_muc_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"history">>, _attrs, _} = _el | _els], - Password, History) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/muc">> -> - decode_muc_els(__TopXMLNS, __IgnoreEls, _els, Password, - decode_muc_history(__TopXMLNS, __IgnoreEls, _el)); - <<"http://jabber.org/protocol/muc">> -> - decode_muc_els(__TopXMLNS, __IgnoreEls, _els, Password, - decode_muc_history(<<"http://jabber.org/protocol/muc">>, - __IgnoreEls, _el)); - _ -> - decode_muc_els(__TopXMLNS, __IgnoreEls, _els, Password, - History) - end; -decode_muc_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"password">>, _attrs, _} = _el | _els], - Password, History) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/muc">> -> - decode_muc_els(__TopXMLNS, __IgnoreEls, _els, - decode_muc_password(__TopXMLNS, __IgnoreEls, _el), - History); - <<"http://jabber.org/protocol/muc#owner">> -> - decode_muc_els(__TopXMLNS, __IgnoreEls, _els, - decode_muc_password(<<"http://jabber.org/protocol/muc#owner">>, - __IgnoreEls, _el), - History); - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_els(__TopXMLNS, __IgnoreEls, _els, - decode_muc_password(<<"http://jabber.org/protocol/muc#user">>, - __IgnoreEls, _el), - History); - <<"http://jabber.org/protocol/muc">> -> - decode_muc_els(__TopXMLNS, __IgnoreEls, _els, - decode_muc_password(<<"http://jabber.org/protocol/muc">>, - __IgnoreEls, _el), - History); - _ -> - decode_muc_els(__TopXMLNS, __IgnoreEls, _els, Password, - History) - end; -decode_muc_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Password, History) -> - decode_muc_els(__TopXMLNS, __IgnoreEls, _els, Password, - History). - -encode_muc({muc, History, Password}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/muc">>, - [], __TopXMLNS), - _els = lists:reverse('encode_muc_$password'(Password, - __NewTopXMLNS, - 'encode_muc_$history'(History, - __NewTopXMLNS, - []))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"x">>, _attrs, _els}. - -'encode_muc_$password'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_muc_$password'(Password, __TopXMLNS, _acc) -> - [encode_muc_password(Password, __TopXMLNS) | _acc]. - -'encode_muc_$history'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_muc_$history'(History, __TopXMLNS, _acc) -> - [encode_muc_history(History, __TopXMLNS) | _acc]. - -decode_muc_admin(__TopXMLNS, __IgnoreEls, - {xmlel, <<"query">>, _attrs, _els}) -> - Items = decode_muc_admin_els(__TopXMLNS, __IgnoreEls, - _els, []), - {muc_admin, Items}. - -decode_muc_admin_els(__TopXMLNS, __IgnoreEls, [], - Items) -> - lists:reverse(Items); -decode_muc_admin_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"item">>, _attrs, _} = _el | _els], Items) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/muc#admin">> -> - decode_muc_admin_els(__TopXMLNS, __IgnoreEls, _els, - [decode_muc_admin_item(__TopXMLNS, __IgnoreEls, - _el) - | Items]); - <<"http://jabber.org/protocol/muc#admin">> -> - decode_muc_admin_els(__TopXMLNS, __IgnoreEls, _els, - [decode_muc_admin_item(<<"http://jabber.org/protocol/muc#admin">>, - __IgnoreEls, _el) - | Items]); - _ -> - decode_muc_admin_els(__TopXMLNS, __IgnoreEls, _els, - Items) - end; -decode_muc_admin_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Items) -> - decode_muc_admin_els(__TopXMLNS, __IgnoreEls, _els, - Items). - -encode_muc_admin({muc_admin, Items}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/muc#admin">>, - [], __TopXMLNS), - _els = lists:reverse('encode_muc_admin_$items'(Items, - __NewTopXMLNS, [])), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"query">>, _attrs, _els}. - -'encode_muc_admin_$items'([], __TopXMLNS, _acc) -> _acc; -'encode_muc_admin_$items'([Items | _els], __TopXMLNS, - _acc) -> - 'encode_muc_admin_$items'(_els, __TopXMLNS, - [encode_muc_admin_item(Items, __TopXMLNS) - | _acc]). - -decode_muc_admin_continue(__TopXMLNS, __IgnoreEls, - {xmlel, <<"continue">>, _attrs, _els}) -> - Thread = decode_muc_admin_continue_attrs(__TopXMLNS, - _attrs, undefined), - Thread. - -decode_muc_admin_continue_attrs(__TopXMLNS, - [{<<"thread">>, _val} | _attrs], _Thread) -> - decode_muc_admin_continue_attrs(__TopXMLNS, _attrs, - _val); -decode_muc_admin_continue_attrs(__TopXMLNS, - [_ | _attrs], Thread) -> - decode_muc_admin_continue_attrs(__TopXMLNS, _attrs, - Thread); -decode_muc_admin_continue_attrs(__TopXMLNS, [], - Thread) -> - decode_muc_admin_continue_attr_thread(__TopXMLNS, - Thread). - -encode_muc_admin_continue(Thread, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/muc#admin">>, - [], __TopXMLNS), - _els = [], - _attrs = encode_muc_admin_continue_attr_thread(Thread, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"continue">>, _attrs, _els}. - -decode_muc_admin_continue_attr_thread(__TopXMLNS, - undefined) -> - <<>>; -decode_muc_admin_continue_attr_thread(__TopXMLNS, - _val) -> - _val. - -encode_muc_admin_continue_attr_thread(<<>>, _acc) -> - _acc; -encode_muc_admin_continue_attr_thread(_val, _acc) -> - [{<<"thread">>, _val} | _acc]. - -decode_muc_admin_actor(__TopXMLNS, __IgnoreEls, - {xmlel, <<"actor">>, _attrs, _els}) -> - {Jid, Nick} = decode_muc_admin_actor_attrs(__TopXMLNS, - _attrs, undefined, undefined), - {muc_actor, Jid, Nick}. - -decode_muc_admin_actor_attrs(__TopXMLNS, - [{<<"jid">>, _val} | _attrs], _Jid, Nick) -> - decode_muc_admin_actor_attrs(__TopXMLNS, _attrs, _val, - Nick); -decode_muc_admin_actor_attrs(__TopXMLNS, - [{<<"nick">>, _val} | _attrs], Jid, _Nick) -> - decode_muc_admin_actor_attrs(__TopXMLNS, _attrs, Jid, - _val); -decode_muc_admin_actor_attrs(__TopXMLNS, [_ | _attrs], - Jid, Nick) -> - decode_muc_admin_actor_attrs(__TopXMLNS, _attrs, Jid, - Nick); -decode_muc_admin_actor_attrs(__TopXMLNS, [], Jid, - Nick) -> - {decode_muc_admin_actor_attr_jid(__TopXMLNS, Jid), - decode_muc_admin_actor_attr_nick(__TopXMLNS, Nick)}. - -encode_muc_admin_actor({muc_actor, Jid, Nick}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/muc#admin">>, - [], __TopXMLNS), - _els = [], - _attrs = encode_muc_admin_actor_attr_nick(Nick, - encode_muc_admin_actor_attr_jid(Jid, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))), - {xmlel, <<"actor">>, _attrs, _els}. - -decode_muc_admin_actor_attr_jid(__TopXMLNS, - undefined) -> - undefined; -decode_muc_admin_actor_attr_jid(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"jid">>, <<"actor">>, __TopXMLNS}}); - _res -> _res - end. - -encode_muc_admin_actor_attr_jid(undefined, _acc) -> - _acc; -encode_muc_admin_actor_attr_jid(_val, _acc) -> - [{<<"jid">>, enc_jid(_val)} | _acc]. - -decode_muc_admin_actor_attr_nick(__TopXMLNS, - undefined) -> - <<>>; -decode_muc_admin_actor_attr_nick(__TopXMLNS, _val) -> - _val. - -encode_muc_admin_actor_attr_nick(<<>>, _acc) -> _acc; -encode_muc_admin_actor_attr_nick(_val, _acc) -> - [{<<"nick">>, _val} | _acc]. - -decode_muc_admin_item(__TopXMLNS, __IgnoreEls, - {xmlel, <<"item">>, _attrs, _els}) -> - {Actor, Continue, Reason} = - decode_muc_admin_item_els(__TopXMLNS, __IgnoreEls, _els, - undefined, undefined, <<>>), - {Affiliation, Role, Jid, Nick} = - decode_muc_admin_item_attrs(__TopXMLNS, _attrs, - undefined, undefined, undefined, undefined), - {muc_item, Actor, Continue, Reason, Affiliation, Role, - Jid, Nick}. - -decode_muc_admin_item_els(__TopXMLNS, __IgnoreEls, [], - Actor, Continue, Reason) -> - {Actor, Continue, Reason}; -decode_muc_admin_item_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"actor">>, _attrs, _} = _el | _els], Actor, - Continue, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/muc#admin">> -> - decode_muc_admin_item_els(__TopXMLNS, __IgnoreEls, _els, - decode_muc_admin_actor(__TopXMLNS, - __IgnoreEls, _el), - Continue, Reason); - <<"http://jabber.org/protocol/muc#admin">> -> - decode_muc_admin_item_els(__TopXMLNS, __IgnoreEls, _els, - decode_muc_admin_actor(<<"http://jabber.org/protocol/muc#admin">>, - __IgnoreEls, _el), - Continue, Reason); - _ -> - decode_muc_admin_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, Continue, Reason) - end; -decode_muc_admin_item_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"continue">>, _attrs, _} = _el | _els], - Actor, Continue, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/muc#admin">> -> - decode_muc_admin_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, - decode_muc_admin_continue(__TopXMLNS, - __IgnoreEls, _el), - Reason); - <<"http://jabber.org/protocol/muc#admin">> -> - decode_muc_admin_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, - decode_muc_admin_continue(<<"http://jabber.org/protocol/muc#admin">>, - __IgnoreEls, _el), - Reason); - _ -> - decode_muc_admin_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, Continue, Reason) - end; -decode_muc_admin_item_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"reason">>, _attrs, _} = _el | _els], - Actor, Continue, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/muc#admin">> -> - decode_muc_admin_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, Continue, - decode_muc_reason(__TopXMLNS, __IgnoreEls, - _el)); - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_admin_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, Continue, - decode_muc_reason(<<"http://jabber.org/protocol/muc#user">>, - __IgnoreEls, _el)); - <<"http://jabber.org/protocol/muc#admin">> -> - decode_muc_admin_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, Continue, - decode_muc_reason(<<"http://jabber.org/protocol/muc#admin">>, - __IgnoreEls, _el)); - <<"http://jabber.org/protocol/muc#owner">> -> - decode_muc_admin_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, Continue, - decode_muc_reason(<<"http://jabber.org/protocol/muc#owner">>, - __IgnoreEls, _el)); - _ -> - decode_muc_admin_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, Continue, Reason) - end; -decode_muc_admin_item_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Actor, Continue, Reason) -> - decode_muc_admin_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, Continue, Reason). - -decode_muc_admin_item_attrs(__TopXMLNS, - [{<<"affiliation">>, _val} | _attrs], _Affiliation, - Role, Jid, Nick) -> - decode_muc_admin_item_attrs(__TopXMLNS, _attrs, _val, - Role, Jid, Nick); -decode_muc_admin_item_attrs(__TopXMLNS, - [{<<"role">>, _val} | _attrs], Affiliation, _Role, - Jid, Nick) -> - decode_muc_admin_item_attrs(__TopXMLNS, _attrs, - Affiliation, _val, Jid, Nick); -decode_muc_admin_item_attrs(__TopXMLNS, - [{<<"jid">>, _val} | _attrs], Affiliation, Role, - _Jid, Nick) -> - decode_muc_admin_item_attrs(__TopXMLNS, _attrs, - Affiliation, Role, _val, Nick); -decode_muc_admin_item_attrs(__TopXMLNS, - [{<<"nick">>, _val} | _attrs], Affiliation, Role, - Jid, _Nick) -> - decode_muc_admin_item_attrs(__TopXMLNS, _attrs, - Affiliation, Role, Jid, _val); -decode_muc_admin_item_attrs(__TopXMLNS, [_ | _attrs], - Affiliation, Role, Jid, Nick) -> - decode_muc_admin_item_attrs(__TopXMLNS, _attrs, - Affiliation, Role, Jid, Nick); -decode_muc_admin_item_attrs(__TopXMLNS, [], Affiliation, - Role, Jid, Nick) -> - {decode_muc_admin_item_attr_affiliation(__TopXMLNS, - Affiliation), - decode_muc_admin_item_attr_role(__TopXMLNS, Role), - decode_muc_admin_item_attr_jid(__TopXMLNS, Jid), - decode_muc_admin_item_attr_nick(__TopXMLNS, Nick)}. - -encode_muc_admin_item({muc_item, Actor, Continue, - Reason, Affiliation, Role, Jid, Nick}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/muc#admin">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_muc_admin_item_$actor'(Actor, - __NewTopXMLNS, - 'encode_muc_admin_item_$continue'(Continue, - __NewTopXMLNS, - 'encode_muc_admin_item_$reason'(Reason, - __NewTopXMLNS, - [])))), - _attrs = encode_muc_admin_item_attr_nick(Nick, - encode_muc_admin_item_attr_jid(Jid, - encode_muc_admin_item_attr_role(Role, - encode_muc_admin_item_attr_affiliation(Affiliation, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))))), - {xmlel, <<"item">>, _attrs, _els}. - -'encode_muc_admin_item_$actor'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_muc_admin_item_$actor'(Actor, __TopXMLNS, - _acc) -> - [encode_muc_admin_actor(Actor, __TopXMLNS) | _acc]. - -'encode_muc_admin_item_$continue'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_muc_admin_item_$continue'(Continue, __TopXMLNS, - _acc) -> - [encode_muc_admin_continue(Continue, __TopXMLNS) - | _acc]. - -'encode_muc_admin_item_$reason'(<<>>, __TopXMLNS, - _acc) -> - _acc; -'encode_muc_admin_item_$reason'(Reason, __TopXMLNS, - _acc) -> - [encode_muc_reason(Reason, __TopXMLNS) | _acc]. - -decode_muc_admin_item_attr_affiliation(__TopXMLNS, - undefined) -> - undefined; -decode_muc_admin_item_attr_affiliation(__TopXMLNS, - _val) -> - case catch dec_enum(_val, - [admin, member, none, outcast, owner]) - of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"affiliation">>, <<"item">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_muc_admin_item_attr_affiliation(undefined, - _acc) -> - _acc; -encode_muc_admin_item_attr_affiliation(_val, _acc) -> - [{<<"affiliation">>, enc_enum(_val)} | _acc]. - -decode_muc_admin_item_attr_role(__TopXMLNS, - undefined) -> - undefined; -decode_muc_admin_item_attr_role(__TopXMLNS, _val) -> - case catch dec_enum(_val, - [moderator, none, participant, visitor]) - of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"role">>, <<"item">>, __TopXMLNS}}); - _res -> _res - end. - -encode_muc_admin_item_attr_role(undefined, _acc) -> - _acc; -encode_muc_admin_item_attr_role(_val, _acc) -> - [{<<"role">>, enc_enum(_val)} | _acc]. - -decode_muc_admin_item_attr_jid(__TopXMLNS, undefined) -> - undefined; -decode_muc_admin_item_attr_jid(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"jid">>, <<"item">>, __TopXMLNS}}); - _res -> _res - end. - -encode_muc_admin_item_attr_jid(undefined, _acc) -> _acc; -encode_muc_admin_item_attr_jid(_val, _acc) -> - [{<<"jid">>, enc_jid(_val)} | _acc]. - -decode_muc_admin_item_attr_nick(__TopXMLNS, - undefined) -> - <<>>; -decode_muc_admin_item_attr_nick(__TopXMLNS, _val) -> - _val. - -encode_muc_admin_item_attr_nick(<<>>, _acc) -> _acc; -encode_muc_admin_item_attr_nick(_val, _acc) -> - [{<<"nick">>, _val} | _acc]. - -decode_muc_owner_item(__TopXMLNS, __IgnoreEls, - {xmlel, <<"item">>, _attrs, _els}) -> - {Actor, Continue, Reason} = - decode_muc_owner_item_els(__TopXMLNS, __IgnoreEls, _els, - undefined, undefined, <<>>), - {Affiliation, Role, Jid, Nick} = - decode_muc_owner_item_attrs(__TopXMLNS, _attrs, - undefined, undefined, undefined, undefined), - {muc_item, Actor, Continue, Reason, Affiliation, Role, - Jid, Nick}. - -decode_muc_owner_item_els(__TopXMLNS, __IgnoreEls, [], - Actor, Continue, Reason) -> - {Actor, Continue, Reason}; -decode_muc_owner_item_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"actor">>, _attrs, _} = _el | _els], Actor, - Continue, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"http://jabber.org/protocol/muc#admin">> -> - decode_muc_owner_item_els(__TopXMLNS, __IgnoreEls, _els, - decode_muc_admin_actor(<<"http://jabber.org/protocol/muc#admin">>, - __IgnoreEls, _el), - Continue, Reason); - _ -> - decode_muc_owner_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, Continue, Reason) - end; -decode_muc_owner_item_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"continue">>, _attrs, _} = _el | _els], - Actor, Continue, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"http://jabber.org/protocol/muc#admin">> -> - decode_muc_owner_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, - decode_muc_admin_continue(<<"http://jabber.org/protocol/muc#admin">>, - __IgnoreEls, _el), - Reason); - _ -> - decode_muc_owner_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, Continue, Reason) - end; -decode_muc_owner_item_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"reason">>, _attrs, _} = _el | _els], - Actor, Continue, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/muc#owner">> -> - decode_muc_owner_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, Continue, - decode_muc_reason(__TopXMLNS, __IgnoreEls, - _el)); - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_owner_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, Continue, - decode_muc_reason(<<"http://jabber.org/protocol/muc#user">>, - __IgnoreEls, _el)); - <<"http://jabber.org/protocol/muc#admin">> -> - decode_muc_owner_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, Continue, - decode_muc_reason(<<"http://jabber.org/protocol/muc#admin">>, - __IgnoreEls, _el)); - <<"http://jabber.org/protocol/muc#owner">> -> - decode_muc_owner_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, Continue, - decode_muc_reason(<<"http://jabber.org/protocol/muc#owner">>, - __IgnoreEls, _el)); - _ -> - decode_muc_owner_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, Continue, Reason) - end; -decode_muc_owner_item_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Actor, Continue, Reason) -> - decode_muc_owner_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, Continue, Reason). - -decode_muc_owner_item_attrs(__TopXMLNS, - [{<<"affiliation">>, _val} | _attrs], _Affiliation, - Role, Jid, Nick) -> - decode_muc_owner_item_attrs(__TopXMLNS, _attrs, _val, - Role, Jid, Nick); -decode_muc_owner_item_attrs(__TopXMLNS, - [{<<"role">>, _val} | _attrs], Affiliation, _Role, - Jid, Nick) -> - decode_muc_owner_item_attrs(__TopXMLNS, _attrs, - Affiliation, _val, Jid, Nick); -decode_muc_owner_item_attrs(__TopXMLNS, - [{<<"jid">>, _val} | _attrs], Affiliation, Role, - _Jid, Nick) -> - decode_muc_owner_item_attrs(__TopXMLNS, _attrs, - Affiliation, Role, _val, Nick); -decode_muc_owner_item_attrs(__TopXMLNS, - [{<<"nick">>, _val} | _attrs], Affiliation, Role, - Jid, _Nick) -> - decode_muc_owner_item_attrs(__TopXMLNS, _attrs, - Affiliation, Role, Jid, _val); -decode_muc_owner_item_attrs(__TopXMLNS, [_ | _attrs], - Affiliation, Role, Jid, Nick) -> - decode_muc_owner_item_attrs(__TopXMLNS, _attrs, - Affiliation, Role, Jid, Nick); -decode_muc_owner_item_attrs(__TopXMLNS, [], Affiliation, - Role, Jid, Nick) -> - {decode_muc_owner_item_attr_affiliation(__TopXMLNS, - Affiliation), - decode_muc_owner_item_attr_role(__TopXMLNS, Role), - decode_muc_owner_item_attr_jid(__TopXMLNS, Jid), - decode_muc_owner_item_attr_nick(__TopXMLNS, Nick)}. - -encode_muc_owner_item({muc_item, Actor, Continue, - Reason, Affiliation, Role, Jid, Nick}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/muc#owner">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_muc_owner_item_$actor'(Actor, - __NewTopXMLNS, - 'encode_muc_owner_item_$continue'(Continue, - __NewTopXMLNS, - 'encode_muc_owner_item_$reason'(Reason, - __NewTopXMLNS, - [])))), - _attrs = encode_muc_owner_item_attr_nick(Nick, - encode_muc_owner_item_attr_jid(Jid, - encode_muc_owner_item_attr_role(Role, - encode_muc_owner_item_attr_affiliation(Affiliation, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))))), - {xmlel, <<"item">>, _attrs, _els}. - -'encode_muc_owner_item_$actor'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_muc_owner_item_$actor'(Actor, __TopXMLNS, - _acc) -> - [encode_muc_admin_actor(Actor, __TopXMLNS) | _acc]. - -'encode_muc_owner_item_$continue'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_muc_owner_item_$continue'(Continue, __TopXMLNS, - _acc) -> - [encode_muc_admin_continue(Continue, __TopXMLNS) - | _acc]. - -'encode_muc_owner_item_$reason'(<<>>, __TopXMLNS, - _acc) -> - _acc; -'encode_muc_owner_item_$reason'(Reason, __TopXMLNS, - _acc) -> - [encode_muc_reason(Reason, __TopXMLNS) | _acc]. - -decode_muc_owner_item_attr_affiliation(__TopXMLNS, - undefined) -> - undefined; -decode_muc_owner_item_attr_affiliation(__TopXMLNS, - _val) -> - case catch dec_enum(_val, - [admin, member, none, outcast, owner]) - of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"affiliation">>, <<"item">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_muc_owner_item_attr_affiliation(undefined, - _acc) -> - _acc; -encode_muc_owner_item_attr_affiliation(_val, _acc) -> - [{<<"affiliation">>, enc_enum(_val)} | _acc]. - -decode_muc_owner_item_attr_role(__TopXMLNS, - undefined) -> - undefined; -decode_muc_owner_item_attr_role(__TopXMLNS, _val) -> - case catch dec_enum(_val, - [moderator, none, participant, visitor]) - of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"role">>, <<"item">>, __TopXMLNS}}); - _res -> _res - end. - -encode_muc_owner_item_attr_role(undefined, _acc) -> - _acc; -encode_muc_owner_item_attr_role(_val, _acc) -> - [{<<"role">>, enc_enum(_val)} | _acc]. - -decode_muc_owner_item_attr_jid(__TopXMLNS, undefined) -> - undefined; -decode_muc_owner_item_attr_jid(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"jid">>, <<"item">>, __TopXMLNS}}); - _res -> _res - end. - -encode_muc_owner_item_attr_jid(undefined, _acc) -> _acc; -encode_muc_owner_item_attr_jid(_val, _acc) -> - [{<<"jid">>, enc_jid(_val)} | _acc]. - -decode_muc_owner_item_attr_nick(__TopXMLNS, - undefined) -> - <<>>; -decode_muc_owner_item_attr_nick(__TopXMLNS, _val) -> - _val. - -encode_muc_owner_item_attr_nick(<<>>, _acc) -> _acc; -encode_muc_owner_item_attr_nick(_val, _acc) -> - [{<<"nick">>, _val} | _acc]. - -decode_muc_owner(__TopXMLNS, __IgnoreEls, - {xmlel, <<"query">>, _attrs, _els}) -> - {Items, Config, Destroy} = - decode_muc_owner_els(__TopXMLNS, __IgnoreEls, _els, [], - undefined, undefined), - {muc_owner, Destroy, Config, Items}. - -decode_muc_owner_els(__TopXMLNS, __IgnoreEls, [], Items, - Config, Destroy) -> - {lists:reverse(Items), Config, Destroy}; -decode_muc_owner_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"destroy">>, _attrs, _} = _el | _els], Items, - Config, Destroy) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/muc#owner">> -> - decode_muc_owner_els(__TopXMLNS, __IgnoreEls, _els, - Items, Config, - decode_muc_destroy(__TopXMLNS, __IgnoreEls, - _el)); - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_owner_els(__TopXMLNS, __IgnoreEls, _els, - Items, Config, - decode_muc_destroy(<<"http://jabber.org/protocol/muc#user">>, - __IgnoreEls, _el)); - <<"http://jabber.org/protocol/muc#owner">> -> - decode_muc_owner_els(__TopXMLNS, __IgnoreEls, _els, - Items, Config, - decode_muc_destroy(<<"http://jabber.org/protocol/muc#owner">>, - __IgnoreEls, _el)); - _ -> - decode_muc_owner_els(__TopXMLNS, __IgnoreEls, _els, - Items, Config, Destroy) - end; -decode_muc_owner_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"x">>, _attrs, _} = _el | _els], Items, - Config, Destroy) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"jabber:x:data">> -> - decode_muc_owner_els(__TopXMLNS, __IgnoreEls, _els, - Items, - decode_xdata(<<"jabber:x:data">>, __IgnoreEls, - _el), - Destroy); - _ -> - decode_muc_owner_els(__TopXMLNS, __IgnoreEls, _els, - Items, Config, Destroy) - end; -decode_muc_owner_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"item">>, _attrs, _} = _el | _els], Items, - Config, Destroy) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/muc#owner">> -> - decode_muc_owner_els(__TopXMLNS, __IgnoreEls, _els, - [decode_muc_owner_item(__TopXMLNS, __IgnoreEls, - _el) - | Items], - Config, Destroy); - <<"http://jabber.org/protocol/muc#owner">> -> - decode_muc_owner_els(__TopXMLNS, __IgnoreEls, _els, - [decode_muc_owner_item(<<"http://jabber.org/protocol/muc#owner">>, - __IgnoreEls, _el) - | Items], - Config, Destroy); - _ -> - decode_muc_owner_els(__TopXMLNS, __IgnoreEls, _els, - Items, Config, Destroy) - end; -decode_muc_owner_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Items, Config, Destroy) -> - decode_muc_owner_els(__TopXMLNS, __IgnoreEls, _els, - Items, Config, Destroy). - -encode_muc_owner({muc_owner, Destroy, Config, Items}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/muc#owner">>, - [], __TopXMLNS), - _els = lists:reverse('encode_muc_owner_$items'(Items, - __NewTopXMLNS, - 'encode_muc_owner_$config'(Config, - __NewTopXMLNS, - 'encode_muc_owner_$destroy'(Destroy, - __NewTopXMLNS, - [])))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"query">>, _attrs, _els}. - -'encode_muc_owner_$items'([], __TopXMLNS, _acc) -> _acc; -'encode_muc_owner_$items'([Items | _els], __TopXMLNS, - _acc) -> - 'encode_muc_owner_$items'(_els, __TopXMLNS, - [encode_muc_owner_item(Items, __TopXMLNS) - | _acc]). - -'encode_muc_owner_$config'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_muc_owner_$config'(Config, __TopXMLNS, _acc) -> - [encode_xdata(Config, __TopXMLNS) | _acc]. - -'encode_muc_owner_$destroy'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_muc_owner_$destroy'(Destroy, __TopXMLNS, - _acc) -> - [encode_muc_destroy(Destroy, __TopXMLNS) | _acc]. - -decode_muc_password(__TopXMLNS, __IgnoreEls, - {xmlel, <<"password">>, _attrs, _els}) -> - Cdata = decode_muc_password_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_muc_password_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_muc_password_cdata(__TopXMLNS, Cdata); -decode_muc_password_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_muc_password_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_muc_password_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_muc_password_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_muc_password(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"http://jabber.org/protocol/muc#owner">>, - <<"http://jabber.org/protocol/muc#user">>, - <<"http://jabber.org/protocol/muc">>], - __TopXMLNS), - _els = encode_muc_password_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"password">>, _attrs, _els}. - -decode_muc_password_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_muc_password_cdata(__TopXMLNS, _val) -> _val. - -encode_muc_password_cdata(<<>>, _acc) -> _acc; -encode_muc_password_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_muc_user(__TopXMLNS, __IgnoreEls, - {xmlel, <<"x">>, _attrs, _els}) -> - {Status_codes, Items, Invites, Password, Decline, - Destroy} = - decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els, [], - [], [], undefined, undefined, undefined), - {muc_user, Decline, Destroy, Invites, Items, - Status_codes, Password}. - -decode_muc_user_els(__TopXMLNS, __IgnoreEls, [], - Status_codes, Items, Invites, Password, Decline, - Destroy) -> - {lists:reverse(Status_codes), lists:reverse(Items), - lists:reverse(Invites), Password, Decline, Destroy}; -decode_muc_user_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"decline">>, _attrs, _} = _el | _els], - Status_codes, Items, Invites, Password, Decline, - Destroy) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els, - Status_codes, Items, Invites, Password, - decode_muc_user_decline(__TopXMLNS, __IgnoreEls, - _el), - Destroy); - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els, - Status_codes, Items, Invites, Password, - decode_muc_user_decline(<<"http://jabber.org/protocol/muc#user">>, - __IgnoreEls, _el), - Destroy); - _ -> - decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els, - Status_codes, Items, Invites, Password, Decline, - Destroy) - end; -decode_muc_user_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"destroy">>, _attrs, _} = _el | _els], - Status_codes, Items, Invites, Password, Decline, - Destroy) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els, - Status_codes, Items, Invites, Password, Decline, - decode_muc_destroy(__TopXMLNS, __IgnoreEls, _el)); - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els, - Status_codes, Items, Invites, Password, Decline, - decode_muc_destroy(<<"http://jabber.org/protocol/muc#user">>, - __IgnoreEls, _el)); - <<"http://jabber.org/protocol/muc#owner">> -> - decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els, - Status_codes, Items, Invites, Password, Decline, - decode_muc_destroy(<<"http://jabber.org/protocol/muc#owner">>, - __IgnoreEls, _el)); - _ -> - decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els, - Status_codes, Items, Invites, Password, Decline, - Destroy) - end; -decode_muc_user_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"password">>, _attrs, _} = _el | _els], - Status_codes, Items, Invites, Password, Decline, - Destroy) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els, - Status_codes, Items, Invites, - decode_muc_password(__TopXMLNS, __IgnoreEls, _el), - Decline, Destroy); - <<"http://jabber.org/protocol/muc#owner">> -> - decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els, - Status_codes, Items, Invites, - decode_muc_password(<<"http://jabber.org/protocol/muc#owner">>, - __IgnoreEls, _el), - Decline, Destroy); - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els, - Status_codes, Items, Invites, - decode_muc_password(<<"http://jabber.org/protocol/muc#user">>, - __IgnoreEls, _el), - Decline, Destroy); - <<"http://jabber.org/protocol/muc">> -> - decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els, - Status_codes, Items, Invites, - decode_muc_password(<<"http://jabber.org/protocol/muc">>, - __IgnoreEls, _el), - Decline, Destroy); - _ -> - decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els, - Status_codes, Items, Invites, Password, Decline, - Destroy) - end; -decode_muc_user_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"invite">>, _attrs, _} = _el | _els], - Status_codes, Items, Invites, Password, Decline, - Destroy) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els, - Status_codes, Items, - [decode_muc_user_invite(__TopXMLNS, __IgnoreEls, - _el) - | Invites], - Password, Decline, Destroy); - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els, - Status_codes, Items, - [decode_muc_user_invite(<<"http://jabber.org/protocol/muc#user">>, - __IgnoreEls, _el) - | Invites], - Password, Decline, Destroy); - _ -> - decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els, - Status_codes, Items, Invites, Password, Decline, - Destroy) - end; -decode_muc_user_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"item">>, _attrs, _} = _el | _els], - Status_codes, Items, Invites, Password, Decline, - Destroy) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els, - Status_codes, - [decode_muc_user_item(__TopXMLNS, __IgnoreEls, - _el) - | Items], - Invites, Password, Decline, Destroy); - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els, - Status_codes, - [decode_muc_user_item(<<"http://jabber.org/protocol/muc#user">>, - __IgnoreEls, _el) - | Items], - Invites, Password, Decline, Destroy); - _ -> - decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els, - Status_codes, Items, Invites, Password, Decline, - Destroy) - end; -decode_muc_user_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"status">>, _attrs, _} = _el | _els], - Status_codes, Items, Invites, Password, Decline, - Destroy) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els, - case decode_muc_user_status(__TopXMLNS, - __IgnoreEls, _el) - of - undefined -> Status_codes; - _new_el -> [_new_el | Status_codes] - end, - Items, Invites, Password, Decline, Destroy); - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els, - case - decode_muc_user_status(<<"http://jabber.org/protocol/muc#user">>, - __IgnoreEls, _el) - of - undefined -> Status_codes; - _new_el -> [_new_el | Status_codes] - end, - Items, Invites, Password, Decline, Destroy); - _ -> - decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els, - Status_codes, Items, Invites, Password, Decline, - Destroy) - end; -decode_muc_user_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Status_codes, Items, Invites, Password, Decline, - Destroy) -> - decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els, - Status_codes, Items, Invites, Password, Decline, - Destroy). - -encode_muc_user({muc_user, Decline, Destroy, Invites, - Items, Status_codes, Password}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/muc#user">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_muc_user_$status_codes'(Status_codes, - __NewTopXMLNS, - 'encode_muc_user_$items'(Items, - __NewTopXMLNS, - 'encode_muc_user_$invites'(Invites, - __NewTopXMLNS, - 'encode_muc_user_$password'(Password, - __NewTopXMLNS, - 'encode_muc_user_$decline'(Decline, - __NewTopXMLNS, - 'encode_muc_user_$destroy'(Destroy, - __NewTopXMLNS, - []))))))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"x">>, _attrs, _els}. - -'encode_muc_user_$status_codes'([], __TopXMLNS, _acc) -> - _acc; -'encode_muc_user_$status_codes'([Status_codes | _els], - __TopXMLNS, _acc) -> - 'encode_muc_user_$status_codes'(_els, __TopXMLNS, - [encode_muc_user_status(Status_codes, - __TopXMLNS) - | _acc]). - -'encode_muc_user_$items'([], __TopXMLNS, _acc) -> _acc; -'encode_muc_user_$items'([Items | _els], __TopXMLNS, - _acc) -> - 'encode_muc_user_$items'(_els, __TopXMLNS, - [encode_muc_user_item(Items, __TopXMLNS) | _acc]). - -'encode_muc_user_$invites'([], __TopXMLNS, _acc) -> - _acc; -'encode_muc_user_$invites'([Invites | _els], __TopXMLNS, - _acc) -> - 'encode_muc_user_$invites'(_els, __TopXMLNS, - [encode_muc_user_invite(Invites, __TopXMLNS) - | _acc]). - -'encode_muc_user_$password'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_muc_user_$password'(Password, __TopXMLNS, - _acc) -> - [encode_muc_password(Password, __TopXMLNS) | _acc]. - -'encode_muc_user_$decline'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_muc_user_$decline'(Decline, __TopXMLNS, _acc) -> - [encode_muc_user_decline(Decline, __TopXMLNS) | _acc]. - -'encode_muc_user_$destroy'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_muc_user_$destroy'(Destroy, __TopXMLNS, _acc) -> - [encode_muc_destroy(Destroy, __TopXMLNS) | _acc]. - -decode_muc_user_item(__TopXMLNS, __IgnoreEls, - {xmlel, <<"item">>, _attrs, _els}) -> - {Actor, Continue, Reason} = - decode_muc_user_item_els(__TopXMLNS, __IgnoreEls, _els, - undefined, undefined, <<>>), - {Affiliation, Role, Jid, Nick} = - decode_muc_user_item_attrs(__TopXMLNS, _attrs, - undefined, undefined, undefined, undefined), - {muc_item, Actor, Continue, Reason, Affiliation, Role, - Jid, Nick}. - -decode_muc_user_item_els(__TopXMLNS, __IgnoreEls, [], - Actor, Continue, Reason) -> - {Actor, Continue, Reason}; -decode_muc_user_item_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"actor">>, _attrs, _} = _el | _els], Actor, - Continue, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_user_item_els(__TopXMLNS, __IgnoreEls, _els, - decode_muc_user_actor(__TopXMLNS, - __IgnoreEls, _el), - Continue, Reason); - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_user_item_els(__TopXMLNS, __IgnoreEls, _els, - decode_muc_user_actor(<<"http://jabber.org/protocol/muc#user">>, - __IgnoreEls, _el), - Continue, Reason); - _ -> - decode_muc_user_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, Continue, Reason) - end; -decode_muc_user_item_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"continue">>, _attrs, _} = _el | _els], - Actor, Continue, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_user_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, - decode_muc_user_continue(__TopXMLNS, - __IgnoreEls, _el), - Reason); - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_user_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, - decode_muc_user_continue(<<"http://jabber.org/protocol/muc#user">>, - __IgnoreEls, _el), - Reason); - _ -> - decode_muc_user_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, Continue, Reason) - end; -decode_muc_user_item_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"reason">>, _attrs, _} = _el | _els], Actor, - Continue, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_user_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, Continue, - decode_muc_reason(__TopXMLNS, __IgnoreEls, - _el)); - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_user_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, Continue, - decode_muc_reason(<<"http://jabber.org/protocol/muc#user">>, - __IgnoreEls, _el)); - <<"http://jabber.org/protocol/muc#admin">> -> - decode_muc_user_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, Continue, - decode_muc_reason(<<"http://jabber.org/protocol/muc#admin">>, - __IgnoreEls, _el)); - <<"http://jabber.org/protocol/muc#owner">> -> - decode_muc_user_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, Continue, - decode_muc_reason(<<"http://jabber.org/protocol/muc#owner">>, - __IgnoreEls, _el)); - _ -> - decode_muc_user_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, Continue, Reason) - end; -decode_muc_user_item_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Actor, Continue, Reason) -> - decode_muc_user_item_els(__TopXMLNS, __IgnoreEls, _els, - Actor, Continue, Reason). - -decode_muc_user_item_attrs(__TopXMLNS, - [{<<"affiliation">>, _val} | _attrs], _Affiliation, - Role, Jid, Nick) -> - decode_muc_user_item_attrs(__TopXMLNS, _attrs, _val, - Role, Jid, Nick); -decode_muc_user_item_attrs(__TopXMLNS, - [{<<"role">>, _val} | _attrs], Affiliation, _Role, - Jid, Nick) -> - decode_muc_user_item_attrs(__TopXMLNS, _attrs, - Affiliation, _val, Jid, Nick); -decode_muc_user_item_attrs(__TopXMLNS, - [{<<"jid">>, _val} | _attrs], Affiliation, Role, - _Jid, Nick) -> - decode_muc_user_item_attrs(__TopXMLNS, _attrs, - Affiliation, Role, _val, Nick); -decode_muc_user_item_attrs(__TopXMLNS, - [{<<"nick">>, _val} | _attrs], Affiliation, Role, - Jid, _Nick) -> - decode_muc_user_item_attrs(__TopXMLNS, _attrs, - Affiliation, Role, Jid, _val); -decode_muc_user_item_attrs(__TopXMLNS, [_ | _attrs], - Affiliation, Role, Jid, Nick) -> - decode_muc_user_item_attrs(__TopXMLNS, _attrs, - Affiliation, Role, Jid, Nick); -decode_muc_user_item_attrs(__TopXMLNS, [], Affiliation, - Role, Jid, Nick) -> - {decode_muc_user_item_attr_affiliation(__TopXMLNS, - Affiliation), - decode_muc_user_item_attr_role(__TopXMLNS, Role), - decode_muc_user_item_attr_jid(__TopXMLNS, Jid), - decode_muc_user_item_attr_nick(__TopXMLNS, Nick)}. - -encode_muc_user_item({muc_item, Actor, Continue, Reason, - Affiliation, Role, Jid, Nick}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/muc#user">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_muc_user_item_$actor'(Actor, - __NewTopXMLNS, - 'encode_muc_user_item_$continue'(Continue, - __NewTopXMLNS, - 'encode_muc_user_item_$reason'(Reason, - __NewTopXMLNS, - [])))), - _attrs = encode_muc_user_item_attr_nick(Nick, - encode_muc_user_item_attr_jid(Jid, - encode_muc_user_item_attr_role(Role, - encode_muc_user_item_attr_affiliation(Affiliation, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))))), - {xmlel, <<"item">>, _attrs, _els}. - -'encode_muc_user_item_$actor'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_muc_user_item_$actor'(Actor, __TopXMLNS, - _acc) -> - [encode_muc_user_actor(Actor, __TopXMLNS) | _acc]. - -'encode_muc_user_item_$continue'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_muc_user_item_$continue'(Continue, __TopXMLNS, - _acc) -> - [encode_muc_user_continue(Continue, __TopXMLNS) | _acc]. - -'encode_muc_user_item_$reason'(<<>>, __TopXMLNS, - _acc) -> - _acc; -'encode_muc_user_item_$reason'(Reason, __TopXMLNS, - _acc) -> - [encode_muc_reason(Reason, __TopXMLNS) | _acc]. - -decode_muc_user_item_attr_affiliation(__TopXMLNS, - undefined) -> - undefined; -decode_muc_user_item_attr_affiliation(__TopXMLNS, - _val) -> - case catch dec_enum(_val, - [admin, member, none, outcast, owner]) - of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"affiliation">>, <<"item">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_muc_user_item_attr_affiliation(undefined, - _acc) -> - _acc; -encode_muc_user_item_attr_affiliation(_val, _acc) -> - [{<<"affiliation">>, enc_enum(_val)} | _acc]. - -decode_muc_user_item_attr_role(__TopXMLNS, undefined) -> - undefined; -decode_muc_user_item_attr_role(__TopXMLNS, _val) -> - case catch dec_enum(_val, - [moderator, none, participant, visitor]) - of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"role">>, <<"item">>, __TopXMLNS}}); - _res -> _res - end. - -encode_muc_user_item_attr_role(undefined, _acc) -> _acc; -encode_muc_user_item_attr_role(_val, _acc) -> - [{<<"role">>, enc_enum(_val)} | _acc]. - -decode_muc_user_item_attr_jid(__TopXMLNS, undefined) -> - undefined; -decode_muc_user_item_attr_jid(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"jid">>, <<"item">>, __TopXMLNS}}); - _res -> _res - end. - -encode_muc_user_item_attr_jid(undefined, _acc) -> _acc; -encode_muc_user_item_attr_jid(_val, _acc) -> - [{<<"jid">>, enc_jid(_val)} | _acc]. - -decode_muc_user_item_attr_nick(__TopXMLNS, undefined) -> - <<>>; -decode_muc_user_item_attr_nick(__TopXMLNS, _val) -> - _val. - -encode_muc_user_item_attr_nick(<<>>, _acc) -> _acc; -encode_muc_user_item_attr_nick(_val, _acc) -> - [{<<"nick">>, _val} | _acc]. - -decode_muc_user_status(__TopXMLNS, __IgnoreEls, - {xmlel, <<"status">>, _attrs, _els}) -> - Code = decode_muc_user_status_attrs(__TopXMLNS, _attrs, - undefined), - Code. - -decode_muc_user_status_attrs(__TopXMLNS, - [{<<"code">>, _val} | _attrs], _Code) -> - decode_muc_user_status_attrs(__TopXMLNS, _attrs, _val); -decode_muc_user_status_attrs(__TopXMLNS, [_ | _attrs], - Code) -> - decode_muc_user_status_attrs(__TopXMLNS, _attrs, Code); -decode_muc_user_status_attrs(__TopXMLNS, [], Code) -> - decode_muc_user_status_attr_code(__TopXMLNS, Code). - -encode_muc_user_status(Code, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/muc#user">>, - [], __TopXMLNS), - _els = [], - _attrs = encode_muc_user_status_attr_code(Code, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"status">>, _attrs, _els}. - -decode_muc_user_status_attr_code(__TopXMLNS, - undefined) -> - undefined; -decode_muc_user_status_attr_code(__TopXMLNS, _val) -> - case catch dec_int(_val, 100, 999) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"code">>, <<"status">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_muc_user_status_attr_code(undefined, _acc) -> - _acc; -encode_muc_user_status_attr_code(_val, _acc) -> - [{<<"code">>, enc_int(_val)} | _acc]. - -decode_muc_user_continue(__TopXMLNS, __IgnoreEls, - {xmlel, <<"continue">>, _attrs, _els}) -> - Thread = decode_muc_user_continue_attrs(__TopXMLNS, - _attrs, undefined), - Thread. - -decode_muc_user_continue_attrs(__TopXMLNS, - [{<<"thread">>, _val} | _attrs], _Thread) -> - decode_muc_user_continue_attrs(__TopXMLNS, _attrs, - _val); -decode_muc_user_continue_attrs(__TopXMLNS, [_ | _attrs], - Thread) -> - decode_muc_user_continue_attrs(__TopXMLNS, _attrs, - Thread); -decode_muc_user_continue_attrs(__TopXMLNS, [], - Thread) -> - decode_muc_user_continue_attr_thread(__TopXMLNS, - Thread). - -encode_muc_user_continue(Thread, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/muc#user">>, - [], __TopXMLNS), - _els = [], - _attrs = encode_muc_user_continue_attr_thread(Thread, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"continue">>, _attrs, _els}. - -decode_muc_user_continue_attr_thread(__TopXMLNS, - undefined) -> - <<>>; -decode_muc_user_continue_attr_thread(__TopXMLNS, - _val) -> - _val. - -encode_muc_user_continue_attr_thread(<<>>, _acc) -> - _acc; -encode_muc_user_continue_attr_thread(_val, _acc) -> - [{<<"thread">>, _val} | _acc]. - -decode_muc_user_actor(__TopXMLNS, __IgnoreEls, - {xmlel, <<"actor">>, _attrs, _els}) -> - {Jid, Nick} = decode_muc_user_actor_attrs(__TopXMLNS, - _attrs, undefined, undefined), - {muc_actor, Jid, Nick}. - -decode_muc_user_actor_attrs(__TopXMLNS, - [{<<"jid">>, _val} | _attrs], _Jid, Nick) -> - decode_muc_user_actor_attrs(__TopXMLNS, _attrs, _val, - Nick); -decode_muc_user_actor_attrs(__TopXMLNS, - [{<<"nick">>, _val} | _attrs], Jid, _Nick) -> - decode_muc_user_actor_attrs(__TopXMLNS, _attrs, Jid, - _val); -decode_muc_user_actor_attrs(__TopXMLNS, [_ | _attrs], - Jid, Nick) -> - decode_muc_user_actor_attrs(__TopXMLNS, _attrs, Jid, - Nick); -decode_muc_user_actor_attrs(__TopXMLNS, [], Jid, - Nick) -> - {decode_muc_user_actor_attr_jid(__TopXMLNS, Jid), - decode_muc_user_actor_attr_nick(__TopXMLNS, Nick)}. - -encode_muc_user_actor({muc_actor, Jid, Nick}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/muc#user">>, - [], __TopXMLNS), - _els = [], - _attrs = encode_muc_user_actor_attr_nick(Nick, - encode_muc_user_actor_attr_jid(Jid, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))), - {xmlel, <<"actor">>, _attrs, _els}. - -decode_muc_user_actor_attr_jid(__TopXMLNS, undefined) -> - undefined; -decode_muc_user_actor_attr_jid(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"jid">>, <<"actor">>, __TopXMLNS}}); - _res -> _res - end. - -encode_muc_user_actor_attr_jid(undefined, _acc) -> _acc; -encode_muc_user_actor_attr_jid(_val, _acc) -> - [{<<"jid">>, enc_jid(_val)} | _acc]. - -decode_muc_user_actor_attr_nick(__TopXMLNS, - undefined) -> - <<>>; -decode_muc_user_actor_attr_nick(__TopXMLNS, _val) -> - _val. - -encode_muc_user_actor_attr_nick(<<>>, _acc) -> _acc; -encode_muc_user_actor_attr_nick(_val, _acc) -> - [{<<"nick">>, _val} | _acc]. - -decode_muc_user_invite(__TopXMLNS, __IgnoreEls, - {xmlel, <<"invite">>, _attrs, _els}) -> - {Continue, Reason} = - decode_muc_user_invite_els(__TopXMLNS, __IgnoreEls, - _els, undefined, <<>>), - {To, From} = decode_muc_user_invite_attrs(__TopXMLNS, - _attrs, undefined, undefined), - {muc_invite, Reason, From, To, Continue}. - -decode_muc_user_invite_els(__TopXMLNS, __IgnoreEls, [], - Continue, Reason) -> - {Continue, Reason}; -decode_muc_user_invite_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"reason">>, _attrs, _} = _el | _els], - Continue, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_user_invite_els(__TopXMLNS, __IgnoreEls, - _els, Continue, - decode_muc_reason(__TopXMLNS, __IgnoreEls, - _el)); - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_user_invite_els(__TopXMLNS, __IgnoreEls, - _els, Continue, - decode_muc_reason(<<"http://jabber.org/protocol/muc#user">>, - __IgnoreEls, _el)); - <<"http://jabber.org/protocol/muc#admin">> -> - decode_muc_user_invite_els(__TopXMLNS, __IgnoreEls, - _els, Continue, - decode_muc_reason(<<"http://jabber.org/protocol/muc#admin">>, - __IgnoreEls, _el)); - <<"http://jabber.org/protocol/muc#owner">> -> - decode_muc_user_invite_els(__TopXMLNS, __IgnoreEls, - _els, Continue, - decode_muc_reason(<<"http://jabber.org/protocol/muc#owner">>, - __IgnoreEls, _el)); - _ -> - decode_muc_user_invite_els(__TopXMLNS, __IgnoreEls, - _els, Continue, Reason) - end; -decode_muc_user_invite_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"continue">>, _attrs, _} = _el | _els], - Continue, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_user_invite_els(__TopXMLNS, __IgnoreEls, - _els, - decode_muc_user_continue(__TopXMLNS, - __IgnoreEls, _el), - Reason); - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_user_invite_els(__TopXMLNS, __IgnoreEls, - _els, - decode_muc_user_continue(<<"http://jabber.org/protocol/muc#user">>, - __IgnoreEls, _el), - Reason); - _ -> - decode_muc_user_invite_els(__TopXMLNS, __IgnoreEls, - _els, Continue, Reason) - end; -decode_muc_user_invite_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Continue, Reason) -> - decode_muc_user_invite_els(__TopXMLNS, __IgnoreEls, - _els, Continue, Reason). - -decode_muc_user_invite_attrs(__TopXMLNS, - [{<<"to">>, _val} | _attrs], _To, From) -> - decode_muc_user_invite_attrs(__TopXMLNS, _attrs, _val, - From); -decode_muc_user_invite_attrs(__TopXMLNS, - [{<<"from">>, _val} | _attrs], To, _From) -> - decode_muc_user_invite_attrs(__TopXMLNS, _attrs, To, - _val); -decode_muc_user_invite_attrs(__TopXMLNS, [_ | _attrs], - To, From) -> - decode_muc_user_invite_attrs(__TopXMLNS, _attrs, To, - From); -decode_muc_user_invite_attrs(__TopXMLNS, [], To, - From) -> - {decode_muc_user_invite_attr_to(__TopXMLNS, To), - decode_muc_user_invite_attr_from(__TopXMLNS, From)}. - -encode_muc_user_invite({muc_invite, Reason, From, To, - Continue}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/muc#user">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_muc_user_invite_$continue'(Continue, - __NewTopXMLNS, - 'encode_muc_user_invite_$reason'(Reason, - __NewTopXMLNS, - []))), - _attrs = encode_muc_user_invite_attr_from(From, - encode_muc_user_invite_attr_to(To, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))), - {xmlel, <<"invite">>, _attrs, _els}. - -'encode_muc_user_invite_$continue'(undefined, - __TopXMLNS, _acc) -> - _acc; -'encode_muc_user_invite_$continue'(Continue, __TopXMLNS, - _acc) -> - [encode_muc_user_continue(Continue, __TopXMLNS) | _acc]. - -'encode_muc_user_invite_$reason'(<<>>, __TopXMLNS, - _acc) -> - _acc; -'encode_muc_user_invite_$reason'(Reason, __TopXMLNS, - _acc) -> - [encode_muc_reason(Reason, __TopXMLNS) | _acc]. - -decode_muc_user_invite_attr_to(__TopXMLNS, undefined) -> - undefined; -decode_muc_user_invite_attr_to(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"to">>, <<"invite">>, __TopXMLNS}}); - _res -> _res - end. - -encode_muc_user_invite_attr_to(undefined, _acc) -> _acc; -encode_muc_user_invite_attr_to(_val, _acc) -> - [{<<"to">>, enc_jid(_val)} | _acc]. - -decode_muc_user_invite_attr_from(__TopXMLNS, - undefined) -> - undefined; -decode_muc_user_invite_attr_from(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"from">>, <<"invite">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_muc_user_invite_attr_from(undefined, _acc) -> - _acc; -encode_muc_user_invite_attr_from(_val, _acc) -> - [{<<"from">>, enc_jid(_val)} | _acc]. - -decode_muc_destroy(__TopXMLNS, __IgnoreEls, - {xmlel, <<"destroy">>, _attrs, _els}) -> - {Password, Reason} = decode_muc_destroy_els(__TopXMLNS, - __IgnoreEls, _els, undefined, - <<>>), - {Jid, Xmlns} = decode_muc_destroy_attrs(__TopXMLNS, - _attrs, undefined, undefined), - {muc_destroy, Xmlns, Jid, Reason, Password}. - -decode_muc_destroy_els(__TopXMLNS, __IgnoreEls, [], - Password, Reason) -> - {Password, Reason}; -decode_muc_destroy_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"reason">>, _attrs, _} = _el | _els], - Password, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/muc#user">>; - __TopXMLNS == - <<"http://jabber.org/protocol/muc#owner">> -> - decode_muc_destroy_els(__TopXMLNS, __IgnoreEls, _els, - Password, - decode_muc_reason(__TopXMLNS, __IgnoreEls, - _el)); - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_destroy_els(__TopXMLNS, __IgnoreEls, _els, - Password, - decode_muc_reason(<<"http://jabber.org/protocol/muc#user">>, - __IgnoreEls, _el)); - <<"http://jabber.org/protocol/muc#admin">> -> - decode_muc_destroy_els(__TopXMLNS, __IgnoreEls, _els, - Password, - decode_muc_reason(<<"http://jabber.org/protocol/muc#admin">>, - __IgnoreEls, _el)); - <<"http://jabber.org/protocol/muc#owner">> -> - decode_muc_destroy_els(__TopXMLNS, __IgnoreEls, _els, - Password, - decode_muc_reason(<<"http://jabber.org/protocol/muc#owner">>, - __IgnoreEls, _el)); - _ -> - decode_muc_destroy_els(__TopXMLNS, __IgnoreEls, _els, - Password, Reason) - end; -decode_muc_destroy_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"password">>, _attrs, _} = _el | _els], - Password, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/muc#user">>; - __TopXMLNS == - <<"http://jabber.org/protocol/muc#owner">> -> - decode_muc_destroy_els(__TopXMLNS, __IgnoreEls, _els, - decode_muc_password(__TopXMLNS, __IgnoreEls, - _el), - Reason); - <<"http://jabber.org/protocol/muc#owner">> -> - decode_muc_destroy_els(__TopXMLNS, __IgnoreEls, _els, - decode_muc_password(<<"http://jabber.org/protocol/muc#owner">>, - __IgnoreEls, _el), - Reason); - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_destroy_els(__TopXMLNS, __IgnoreEls, _els, - decode_muc_password(<<"http://jabber.org/protocol/muc#user">>, - __IgnoreEls, _el), - Reason); - <<"http://jabber.org/protocol/muc">> -> - decode_muc_destroy_els(__TopXMLNS, __IgnoreEls, _els, - decode_muc_password(<<"http://jabber.org/protocol/muc">>, - __IgnoreEls, _el), - Reason); - _ -> - decode_muc_destroy_els(__TopXMLNS, __IgnoreEls, _els, - Password, Reason) - end; -decode_muc_destroy_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Password, Reason) -> - decode_muc_destroy_els(__TopXMLNS, __IgnoreEls, _els, - Password, Reason). - -decode_muc_destroy_attrs(__TopXMLNS, - [{<<"jid">>, _val} | _attrs], _Jid, Xmlns) -> - decode_muc_destroy_attrs(__TopXMLNS, _attrs, _val, - Xmlns); -decode_muc_destroy_attrs(__TopXMLNS, - [{<<"xmlns">>, _val} | _attrs], Jid, _Xmlns) -> - decode_muc_destroy_attrs(__TopXMLNS, _attrs, Jid, _val); -decode_muc_destroy_attrs(__TopXMLNS, [_ | _attrs], Jid, - Xmlns) -> - decode_muc_destroy_attrs(__TopXMLNS, _attrs, Jid, - Xmlns); -decode_muc_destroy_attrs(__TopXMLNS, [], Jid, Xmlns) -> - {decode_muc_destroy_attr_jid(__TopXMLNS, Jid), - decode_muc_destroy_attr_xmlns(__TopXMLNS, Xmlns)}. - -encode_muc_destroy({muc_destroy, Xmlns, Jid, Reason, - Password}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(Xmlns, - [<<"http://jabber.org/protocol/muc#user">>, - <<"http://jabber.org/protocol/muc#owner">>], - __TopXMLNS), - _els = - lists:reverse('encode_muc_destroy_$password'(Password, - __NewTopXMLNS, - 'encode_muc_destroy_$reason'(Reason, - __NewTopXMLNS, - []))), - _attrs = encode_muc_destroy_attr_jid(Jid, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"destroy">>, _attrs, _els}. - -'encode_muc_destroy_$password'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_muc_destroy_$password'(Password, __TopXMLNS, - _acc) -> - [encode_muc_password(Password, __TopXMLNS) | _acc]. - -'encode_muc_destroy_$reason'(<<>>, __TopXMLNS, _acc) -> - _acc; -'encode_muc_destroy_$reason'(Reason, __TopXMLNS, - _acc) -> - [encode_muc_reason(Reason, __TopXMLNS) | _acc]. - -decode_muc_destroy_attr_jid(__TopXMLNS, undefined) -> - undefined; -decode_muc_destroy_attr_jid(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"jid">>, <<"destroy">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_muc_destroy_attr_jid(undefined, _acc) -> _acc; -encode_muc_destroy_attr_jid(_val, _acc) -> - [{<<"jid">>, enc_jid(_val)} | _acc]. - -decode_muc_destroy_attr_xmlns(__TopXMLNS, undefined) -> - <<>>; -decode_muc_destroy_attr_xmlns(__TopXMLNS, _val) -> _val. - -decode_muc_user_decline(__TopXMLNS, __IgnoreEls, - {xmlel, <<"decline">>, _attrs, _els}) -> - Reason = decode_muc_user_decline_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - {To, From} = decode_muc_user_decline_attrs(__TopXMLNS, - _attrs, undefined, undefined), - {muc_decline, Reason, From, To}. - -decode_muc_user_decline_els(__TopXMLNS, __IgnoreEls, [], - Reason) -> - Reason; -decode_muc_user_decline_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"reason">>, _attrs, _} = _el | _els], - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_user_decline_els(__TopXMLNS, __IgnoreEls, - _els, - decode_muc_reason(__TopXMLNS, __IgnoreEls, - _el)); - <<"http://jabber.org/protocol/muc#user">> -> - decode_muc_user_decline_els(__TopXMLNS, __IgnoreEls, - _els, - decode_muc_reason(<<"http://jabber.org/protocol/muc#user">>, - __IgnoreEls, _el)); - <<"http://jabber.org/protocol/muc#admin">> -> - decode_muc_user_decline_els(__TopXMLNS, __IgnoreEls, - _els, - decode_muc_reason(<<"http://jabber.org/protocol/muc#admin">>, - __IgnoreEls, _el)); - <<"http://jabber.org/protocol/muc#owner">> -> - decode_muc_user_decline_els(__TopXMLNS, __IgnoreEls, - _els, - decode_muc_reason(<<"http://jabber.org/protocol/muc#owner">>, - __IgnoreEls, _el)); - _ -> - decode_muc_user_decline_els(__TopXMLNS, __IgnoreEls, - _els, Reason) - end; -decode_muc_user_decline_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Reason) -> - decode_muc_user_decline_els(__TopXMLNS, __IgnoreEls, - _els, Reason). - -decode_muc_user_decline_attrs(__TopXMLNS, - [{<<"to">>, _val} | _attrs], _To, From) -> - decode_muc_user_decline_attrs(__TopXMLNS, _attrs, _val, - From); -decode_muc_user_decline_attrs(__TopXMLNS, - [{<<"from">>, _val} | _attrs], To, _From) -> - decode_muc_user_decline_attrs(__TopXMLNS, _attrs, To, - _val); -decode_muc_user_decline_attrs(__TopXMLNS, [_ | _attrs], - To, From) -> - decode_muc_user_decline_attrs(__TopXMLNS, _attrs, To, - From); -decode_muc_user_decline_attrs(__TopXMLNS, [], To, - From) -> - {decode_muc_user_decline_attr_to(__TopXMLNS, To), - decode_muc_user_decline_attr_from(__TopXMLNS, From)}. - -encode_muc_user_decline({muc_decline, Reason, From, To}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/muc#user">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_muc_user_decline_$reason'(Reason, - __NewTopXMLNS, [])), - _attrs = encode_muc_user_decline_attr_from(From, - encode_muc_user_decline_attr_to(To, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))), - {xmlel, <<"decline">>, _attrs, _els}. - -'encode_muc_user_decline_$reason'(<<>>, __TopXMLNS, - _acc) -> - _acc; -'encode_muc_user_decline_$reason'(Reason, __TopXMLNS, - _acc) -> - [encode_muc_reason(Reason, __TopXMLNS) | _acc]. - -decode_muc_user_decline_attr_to(__TopXMLNS, - undefined) -> - undefined; -decode_muc_user_decline_attr_to(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"to">>, <<"decline">>, __TopXMLNS}}); - _res -> _res - end. - -encode_muc_user_decline_attr_to(undefined, _acc) -> - _acc; -encode_muc_user_decline_attr_to(_val, _acc) -> - [{<<"to">>, enc_jid(_val)} | _acc]. - -decode_muc_user_decline_attr_from(__TopXMLNS, - undefined) -> - undefined; -decode_muc_user_decline_attr_from(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"from">>, <<"decline">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_muc_user_decline_attr_from(undefined, _acc) -> - _acc; -encode_muc_user_decline_attr_from(_val, _acc) -> - [{<<"from">>, enc_jid(_val)} | _acc]. - -decode_muc_reason(__TopXMLNS, __IgnoreEls, - {xmlel, <<"reason">>, _attrs, _els}) -> - Cdata = decode_muc_reason_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_muc_reason_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_muc_reason_cdata(__TopXMLNS, Cdata); -decode_muc_reason_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_muc_reason_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_muc_reason_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_muc_reason_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_muc_reason(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"http://jabber.org/protocol/muc#user">>, - <<"http://jabber.org/protocol/muc#admin">>, - <<"http://jabber.org/protocol/muc#owner">>], - __TopXMLNS), - _els = encode_muc_reason_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"reason">>, _attrs, _els}. - -decode_muc_reason_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_muc_reason_cdata(__TopXMLNS, _val) -> _val. - -encode_muc_reason_cdata(<<>>, _acc) -> _acc; -encode_muc_reason_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_muc_history(__TopXMLNS, __IgnoreEls, - {xmlel, <<"history">>, _attrs, _els}) -> - {Maxchars, Maxstanzas, Seconds, Since} = - decode_muc_history_attrs(__TopXMLNS, _attrs, undefined, - undefined, undefined, undefined), - {muc_history, Maxchars, Maxstanzas, Seconds, Since}. - -decode_muc_history_attrs(__TopXMLNS, - [{<<"maxchars">>, _val} | _attrs], _Maxchars, - Maxstanzas, Seconds, Since) -> - decode_muc_history_attrs(__TopXMLNS, _attrs, _val, - Maxstanzas, Seconds, Since); -decode_muc_history_attrs(__TopXMLNS, - [{<<"maxstanzas">>, _val} | _attrs], Maxchars, - _Maxstanzas, Seconds, Since) -> - decode_muc_history_attrs(__TopXMLNS, _attrs, Maxchars, - _val, Seconds, Since); -decode_muc_history_attrs(__TopXMLNS, - [{<<"seconds">>, _val} | _attrs], Maxchars, Maxstanzas, - _Seconds, Since) -> - decode_muc_history_attrs(__TopXMLNS, _attrs, Maxchars, - Maxstanzas, _val, Since); -decode_muc_history_attrs(__TopXMLNS, - [{<<"since">>, _val} | _attrs], Maxchars, Maxstanzas, - Seconds, _Since) -> - decode_muc_history_attrs(__TopXMLNS, _attrs, Maxchars, - Maxstanzas, Seconds, _val); -decode_muc_history_attrs(__TopXMLNS, [_ | _attrs], - Maxchars, Maxstanzas, Seconds, Since) -> - decode_muc_history_attrs(__TopXMLNS, _attrs, Maxchars, - Maxstanzas, Seconds, Since); -decode_muc_history_attrs(__TopXMLNS, [], Maxchars, - Maxstanzas, Seconds, Since) -> - {decode_muc_history_attr_maxchars(__TopXMLNS, Maxchars), - decode_muc_history_attr_maxstanzas(__TopXMLNS, - Maxstanzas), - decode_muc_history_attr_seconds(__TopXMLNS, Seconds), - decode_muc_history_attr_since(__TopXMLNS, Since)}. - -encode_muc_history({muc_history, Maxchars, Maxstanzas, - Seconds, Since}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/muc">>, - [], __TopXMLNS), - _els = [], - _attrs = encode_muc_history_attr_since(Since, - encode_muc_history_attr_seconds(Seconds, - encode_muc_history_attr_maxstanzas(Maxstanzas, - encode_muc_history_attr_maxchars(Maxchars, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))))), - {xmlel, <<"history">>, _attrs, _els}. - -decode_muc_history_attr_maxchars(__TopXMLNS, - undefined) -> - undefined; -decode_muc_history_attr_maxchars(__TopXMLNS, _val) -> - case catch dec_int(_val, 0, infinity) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"maxchars">>, <<"history">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_muc_history_attr_maxchars(undefined, _acc) -> - _acc; -encode_muc_history_attr_maxchars(_val, _acc) -> - [{<<"maxchars">>, enc_int(_val)} | _acc]. - -decode_muc_history_attr_maxstanzas(__TopXMLNS, - undefined) -> - undefined; -decode_muc_history_attr_maxstanzas(__TopXMLNS, _val) -> - case catch dec_int(_val, 0, infinity) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"maxstanzas">>, <<"history">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_muc_history_attr_maxstanzas(undefined, _acc) -> - _acc; -encode_muc_history_attr_maxstanzas(_val, _acc) -> - [{<<"maxstanzas">>, enc_int(_val)} | _acc]. - -decode_muc_history_attr_seconds(__TopXMLNS, - undefined) -> - undefined; -decode_muc_history_attr_seconds(__TopXMLNS, _val) -> - case catch dec_int(_val, 0, infinity) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"seconds">>, <<"history">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_muc_history_attr_seconds(undefined, _acc) -> - _acc; -encode_muc_history_attr_seconds(_val, _acc) -> - [{<<"seconds">>, enc_int(_val)} | _acc]. - -decode_muc_history_attr_since(__TopXMLNS, undefined) -> - undefined; -decode_muc_history_attr_since(__TopXMLNS, _val) -> - case catch dec_utc(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"since">>, <<"history">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_muc_history_attr_since(undefined, _acc) -> _acc; -encode_muc_history_attr_since(_val, _acc) -> - [{<<"since">>, enc_utc(_val)} | _acc]. - -decode_bytestreams(__TopXMLNS, __IgnoreEls, - {xmlel, <<"query">>, _attrs, _els}) -> - {Hosts, Used, Activate} = - decode_bytestreams_els(__TopXMLNS, __IgnoreEls, _els, - [], undefined, undefined), - {Dstaddr, Sid, Mode} = - decode_bytestreams_attrs(__TopXMLNS, _attrs, undefined, - undefined, undefined), - {bytestreams, Hosts, Used, Activate, Dstaddr, Mode, - Sid}. - -decode_bytestreams_els(__TopXMLNS, __IgnoreEls, [], - Hosts, Used, Activate) -> - {lists:reverse(Hosts), Used, Activate}; -decode_bytestreams_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"streamhost">>, _attrs, _} = _el | _els], - Hosts, Used, Activate) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/bytestreams">> -> - decode_bytestreams_els(__TopXMLNS, __IgnoreEls, _els, - [decode_bytestreams_streamhost(__TopXMLNS, - __IgnoreEls, - _el) - | Hosts], - Used, Activate); - <<"http://jabber.org/protocol/bytestreams">> -> - decode_bytestreams_els(__TopXMLNS, __IgnoreEls, _els, - [decode_bytestreams_streamhost(<<"http://jabber.org/protocol/bytestreams">>, - __IgnoreEls, - _el) - | Hosts], - Used, Activate); - _ -> - decode_bytestreams_els(__TopXMLNS, __IgnoreEls, _els, - Hosts, Used, Activate) - end; -decode_bytestreams_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"streamhost-used">>, _attrs, _} = _el - | _els], - Hosts, Used, Activate) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/bytestreams">> -> - decode_bytestreams_els(__TopXMLNS, __IgnoreEls, _els, - Hosts, - decode_bytestreams_streamhost_used(__TopXMLNS, - __IgnoreEls, - _el), - Activate); - <<"http://jabber.org/protocol/bytestreams">> -> - decode_bytestreams_els(__TopXMLNS, __IgnoreEls, _els, - Hosts, - decode_bytestreams_streamhost_used(<<"http://jabber.org/protocol/bytestreams">>, - __IgnoreEls, - _el), - Activate); - _ -> - decode_bytestreams_els(__TopXMLNS, __IgnoreEls, _els, - Hosts, Used, Activate) - end; -decode_bytestreams_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"activate">>, _attrs, _} = _el | _els], - Hosts, Used, Activate) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/bytestreams">> -> - decode_bytestreams_els(__TopXMLNS, __IgnoreEls, _els, - Hosts, Used, - decode_bytestreams_activate(__TopXMLNS, - __IgnoreEls, _el)); - <<"http://jabber.org/protocol/bytestreams">> -> - decode_bytestreams_els(__TopXMLNS, __IgnoreEls, _els, - Hosts, Used, - decode_bytestreams_activate(<<"http://jabber.org/protocol/bytestreams">>, - __IgnoreEls, _el)); - _ -> - decode_bytestreams_els(__TopXMLNS, __IgnoreEls, _els, - Hosts, Used, Activate) - end; -decode_bytestreams_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Hosts, Used, Activate) -> - decode_bytestreams_els(__TopXMLNS, __IgnoreEls, _els, - Hosts, Used, Activate). - -decode_bytestreams_attrs(__TopXMLNS, - [{<<"dstaddr">>, _val} | _attrs], _Dstaddr, Sid, - Mode) -> - decode_bytestreams_attrs(__TopXMLNS, _attrs, _val, Sid, - Mode); -decode_bytestreams_attrs(__TopXMLNS, - [{<<"sid">>, _val} | _attrs], Dstaddr, _Sid, Mode) -> - decode_bytestreams_attrs(__TopXMLNS, _attrs, Dstaddr, - _val, Mode); -decode_bytestreams_attrs(__TopXMLNS, - [{<<"mode">>, _val} | _attrs], Dstaddr, Sid, _Mode) -> - decode_bytestreams_attrs(__TopXMLNS, _attrs, Dstaddr, - Sid, _val); -decode_bytestreams_attrs(__TopXMLNS, [_ | _attrs], - Dstaddr, Sid, Mode) -> - decode_bytestreams_attrs(__TopXMLNS, _attrs, Dstaddr, - Sid, Mode); -decode_bytestreams_attrs(__TopXMLNS, [], Dstaddr, Sid, - Mode) -> - {decode_bytestreams_attr_dstaddr(__TopXMLNS, Dstaddr), - decode_bytestreams_attr_sid(__TopXMLNS, Sid), - decode_bytestreams_attr_mode(__TopXMLNS, Mode)}. - -encode_bytestreams({bytestreams, Hosts, Used, Activate, - Dstaddr, Mode, Sid}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/bytestreams">>, - [], __TopXMLNS), - _els = lists:reverse('encode_bytestreams_$hosts'(Hosts, - __NewTopXMLNS, - 'encode_bytestreams_$used'(Used, - __NewTopXMLNS, - 'encode_bytestreams_$activate'(Activate, - __NewTopXMLNS, - [])))), - _attrs = encode_bytestreams_attr_mode(Mode, - encode_bytestreams_attr_sid(Sid, - encode_bytestreams_attr_dstaddr(Dstaddr, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)))), - {xmlel, <<"query">>, _attrs, _els}. - -'encode_bytestreams_$hosts'([], __TopXMLNS, _acc) -> - _acc; -'encode_bytestreams_$hosts'([Hosts | _els], __TopXMLNS, - _acc) -> - 'encode_bytestreams_$hosts'(_els, __TopXMLNS, - [encode_bytestreams_streamhost(Hosts, - __TopXMLNS) - | _acc]). - -'encode_bytestreams_$used'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_bytestreams_$used'(Used, __TopXMLNS, _acc) -> - [encode_bytestreams_streamhost_used(Used, __TopXMLNS) - | _acc]. - -'encode_bytestreams_$activate'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_bytestreams_$activate'(Activate, __TopXMLNS, - _acc) -> - [encode_bytestreams_activate(Activate, __TopXMLNS) - | _acc]. - -decode_bytestreams_attr_dstaddr(__TopXMLNS, - undefined) -> - <<>>; -decode_bytestreams_attr_dstaddr(__TopXMLNS, _val) -> - _val. - -encode_bytestreams_attr_dstaddr(<<>>, _acc) -> _acc; -encode_bytestreams_attr_dstaddr(_val, _acc) -> - [{<<"dstaddr">>, _val} | _acc]. - -decode_bytestreams_attr_sid(__TopXMLNS, undefined) -> - <<>>; -decode_bytestreams_attr_sid(__TopXMLNS, _val) -> _val. - -encode_bytestreams_attr_sid(<<>>, _acc) -> _acc; -encode_bytestreams_attr_sid(_val, _acc) -> - [{<<"sid">>, _val} | _acc]. - -decode_bytestreams_attr_mode(__TopXMLNS, undefined) -> - tcp; -decode_bytestreams_attr_mode(__TopXMLNS, _val) -> - case catch dec_enum(_val, [tcp, udp]) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"mode">>, <<"query">>, __TopXMLNS}}); - _res -> _res - end. - -encode_bytestreams_attr_mode(tcp, _acc) -> _acc; -encode_bytestreams_attr_mode(_val, _acc) -> - [{<<"mode">>, enc_enum(_val)} | _acc]. - -decode_bytestreams_activate(__TopXMLNS, __IgnoreEls, - {xmlel, <<"activate">>, _attrs, _els}) -> - Cdata = decode_bytestreams_activate_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_bytestreams_activate_els(__TopXMLNS, __IgnoreEls, - [], Cdata) -> - decode_bytestreams_activate_cdata(__TopXMLNS, Cdata); -decode_bytestreams_activate_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_bytestreams_activate_els(__TopXMLNS, __IgnoreEls, - _els, <>); -decode_bytestreams_activate_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_bytestreams_activate_els(__TopXMLNS, __IgnoreEls, - _els, Cdata). - -encode_bytestreams_activate(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/bytestreams">>, - [], __TopXMLNS), - _els = encode_bytestreams_activate_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"activate">>, _attrs, _els}. - -decode_bytestreams_activate_cdata(__TopXMLNS, <<>>) -> - undefined; -decode_bytestreams_activate_cdata(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_cdata_value, <<>>, <<"activate">>, __TopXMLNS}}); - _res -> _res - end. - -encode_bytestreams_activate_cdata(undefined, _acc) -> - _acc; -encode_bytestreams_activate_cdata(_val, _acc) -> - [{xmlcdata, enc_jid(_val)} | _acc]. - -decode_bytestreams_streamhost_used(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"streamhost-used">>, _attrs, - _els}) -> - Jid = - decode_bytestreams_streamhost_used_attrs(__TopXMLNS, - _attrs, undefined), - Jid. - -decode_bytestreams_streamhost_used_attrs(__TopXMLNS, - [{<<"jid">>, _val} | _attrs], _Jid) -> - decode_bytestreams_streamhost_used_attrs(__TopXMLNS, - _attrs, _val); -decode_bytestreams_streamhost_used_attrs(__TopXMLNS, - [_ | _attrs], Jid) -> - decode_bytestreams_streamhost_used_attrs(__TopXMLNS, - _attrs, Jid); -decode_bytestreams_streamhost_used_attrs(__TopXMLNS, [], - Jid) -> - decode_bytestreams_streamhost_used_attr_jid(__TopXMLNS, - Jid). - -encode_bytestreams_streamhost_used(Jid, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/bytestreams">>, - [], __TopXMLNS), - _els = [], - _attrs = - encode_bytestreams_streamhost_used_attr_jid(Jid, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"streamhost-used">>, _attrs, _els}. - -decode_bytestreams_streamhost_used_attr_jid(__TopXMLNS, - undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"jid">>, <<"streamhost-used">>, - __TopXMLNS}}); -decode_bytestreams_streamhost_used_attr_jid(__TopXMLNS, - _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"jid">>, <<"streamhost-used">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_bytestreams_streamhost_used_attr_jid(_val, - _acc) -> - [{<<"jid">>, enc_jid(_val)} | _acc]. - -decode_bytestreams_streamhost(__TopXMLNS, __IgnoreEls, - {xmlel, <<"streamhost">>, _attrs, _els}) -> - {Jid, Host, Port} = - decode_bytestreams_streamhost_attrs(__TopXMLNS, _attrs, - undefined, undefined, undefined), - {streamhost, Jid, Host, Port}. - -decode_bytestreams_streamhost_attrs(__TopXMLNS, - [{<<"jid">>, _val} | _attrs], _Jid, Host, - Port) -> - decode_bytestreams_streamhost_attrs(__TopXMLNS, _attrs, - _val, Host, Port); -decode_bytestreams_streamhost_attrs(__TopXMLNS, - [{<<"host">>, _val} | _attrs], Jid, _Host, - Port) -> - decode_bytestreams_streamhost_attrs(__TopXMLNS, _attrs, - Jid, _val, Port); -decode_bytestreams_streamhost_attrs(__TopXMLNS, - [{<<"port">>, _val} | _attrs], Jid, Host, - _Port) -> - decode_bytestreams_streamhost_attrs(__TopXMLNS, _attrs, - Jid, Host, _val); -decode_bytestreams_streamhost_attrs(__TopXMLNS, - [_ | _attrs], Jid, Host, Port) -> - decode_bytestreams_streamhost_attrs(__TopXMLNS, _attrs, - Jid, Host, Port); -decode_bytestreams_streamhost_attrs(__TopXMLNS, [], Jid, - Host, Port) -> - {decode_bytestreams_streamhost_attr_jid(__TopXMLNS, - Jid), - decode_bytestreams_streamhost_attr_host(__TopXMLNS, - Host), - decode_bytestreams_streamhost_attr_port(__TopXMLNS, - Port)}. - -encode_bytestreams_streamhost({streamhost, Jid, Host, - Port}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/bytestreams">>, - [], __TopXMLNS), - _els = [], - _attrs = encode_bytestreams_streamhost_attr_port(Port, - encode_bytestreams_streamhost_attr_host(Host, - encode_bytestreams_streamhost_attr_jid(Jid, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)))), - {xmlel, <<"streamhost">>, _attrs, _els}. - -decode_bytestreams_streamhost_attr_jid(__TopXMLNS, - undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"jid">>, <<"streamhost">>, - __TopXMLNS}}); -decode_bytestreams_streamhost_attr_jid(__TopXMLNS, - _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"jid">>, <<"streamhost">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_bytestreams_streamhost_attr_jid(_val, _acc) -> - [{<<"jid">>, enc_jid(_val)} | _acc]. - -decode_bytestreams_streamhost_attr_host(__TopXMLNS, - undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"host">>, <<"streamhost">>, - __TopXMLNS}}); -decode_bytestreams_streamhost_attr_host(__TopXMLNS, - _val) -> - _val. - -encode_bytestreams_streamhost_attr_host(_val, _acc) -> - [{<<"host">>, _val} | _acc]. - -decode_bytestreams_streamhost_attr_port(__TopXMLNS, - undefined) -> - 1080; -decode_bytestreams_streamhost_attr_port(__TopXMLNS, - _val) -> - case catch dec_int(_val, 0, 65535) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"port">>, <<"streamhost">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_bytestreams_streamhost_attr_port(1080, _acc) -> - _acc; -encode_bytestreams_streamhost_attr_port(_val, _acc) -> - [{<<"port">>, enc_int(_val)} | _acc]. - -decode_delay(__TopXMLNS, __IgnoreEls, - {xmlel, <<"delay">>, _attrs, _els}) -> - Desc = decode_delay_els(__TopXMLNS, __IgnoreEls, _els, - <<>>), - {Stamp, From} = decode_delay_attrs(__TopXMLNS, _attrs, - undefined, undefined), - {delay, Stamp, From, Desc}. - -decode_delay_els(__TopXMLNS, __IgnoreEls, [], Desc) -> - decode_delay_cdata(__TopXMLNS, Desc); -decode_delay_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Desc) -> - decode_delay_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_delay_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Desc) -> - decode_delay_els(__TopXMLNS, __IgnoreEls, _els, Desc). - -decode_delay_attrs(__TopXMLNS, - [{<<"stamp">>, _val} | _attrs], _Stamp, From) -> - decode_delay_attrs(__TopXMLNS, _attrs, _val, From); -decode_delay_attrs(__TopXMLNS, - [{<<"from">>, _val} | _attrs], Stamp, _From) -> - decode_delay_attrs(__TopXMLNS, _attrs, Stamp, _val); -decode_delay_attrs(__TopXMLNS, [_ | _attrs], Stamp, - From) -> - decode_delay_attrs(__TopXMLNS, _attrs, Stamp, From); -decode_delay_attrs(__TopXMLNS, [], Stamp, From) -> - {decode_delay_attr_stamp(__TopXMLNS, Stamp), - decode_delay_attr_from(__TopXMLNS, From)}. - -encode_delay({delay, Stamp, From, Desc}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"urn:xmpp:delay">>, - [], __TopXMLNS), - _els = encode_delay_cdata(Desc, []), - _attrs = encode_delay_attr_from(From, - encode_delay_attr_stamp(Stamp, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))), - {xmlel, <<"delay">>, _attrs, _els}. - -decode_delay_attr_stamp(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"stamp">>, <<"delay">>, __TopXMLNS}}); -decode_delay_attr_stamp(__TopXMLNS, _val) -> - case catch dec_utc(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"stamp">>, <<"delay">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_delay_attr_stamp(_val, _acc) -> - [{<<"stamp">>, enc_utc(_val)} | _acc]. - -decode_delay_attr_from(__TopXMLNS, undefined) -> - undefined; -decode_delay_attr_from(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"from">>, <<"delay">>, __TopXMLNS}}); - _res -> _res - end. - -encode_delay_attr_from(undefined, _acc) -> _acc; -encode_delay_attr_from(_val, _acc) -> - [{<<"from">>, enc_jid(_val)} | _acc]. - -decode_delay_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_delay_cdata(__TopXMLNS, _val) -> _val. - -encode_delay_cdata(<<>>, _acc) -> _acc; -encode_delay_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_chatstate_paused(__TopXMLNS, __IgnoreEls, - {xmlel, <<"paused">>, _attrs, _els}) -> - {chatstate, paused}. - -encode_chatstate_paused({chatstate, paused}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/chatstates">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"paused">>, _attrs, _els}. - -decode_chatstate_inactive(__TopXMLNS, __IgnoreEls, - {xmlel, <<"inactive">>, _attrs, _els}) -> - {chatstate, inactive}. - -encode_chatstate_inactive({chatstate, inactive}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/chatstates">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"inactive">>, _attrs, _els}. - -decode_chatstate_gone(__TopXMLNS, __IgnoreEls, - {xmlel, <<"gone">>, _attrs, _els}) -> - {chatstate, gone}. - -encode_chatstate_gone({chatstate, gone}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/chatstates">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"gone">>, _attrs, _els}. - -decode_chatstate_composing(__TopXMLNS, __IgnoreEls, - {xmlel, <<"composing">>, _attrs, _els}) -> - {chatstate, composing}. - -encode_chatstate_composing({chatstate, composing}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/chatstates">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"composing">>, _attrs, _els}. - -decode_chatstate_active(__TopXMLNS, __IgnoreEls, - {xmlel, <<"active">>, _attrs, _els}) -> - {chatstate, active}. - -encode_chatstate_active({chatstate, active}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/chatstates">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"active">>, _attrs, _els}. - -decode_shim_headers(__TopXMLNS, __IgnoreEls, - {xmlel, <<"headers">>, _attrs, _els}) -> - Headers = decode_shim_headers_els(__TopXMLNS, - __IgnoreEls, _els, []), - {shim, Headers}. - -decode_shim_headers_els(__TopXMLNS, __IgnoreEls, [], - Headers) -> - lists:reverse(Headers); -decode_shim_headers_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"header">>, _attrs, _} = _el | _els], - Headers) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/shim">> -> - decode_shim_headers_els(__TopXMLNS, __IgnoreEls, _els, - [decode_shim_header(__TopXMLNS, __IgnoreEls, - _el) - | Headers]); - <<"http://jabber.org/protocol/shim">> -> - decode_shim_headers_els(__TopXMLNS, __IgnoreEls, _els, - [decode_shim_header(<<"http://jabber.org/protocol/shim">>, - __IgnoreEls, _el) - | Headers]); - _ -> - decode_shim_headers_els(__TopXMLNS, __IgnoreEls, _els, - Headers) - end; -decode_shim_headers_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Headers) -> - decode_shim_headers_els(__TopXMLNS, __IgnoreEls, _els, - Headers). - -encode_shim_headers({shim, Headers}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/shim">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_shim_headers_$headers'(Headers, - __NewTopXMLNS, [])), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"headers">>, _attrs, _els}. - -'encode_shim_headers_$headers'([], __TopXMLNS, _acc) -> - _acc; -'encode_shim_headers_$headers'([Headers | _els], - __TopXMLNS, _acc) -> - 'encode_shim_headers_$headers'(_els, __TopXMLNS, - [encode_shim_header(Headers, __TopXMLNS) - | _acc]). - -decode_shim_header(__TopXMLNS, __IgnoreEls, - {xmlel, <<"header">>, _attrs, _els}) -> - Cdata = decode_shim_header_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Name = decode_shim_header_attrs(__TopXMLNS, _attrs, - undefined), - {Name, Cdata}. - -decode_shim_header_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_shim_header_cdata(__TopXMLNS, Cdata); -decode_shim_header_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_shim_header_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_shim_header_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_shim_header_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -decode_shim_header_attrs(__TopXMLNS, - [{<<"name">>, _val} | _attrs], _Name) -> - decode_shim_header_attrs(__TopXMLNS, _attrs, _val); -decode_shim_header_attrs(__TopXMLNS, [_ | _attrs], - Name) -> - decode_shim_header_attrs(__TopXMLNS, _attrs, Name); -decode_shim_header_attrs(__TopXMLNS, [], Name) -> - decode_shim_header_attr_name(__TopXMLNS, Name). - -encode_shim_header({Name, Cdata}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/shim">>, - [], __TopXMLNS), - _els = encode_shim_header_cdata(Cdata, []), - _attrs = encode_shim_header_attr_name(Name, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"header">>, _attrs, _els}. - -decode_shim_header_attr_name(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"name">>, <<"header">>, __TopXMLNS}}); -decode_shim_header_attr_name(__TopXMLNS, _val) -> _val. - -encode_shim_header_attr_name(_val, _acc) -> - [{<<"name">>, _val} | _acc]. - -decode_shim_header_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_shim_header_cdata(__TopXMLNS, _val) -> _val. - -encode_shim_header_cdata(<<>>, _acc) -> _acc; -encode_shim_header_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_pubsub_error_unsupported_access_model(__TopXMLNS, - __IgnoreEls, - {xmlel, - <<"unsupported-access-model">>, - _attrs, _els}) -> - {ps_error, 'unsupported-access-model', undefined}. - -encode_pubsub_error_unsupported_access_model({ps_error, - 'unsupported-access-model', _}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub#errors">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"unsupported-access-model">>, _attrs, _els}. - -decode_pubsub_error_unsupported(__TopXMLNS, __IgnoreEls, - {xmlel, <<"unsupported">>, _attrs, _els}) -> - Feature = - decode_pubsub_error_unsupported_attrs(__TopXMLNS, - _attrs, undefined), - {ps_error, unsupported, Feature}. - -decode_pubsub_error_unsupported_attrs(__TopXMLNS, - [{<<"feature">>, _val} | _attrs], - _Feature) -> - decode_pubsub_error_unsupported_attrs(__TopXMLNS, - _attrs, _val); -decode_pubsub_error_unsupported_attrs(__TopXMLNS, - [_ | _attrs], Feature) -> - decode_pubsub_error_unsupported_attrs(__TopXMLNS, - _attrs, Feature); -decode_pubsub_error_unsupported_attrs(__TopXMLNS, [], - Feature) -> - decode_pubsub_error_unsupported_attr_feature(__TopXMLNS, - Feature). - -encode_pubsub_error_unsupported({ps_error, unsupported, - Feature}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub#errors">>, - [], __TopXMLNS), - _els = [], - _attrs = - encode_pubsub_error_unsupported_attr_feature(Feature, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"unsupported">>, _attrs, _els}. - -decode_pubsub_error_unsupported_attr_feature(__TopXMLNS, - undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"feature">>, <<"unsupported">>, - __TopXMLNS}}); -decode_pubsub_error_unsupported_attr_feature(__TopXMLNS, - _val) -> - case catch dec_enum(_val, - ['access-authorize', 'access-open', 'access-presence', - 'access-roster', 'access-whitelist', 'auto-create', - 'auto-subscribe', collections, 'config-node', - 'create-and-configure', 'create-nodes', 'delete-items', - 'delete-nodes', 'filtered-notifications', - 'get-pending', 'instant-nodes', 'item-ids', - 'last-published', 'leased-subscription', - 'manage-subscriptions', 'member-affiliation', - 'meta-data', 'modify-affiliations', 'multi-collection', - 'multi-subscribe', 'outcast-affiliation', - 'persistent-items', 'presence-notifications', - 'presence-subscribe', publish, 'publish-options', - 'publish-only-affiliation', 'publisher-affiliation', - 'purge-nodes', 'retract-items', - 'retrieve-affiliations', 'retrieve-default', - 'retrieve-items', 'retrieve-subscriptions', subscribe, - 'subscription-options', 'subscription-notifications']) - of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"feature">>, <<"unsupported">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_pubsub_error_unsupported_attr_feature(_val, - _acc) -> - [{<<"feature">>, enc_enum(_val)} | _acc]. - -decode_pubsub_error_too_many_subscriptions(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"too-many-subscriptions">>, - _attrs, _els}) -> - {ps_error, 'too-many-subscriptions', undefined}. - -encode_pubsub_error_too_many_subscriptions({ps_error, - 'too-many-subscriptions', _}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub#errors">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"too-many-subscriptions">>, _attrs, _els}. - -decode_pubsub_error_subid_required(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"subid-required">>, _attrs, - _els}) -> - {ps_error, 'subid-required', undefined}. - -encode_pubsub_error_subid_required({ps_error, - 'subid-required', _}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub#errors">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"subid-required">>, _attrs, _els}. - -decode_pubsub_error_presence_subscription_required(__TopXMLNS, - __IgnoreEls, - {xmlel, - <<"presence-subscription-required">>, - _attrs, _els}) -> - {ps_error, 'presence-subscription-required', undefined}. - -encode_pubsub_error_presence_subscription_required({ps_error, - 'presence-subscription-required', - _}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub#errors">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"presence-subscription-required">>, _attrs, - _els}. - -decode_pubsub_error_pending_subscription(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"pending-subscription">>, - _attrs, _els}) -> - {ps_error, 'pending-subscription', undefined}. - -encode_pubsub_error_pending_subscription({ps_error, - 'pending-subscription', _}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub#errors">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"pending-subscription">>, _attrs, _els}. - -decode_pubsub_error_payload_required(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"payload-required">>, _attrs, - _els}) -> - {ps_error, 'payload-required', undefined}. - -encode_pubsub_error_payload_required({ps_error, - 'payload-required', _}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub#errors">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"payload-required">>, _attrs, _els}. - -decode_pubsub_error_payload_too_big(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"payload-too-big">>, _attrs, - _els}) -> - {ps_error, 'payload-too-big', undefined}. - -encode_pubsub_error_payload_too_big({ps_error, - 'payload-too-big', _}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub#errors">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"payload-too-big">>, _attrs, _els}. - -decode_pubsub_error_not_subscribed(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"not-subscribed">>, _attrs, - _els}) -> - {ps_error, 'not-subscribed', undefined}. - -encode_pubsub_error_not_subscribed({ps_error, - 'not-subscribed', _}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub#errors">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"not-subscribed">>, _attrs, _els}. - -decode_pubsub_error_not_in_roster_group(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"not-in-roster-group">>, - _attrs, _els}) -> - {ps_error, 'not-in-roster-group', undefined}. - -encode_pubsub_error_not_in_roster_group({ps_error, - 'not-in-roster-group', _}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub#errors">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"not-in-roster-group">>, _attrs, _els}. - -decode_pubsub_error_nodeid_required(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"nodeid-required">>, _attrs, - _els}) -> - {ps_error, 'nodeid-required', undefined}. - -encode_pubsub_error_nodeid_required({ps_error, - 'nodeid-required', _}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub#errors">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"nodeid-required">>, _attrs, _els}. - -decode_pubsub_error_max_nodes_exceeded(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"max-nodes-exceeded">>, _attrs, - _els}) -> - {ps_error, 'max-nodes-exceeded', undefined}. - -encode_pubsub_error_max_nodes_exceeded({ps_error, - 'max-nodes-exceeded', _}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub#errors">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"max-nodes-exceeded">>, _attrs, _els}. - -decode_pubsub_error_max_items_exceeded(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"max-items-exceeded">>, _attrs, - _els}) -> - {ps_error, 'max-items-exceeded', undefined}. - -encode_pubsub_error_max_items_exceeded({ps_error, - 'max-items-exceeded', _}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub#errors">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"max-items-exceeded">>, _attrs, _els}. - -decode_pubsub_error_jid_required(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"jid-required">>, _attrs, _els}) -> - {ps_error, 'jid-required', undefined}. - -encode_pubsub_error_jid_required({ps_error, - 'jid-required', _}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub#errors">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"jid-required">>, _attrs, _els}. - -decode_pubsub_error_item_required(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"item-required">>, _attrs, _els}) -> - {ps_error, 'item-required', undefined}. - -encode_pubsub_error_item_required({ps_error, - 'item-required', _}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub#errors">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"item-required">>, _attrs, _els}. - -decode_pubsub_error_item_forbidden(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"item-forbidden">>, _attrs, - _els}) -> - {ps_error, 'item-forbidden', undefined}. - -encode_pubsub_error_item_forbidden({ps_error, - 'item-forbidden', _}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub#errors">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"item-forbidden">>, _attrs, _els}. - -decode_pubsub_error_invalid_subid(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"invalid-subid">>, _attrs, _els}) -> - {ps_error, 'invalid-subid', undefined}. - -encode_pubsub_error_invalid_subid({ps_error, - 'invalid-subid', _}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub#errors">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"invalid-subid">>, _attrs, _els}. - -decode_pubsub_error_invalid_payload(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"invalid-payload">>, _attrs, - _els}) -> - {ps_error, 'invalid-payload', undefined}. - -encode_pubsub_error_invalid_payload({ps_error, - 'invalid-payload', _}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub#errors">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"invalid-payload">>, _attrs, _els}. - -decode_pubsub_error_invalid_options(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"invalid-options">>, _attrs, - _els}) -> - {ps_error, 'invalid-options', undefined}. - -encode_pubsub_error_invalid_options({ps_error, - 'invalid-options', _}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub#errors">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"invalid-options">>, _attrs, _els}. - -decode_pubsub_error_invalid_jid(__TopXMLNS, __IgnoreEls, - {xmlel, <<"invalid-jid">>, _attrs, _els}) -> - {ps_error, 'invalid-jid', undefined}. - -encode_pubsub_error_invalid_jid({ps_error, - 'invalid-jid', _}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub#errors">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"invalid-jid">>, _attrs, _els}. - -decode_pubsub_error_configuration_required(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"configuration-required">>, - _attrs, _els}) -> - {ps_error, 'configuration-required', undefined}. - -encode_pubsub_error_configuration_required({ps_error, - 'configuration-required', _}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub#errors">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"configuration-required">>, _attrs, _els}. - -decode_pubsub_error_closed_node(__TopXMLNS, __IgnoreEls, - {xmlel, <<"closed-node">>, _attrs, _els}) -> - {ps_error, 'closed-node', undefined}. - -encode_pubsub_error_closed_node({ps_error, - 'closed-node', _}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub#errors">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"closed-node">>, _attrs, _els}. - -decode_pubsub_owner(__TopXMLNS, __IgnoreEls, - {xmlel, <<"pubsub">>, _attrs, _els}) -> - {Subscriptions, Affiliations, Default, Purge, Delete, - Configure} = - decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, _els, - undefined, undefined, undefined, undefined, - undefined, undefined), - {pubsub_owner, Affiliations, Configure, Default, Delete, - Purge, Subscriptions}. - -decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, [], - Subscriptions, Affiliations, Default, Purge, Delete, - Configure) -> - {Subscriptions, Affiliations, Default, Purge, Delete, - Configure}; -decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"affiliations">>, _attrs, _} = _el | _els], - Subscriptions, Affiliations, Default, Purge, Delete, - Configure) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub#owner">> -> - decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, _els, - Subscriptions, - decode_pubsub_owner_affiliations(__TopXMLNS, - __IgnoreEls, - _el), - Default, Purge, Delete, Configure); - <<"http://jabber.org/protocol/pubsub#owner">> -> - decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, _els, - Subscriptions, - decode_pubsub_owner_affiliations(<<"http://jabber.org/protocol/pubsub#owner">>, - __IgnoreEls, - _el), - Default, Purge, Delete, Configure); - _ -> - decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, _els, - Subscriptions, Affiliations, Default, Purge, - Delete, Configure) - end; -decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"configure">>, _attrs, _} = _el | _els], - Subscriptions, Affiliations, Default, Purge, Delete, - Configure) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub#owner">> -> - decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, _els, - Subscriptions, Affiliations, Default, Purge, - Delete, - decode_pubsub_configure(__TopXMLNS, - __IgnoreEls, _el)); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, _els, - Subscriptions, Affiliations, Default, Purge, - Delete, - decode_pubsub_configure(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el)); - <<"http://jabber.org/protocol/pubsub#owner">> -> - decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, _els, - Subscriptions, Affiliations, Default, Purge, - Delete, - decode_pubsub_configure(<<"http://jabber.org/protocol/pubsub#owner">>, - __IgnoreEls, _el)); - _ -> - decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, _els, - Subscriptions, Affiliations, Default, Purge, - Delete, Configure) - end; -decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"default">>, _attrs, _} = _el | _els], - Subscriptions, Affiliations, Default, Purge, Delete, - Configure) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub#owner">> -> - decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, _els, - Subscriptions, Affiliations, - decode_pubsub_default(__TopXMLNS, __IgnoreEls, - _el), - Purge, Delete, Configure); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, _els, - Subscriptions, Affiliations, - decode_pubsub_default(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el), - Purge, Delete, Configure); - <<"http://jabber.org/protocol/pubsub#owner">> -> - decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, _els, - Subscriptions, Affiliations, - decode_pubsub_default(<<"http://jabber.org/protocol/pubsub#owner">>, - __IgnoreEls, _el), - Purge, Delete, Configure); - _ -> - decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, _els, - Subscriptions, Affiliations, Default, Purge, - Delete, Configure) - end; -decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"delete">>, _attrs, _} = _el | _els], - Subscriptions, Affiliations, Default, Purge, Delete, - Configure) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub#owner">> -> - decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, _els, - Subscriptions, Affiliations, Default, Purge, - decode_pubsub_delete(__TopXMLNS, __IgnoreEls, - _el), - Configure); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, _els, - Subscriptions, Affiliations, Default, Purge, - decode_pubsub_delete(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el), - Configure); - <<"http://jabber.org/protocol/pubsub#owner">> -> - decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, _els, - Subscriptions, Affiliations, Default, Purge, - decode_pubsub_delete(<<"http://jabber.org/protocol/pubsub#owner">>, - __IgnoreEls, _el), - Configure); - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, _els, - Subscriptions, Affiliations, Default, Purge, - decode_pubsub_delete(<<"http://jabber.org/protocol/pubsub#event">>, - __IgnoreEls, _el), - Configure); - _ -> - decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, _els, - Subscriptions, Affiliations, Default, Purge, - Delete, Configure) - end; -decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"purge">>, _attrs, _} = _el | _els], - Subscriptions, Affiliations, Default, Purge, Delete, - Configure) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub#owner">> -> - decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, _els, - Subscriptions, Affiliations, Default, - decode_pubsub_purge(__TopXMLNS, __IgnoreEls, - _el), - Delete, Configure); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, _els, - Subscriptions, Affiliations, Default, - decode_pubsub_purge(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el), - Delete, Configure); - <<"http://jabber.org/protocol/pubsub#owner">> -> - decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, _els, - Subscriptions, Affiliations, Default, - decode_pubsub_purge(<<"http://jabber.org/protocol/pubsub#owner">>, - __IgnoreEls, _el), - Delete, Configure); - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, _els, - Subscriptions, Affiliations, Default, - decode_pubsub_purge(<<"http://jabber.org/protocol/pubsub#event">>, - __IgnoreEls, _el), - Delete, Configure); - _ -> - decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, _els, - Subscriptions, Affiliations, Default, Purge, - Delete, Configure) - end; -decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"subscriptions">>, _attrs, _} = _el | _els], - Subscriptions, Affiliations, Default, Purge, Delete, - Configure) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub#owner">> -> - decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, _els, - decode_pubsub_subscriptions(__TopXMLNS, - __IgnoreEls, _el), - Affiliations, Default, Purge, Delete, - Configure); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, _els, - decode_pubsub_subscriptions(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el), - Affiliations, Default, Purge, Delete, - Configure); - <<"http://jabber.org/protocol/pubsub#owner">> -> - decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, _els, - decode_pubsub_subscriptions(<<"http://jabber.org/protocol/pubsub#owner">>, - __IgnoreEls, _el), - Affiliations, Default, Purge, Delete, - Configure); - _ -> - decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, _els, - Subscriptions, Affiliations, Default, Purge, - Delete, Configure) - end; -decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Subscriptions, Affiliations, Default, Purge, - Delete, Configure) -> - decode_pubsub_owner_els(__TopXMLNS, __IgnoreEls, _els, - Subscriptions, Affiliations, Default, Purge, Delete, - Configure). - -encode_pubsub_owner({pubsub_owner, Affiliations, - Configure, Default, Delete, Purge, Subscriptions}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub#owner">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_pubsub_owner_$subscriptions'(Subscriptions, - __NewTopXMLNS, - 'encode_pubsub_owner_$affiliations'(Affiliations, - __NewTopXMLNS, - 'encode_pubsub_owner_$default'(Default, - __NewTopXMLNS, - 'encode_pubsub_owner_$purge'(Purge, - __NewTopXMLNS, - 'encode_pubsub_owner_$delete'(Delete, - __NewTopXMLNS, - 'encode_pubsub_owner_$configure'(Configure, - __NewTopXMLNS, - []))))))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"pubsub">>, _attrs, _els}. - -'encode_pubsub_owner_$subscriptions'(undefined, - __TopXMLNS, _acc) -> - _acc; -'encode_pubsub_owner_$subscriptions'(Subscriptions, - __TopXMLNS, _acc) -> - [encode_pubsub_subscriptions(Subscriptions, __TopXMLNS) - | _acc]. - -'encode_pubsub_owner_$affiliations'(undefined, - __TopXMLNS, _acc) -> - _acc; -'encode_pubsub_owner_$affiliations'(Affiliations, - __TopXMLNS, _acc) -> - [encode_pubsub_owner_affiliations(Affiliations, - __TopXMLNS) - | _acc]. - -'encode_pubsub_owner_$default'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_pubsub_owner_$default'(Default, __TopXMLNS, - _acc) -> - [encode_pubsub_default(Default, __TopXMLNS) | _acc]. - -'encode_pubsub_owner_$purge'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_pubsub_owner_$purge'(Purge, __TopXMLNS, _acc) -> - [encode_pubsub_purge(Purge, __TopXMLNS) | _acc]. - -'encode_pubsub_owner_$delete'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_pubsub_owner_$delete'(Delete, __TopXMLNS, - _acc) -> - [encode_pubsub_delete(Delete, __TopXMLNS) | _acc]. - -'encode_pubsub_owner_$configure'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_pubsub_owner_$configure'(Configure, __TopXMLNS, - _acc) -> - [encode_pubsub_configure(Configure, __TopXMLNS) | _acc]. - -decode_pubsub(__TopXMLNS, __IgnoreEls, - {xmlel, <<"pubsub">>, _attrs, _els}) -> - {Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, Rsm, - Subscription} = - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, - undefined), - {pubsub, Subscriptions, Subscription, Affiliations, - Publish, Publish_options, Subscribe, Unsubscribe, - Options, Items, Retract, Create, Configure, Default, - Delete, Purge, Rsm}. - -decode_pubsub_els(__TopXMLNS, __IgnoreEls, [], - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, Rsm, - Subscription) -> - {Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, Rsm, - Subscription}; -decode_pubsub_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"subscriptions">>, _attrs, _} = _el | _els], - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, Rsm, - Subscription) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - decode_pubsub_subscriptions(__TopXMLNS, __IgnoreEls, - _el), - Default, Retract, Purge, Delete, Configure, Create, - Unsubscribe, Subscribe, Publish, Rsm, Subscription); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - decode_pubsub_subscriptions(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el), - Default, Retract, Purge, Delete, Configure, Create, - Unsubscribe, Subscribe, Publish, Rsm, Subscription); - <<"http://jabber.org/protocol/pubsub#owner">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - decode_pubsub_subscriptions(<<"http://jabber.org/protocol/pubsub#owner">>, - __IgnoreEls, _el), - Default, Retract, Purge, Delete, Configure, Create, - Unsubscribe, Subscribe, Publish, Rsm, Subscription); - _ -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, - Rsm, Subscription) - end; -decode_pubsub_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"affiliations">>, _attrs, _} = _el | _els], - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, Rsm, - Subscription) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, - decode_pubsub_affiliations(__TopXMLNS, __IgnoreEls, - _el), - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, - Rsm, Subscription); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, - decode_pubsub_affiliations(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el), - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, - Rsm, Subscription); - _ -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, - Rsm, Subscription) - end; -decode_pubsub_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"subscribe">>, _attrs, _} = _el | _els], - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, Rsm, - Subscription) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, - decode_pubsub_subscribe(__TopXMLNS, __IgnoreEls, - _el), - Publish, Rsm, Subscription); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, - decode_pubsub_subscribe(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el), - Publish, Rsm, Subscription); - _ -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, - Rsm, Subscription) - end; -decode_pubsub_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"unsubscribe">>, _attrs, _} = _el | _els], - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, Rsm, - Subscription) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, - decode_pubsub_unsubscribe(__TopXMLNS, __IgnoreEls, - _el), - Subscribe, Publish, Rsm, Subscription); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, - decode_pubsub_unsubscribe(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el), - Subscribe, Publish, Rsm, Subscription); - _ -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, - Rsm, Subscription) - end; -decode_pubsub_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"options">>, _attrs, _} = _el | _els], - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, Rsm, - Subscription) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, - decode_pubsub_options(__TopXMLNS, __IgnoreEls, _el), - Affiliations, Subscriptions, Default, Retract, - Purge, Delete, Configure, Create, Unsubscribe, - Subscribe, Publish, Rsm, Subscription); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, - decode_pubsub_options(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el), - Affiliations, Subscriptions, Default, Retract, - Purge, Delete, Configure, Create, Unsubscribe, - Subscribe, Publish, Rsm, Subscription); - _ -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, - Rsm, Subscription) - end; -decode_pubsub_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"items">>, _attrs, _} = _el | _els], - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, Rsm, - Subscription) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, - decode_pubsub_items(__TopXMLNS, __IgnoreEls, _el), - Options, Affiliations, Subscriptions, Default, - Retract, Purge, Delete, Configure, Create, - Unsubscribe, Subscribe, Publish, Rsm, Subscription); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, - decode_pubsub_items(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el), - Options, Affiliations, Subscriptions, Default, - Retract, Purge, Delete, Configure, Create, - Unsubscribe, Subscribe, Publish, Rsm, Subscription); - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, - decode_pubsub_items(<<"http://jabber.org/protocol/pubsub#event">>, - __IgnoreEls, _el), - Options, Affiliations, Subscriptions, Default, - Retract, Purge, Delete, Configure, Create, - Unsubscribe, Subscribe, Publish, Rsm, Subscription); - _ -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, - Rsm, Subscription) - end; -decode_pubsub_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"retract">>, _attrs, _} = _el | _els], - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, Rsm, - Subscription) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, - decode_pubsub_retract(__TopXMLNS, __IgnoreEls, _el), - Purge, Delete, Configure, Create, Unsubscribe, - Subscribe, Publish, Rsm, Subscription); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, - decode_pubsub_retract(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el), - Purge, Delete, Configure, Create, Unsubscribe, - Subscribe, Publish, Rsm, Subscription); - _ -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, - Rsm, Subscription) - end; -decode_pubsub_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"create">>, _attrs, _} = _el | _els], - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, Rsm, - Subscription) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, - decode_pubsub_create(__TopXMLNS, __IgnoreEls, _el), - Unsubscribe, Subscribe, Publish, Rsm, Subscription); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, - decode_pubsub_create(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el), - Unsubscribe, Subscribe, Publish, Rsm, Subscription); - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, - decode_pubsub_create(<<"http://jabber.org/protocol/pubsub#event">>, - __IgnoreEls, _el), - Unsubscribe, Subscribe, Publish, Rsm, Subscription); - _ -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, - Rsm, Subscription) - end; -decode_pubsub_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"configure">>, _attrs, _} = _el | _els], - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, Rsm, - Subscription) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - decode_pubsub_configure(__TopXMLNS, __IgnoreEls, - _el), - Create, Unsubscribe, Subscribe, Publish, Rsm, - Subscription); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - decode_pubsub_configure(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el), - Create, Unsubscribe, Subscribe, Publish, Rsm, - Subscription); - <<"http://jabber.org/protocol/pubsub#owner">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - decode_pubsub_configure(<<"http://jabber.org/protocol/pubsub#owner">>, - __IgnoreEls, _el), - Create, Unsubscribe, Subscribe, Publish, Rsm, - Subscription); - _ -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, - Rsm, Subscription) - end; -decode_pubsub_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"publish-options">>, _attrs, _} = _el - | _els], - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, Rsm, - Subscription) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - decode_pubsub_publish_options(__TopXMLNS, - __IgnoreEls, _el), - Items, Options, Affiliations, Subscriptions, - Default, Retract, Purge, Delete, Configure, Create, - Unsubscribe, Subscribe, Publish, Rsm, Subscription); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - decode_pubsub_publish_options(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el), - Items, Options, Affiliations, Subscriptions, - Default, Retract, Purge, Delete, Configure, Create, - Unsubscribe, Subscribe, Publish, Rsm, Subscription); - _ -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, - Rsm, Subscription) - end; -decode_pubsub_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"default">>, _attrs, _} = _el | _els], - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, Rsm, - Subscription) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, - decode_pubsub_default(__TopXMLNS, __IgnoreEls, _el), - Retract, Purge, Delete, Configure, Create, - Unsubscribe, Subscribe, Publish, Rsm, Subscription); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, - decode_pubsub_default(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el), - Retract, Purge, Delete, Configure, Create, - Unsubscribe, Subscribe, Publish, Rsm, Subscription); - <<"http://jabber.org/protocol/pubsub#owner">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, - decode_pubsub_default(<<"http://jabber.org/protocol/pubsub#owner">>, - __IgnoreEls, _el), - Retract, Purge, Delete, Configure, Create, - Unsubscribe, Subscribe, Publish, Rsm, Subscription); - _ -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, - Rsm, Subscription) - end; -decode_pubsub_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"delete">>, _attrs, _} = _el | _els], - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, Rsm, - Subscription) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, - decode_pubsub_delete(__TopXMLNS, __IgnoreEls, _el), - Configure, Create, Unsubscribe, Subscribe, Publish, - Rsm, Subscription); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, - decode_pubsub_delete(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el), - Configure, Create, Unsubscribe, Subscribe, Publish, - Rsm, Subscription); - <<"http://jabber.org/protocol/pubsub#owner">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, - decode_pubsub_delete(<<"http://jabber.org/protocol/pubsub#owner">>, - __IgnoreEls, _el), - Configure, Create, Unsubscribe, Subscribe, Publish, - Rsm, Subscription); - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, - decode_pubsub_delete(<<"http://jabber.org/protocol/pubsub#event">>, - __IgnoreEls, _el), - Configure, Create, Unsubscribe, Subscribe, Publish, - Rsm, Subscription); - _ -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, - Rsm, Subscription) - end; -decode_pubsub_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"purge">>, _attrs, _} = _el | _els], - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, Rsm, - Subscription) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, - decode_pubsub_purge(__TopXMLNS, __IgnoreEls, _el), - Delete, Configure, Create, Unsubscribe, Subscribe, - Publish, Rsm, Subscription); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, - decode_pubsub_purge(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el), - Delete, Configure, Create, Unsubscribe, Subscribe, - Publish, Rsm, Subscription); - <<"http://jabber.org/protocol/pubsub#owner">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, - decode_pubsub_purge(<<"http://jabber.org/protocol/pubsub#owner">>, - __IgnoreEls, _el), - Delete, Configure, Create, Unsubscribe, Subscribe, - Publish, Rsm, Subscription); - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, - decode_pubsub_purge(<<"http://jabber.org/protocol/pubsub#event">>, - __IgnoreEls, _el), - Delete, Configure, Create, Unsubscribe, Subscribe, - Publish, Rsm, Subscription); - _ -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, - Rsm, Subscription) - end; -decode_pubsub_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"subscription">>, _attrs, _} = _el | _els], - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, Rsm, - Subscription) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, - Rsm, - decode_pubsub_subscription(__TopXMLNS, __IgnoreEls, - _el)); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, - Rsm, - decode_pubsub_subscription(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el)); - <<"http://jabber.org/protocol/pubsub#owner">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, - Rsm, - decode_pubsub_subscription(<<"http://jabber.org/protocol/pubsub#owner">>, - __IgnoreEls, _el)); - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, - Rsm, - decode_pubsub_subscription(<<"http://jabber.org/protocol/pubsub#event">>, - __IgnoreEls, _el)); - _ -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, - Rsm, Subscription) - end; -decode_pubsub_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"set">>, _attrs, _} = _el | _els], - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, Rsm, - Subscription) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"http://jabber.org/protocol/rsm">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, - decode_rsm_set(<<"http://jabber.org/protocol/rsm">>, - __IgnoreEls, _el), - Subscription); - _ -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, - Rsm, Subscription) - end; -decode_pubsub_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"publish">>, _attrs, _} = _el | _els], - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, Rsm, - Subscription) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, - decode_pubsub_publish(__TopXMLNS, __IgnoreEls, _el), - Rsm, Subscription); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, - decode_pubsub_publish(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el), - Rsm, Subscription); - _ -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, - Rsm, Subscription) - end; -decode_pubsub_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, Rsm, - Subscription) -> - decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, - Publish_options, Items, Options, Affiliations, - Subscriptions, Default, Retract, Purge, Delete, - Configure, Create, Unsubscribe, Subscribe, Publish, Rsm, - Subscription). - -encode_pubsub({pubsub, Subscriptions, Subscription, - Affiliations, Publish, Publish_options, Subscribe, - Unsubscribe, Options, Items, Retract, Create, Configure, - Default, Delete, Purge, Rsm}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_pubsub_$publish_options'(Publish_options, - __NewTopXMLNS, - 'encode_pubsub_$items'(Items, - __NewTopXMLNS, - 'encode_pubsub_$options'(Options, - __NewTopXMLNS, - 'encode_pubsub_$affiliations'(Affiliations, - __NewTopXMLNS, - 'encode_pubsub_$subscriptions'(Subscriptions, - __NewTopXMLNS, - 'encode_pubsub_$default'(Default, - __NewTopXMLNS, - 'encode_pubsub_$retract'(Retract, - __NewTopXMLNS, - 'encode_pubsub_$purge'(Purge, - __NewTopXMLNS, - 'encode_pubsub_$delete'(Delete, - __NewTopXMLNS, - 'encode_pubsub_$configure'(Configure, - __NewTopXMLNS, - 'encode_pubsub_$create'(Create, - __NewTopXMLNS, - 'encode_pubsub_$unsubscribe'(Unsubscribe, - __NewTopXMLNS, - 'encode_pubsub_$subscribe'(Subscribe, - __NewTopXMLNS, - 'encode_pubsub_$publish'(Publish, - __NewTopXMLNS, - 'encode_pubsub_$rsm'(Rsm, - __NewTopXMLNS, - 'encode_pubsub_$subscription'(Subscription, - __NewTopXMLNS, - []))))))))))))))))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"pubsub">>, _attrs, _els}. - -'encode_pubsub_$publish_options'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_pubsub_$publish_options'(Publish_options, - __TopXMLNS, _acc) -> - [encode_pubsub_publish_options(Publish_options, - __TopXMLNS) - | _acc]. - -'encode_pubsub_$items'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_pubsub_$items'(Items, __TopXMLNS, _acc) -> - [encode_pubsub_items(Items, __TopXMLNS) | _acc]. - -'encode_pubsub_$options'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_pubsub_$options'(Options, __TopXMLNS, _acc) -> - [encode_pubsub_options(Options, __TopXMLNS) | _acc]. - -'encode_pubsub_$affiliations'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_pubsub_$affiliations'(Affiliations, __TopXMLNS, - _acc) -> - [encode_pubsub_affiliations(Affiliations, __TopXMLNS) - | _acc]. - -'encode_pubsub_$subscriptions'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_pubsub_$subscriptions'(Subscriptions, - __TopXMLNS, _acc) -> - [encode_pubsub_subscriptions(Subscriptions, __TopXMLNS) - | _acc]. - -'encode_pubsub_$default'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_pubsub_$default'(Default, __TopXMLNS, _acc) -> - [encode_pubsub_default(Default, __TopXMLNS) | _acc]. - -'encode_pubsub_$retract'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_pubsub_$retract'(Retract, __TopXMLNS, _acc) -> - [encode_pubsub_retract(Retract, __TopXMLNS) | _acc]. - -'encode_pubsub_$purge'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_pubsub_$purge'(Purge, __TopXMLNS, _acc) -> - [encode_pubsub_purge(Purge, __TopXMLNS) | _acc]. - -'encode_pubsub_$delete'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_pubsub_$delete'(Delete, __TopXMLNS, _acc) -> - [encode_pubsub_delete(Delete, __TopXMLNS) | _acc]. - -'encode_pubsub_$configure'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_pubsub_$configure'(Configure, __TopXMLNS, - _acc) -> - [encode_pubsub_configure(Configure, __TopXMLNS) | _acc]. - -'encode_pubsub_$create'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_pubsub_$create'(Create, __TopXMLNS, _acc) -> - [encode_pubsub_create(Create, __TopXMLNS) | _acc]. - -'encode_pubsub_$unsubscribe'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_pubsub_$unsubscribe'(Unsubscribe, __TopXMLNS, - _acc) -> - [encode_pubsub_unsubscribe(Unsubscribe, __TopXMLNS) - | _acc]. - -'encode_pubsub_$subscribe'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_pubsub_$subscribe'(Subscribe, __TopXMLNS, - _acc) -> - [encode_pubsub_subscribe(Subscribe, __TopXMLNS) | _acc]. - -'encode_pubsub_$publish'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_pubsub_$publish'(Publish, __TopXMLNS, _acc) -> - [encode_pubsub_publish(Publish, __TopXMLNS) | _acc]. - -'encode_pubsub_$rsm'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_pubsub_$rsm'(Rsm, __TopXMLNS, _acc) -> - [encode_rsm_set(Rsm, __TopXMLNS) | _acc]. - -'encode_pubsub_$subscription'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_pubsub_$subscription'(Subscription, __TopXMLNS, - _acc) -> - [encode_pubsub_subscription(Subscription, __TopXMLNS) - | _acc]. - -decode_pubsub_purge(__TopXMLNS, __IgnoreEls, - {xmlel, <<"purge">>, _attrs, _els}) -> - Node = decode_pubsub_purge_attrs(__TopXMLNS, _attrs, - undefined), - Node. - -decode_pubsub_purge_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], _Node) -> - decode_pubsub_purge_attrs(__TopXMLNS, _attrs, _val); -decode_pubsub_purge_attrs(__TopXMLNS, [_ | _attrs], - Node) -> - decode_pubsub_purge_attrs(__TopXMLNS, _attrs, Node); -decode_pubsub_purge_attrs(__TopXMLNS, [], Node) -> - decode_pubsub_purge_attr_node(__TopXMLNS, Node). - -encode_pubsub_purge(Node, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"http://jabber.org/protocol/pubsub">>, - <<"http://jabber.org/protocol/pubsub#owner">>, - <<"http://jabber.org/protocol/pubsub#event">>], - __TopXMLNS), - _els = [], - _attrs = encode_pubsub_purge_attr_node(Node, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"purge">>, _attrs, _els}. - -decode_pubsub_purge_attr_node(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"node">>, <<"purge">>, __TopXMLNS}}); -decode_pubsub_purge_attr_node(__TopXMLNS, _val) -> _val. - -encode_pubsub_purge_attr_node(_val, _acc) -> - [{<<"node">>, _val} | _acc]. - -decode_pubsub_delete(__TopXMLNS, __IgnoreEls, - {xmlel, <<"delete">>, _attrs, _els}) -> - Uri = decode_pubsub_delete_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Node = decode_pubsub_delete_attrs(__TopXMLNS, _attrs, - undefined), - {Node, Uri}. - -decode_pubsub_delete_els(__TopXMLNS, __IgnoreEls, [], - Uri) -> - Uri; -decode_pubsub_delete_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"redirect">>, _attrs, _} = _el | _els], - Uri) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub">>; - __TopXMLNS == - <<"http://jabber.org/protocol/pubsub#owner">>; - __TopXMLNS == - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_delete_els(__TopXMLNS, __IgnoreEls, _els, - decode_pubsub_redirect(__TopXMLNS, - __IgnoreEls, _el)); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_delete_els(__TopXMLNS, __IgnoreEls, _els, - decode_pubsub_redirect(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el)); - <<"http://jabber.org/protocol/pubsub#owner">> -> - decode_pubsub_delete_els(__TopXMLNS, __IgnoreEls, _els, - decode_pubsub_redirect(<<"http://jabber.org/protocol/pubsub#owner">>, - __IgnoreEls, _el)); - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_delete_els(__TopXMLNS, __IgnoreEls, _els, - decode_pubsub_redirect(<<"http://jabber.org/protocol/pubsub#event">>, - __IgnoreEls, _el)); - _ -> - decode_pubsub_delete_els(__TopXMLNS, __IgnoreEls, _els, - Uri) - end; -decode_pubsub_delete_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Uri) -> - decode_pubsub_delete_els(__TopXMLNS, __IgnoreEls, _els, - Uri). - -decode_pubsub_delete_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], _Node) -> - decode_pubsub_delete_attrs(__TopXMLNS, _attrs, _val); -decode_pubsub_delete_attrs(__TopXMLNS, [_ | _attrs], - Node) -> - decode_pubsub_delete_attrs(__TopXMLNS, _attrs, Node); -decode_pubsub_delete_attrs(__TopXMLNS, [], Node) -> - decode_pubsub_delete_attr_node(__TopXMLNS, Node). - -encode_pubsub_delete({Node, Uri}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"http://jabber.org/protocol/pubsub">>, - <<"http://jabber.org/protocol/pubsub#owner">>, - <<"http://jabber.org/protocol/pubsub#event">>], - __TopXMLNS), - _els = lists:reverse('encode_pubsub_delete_$uri'(Uri, - __NewTopXMLNS, [])), - _attrs = encode_pubsub_delete_attr_node(Node, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"delete">>, _attrs, _els}. - -'encode_pubsub_delete_$uri'(<<>>, __TopXMLNS, _acc) -> - _acc; -'encode_pubsub_delete_$uri'(Uri, __TopXMLNS, _acc) -> - [encode_pubsub_redirect(Uri, __TopXMLNS) | _acc]. - -decode_pubsub_delete_attr_node(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"node">>, <<"delete">>, __TopXMLNS}}); -decode_pubsub_delete_attr_node(__TopXMLNS, _val) -> - _val. - -encode_pubsub_delete_attr_node(_val, _acc) -> - [{<<"node">>, _val} | _acc]. - -decode_pubsub_redirect(__TopXMLNS, __IgnoreEls, - {xmlel, <<"redirect">>, _attrs, _els}) -> - Uri = decode_pubsub_redirect_attrs(__TopXMLNS, _attrs, - undefined), - Uri. - -decode_pubsub_redirect_attrs(__TopXMLNS, - [{<<"uri">>, _val} | _attrs], _Uri) -> - decode_pubsub_redirect_attrs(__TopXMLNS, _attrs, _val); -decode_pubsub_redirect_attrs(__TopXMLNS, [_ | _attrs], - Uri) -> - decode_pubsub_redirect_attrs(__TopXMLNS, _attrs, Uri); -decode_pubsub_redirect_attrs(__TopXMLNS, [], Uri) -> - decode_pubsub_redirect_attr_uri(__TopXMLNS, Uri). - -encode_pubsub_redirect(Uri, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"http://jabber.org/protocol/pubsub">>, - <<"http://jabber.org/protocol/pubsub#owner">>, - <<"http://jabber.org/protocol/pubsub#event">>], - __TopXMLNS), - _els = [], - _attrs = encode_pubsub_redirect_attr_uri(Uri, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"redirect">>, _attrs, _els}. - -decode_pubsub_redirect_attr_uri(__TopXMLNS, - undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"uri">>, <<"redirect">>, __TopXMLNS}}); -decode_pubsub_redirect_attr_uri(__TopXMLNS, _val) -> - _val. - -encode_pubsub_redirect_attr_uri(_val, _acc) -> - [{<<"uri">>, _val} | _acc]. - -decode_pubsub_default(__TopXMLNS, __IgnoreEls, - {xmlel, <<"default">>, _attrs, _els}) -> - Xdata = decode_pubsub_default_els(__TopXMLNS, - __IgnoreEls, _els, undefined), - Node = decode_pubsub_default_attrs(__TopXMLNS, _attrs, - undefined), - {Node, Xdata}. - -decode_pubsub_default_els(__TopXMLNS, __IgnoreEls, [], - Xdata) -> - Xdata; -decode_pubsub_default_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"x">>, _attrs, _} = _el | _els], Xdata) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"jabber:x:data">> -> - decode_pubsub_default_els(__TopXMLNS, __IgnoreEls, _els, - decode_xdata(<<"jabber:x:data">>, - __IgnoreEls, _el)); - _ -> - decode_pubsub_default_els(__TopXMLNS, __IgnoreEls, _els, - Xdata) - end; -decode_pubsub_default_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Xdata) -> - decode_pubsub_default_els(__TopXMLNS, __IgnoreEls, _els, - Xdata). - -decode_pubsub_default_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], _Node) -> - decode_pubsub_default_attrs(__TopXMLNS, _attrs, _val); -decode_pubsub_default_attrs(__TopXMLNS, [_ | _attrs], - Node) -> - decode_pubsub_default_attrs(__TopXMLNS, _attrs, Node); -decode_pubsub_default_attrs(__TopXMLNS, [], Node) -> - decode_pubsub_default_attr_node(__TopXMLNS, Node). - -encode_pubsub_default({Node, Xdata}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"http://jabber.org/protocol/pubsub">>, - <<"http://jabber.org/protocol/pubsub#owner">>], - __TopXMLNS), - _els = - lists:reverse('encode_pubsub_default_$xdata'(Xdata, - __NewTopXMLNS, [])), - _attrs = encode_pubsub_default_attr_node(Node, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"default">>, _attrs, _els}. - -'encode_pubsub_default_$xdata'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_pubsub_default_$xdata'(Xdata, __TopXMLNS, - _acc) -> - [encode_xdata(Xdata, __TopXMLNS) | _acc]. - -decode_pubsub_default_attr_node(__TopXMLNS, - undefined) -> - <<>>; -decode_pubsub_default_attr_node(__TopXMLNS, _val) -> - _val. - -encode_pubsub_default_attr_node(<<>>, _acc) -> _acc; -encode_pubsub_default_attr_node(_val, _acc) -> - [{<<"node">>, _val} | _acc]. - -decode_pubsub_publish_options(__TopXMLNS, __IgnoreEls, - {xmlel, <<"publish-options">>, _attrs, _els}) -> - Xdata = decode_pubsub_publish_options_els(__TopXMLNS, - __IgnoreEls, _els, undefined), - Xdata. - -decode_pubsub_publish_options_els(__TopXMLNS, - __IgnoreEls, [], Xdata) -> - Xdata; -decode_pubsub_publish_options_els(__TopXMLNS, - __IgnoreEls, - [{xmlel, <<"x">>, _attrs, _} = _el | _els], - Xdata) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"jabber:x:data">> -> - decode_pubsub_publish_options_els(__TopXMLNS, - __IgnoreEls, _els, - decode_xdata(<<"jabber:x:data">>, - __IgnoreEls, _el)); - _ -> - decode_pubsub_publish_options_els(__TopXMLNS, - __IgnoreEls, _els, Xdata) - end; -decode_pubsub_publish_options_els(__TopXMLNS, - __IgnoreEls, [_ | _els], Xdata) -> - decode_pubsub_publish_options_els(__TopXMLNS, - __IgnoreEls, _els, Xdata). - -encode_pubsub_publish_options(Xdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_pubsub_publish_options_$xdata'(Xdata, - __NewTopXMLNS, - [])), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"publish-options">>, _attrs, _els}. - -'encode_pubsub_publish_options_$xdata'(undefined, - __TopXMLNS, _acc) -> - _acc; -'encode_pubsub_publish_options_$xdata'(Xdata, - __TopXMLNS, _acc) -> - [encode_xdata(Xdata, __TopXMLNS) | _acc]. - -decode_pubsub_configure(__TopXMLNS, __IgnoreEls, - {xmlel, <<"configure">>, _attrs, _els}) -> - Xdata = decode_pubsub_configure_els(__TopXMLNS, - __IgnoreEls, _els, undefined), - Node = decode_pubsub_configure_attrs(__TopXMLNS, _attrs, - undefined), - {Node, Xdata}. - -decode_pubsub_configure_els(__TopXMLNS, __IgnoreEls, [], - Xdata) -> - Xdata; -decode_pubsub_configure_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"x">>, _attrs, _} = _el | _els], - Xdata) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"jabber:x:data">> -> - decode_pubsub_configure_els(__TopXMLNS, __IgnoreEls, - _els, - decode_xdata(<<"jabber:x:data">>, - __IgnoreEls, _el)); - _ -> - decode_pubsub_configure_els(__TopXMLNS, __IgnoreEls, - _els, Xdata) - end; -decode_pubsub_configure_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Xdata) -> - decode_pubsub_configure_els(__TopXMLNS, __IgnoreEls, - _els, Xdata). - -decode_pubsub_configure_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], _Node) -> - decode_pubsub_configure_attrs(__TopXMLNS, _attrs, _val); -decode_pubsub_configure_attrs(__TopXMLNS, [_ | _attrs], - Node) -> - decode_pubsub_configure_attrs(__TopXMLNS, _attrs, Node); -decode_pubsub_configure_attrs(__TopXMLNS, [], Node) -> - decode_pubsub_configure_attr_node(__TopXMLNS, Node). - -encode_pubsub_configure({Node, Xdata}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"http://jabber.org/protocol/pubsub">>, - <<"http://jabber.org/protocol/pubsub#owner">>], - __TopXMLNS), - _els = - lists:reverse('encode_pubsub_configure_$xdata'(Xdata, - __NewTopXMLNS, [])), - _attrs = encode_pubsub_configure_attr_node(Node, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"configure">>, _attrs, _els}. - -'encode_pubsub_configure_$xdata'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_pubsub_configure_$xdata'(Xdata, __TopXMLNS, - _acc) -> - [encode_xdata(Xdata, __TopXMLNS) | _acc]. - -decode_pubsub_configure_attr_node(__TopXMLNS, - undefined) -> - <<>>; -decode_pubsub_configure_attr_node(__TopXMLNS, _val) -> - _val. - -encode_pubsub_configure_attr_node(<<>>, _acc) -> _acc; -encode_pubsub_configure_attr_node(_val, _acc) -> - [{<<"node">>, _val} | _acc]. - -decode_pubsub_create(__TopXMLNS, __IgnoreEls, - {xmlel, <<"create">>, _attrs, _els}) -> - Node = decode_pubsub_create_attrs(__TopXMLNS, _attrs, - undefined), - Node. - -decode_pubsub_create_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], _Node) -> - decode_pubsub_create_attrs(__TopXMLNS, _attrs, _val); -decode_pubsub_create_attrs(__TopXMLNS, [_ | _attrs], - Node) -> - decode_pubsub_create_attrs(__TopXMLNS, _attrs, Node); -decode_pubsub_create_attrs(__TopXMLNS, [], Node) -> - decode_pubsub_create_attr_node(__TopXMLNS, Node). - -encode_pubsub_create(Node, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"http://jabber.org/protocol/pubsub">>, - <<"http://jabber.org/protocol/pubsub#event">>], - __TopXMLNS), - _els = [], - _attrs = encode_pubsub_create_attr_node(Node, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"create">>, _attrs, _els}. - -decode_pubsub_create_attr_node(__TopXMLNS, undefined) -> - <<>>; -decode_pubsub_create_attr_node(__TopXMLNS, _val) -> - _val. - -encode_pubsub_create_attr_node(<<>>, _acc) -> _acc; -encode_pubsub_create_attr_node(_val, _acc) -> - [{<<"node">>, _val} | _acc]. - -decode_pubsub_retract(__TopXMLNS, __IgnoreEls, - {xmlel, <<"retract">>, _attrs, _els}) -> - Items = decode_pubsub_retract_els(__TopXMLNS, - __IgnoreEls, _els, []), - {Node, Notify} = decode_pubsub_retract_attrs(__TopXMLNS, - _attrs, undefined, undefined), - {ps_retract, Node, Notify, Items}. - -decode_pubsub_retract_els(__TopXMLNS, __IgnoreEls, [], - Items) -> - lists:reverse(Items); -decode_pubsub_retract_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"item">>, _attrs, _} = _el | _els], - Items) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_retract_els(__TopXMLNS, __IgnoreEls, _els, - [decode_pubsub_item(__TopXMLNS, __IgnoreEls, - _el) - | Items]); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_retract_els(__TopXMLNS, __IgnoreEls, _els, - [decode_pubsub_item(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el) - | Items]); - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_retract_els(__TopXMLNS, __IgnoreEls, _els, - [decode_pubsub_item(<<"http://jabber.org/protocol/pubsub#event">>, - __IgnoreEls, _el) - | Items]); - _ -> - decode_pubsub_retract_els(__TopXMLNS, __IgnoreEls, _els, - Items) - end; -decode_pubsub_retract_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Items) -> - decode_pubsub_retract_els(__TopXMLNS, __IgnoreEls, _els, - Items). - -decode_pubsub_retract_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], _Node, Notify) -> - decode_pubsub_retract_attrs(__TopXMLNS, _attrs, _val, - Notify); -decode_pubsub_retract_attrs(__TopXMLNS, - [{<<"notify">>, _val} | _attrs], Node, _Notify) -> - decode_pubsub_retract_attrs(__TopXMLNS, _attrs, Node, - _val); -decode_pubsub_retract_attrs(__TopXMLNS, [_ | _attrs], - Node, Notify) -> - decode_pubsub_retract_attrs(__TopXMLNS, _attrs, Node, - Notify); -decode_pubsub_retract_attrs(__TopXMLNS, [], Node, - Notify) -> - {decode_pubsub_retract_attr_node(__TopXMLNS, Node), - decode_pubsub_retract_attr_notify(__TopXMLNS, Notify)}. - -encode_pubsub_retract({ps_retract, Node, Notify, Items}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_pubsub_retract_$items'(Items, - __NewTopXMLNS, [])), - _attrs = encode_pubsub_retract_attr_notify(Notify, - encode_pubsub_retract_attr_node(Node, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))), - {xmlel, <<"retract">>, _attrs, _els}. - -'encode_pubsub_retract_$items'([], __TopXMLNS, _acc) -> - _acc; -'encode_pubsub_retract_$items'([Items | _els], - __TopXMLNS, _acc) -> - 'encode_pubsub_retract_$items'(_els, __TopXMLNS, - [encode_pubsub_item(Items, __TopXMLNS) - | _acc]). - -decode_pubsub_retract_attr_node(__TopXMLNS, - undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"node">>, <<"retract">>, __TopXMLNS}}); -decode_pubsub_retract_attr_node(__TopXMLNS, _val) -> - _val. - -encode_pubsub_retract_attr_node(_val, _acc) -> - [{<<"node">>, _val} | _acc]. - -decode_pubsub_retract_attr_notify(__TopXMLNS, - undefined) -> - false; -decode_pubsub_retract_attr_notify(__TopXMLNS, _val) -> - case catch dec_bool(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"notify">>, <<"retract">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_pubsub_retract_attr_notify(false, _acc) -> _acc; -encode_pubsub_retract_attr_notify(_val, _acc) -> - [{<<"notify">>, enc_bool(_val)} | _acc]. - -decode_pubsub_options(__TopXMLNS, __IgnoreEls, - {xmlel, <<"options">>, _attrs, _els}) -> - Xdata = decode_pubsub_options_els(__TopXMLNS, - __IgnoreEls, _els, undefined), - {Node, Subid, Jid} = - decode_pubsub_options_attrs(__TopXMLNS, _attrs, - undefined, undefined, undefined), - {ps_options, Node, Jid, Subid, Xdata}. - -decode_pubsub_options_els(__TopXMLNS, __IgnoreEls, [], - Xdata) -> - Xdata; -decode_pubsub_options_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"x">>, _attrs, _} = _el | _els], Xdata) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"jabber:x:data">> -> - decode_pubsub_options_els(__TopXMLNS, __IgnoreEls, _els, - decode_xdata(<<"jabber:x:data">>, - __IgnoreEls, _el)); - _ -> - decode_pubsub_options_els(__TopXMLNS, __IgnoreEls, _els, - Xdata) - end; -decode_pubsub_options_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Xdata) -> - decode_pubsub_options_els(__TopXMLNS, __IgnoreEls, _els, - Xdata). - -decode_pubsub_options_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], _Node, Subid, Jid) -> - decode_pubsub_options_attrs(__TopXMLNS, _attrs, _val, - Subid, Jid); -decode_pubsub_options_attrs(__TopXMLNS, - [{<<"subid">>, _val} | _attrs], Node, _Subid, - Jid) -> - decode_pubsub_options_attrs(__TopXMLNS, _attrs, Node, - _val, Jid); -decode_pubsub_options_attrs(__TopXMLNS, - [{<<"jid">>, _val} | _attrs], Node, Subid, _Jid) -> - decode_pubsub_options_attrs(__TopXMLNS, _attrs, Node, - Subid, _val); -decode_pubsub_options_attrs(__TopXMLNS, [_ | _attrs], - Node, Subid, Jid) -> - decode_pubsub_options_attrs(__TopXMLNS, _attrs, Node, - Subid, Jid); -decode_pubsub_options_attrs(__TopXMLNS, [], Node, Subid, - Jid) -> - {decode_pubsub_options_attr_node(__TopXMLNS, Node), - decode_pubsub_options_attr_subid(__TopXMLNS, Subid), - decode_pubsub_options_attr_jid(__TopXMLNS, Jid)}. - -encode_pubsub_options({ps_options, Node, Jid, Subid, - Xdata}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_pubsub_options_$xdata'(Xdata, - __NewTopXMLNS, [])), - _attrs = encode_pubsub_options_attr_jid(Jid, - encode_pubsub_options_attr_subid(Subid, - encode_pubsub_options_attr_node(Node, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)))), - {xmlel, <<"options">>, _attrs, _els}. - -'encode_pubsub_options_$xdata'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_pubsub_options_$xdata'(Xdata, __TopXMLNS, - _acc) -> - [encode_xdata(Xdata, __TopXMLNS) | _acc]. - -decode_pubsub_options_attr_node(__TopXMLNS, - undefined) -> - <<>>; -decode_pubsub_options_attr_node(__TopXMLNS, _val) -> - _val. - -encode_pubsub_options_attr_node(<<>>, _acc) -> _acc; -encode_pubsub_options_attr_node(_val, _acc) -> - [{<<"node">>, _val} | _acc]. - -decode_pubsub_options_attr_subid(__TopXMLNS, - undefined) -> - <<>>; -decode_pubsub_options_attr_subid(__TopXMLNS, _val) -> - _val. - -encode_pubsub_options_attr_subid(<<>>, _acc) -> _acc; -encode_pubsub_options_attr_subid(_val, _acc) -> - [{<<"subid">>, _val} | _acc]. - -decode_pubsub_options_attr_jid(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"jid">>, <<"options">>, __TopXMLNS}}); -decode_pubsub_options_attr_jid(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"jid">>, <<"options">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_pubsub_options_attr_jid(_val, _acc) -> - [{<<"jid">>, enc_jid(_val)} | _acc]. - -decode_pubsub_publish(__TopXMLNS, __IgnoreEls, - {xmlel, <<"publish">>, _attrs, _els}) -> - Items = decode_pubsub_publish_els(__TopXMLNS, - __IgnoreEls, _els, []), - Node = decode_pubsub_publish_attrs(__TopXMLNS, _attrs, - undefined), - {ps_publish, Node, Items}. - -decode_pubsub_publish_els(__TopXMLNS, __IgnoreEls, [], - Items) -> - lists:reverse(Items); -decode_pubsub_publish_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"item">>, _attrs, _} = _el | _els], - Items) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_publish_els(__TopXMLNS, __IgnoreEls, _els, - [decode_pubsub_item(__TopXMLNS, __IgnoreEls, - _el) - | Items]); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_publish_els(__TopXMLNS, __IgnoreEls, _els, - [decode_pubsub_item(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el) - | Items]); - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_publish_els(__TopXMLNS, __IgnoreEls, _els, - [decode_pubsub_item(<<"http://jabber.org/protocol/pubsub#event">>, - __IgnoreEls, _el) - | Items]); - _ -> - decode_pubsub_publish_els(__TopXMLNS, __IgnoreEls, _els, - Items) - end; -decode_pubsub_publish_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Items) -> - decode_pubsub_publish_els(__TopXMLNS, __IgnoreEls, _els, - Items). - -decode_pubsub_publish_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], _Node) -> - decode_pubsub_publish_attrs(__TopXMLNS, _attrs, _val); -decode_pubsub_publish_attrs(__TopXMLNS, [_ | _attrs], - Node) -> - decode_pubsub_publish_attrs(__TopXMLNS, _attrs, Node); -decode_pubsub_publish_attrs(__TopXMLNS, [], Node) -> - decode_pubsub_publish_attr_node(__TopXMLNS, Node). - -encode_pubsub_publish({ps_publish, Node, Items}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_pubsub_publish_$items'(Items, - __NewTopXMLNS, [])), - _attrs = encode_pubsub_publish_attr_node(Node, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"publish">>, _attrs, _els}. - -'encode_pubsub_publish_$items'([], __TopXMLNS, _acc) -> - _acc; -'encode_pubsub_publish_$items'([Items | _els], - __TopXMLNS, _acc) -> - 'encode_pubsub_publish_$items'(_els, __TopXMLNS, - [encode_pubsub_item(Items, __TopXMLNS) - | _acc]). - -decode_pubsub_publish_attr_node(__TopXMLNS, - undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"node">>, <<"publish">>, __TopXMLNS}}); -decode_pubsub_publish_attr_node(__TopXMLNS, _val) -> - _val. - -encode_pubsub_publish_attr_node(_val, _acc) -> - [{<<"node">>, _val} | _acc]. - -decode_pubsub_unsubscribe(__TopXMLNS, __IgnoreEls, - {xmlel, <<"unsubscribe">>, _attrs, _els}) -> - {Node, Subid, Jid} = - decode_pubsub_unsubscribe_attrs(__TopXMLNS, _attrs, - undefined, undefined, undefined), - {ps_unsubscribe, Node, Jid, Subid}. - -decode_pubsub_unsubscribe_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], _Node, Subid, - Jid) -> - decode_pubsub_unsubscribe_attrs(__TopXMLNS, _attrs, - _val, Subid, Jid); -decode_pubsub_unsubscribe_attrs(__TopXMLNS, - [{<<"subid">>, _val} | _attrs], Node, _Subid, - Jid) -> - decode_pubsub_unsubscribe_attrs(__TopXMLNS, _attrs, - Node, _val, Jid); -decode_pubsub_unsubscribe_attrs(__TopXMLNS, - [{<<"jid">>, _val} | _attrs], Node, Subid, - _Jid) -> - decode_pubsub_unsubscribe_attrs(__TopXMLNS, _attrs, - Node, Subid, _val); -decode_pubsub_unsubscribe_attrs(__TopXMLNS, - [_ | _attrs], Node, Subid, Jid) -> - decode_pubsub_unsubscribe_attrs(__TopXMLNS, _attrs, - Node, Subid, Jid); -decode_pubsub_unsubscribe_attrs(__TopXMLNS, [], Node, - Subid, Jid) -> - {decode_pubsub_unsubscribe_attr_node(__TopXMLNS, Node), - decode_pubsub_unsubscribe_attr_subid(__TopXMLNS, Subid), - decode_pubsub_unsubscribe_attr_jid(__TopXMLNS, Jid)}. - -encode_pubsub_unsubscribe({ps_unsubscribe, Node, Jid, - Subid}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub">>, - [], __TopXMLNS), - _els = [], - _attrs = encode_pubsub_unsubscribe_attr_jid(Jid, - encode_pubsub_unsubscribe_attr_subid(Subid, - encode_pubsub_unsubscribe_attr_node(Node, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)))), - {xmlel, <<"unsubscribe">>, _attrs, _els}. - -decode_pubsub_unsubscribe_attr_node(__TopXMLNS, - undefined) -> - <<>>; -decode_pubsub_unsubscribe_attr_node(__TopXMLNS, _val) -> - _val. - -encode_pubsub_unsubscribe_attr_node(<<>>, _acc) -> _acc; -encode_pubsub_unsubscribe_attr_node(_val, _acc) -> - [{<<"node">>, _val} | _acc]. - -decode_pubsub_unsubscribe_attr_subid(__TopXMLNS, - undefined) -> - <<>>; -decode_pubsub_unsubscribe_attr_subid(__TopXMLNS, - _val) -> - _val. - -encode_pubsub_unsubscribe_attr_subid(<<>>, _acc) -> - _acc; -encode_pubsub_unsubscribe_attr_subid(_val, _acc) -> - [{<<"subid">>, _val} | _acc]. - -decode_pubsub_unsubscribe_attr_jid(__TopXMLNS, - undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"jid">>, <<"unsubscribe">>, - __TopXMLNS}}); -decode_pubsub_unsubscribe_attr_jid(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"jid">>, <<"unsubscribe">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_pubsub_unsubscribe_attr_jid(_val, _acc) -> - [{<<"jid">>, enc_jid(_val)} | _acc]. - -decode_pubsub_subscribe(__TopXMLNS, __IgnoreEls, - {xmlel, <<"subscribe">>, _attrs, _els}) -> - {Node, Jid} = decode_pubsub_subscribe_attrs(__TopXMLNS, - _attrs, undefined, undefined), - {ps_subscribe, Node, Jid}. - -decode_pubsub_subscribe_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], _Node, Jid) -> - decode_pubsub_subscribe_attrs(__TopXMLNS, _attrs, _val, - Jid); -decode_pubsub_subscribe_attrs(__TopXMLNS, - [{<<"jid">>, _val} | _attrs], Node, _Jid) -> - decode_pubsub_subscribe_attrs(__TopXMLNS, _attrs, Node, - _val); -decode_pubsub_subscribe_attrs(__TopXMLNS, [_ | _attrs], - Node, Jid) -> - decode_pubsub_subscribe_attrs(__TopXMLNS, _attrs, Node, - Jid); -decode_pubsub_subscribe_attrs(__TopXMLNS, [], Node, - Jid) -> - {decode_pubsub_subscribe_attr_node(__TopXMLNS, Node), - decode_pubsub_subscribe_attr_jid(__TopXMLNS, Jid)}. - -encode_pubsub_subscribe({ps_subscribe, Node, Jid}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub">>, - [], __TopXMLNS), - _els = [], - _attrs = encode_pubsub_subscribe_attr_jid(Jid, - encode_pubsub_subscribe_attr_node(Node, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))), - {xmlel, <<"subscribe">>, _attrs, _els}. - -decode_pubsub_subscribe_attr_node(__TopXMLNS, - undefined) -> - <<>>; -decode_pubsub_subscribe_attr_node(__TopXMLNS, _val) -> - _val. - -encode_pubsub_subscribe_attr_node(<<>>, _acc) -> _acc; -encode_pubsub_subscribe_attr_node(_val, _acc) -> - [{<<"node">>, _val} | _acc]. - -decode_pubsub_subscribe_attr_jid(__TopXMLNS, - undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"jid">>, <<"subscribe">>, - __TopXMLNS}}); -decode_pubsub_subscribe_attr_jid(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"jid">>, <<"subscribe">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_pubsub_subscribe_attr_jid(_val, _acc) -> - [{<<"jid">>, enc_jid(_val)} | _acc]. - -decode_pubsub_owner_affiliations(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"affiliations">>, _attrs, _els}) -> - Affiliations = - decode_pubsub_owner_affiliations_els(__TopXMLNS, - __IgnoreEls, _els, []), - Node = - decode_pubsub_owner_affiliations_attrs(__TopXMLNS, - _attrs, undefined), - {Node, Affiliations}. - -decode_pubsub_owner_affiliations_els(__TopXMLNS, - __IgnoreEls, [], Affiliations) -> - lists:reverse(Affiliations); -decode_pubsub_owner_affiliations_els(__TopXMLNS, - __IgnoreEls, - [{xmlel, <<"affiliation">>, _attrs, _} = - _el - | _els], - Affiliations) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub#owner">> -> - decode_pubsub_owner_affiliations_els(__TopXMLNS, - __IgnoreEls, _els, - [decode_pubsub_owner_affiliation(__TopXMLNS, - __IgnoreEls, - _el) - | Affiliations]); - <<"http://jabber.org/protocol/pubsub#owner">> -> - decode_pubsub_owner_affiliations_els(__TopXMLNS, - __IgnoreEls, _els, - [decode_pubsub_owner_affiliation(<<"http://jabber.org/protocol/pubsub#owner">>, - __IgnoreEls, - _el) - | Affiliations]); - _ -> - decode_pubsub_owner_affiliations_els(__TopXMLNS, - __IgnoreEls, _els, Affiliations) - end; -decode_pubsub_owner_affiliations_els(__TopXMLNS, - __IgnoreEls, [_ | _els], Affiliations) -> - decode_pubsub_owner_affiliations_els(__TopXMLNS, - __IgnoreEls, _els, Affiliations). - -decode_pubsub_owner_affiliations_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], _Node) -> - decode_pubsub_owner_affiliations_attrs(__TopXMLNS, - _attrs, _val); -decode_pubsub_owner_affiliations_attrs(__TopXMLNS, - [_ | _attrs], Node) -> - decode_pubsub_owner_affiliations_attrs(__TopXMLNS, - _attrs, Node); -decode_pubsub_owner_affiliations_attrs(__TopXMLNS, [], - Node) -> - decode_pubsub_owner_affiliations_attr_node(__TopXMLNS, - Node). - -encode_pubsub_owner_affiliations({Node, Affiliations}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub#owner">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_pubsub_owner_affiliations_$affiliations'(Affiliations, - __NewTopXMLNS, - [])), - _attrs = - encode_pubsub_owner_affiliations_attr_node(Node, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"affiliations">>, _attrs, _els}. - -'encode_pubsub_owner_affiliations_$affiliations'([], - __TopXMLNS, _acc) -> - _acc; -'encode_pubsub_owner_affiliations_$affiliations'([Affiliations - | _els], - __TopXMLNS, _acc) -> - 'encode_pubsub_owner_affiliations_$affiliations'(_els, - __TopXMLNS, - [encode_pubsub_owner_affiliation(Affiliations, - __TopXMLNS) - | _acc]). - -decode_pubsub_owner_affiliations_attr_node(__TopXMLNS, - undefined) -> - <<>>; -decode_pubsub_owner_affiliations_attr_node(__TopXMLNS, - _val) -> - _val. - -encode_pubsub_owner_affiliations_attr_node(<<>>, - _acc) -> - _acc; -encode_pubsub_owner_affiliations_attr_node(_val, - _acc) -> - [{<<"node">>, _val} | _acc]. - -decode_pubsub_affiliations(__TopXMLNS, __IgnoreEls, - {xmlel, <<"affiliations">>, _attrs, _els}) -> - Affiliations = - decode_pubsub_affiliations_els(__TopXMLNS, __IgnoreEls, - _els, []), - Node = decode_pubsub_affiliations_attrs(__TopXMLNS, - _attrs, undefined), - {Node, Affiliations}. - -decode_pubsub_affiliations_els(__TopXMLNS, __IgnoreEls, - [], Affiliations) -> - lists:reverse(Affiliations); -decode_pubsub_affiliations_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"affiliation">>, _attrs, _} = _el - | _els], - Affiliations) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_affiliations_els(__TopXMLNS, __IgnoreEls, - _els, - [decode_pubsub_affiliation(__TopXMLNS, - __IgnoreEls, - _el) - | Affiliations]); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_affiliations_els(__TopXMLNS, __IgnoreEls, - _els, - [decode_pubsub_affiliation(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, - _el) - | Affiliations]); - _ -> - decode_pubsub_affiliations_els(__TopXMLNS, __IgnoreEls, - _els, Affiliations) - end; -decode_pubsub_affiliations_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Affiliations) -> - decode_pubsub_affiliations_els(__TopXMLNS, __IgnoreEls, - _els, Affiliations). - -decode_pubsub_affiliations_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], _Node) -> - decode_pubsub_affiliations_attrs(__TopXMLNS, _attrs, - _val); -decode_pubsub_affiliations_attrs(__TopXMLNS, - [_ | _attrs], Node) -> - decode_pubsub_affiliations_attrs(__TopXMLNS, _attrs, - Node); -decode_pubsub_affiliations_attrs(__TopXMLNS, [], - Node) -> - decode_pubsub_affiliations_attr_node(__TopXMLNS, Node). - -encode_pubsub_affiliations({Node, Affiliations}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_pubsub_affiliations_$affiliations'(Affiliations, - __NewTopXMLNS, - [])), - _attrs = encode_pubsub_affiliations_attr_node(Node, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"affiliations">>, _attrs, _els}. - -'encode_pubsub_affiliations_$affiliations'([], - __TopXMLNS, _acc) -> - _acc; -'encode_pubsub_affiliations_$affiliations'([Affiliations - | _els], - __TopXMLNS, _acc) -> - 'encode_pubsub_affiliations_$affiliations'(_els, - __TopXMLNS, - [encode_pubsub_affiliation(Affiliations, - __TopXMLNS) - | _acc]). - -decode_pubsub_affiliations_attr_node(__TopXMLNS, - undefined) -> - <<>>; -decode_pubsub_affiliations_attr_node(__TopXMLNS, - _val) -> - _val. - -encode_pubsub_affiliations_attr_node(<<>>, _acc) -> - _acc; -encode_pubsub_affiliations_attr_node(_val, _acc) -> - [{<<"node">>, _val} | _acc]. - -decode_pubsub_subscriptions(__TopXMLNS, __IgnoreEls, - {xmlel, <<"subscriptions">>, _attrs, _els}) -> - Subscriptions = - decode_pubsub_subscriptions_els(__TopXMLNS, __IgnoreEls, - _els, []), - Node = decode_pubsub_subscriptions_attrs(__TopXMLNS, - _attrs, undefined), - {Node, Subscriptions}. - -decode_pubsub_subscriptions_els(__TopXMLNS, __IgnoreEls, - [], Subscriptions) -> - lists:reverse(Subscriptions); -decode_pubsub_subscriptions_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"subscription">>, _attrs, _} = _el - | _els], - Subscriptions) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub">>; - __TopXMLNS == - <<"http://jabber.org/protocol/pubsub#owner">> -> - decode_pubsub_subscriptions_els(__TopXMLNS, __IgnoreEls, - _els, - [decode_pubsub_subscription(__TopXMLNS, - __IgnoreEls, - _el) - | Subscriptions]); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_subscriptions_els(__TopXMLNS, __IgnoreEls, - _els, - [decode_pubsub_subscription(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, - _el) - | Subscriptions]); - <<"http://jabber.org/protocol/pubsub#owner">> -> - decode_pubsub_subscriptions_els(__TopXMLNS, __IgnoreEls, - _els, - [decode_pubsub_subscription(<<"http://jabber.org/protocol/pubsub#owner">>, - __IgnoreEls, - _el) - | Subscriptions]); - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_subscriptions_els(__TopXMLNS, __IgnoreEls, - _els, - [decode_pubsub_subscription(<<"http://jabber.org/protocol/pubsub#event">>, - __IgnoreEls, - _el) - | Subscriptions]); - _ -> - decode_pubsub_subscriptions_els(__TopXMLNS, __IgnoreEls, - _els, Subscriptions) - end; -decode_pubsub_subscriptions_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Subscriptions) -> - decode_pubsub_subscriptions_els(__TopXMLNS, __IgnoreEls, - _els, Subscriptions). - -decode_pubsub_subscriptions_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], _Node) -> - decode_pubsub_subscriptions_attrs(__TopXMLNS, _attrs, - _val); -decode_pubsub_subscriptions_attrs(__TopXMLNS, - [_ | _attrs], Node) -> - decode_pubsub_subscriptions_attrs(__TopXMLNS, _attrs, - Node); -decode_pubsub_subscriptions_attrs(__TopXMLNS, [], - Node) -> - decode_pubsub_subscriptions_attr_node(__TopXMLNS, Node). - -encode_pubsub_subscriptions({Node, Subscriptions}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"http://jabber.org/protocol/pubsub">>, - <<"http://jabber.org/protocol/pubsub#owner">>], - __TopXMLNS), - _els = - lists:reverse('encode_pubsub_subscriptions_$subscriptions'(Subscriptions, - __NewTopXMLNS, - [])), - _attrs = encode_pubsub_subscriptions_attr_node(Node, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"subscriptions">>, _attrs, _els}. - -'encode_pubsub_subscriptions_$subscriptions'([], - __TopXMLNS, _acc) -> - _acc; -'encode_pubsub_subscriptions_$subscriptions'([Subscriptions - | _els], - __TopXMLNS, _acc) -> - 'encode_pubsub_subscriptions_$subscriptions'(_els, - __TopXMLNS, - [encode_pubsub_subscription(Subscriptions, - __TopXMLNS) - | _acc]). - -decode_pubsub_subscriptions_attr_node(__TopXMLNS, - undefined) -> - <<>>; -decode_pubsub_subscriptions_attr_node(__TopXMLNS, - _val) -> - _val. - -encode_pubsub_subscriptions_attr_node(<<>>, _acc) -> - _acc; -encode_pubsub_subscriptions_attr_node(_val, _acc) -> - [{<<"node">>, _val} | _acc]. - -decode_pubsub_event(__TopXMLNS, __IgnoreEls, - {xmlel, <<"event">>, _attrs, _els}) -> - {Items, Create, Delete, Purge, Configuration, - Subscription} = - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - undefined, undefined, undefined, undefined, - undefined, undefined), - {ps_event, Items, Purge, Subscription, Delete, Create, - Configuration}. - -decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, [], - Items, Create, Delete, Purge, Configuration, - Subscription) -> - {Items, Create, Delete, Purge, Configuration, - Subscription}; -decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"items">>, _attrs, _} = _el | _els], Items, - Create, Delete, Purge, Configuration, Subscription) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - decode_pubsub_items(__TopXMLNS, __IgnoreEls, - _el), - Create, Delete, Purge, Configuration, - Subscription); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - decode_pubsub_items(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el), - Create, Delete, Purge, Configuration, - Subscription); - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - decode_pubsub_items(<<"http://jabber.org/protocol/pubsub#event">>, - __IgnoreEls, _el), - Create, Delete, Purge, Configuration, - Subscription); - _ -> - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - Items, Create, Delete, Purge, Configuration, - Subscription) - end; -decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"subscription">>, _attrs, _} = _el | _els], - Items, Create, Delete, Purge, Configuration, - Subscription) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - Items, Create, Delete, Purge, Configuration, - decode_pubsub_subscription(__TopXMLNS, - __IgnoreEls, _el)); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - Items, Create, Delete, Purge, Configuration, - decode_pubsub_subscription(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el)); - <<"http://jabber.org/protocol/pubsub#owner">> -> - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - Items, Create, Delete, Purge, Configuration, - decode_pubsub_subscription(<<"http://jabber.org/protocol/pubsub#owner">>, - __IgnoreEls, _el)); - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - Items, Create, Delete, Purge, Configuration, - decode_pubsub_subscription(<<"http://jabber.org/protocol/pubsub#event">>, - __IgnoreEls, _el)); - _ -> - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - Items, Create, Delete, Purge, Configuration, - Subscription) - end; -decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"purge">>, _attrs, _} = _el | _els], Items, - Create, Delete, Purge, Configuration, Subscription) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - Items, Create, Delete, - decode_pubsub_purge(__TopXMLNS, __IgnoreEls, - _el), - Configuration, Subscription); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - Items, Create, Delete, - decode_pubsub_purge(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el), - Configuration, Subscription); - <<"http://jabber.org/protocol/pubsub#owner">> -> - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - Items, Create, Delete, - decode_pubsub_purge(<<"http://jabber.org/protocol/pubsub#owner">>, - __IgnoreEls, _el), - Configuration, Subscription); - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - Items, Create, Delete, - decode_pubsub_purge(<<"http://jabber.org/protocol/pubsub#event">>, - __IgnoreEls, _el), - Configuration, Subscription); - _ -> - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - Items, Create, Delete, Purge, Configuration, - Subscription) - end; -decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"delete">>, _attrs, _} = _el | _els], Items, - Create, Delete, Purge, Configuration, Subscription) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - Items, Create, - decode_pubsub_delete(__TopXMLNS, __IgnoreEls, - _el), - Purge, Configuration, Subscription); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - Items, Create, - decode_pubsub_delete(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el), - Purge, Configuration, Subscription); - <<"http://jabber.org/protocol/pubsub#owner">> -> - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - Items, Create, - decode_pubsub_delete(<<"http://jabber.org/protocol/pubsub#owner">>, - __IgnoreEls, _el), - Purge, Configuration, Subscription); - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - Items, Create, - decode_pubsub_delete(<<"http://jabber.org/protocol/pubsub#event">>, - __IgnoreEls, _el), - Purge, Configuration, Subscription); - _ -> - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - Items, Create, Delete, Purge, Configuration, - Subscription) - end; -decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"create">>, _attrs, _} = _el | _els], Items, - Create, Delete, Purge, Configuration, Subscription) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - Items, - decode_pubsub_create(__TopXMLNS, __IgnoreEls, - _el), - Delete, Purge, Configuration, Subscription); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - Items, - decode_pubsub_create(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el), - Delete, Purge, Configuration, Subscription); - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - Items, - decode_pubsub_create(<<"http://jabber.org/protocol/pubsub#event">>, - __IgnoreEls, _el), - Delete, Purge, Configuration, Subscription); - _ -> - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - Items, Create, Delete, Purge, Configuration, - Subscription) - end; -decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"configuration">>, _attrs, _} = _el | _els], - Items, Create, Delete, Purge, Configuration, - Subscription) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - Items, Create, Delete, Purge, - decode_pubsub_event_configuration(__TopXMLNS, - __IgnoreEls, - _el), - Subscription); - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - Items, Create, Delete, Purge, - decode_pubsub_event_configuration(<<"http://jabber.org/protocol/pubsub#event">>, - __IgnoreEls, - _el), - Subscription); - _ -> - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - Items, Create, Delete, Purge, Configuration, - Subscription) - end; -decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Items, Create, Delete, Purge, Configuration, - Subscription) -> - decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els, - Items, Create, Delete, Purge, Configuration, - Subscription). - -encode_pubsub_event({ps_event, Items, Purge, - Subscription, Delete, Create, Configuration}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub#event">>, - [], __TopXMLNS), - _els = lists:reverse('encode_pubsub_event_$items'(Items, - __NewTopXMLNS, - 'encode_pubsub_event_$create'(Create, - __NewTopXMLNS, - 'encode_pubsub_event_$delete'(Delete, - __NewTopXMLNS, - 'encode_pubsub_event_$purge'(Purge, - __NewTopXMLNS, - 'encode_pubsub_event_$configuration'(Configuration, - __NewTopXMLNS, - 'encode_pubsub_event_$subscription'(Subscription, - __NewTopXMLNS, - []))))))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"event">>, _attrs, _els}. - -'encode_pubsub_event_$items'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_pubsub_event_$items'(Items, __TopXMLNS, _acc) -> - [encode_pubsub_items(Items, __TopXMLNS) | _acc]. - -'encode_pubsub_event_$create'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_pubsub_event_$create'(Create, __TopXMLNS, - _acc) -> - [encode_pubsub_create(Create, __TopXMLNS) | _acc]. - -'encode_pubsub_event_$delete'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_pubsub_event_$delete'(Delete, __TopXMLNS, - _acc) -> - [encode_pubsub_delete(Delete, __TopXMLNS) | _acc]. - -'encode_pubsub_event_$purge'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_pubsub_event_$purge'(Purge, __TopXMLNS, _acc) -> - [encode_pubsub_purge(Purge, __TopXMLNS) | _acc]. - -'encode_pubsub_event_$configuration'(undefined, - __TopXMLNS, _acc) -> - _acc; -'encode_pubsub_event_$configuration'(Configuration, - __TopXMLNS, _acc) -> - [encode_pubsub_event_configuration(Configuration, - __TopXMLNS) - | _acc]. - -'encode_pubsub_event_$subscription'(undefined, - __TopXMLNS, _acc) -> - _acc; -'encode_pubsub_event_$subscription'(Subscription, - __TopXMLNS, _acc) -> - [encode_pubsub_subscription(Subscription, __TopXMLNS) - | _acc]. - -decode_pubsub_items(__TopXMLNS, __IgnoreEls, - {xmlel, <<"items">>, _attrs, _els}) -> - {Items, Retract} = decode_pubsub_items_els(__TopXMLNS, - __IgnoreEls, _els, [], - undefined), - {Xmlns, Max_items, Node, Subid} = - decode_pubsub_items_attrs(__TopXMLNS, _attrs, undefined, - undefined, undefined, undefined), - {ps_items, Xmlns, Node, Items, Max_items, Subid, - Retract}. - -decode_pubsub_items_els(__TopXMLNS, __IgnoreEls, [], - Items, Retract) -> - {lists:reverse(Items), Retract}; -decode_pubsub_items_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"retract">>, _attrs, _} = _el | _els], Items, - Retract) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_items_els(__TopXMLNS, __IgnoreEls, _els, - Items, - decode_pubsub_event_retract(__TopXMLNS, - __IgnoreEls, - _el)); - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_items_els(__TopXMLNS, __IgnoreEls, _els, - Items, - decode_pubsub_event_retract(<<"http://jabber.org/protocol/pubsub#event">>, - __IgnoreEls, - _el)); - _ -> - decode_pubsub_items_els(__TopXMLNS, __IgnoreEls, _els, - Items, Retract) - end; -decode_pubsub_items_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"item">>, _attrs, _} = _el | _els], Items, - Retract) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/pubsub">>; - __TopXMLNS == - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_items_els(__TopXMLNS, __IgnoreEls, _els, - [decode_pubsub_item(__TopXMLNS, __IgnoreEls, - _el) - | Items], - Retract); - <<"http://jabber.org/protocol/pubsub">> -> - decode_pubsub_items_els(__TopXMLNS, __IgnoreEls, _els, - [decode_pubsub_item(<<"http://jabber.org/protocol/pubsub">>, - __IgnoreEls, _el) - | Items], - Retract); - <<"http://jabber.org/protocol/pubsub#event">> -> - decode_pubsub_items_els(__TopXMLNS, __IgnoreEls, _els, - [decode_pubsub_item(<<"http://jabber.org/protocol/pubsub#event">>, - __IgnoreEls, _el) - | Items], - Retract); - _ -> - decode_pubsub_items_els(__TopXMLNS, __IgnoreEls, _els, - Items, Retract) - end; -decode_pubsub_items_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Items, Retract) -> - decode_pubsub_items_els(__TopXMLNS, __IgnoreEls, _els, - Items, Retract). - -decode_pubsub_items_attrs(__TopXMLNS, - [{<<"xmlns">>, _val} | _attrs], _Xmlns, Max_items, - Node, Subid) -> - decode_pubsub_items_attrs(__TopXMLNS, _attrs, _val, - Max_items, Node, Subid); -decode_pubsub_items_attrs(__TopXMLNS, - [{<<"max_items">>, _val} | _attrs], Xmlns, _Max_items, - Node, Subid) -> - decode_pubsub_items_attrs(__TopXMLNS, _attrs, Xmlns, - _val, Node, Subid); -decode_pubsub_items_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], Xmlns, Max_items, - _Node, Subid) -> - decode_pubsub_items_attrs(__TopXMLNS, _attrs, Xmlns, - Max_items, _val, Subid); -decode_pubsub_items_attrs(__TopXMLNS, - [{<<"subid">>, _val} | _attrs], Xmlns, Max_items, - Node, _Subid) -> - decode_pubsub_items_attrs(__TopXMLNS, _attrs, Xmlns, - Max_items, Node, _val); -decode_pubsub_items_attrs(__TopXMLNS, [_ | _attrs], - Xmlns, Max_items, Node, Subid) -> - decode_pubsub_items_attrs(__TopXMLNS, _attrs, Xmlns, - Max_items, Node, Subid); -decode_pubsub_items_attrs(__TopXMLNS, [], Xmlns, - Max_items, Node, Subid) -> - {decode_pubsub_items_attr_xmlns(__TopXMLNS, Xmlns), - decode_pubsub_items_attr_max_items(__TopXMLNS, - Max_items), - decode_pubsub_items_attr_node(__TopXMLNS, Node), - decode_pubsub_items_attr_subid(__TopXMLNS, Subid)}. - -encode_pubsub_items({ps_items, Xmlns, Node, Items, - Max_items, Subid, Retract}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(Xmlns, - [<<"http://jabber.org/protocol/pubsub">>, - <<"http://jabber.org/protocol/pubsub#event">>], - __TopXMLNS), - _els = lists:reverse('encode_pubsub_items_$items'(Items, - __NewTopXMLNS, - 'encode_pubsub_items_$retract'(Retract, - __NewTopXMLNS, - []))), - _attrs = encode_pubsub_items_attr_subid(Subid, - encode_pubsub_items_attr_node(Node, - encode_pubsub_items_attr_max_items(Max_items, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)))), - {xmlel, <<"items">>, _attrs, _els}. - -'encode_pubsub_items_$items'([], __TopXMLNS, _acc) -> - _acc; -'encode_pubsub_items_$items'([Items | _els], __TopXMLNS, - _acc) -> - 'encode_pubsub_items_$items'(_els, __TopXMLNS, - [encode_pubsub_item(Items, __TopXMLNS) - | _acc]). - -'encode_pubsub_items_$retract'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_pubsub_items_$retract'(Retract, __TopXMLNS, - _acc) -> - [encode_pubsub_event_retract(Retract, __TopXMLNS) - | _acc]. - -decode_pubsub_items_attr_xmlns(__TopXMLNS, undefined) -> - <<>>; -decode_pubsub_items_attr_xmlns(__TopXMLNS, _val) -> - _val. - -decode_pubsub_items_attr_max_items(__TopXMLNS, - undefined) -> - undefined; -decode_pubsub_items_attr_max_items(__TopXMLNS, _val) -> - case catch dec_int(_val, 0, infinity) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"max_items">>, <<"items">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_pubsub_items_attr_max_items(undefined, _acc) -> - _acc; -encode_pubsub_items_attr_max_items(_val, _acc) -> - [{<<"max_items">>, enc_int(_val)} | _acc]. - -decode_pubsub_items_attr_node(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"node">>, <<"items">>, __TopXMLNS}}); -decode_pubsub_items_attr_node(__TopXMLNS, _val) -> _val. - -encode_pubsub_items_attr_node(_val, _acc) -> - [{<<"node">>, _val} | _acc]. - -decode_pubsub_items_attr_subid(__TopXMLNS, undefined) -> - <<>>; -decode_pubsub_items_attr_subid(__TopXMLNS, _val) -> - _val. - -encode_pubsub_items_attr_subid(<<>>, _acc) -> _acc; -encode_pubsub_items_attr_subid(_val, _acc) -> - [{<<"subid">>, _val} | _acc]. - -decode_pubsub_item(__TopXMLNS, __IgnoreEls, - {xmlel, <<"item">>, _attrs, _els}) -> - __Xmls = decode_pubsub_item_els(__TopXMLNS, __IgnoreEls, - _els, []), - {Id, Xmlns, Node, Publisher} = - decode_pubsub_item_attrs(__TopXMLNS, _attrs, undefined, - undefined, undefined, undefined), - {ps_item, Xmlns, Id, __Xmls, Node, Publisher}. - -decode_pubsub_item_els(__TopXMLNS, __IgnoreEls, [], - __Xmls) -> - lists:reverse(__Xmls); -decode_pubsub_item_els(__TopXMLNS, __IgnoreEls, - [{xmlel, _, _, _} = _el | _els], __Xmls) -> - decode_pubsub_item_els(__TopXMLNS, __IgnoreEls, _els, - [_el | __Xmls]); -decode_pubsub_item_els(__TopXMLNS, __IgnoreEls, - [_ | _els], __Xmls) -> - decode_pubsub_item_els(__TopXMLNS, __IgnoreEls, _els, - __Xmls). - -decode_pubsub_item_attrs(__TopXMLNS, - [{<<"id">>, _val} | _attrs], _Id, Xmlns, Node, - Publisher) -> - decode_pubsub_item_attrs(__TopXMLNS, _attrs, _val, - Xmlns, Node, Publisher); -decode_pubsub_item_attrs(__TopXMLNS, - [{<<"xmlns">>, _val} | _attrs], Id, _Xmlns, Node, - Publisher) -> - decode_pubsub_item_attrs(__TopXMLNS, _attrs, Id, _val, - Node, Publisher); -decode_pubsub_item_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], Id, Xmlns, _Node, - Publisher) -> - decode_pubsub_item_attrs(__TopXMLNS, _attrs, Id, Xmlns, - _val, Publisher); -decode_pubsub_item_attrs(__TopXMLNS, - [{<<"publisher">>, _val} | _attrs], Id, Xmlns, Node, - _Publisher) -> - decode_pubsub_item_attrs(__TopXMLNS, _attrs, Id, Xmlns, - Node, _val); -decode_pubsub_item_attrs(__TopXMLNS, [_ | _attrs], Id, - Xmlns, Node, Publisher) -> - decode_pubsub_item_attrs(__TopXMLNS, _attrs, Id, Xmlns, - Node, Publisher); -decode_pubsub_item_attrs(__TopXMLNS, [], Id, Xmlns, - Node, Publisher) -> - {decode_pubsub_item_attr_id(__TopXMLNS, Id), - decode_pubsub_item_attr_xmlns(__TopXMLNS, Xmlns), - decode_pubsub_item_attr_node(__TopXMLNS, Node), - decode_pubsub_item_attr_publisher(__TopXMLNS, - Publisher)}. - -encode_pubsub_item({ps_item, Xmlns, Id, __Xmls, Node, - Publisher}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(Xmlns, - [<<"http://jabber.org/protocol/pubsub">>, - <<"http://jabber.org/protocol/pubsub#event">>], - __TopXMLNS), - _els = __Xmls, - _attrs = encode_pubsub_item_attr_publisher(Publisher, - encode_pubsub_item_attr_node(Node, - encode_pubsub_item_attr_id(Id, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)))), - {xmlel, <<"item">>, _attrs, _els}. - -decode_pubsub_item_attr_id(__TopXMLNS, undefined) -> - <<>>; -decode_pubsub_item_attr_id(__TopXMLNS, _val) -> _val. - -encode_pubsub_item_attr_id(<<>>, _acc) -> _acc; -encode_pubsub_item_attr_id(_val, _acc) -> - [{<<"id">>, _val} | _acc]. - -decode_pubsub_item_attr_xmlns(__TopXMLNS, undefined) -> - <<>>; -decode_pubsub_item_attr_xmlns(__TopXMLNS, _val) -> _val. - -decode_pubsub_item_attr_node(__TopXMLNS, undefined) -> - <<>>; -decode_pubsub_item_attr_node(__TopXMLNS, _val) -> _val. - -encode_pubsub_item_attr_node(<<>>, _acc) -> _acc; -encode_pubsub_item_attr_node(_val, _acc) -> - [{<<"node">>, _val} | _acc]. - -decode_pubsub_item_attr_publisher(__TopXMLNS, - undefined) -> - <<>>; -decode_pubsub_item_attr_publisher(__TopXMLNS, _val) -> - _val. - -encode_pubsub_item_attr_publisher(<<>>, _acc) -> _acc; -encode_pubsub_item_attr_publisher(_val, _acc) -> - [{<<"publisher">>, _val} | _acc]. - -decode_pubsub_event_retract(__TopXMLNS, __IgnoreEls, - {xmlel, <<"retract">>, _attrs, _els}) -> - Id = decode_pubsub_event_retract_attrs(__TopXMLNS, - _attrs, undefined), - Id. - -decode_pubsub_event_retract_attrs(__TopXMLNS, - [{<<"id">>, _val} | _attrs], _Id) -> - decode_pubsub_event_retract_attrs(__TopXMLNS, _attrs, - _val); -decode_pubsub_event_retract_attrs(__TopXMLNS, - [_ | _attrs], Id) -> - decode_pubsub_event_retract_attrs(__TopXMLNS, _attrs, - Id); -decode_pubsub_event_retract_attrs(__TopXMLNS, [], Id) -> - decode_pubsub_event_retract_attr_id(__TopXMLNS, Id). - -encode_pubsub_event_retract(Id, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub#event">>, - [], __TopXMLNS), - _els = [], - _attrs = encode_pubsub_event_retract_attr_id(Id, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"retract">>, _attrs, _els}. - -decode_pubsub_event_retract_attr_id(__TopXMLNS, - undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"id">>, <<"retract">>, __TopXMLNS}}); -decode_pubsub_event_retract_attr_id(__TopXMLNS, _val) -> - _val. - -encode_pubsub_event_retract_attr_id(_val, _acc) -> - [{<<"id">>, _val} | _acc]. - -decode_pubsub_event_configuration(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"configuration">>, _attrs, _els}) -> - Xdata = - decode_pubsub_event_configuration_els(__TopXMLNS, - __IgnoreEls, _els, undefined), - Node = - decode_pubsub_event_configuration_attrs(__TopXMLNS, - _attrs, undefined), - {Node, Xdata}. - -decode_pubsub_event_configuration_els(__TopXMLNS, - __IgnoreEls, [], Xdata) -> - Xdata; -decode_pubsub_event_configuration_els(__TopXMLNS, - __IgnoreEls, - [{xmlel, <<"x">>, _attrs, _} = _el - | _els], - Xdata) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"jabber:x:data">> -> - decode_pubsub_event_configuration_els(__TopXMLNS, - __IgnoreEls, _els, - decode_xdata(<<"jabber:x:data">>, - __IgnoreEls, _el)); - _ -> - decode_pubsub_event_configuration_els(__TopXMLNS, - __IgnoreEls, _els, Xdata) - end; -decode_pubsub_event_configuration_els(__TopXMLNS, - __IgnoreEls, [_ | _els], Xdata) -> - decode_pubsub_event_configuration_els(__TopXMLNS, - __IgnoreEls, _els, Xdata). - -decode_pubsub_event_configuration_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], _Node) -> - decode_pubsub_event_configuration_attrs(__TopXMLNS, - _attrs, _val); -decode_pubsub_event_configuration_attrs(__TopXMLNS, - [_ | _attrs], Node) -> - decode_pubsub_event_configuration_attrs(__TopXMLNS, - _attrs, Node); -decode_pubsub_event_configuration_attrs(__TopXMLNS, [], - Node) -> - decode_pubsub_event_configuration_attr_node(__TopXMLNS, - Node). - -encode_pubsub_event_configuration({Node, Xdata}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/pubsub#event">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_pubsub_event_configuration_$xdata'(Xdata, - __NewTopXMLNS, - [])), - _attrs = - encode_pubsub_event_configuration_attr_node(Node, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"configuration">>, _attrs, _els}. - -'encode_pubsub_event_configuration_$xdata'(undefined, - __TopXMLNS, _acc) -> - _acc; -'encode_pubsub_event_configuration_$xdata'(Xdata, - __TopXMLNS, _acc) -> - [encode_xdata(Xdata, __TopXMLNS) | _acc]. - -decode_pubsub_event_configuration_attr_node(__TopXMLNS, - undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"node">>, <<"configuration">>, - __TopXMLNS}}); -decode_pubsub_event_configuration_attr_node(__TopXMLNS, - _val) -> - _val. - -encode_pubsub_event_configuration_attr_node(_val, - _acc) -> - [{<<"node">>, _val} | _acc]. - -decode_pubsub_owner_affiliation(__TopXMLNS, __IgnoreEls, - {xmlel, <<"affiliation">>, _attrs, _els}) -> - {Jid, Xmlns, Type} = - decode_pubsub_owner_affiliation_attrs(__TopXMLNS, - _attrs, undefined, undefined, - undefined), - {ps_affiliation, Xmlns, <<>>, Type, Jid}. - -decode_pubsub_owner_affiliation_attrs(__TopXMLNS, - [{<<"jid">>, _val} | _attrs], _Jid, Xmlns, - Type) -> - decode_pubsub_owner_affiliation_attrs(__TopXMLNS, - _attrs, _val, Xmlns, Type); -decode_pubsub_owner_affiliation_attrs(__TopXMLNS, - [{<<"xmlns">>, _val} | _attrs], Jid, - _Xmlns, Type) -> - decode_pubsub_owner_affiliation_attrs(__TopXMLNS, - _attrs, Jid, _val, Type); -decode_pubsub_owner_affiliation_attrs(__TopXMLNS, - [{<<"affiliation">>, _val} | _attrs], Jid, - Xmlns, _Type) -> - decode_pubsub_owner_affiliation_attrs(__TopXMLNS, - _attrs, Jid, Xmlns, _val); -decode_pubsub_owner_affiliation_attrs(__TopXMLNS, - [_ | _attrs], Jid, Xmlns, Type) -> - decode_pubsub_owner_affiliation_attrs(__TopXMLNS, - _attrs, Jid, Xmlns, Type); -decode_pubsub_owner_affiliation_attrs(__TopXMLNS, [], - Jid, Xmlns, Type) -> - {decode_pubsub_owner_affiliation_attr_jid(__TopXMLNS, - Jid), - decode_pubsub_owner_affiliation_attr_xmlns(__TopXMLNS, - Xmlns), - decode_pubsub_owner_affiliation_attr_affiliation(__TopXMLNS, - Type)}. - -encode_pubsub_owner_affiliation({ps_affiliation, Xmlns, - _, Type, Jid}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(Xmlns, - [<<"http://jabber.org/protocol/pubsub#owner">>], - __TopXMLNS), - _els = [], - _attrs = - encode_pubsub_owner_affiliation_attr_affiliation(Type, - encode_pubsub_owner_affiliation_attr_jid(Jid, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))), - {xmlel, <<"affiliation">>, _attrs, _els}. - -decode_pubsub_owner_affiliation_attr_jid(__TopXMLNS, - undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"jid">>, <<"affiliation">>, - __TopXMLNS}}); -decode_pubsub_owner_affiliation_attr_jid(__TopXMLNS, - _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"jid">>, <<"affiliation">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_pubsub_owner_affiliation_attr_jid(_val, _acc) -> - [{<<"jid">>, enc_jid(_val)} | _acc]. - -decode_pubsub_owner_affiliation_attr_xmlns(__TopXMLNS, - undefined) -> - <<>>; -decode_pubsub_owner_affiliation_attr_xmlns(__TopXMLNS, - _val) -> - _val. - -decode_pubsub_owner_affiliation_attr_affiliation(__TopXMLNS, - undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"affiliation">>, <<"affiliation">>, - __TopXMLNS}}); -decode_pubsub_owner_affiliation_attr_affiliation(__TopXMLNS, - _val) -> - case catch dec_ps_aff(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"affiliation">>, <<"affiliation">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_pubsub_owner_affiliation_attr_affiliation(_val, - _acc) -> - [{<<"affiliation">>, enc_ps_aff(_val)} | _acc]. - -decode_pubsub_affiliation(__TopXMLNS, __IgnoreEls, - {xmlel, <<"affiliation">>, _attrs, _els}) -> - {Node, Xmlns, Type} = - decode_pubsub_affiliation_attrs(__TopXMLNS, _attrs, - undefined, undefined, undefined), - {ps_affiliation, Xmlns, Node, Type, undefined}. - -decode_pubsub_affiliation_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], _Node, Xmlns, - Type) -> - decode_pubsub_affiliation_attrs(__TopXMLNS, _attrs, - _val, Xmlns, Type); -decode_pubsub_affiliation_attrs(__TopXMLNS, - [{<<"xmlns">>, _val} | _attrs], Node, _Xmlns, - Type) -> - decode_pubsub_affiliation_attrs(__TopXMLNS, _attrs, - Node, _val, Type); -decode_pubsub_affiliation_attrs(__TopXMLNS, - [{<<"affiliation">>, _val} | _attrs], Node, - Xmlns, _Type) -> - decode_pubsub_affiliation_attrs(__TopXMLNS, _attrs, - Node, Xmlns, _val); -decode_pubsub_affiliation_attrs(__TopXMLNS, - [_ | _attrs], Node, Xmlns, Type) -> - decode_pubsub_affiliation_attrs(__TopXMLNS, _attrs, - Node, Xmlns, Type); -decode_pubsub_affiliation_attrs(__TopXMLNS, [], Node, - Xmlns, Type) -> - {decode_pubsub_affiliation_attr_node(__TopXMLNS, Node), - decode_pubsub_affiliation_attr_xmlns(__TopXMLNS, Xmlns), - decode_pubsub_affiliation_attr_affiliation(__TopXMLNS, - Type)}. - -encode_pubsub_affiliation({ps_affiliation, Xmlns, Node, - Type, _}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(Xmlns, - [<<"http://jabber.org/protocol/pubsub">>], - __TopXMLNS), - _els = [], - _attrs = - encode_pubsub_affiliation_attr_affiliation(Type, - encode_pubsub_affiliation_attr_node(Node, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))), - {xmlel, <<"affiliation">>, _attrs, _els}. - -decode_pubsub_affiliation_attr_node(__TopXMLNS, - undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"node">>, <<"affiliation">>, - __TopXMLNS}}); -decode_pubsub_affiliation_attr_node(__TopXMLNS, _val) -> - _val. - -encode_pubsub_affiliation_attr_node(_val, _acc) -> - [{<<"node">>, _val} | _acc]. - -decode_pubsub_affiliation_attr_xmlns(__TopXMLNS, - undefined) -> - <<>>; -decode_pubsub_affiliation_attr_xmlns(__TopXMLNS, - _val) -> - _val. - -decode_pubsub_affiliation_attr_affiliation(__TopXMLNS, - undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"affiliation">>, <<"affiliation">>, - __TopXMLNS}}); -decode_pubsub_affiliation_attr_affiliation(__TopXMLNS, - _val) -> - case catch dec_ps_aff(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"affiliation">>, <<"affiliation">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_pubsub_affiliation_attr_affiliation(_val, - _acc) -> - [{<<"affiliation">>, enc_ps_aff(_val)} | _acc]. - -decode_pubsub_subscription(__TopXMLNS, __IgnoreEls, - {xmlel, <<"subscription">>, _attrs, _els}) -> - {Xmlns, Jid, Node, Subid, Type, Expiry} = - decode_pubsub_subscription_attrs(__TopXMLNS, _attrs, - undefined, undefined, undefined, - undefined, undefined, undefined), - {ps_subscription, Xmlns, Jid, Type, Node, Subid, - Expiry}. - -decode_pubsub_subscription_attrs(__TopXMLNS, - [{<<"xmlns">>, _val} | _attrs], _Xmlns, Jid, - Node, Subid, Type, Expiry) -> - decode_pubsub_subscription_attrs(__TopXMLNS, _attrs, - _val, Jid, Node, Subid, Type, Expiry); -decode_pubsub_subscription_attrs(__TopXMLNS, - [{<<"jid">>, _val} | _attrs], Xmlns, _Jid, - Node, Subid, Type, Expiry) -> - decode_pubsub_subscription_attrs(__TopXMLNS, _attrs, - Xmlns, _val, Node, Subid, Type, Expiry); -decode_pubsub_subscription_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], Xmlns, Jid, - _Node, Subid, Type, Expiry) -> - decode_pubsub_subscription_attrs(__TopXMLNS, _attrs, - Xmlns, Jid, _val, Subid, Type, Expiry); -decode_pubsub_subscription_attrs(__TopXMLNS, - [{<<"subid">>, _val} | _attrs], Xmlns, Jid, - Node, _Subid, Type, Expiry) -> - decode_pubsub_subscription_attrs(__TopXMLNS, _attrs, - Xmlns, Jid, Node, _val, Type, Expiry); -decode_pubsub_subscription_attrs(__TopXMLNS, - [{<<"subscription">>, _val} | _attrs], Xmlns, - Jid, Node, Subid, _Type, Expiry) -> - decode_pubsub_subscription_attrs(__TopXMLNS, _attrs, - Xmlns, Jid, Node, Subid, _val, Expiry); -decode_pubsub_subscription_attrs(__TopXMLNS, - [{<<"expiry">>, _val} | _attrs], Xmlns, Jid, - Node, Subid, Type, _Expiry) -> - decode_pubsub_subscription_attrs(__TopXMLNS, _attrs, - Xmlns, Jid, Node, Subid, Type, _val); -decode_pubsub_subscription_attrs(__TopXMLNS, - [_ | _attrs], Xmlns, Jid, Node, Subid, Type, - Expiry) -> - decode_pubsub_subscription_attrs(__TopXMLNS, _attrs, - Xmlns, Jid, Node, Subid, Type, Expiry); -decode_pubsub_subscription_attrs(__TopXMLNS, [], Xmlns, - Jid, Node, Subid, Type, Expiry) -> - {decode_pubsub_subscription_attr_xmlns(__TopXMLNS, - Xmlns), - decode_pubsub_subscription_attr_jid(__TopXMLNS, Jid), - decode_pubsub_subscription_attr_node(__TopXMLNS, Node), - decode_pubsub_subscription_attr_subid(__TopXMLNS, - Subid), - decode_pubsub_subscription_attr_subscription(__TopXMLNS, - Type), - decode_pubsub_subscription_attr_expiry(__TopXMLNS, - Expiry)}. - -encode_pubsub_subscription({ps_subscription, Xmlns, Jid, - Type, Node, Subid, Expiry}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(Xmlns, - [<<"http://jabber.org/protocol/pubsub">>, - <<"http://jabber.org/protocol/pubsub#owner">>, - <<"http://jabber.org/protocol/pubsub#event">>], - __TopXMLNS), - _els = [], - _attrs = encode_pubsub_subscription_attr_expiry(Expiry, - encode_pubsub_subscription_attr_subscription(Type, - encode_pubsub_subscription_attr_subid(Subid, - encode_pubsub_subscription_attr_node(Node, - encode_pubsub_subscription_attr_jid(Jid, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)))))), - {xmlel, <<"subscription">>, _attrs, _els}. - -decode_pubsub_subscription_attr_xmlns(__TopXMLNS, - undefined) -> - <<>>; -decode_pubsub_subscription_attr_xmlns(__TopXMLNS, - _val) -> - _val. - -decode_pubsub_subscription_attr_jid(__TopXMLNS, - undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"jid">>, <<"subscription">>, - __TopXMLNS}}); -decode_pubsub_subscription_attr_jid(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"jid">>, <<"subscription">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_pubsub_subscription_attr_jid(_val, _acc) -> - [{<<"jid">>, enc_jid(_val)} | _acc]. - -decode_pubsub_subscription_attr_node(__TopXMLNS, - undefined) -> - <<>>; -decode_pubsub_subscription_attr_node(__TopXMLNS, - _val) -> - _val. - -encode_pubsub_subscription_attr_node(<<>>, _acc) -> - _acc; -encode_pubsub_subscription_attr_node(_val, _acc) -> - [{<<"node">>, _val} | _acc]. - -decode_pubsub_subscription_attr_subid(__TopXMLNS, - undefined) -> - <<>>; -decode_pubsub_subscription_attr_subid(__TopXMLNS, - _val) -> - _val. - -encode_pubsub_subscription_attr_subid(<<>>, _acc) -> - _acc; -encode_pubsub_subscription_attr_subid(_val, _acc) -> - [{<<"subid">>, _val} | _acc]. - -decode_pubsub_subscription_attr_subscription(__TopXMLNS, - undefined) -> - undefined; -decode_pubsub_subscription_attr_subscription(__TopXMLNS, - _val) -> - case catch dec_enum(_val, - [none, pending, subscribed, unconfigured]) - of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"subscription">>, <<"subscription">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_pubsub_subscription_attr_subscription(undefined, - _acc) -> - _acc; -encode_pubsub_subscription_attr_subscription(_val, - _acc) -> - [{<<"subscription">>, enc_enum(_val)} | _acc]. - -decode_pubsub_subscription_attr_expiry(__TopXMLNS, - undefined) -> - undefined; -decode_pubsub_subscription_attr_expiry(__TopXMLNS, - _val) -> - case catch dec_utc(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"expiry">>, <<"subscription">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_pubsub_subscription_attr_expiry(undefined, - _acc) -> - _acc; -encode_pubsub_subscription_attr_expiry(_val, _acc) -> - [{<<"expiry">>, enc_utc(_val)} | _acc]. - -decode_xdata(__TopXMLNS, __IgnoreEls, - {xmlel, <<"x">>, _attrs, _els}) -> - {Fields, Items, Instructions, Reported, Title} = - decode_xdata_els(__TopXMLNS, __IgnoreEls, _els, [], [], - [], undefined, undefined), - Type = decode_xdata_attrs(__TopXMLNS, _attrs, - undefined), - {xdata, Type, Instructions, Title, Reported, Items, - Fields}. - -decode_xdata_els(__TopXMLNS, __IgnoreEls, [], Fields, - Items, Instructions, Reported, Title) -> - {lists:reverse(Fields), lists:reverse(Items), - lists:reverse(Instructions), Reported, Title}; -decode_xdata_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"instructions">>, _attrs, _} = _el | _els], - Fields, Items, Instructions, Reported, Title) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:x:data">> -> - decode_xdata_els(__TopXMLNS, __IgnoreEls, _els, Fields, - Items, - [decode_xdata_instructions(__TopXMLNS, __IgnoreEls, - _el) - | Instructions], - Reported, Title); - <<"jabber:x:data">> -> - decode_xdata_els(__TopXMLNS, __IgnoreEls, _els, Fields, - Items, - [decode_xdata_instructions(<<"jabber:x:data">>, - __IgnoreEls, _el) - | Instructions], - Reported, Title); - _ -> - decode_xdata_els(__TopXMLNS, __IgnoreEls, _els, Fields, - Items, Instructions, Reported, Title) - end; -decode_xdata_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"title">>, _attrs, _} = _el | _els], Fields, - Items, Instructions, Reported, Title) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:x:data">> -> - decode_xdata_els(__TopXMLNS, __IgnoreEls, _els, Fields, - Items, Instructions, Reported, - decode_xdata_title(__TopXMLNS, __IgnoreEls, _el)); - <<"jabber:x:data">> -> - decode_xdata_els(__TopXMLNS, __IgnoreEls, _els, Fields, - Items, Instructions, Reported, - decode_xdata_title(<<"jabber:x:data">>, __IgnoreEls, - _el)); - _ -> - decode_xdata_els(__TopXMLNS, __IgnoreEls, _els, Fields, - Items, Instructions, Reported, Title) - end; -decode_xdata_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"reported">>, _attrs, _} = _el | _els], - Fields, Items, Instructions, Reported, Title) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:x:data">> -> - decode_xdata_els(__TopXMLNS, __IgnoreEls, _els, Fields, - Items, Instructions, - decode_xdata_reported(__TopXMLNS, __IgnoreEls, _el), - Title); - <<"jabber:x:data">> -> - decode_xdata_els(__TopXMLNS, __IgnoreEls, _els, Fields, - Items, Instructions, - decode_xdata_reported(<<"jabber:x:data">>, - __IgnoreEls, _el), - Title); - _ -> - decode_xdata_els(__TopXMLNS, __IgnoreEls, _els, Fields, - Items, Instructions, Reported, Title) - end; -decode_xdata_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"item">>, _attrs, _} = _el | _els], Fields, - Items, Instructions, Reported, Title) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:x:data">> -> - decode_xdata_els(__TopXMLNS, __IgnoreEls, _els, Fields, - [decode_xdata_item(__TopXMLNS, __IgnoreEls, _el) - | Items], - Instructions, Reported, Title); - <<"jabber:x:data">> -> - decode_xdata_els(__TopXMLNS, __IgnoreEls, _els, Fields, - [decode_xdata_item(<<"jabber:x:data">>, __IgnoreEls, - _el) - | Items], - Instructions, Reported, Title); - _ -> - decode_xdata_els(__TopXMLNS, __IgnoreEls, _els, Fields, - Items, Instructions, Reported, Title) - end; -decode_xdata_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"field">>, _attrs, _} = _el | _els], Fields, - Items, Instructions, Reported, Title) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:x:data">> -> - decode_xdata_els(__TopXMLNS, __IgnoreEls, _els, - [decode_xdata_field(__TopXMLNS, __IgnoreEls, _el) - | Fields], - Items, Instructions, Reported, Title); - <<"jabber:x:data">> -> - decode_xdata_els(__TopXMLNS, __IgnoreEls, _els, - [decode_xdata_field(<<"jabber:x:data">>, __IgnoreEls, - _el) - | Fields], - Items, Instructions, Reported, Title); - _ -> - decode_xdata_els(__TopXMLNS, __IgnoreEls, _els, Fields, - Items, Instructions, Reported, Title) - end; -decode_xdata_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Fields, Items, Instructions, Reported, Title) -> - decode_xdata_els(__TopXMLNS, __IgnoreEls, _els, Fields, - Items, Instructions, Reported, Title). - -decode_xdata_attrs(__TopXMLNS, - [{<<"type">>, _val} | _attrs], _Type) -> - decode_xdata_attrs(__TopXMLNS, _attrs, _val); -decode_xdata_attrs(__TopXMLNS, [_ | _attrs], Type) -> - decode_xdata_attrs(__TopXMLNS, _attrs, Type); -decode_xdata_attrs(__TopXMLNS, [], Type) -> - decode_xdata_attr_type(__TopXMLNS, Type). - -encode_xdata({xdata, Type, Instructions, Title, - Reported, Items, Fields}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:x:data">>, - [], __TopXMLNS), - _els = lists:reverse('encode_xdata_$fields'(Fields, - __NewTopXMLNS, - 'encode_xdata_$items'(Items, - __NewTopXMLNS, - 'encode_xdata_$instructions'(Instructions, - __NewTopXMLNS, - 'encode_xdata_$reported'(Reported, - __NewTopXMLNS, - 'encode_xdata_$title'(Title, - __NewTopXMLNS, - [])))))), - _attrs = encode_xdata_attr_type(Type, - enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS)), - {xmlel, <<"x">>, _attrs, _els}. - -'encode_xdata_$fields'([], __TopXMLNS, _acc) -> _acc; -'encode_xdata_$fields'([Fields | _els], __TopXMLNS, - _acc) -> - 'encode_xdata_$fields'(_els, __TopXMLNS, - [encode_xdata_field(Fields, __TopXMLNS) | _acc]). - -'encode_xdata_$items'([], __TopXMLNS, _acc) -> _acc; -'encode_xdata_$items'([Items | _els], __TopXMLNS, - _acc) -> - 'encode_xdata_$items'(_els, __TopXMLNS, - [encode_xdata_item(Items, __TopXMLNS) | _acc]). - -'encode_xdata_$instructions'([], __TopXMLNS, _acc) -> - _acc; -'encode_xdata_$instructions'([Instructions | _els], - __TopXMLNS, _acc) -> - 'encode_xdata_$instructions'(_els, __TopXMLNS, - [encode_xdata_instructions(Instructions, - __TopXMLNS) - | _acc]). - -'encode_xdata_$reported'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_xdata_$reported'(Reported, __TopXMLNS, _acc) -> - [encode_xdata_reported(Reported, __TopXMLNS) | _acc]. - -'encode_xdata_$title'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_xdata_$title'(Title, __TopXMLNS, _acc) -> - [encode_xdata_title(Title, __TopXMLNS) | _acc]. - -decode_xdata_attr_type(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"type">>, <<"x">>, __TopXMLNS}}); -decode_xdata_attr_type(__TopXMLNS, _val) -> - case catch dec_enum(_val, - [cancel, form, result, submit]) - of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"type">>, <<"x">>, __TopXMLNS}}); - _res -> _res - end. - -encode_xdata_attr_type(_val, _acc) -> - [{<<"type">>, enc_enum(_val)} | _acc]. - -decode_xdata_item(__TopXMLNS, __IgnoreEls, - {xmlel, <<"item">>, _attrs, _els}) -> - Fields = decode_xdata_item_els(__TopXMLNS, __IgnoreEls, - _els, []), - Fields. - -decode_xdata_item_els(__TopXMLNS, __IgnoreEls, [], - Fields) -> - lists:reverse(Fields); -decode_xdata_item_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"field">>, _attrs, _} = _el | _els], - Fields) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:x:data">> -> - decode_xdata_item_els(__TopXMLNS, __IgnoreEls, _els, - [decode_xdata_field(__TopXMLNS, __IgnoreEls, - _el) - | Fields]); - <<"jabber:x:data">> -> - decode_xdata_item_els(__TopXMLNS, __IgnoreEls, _els, - [decode_xdata_field(<<"jabber:x:data">>, - __IgnoreEls, _el) - | Fields]); - _ -> - decode_xdata_item_els(__TopXMLNS, __IgnoreEls, _els, - Fields) - end; -decode_xdata_item_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Fields) -> - decode_xdata_item_els(__TopXMLNS, __IgnoreEls, _els, - Fields). - -encode_xdata_item(Fields, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:x:data">>, - [], __TopXMLNS), - _els = lists:reverse('encode_xdata_item_$fields'(Fields, - __NewTopXMLNS, [])), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"item">>, _attrs, _els}. - -'encode_xdata_item_$fields'([], __TopXMLNS, _acc) -> - _acc; -'encode_xdata_item_$fields'([Fields | _els], __TopXMLNS, - _acc) -> - 'encode_xdata_item_$fields'(_els, __TopXMLNS, - [encode_xdata_field(Fields, __TopXMLNS) - | _acc]). - -decode_xdata_reported(__TopXMLNS, __IgnoreEls, - {xmlel, <<"reported">>, _attrs, _els}) -> - Fields = decode_xdata_reported_els(__TopXMLNS, - __IgnoreEls, _els, []), - Fields. - -decode_xdata_reported_els(__TopXMLNS, __IgnoreEls, [], - Fields) -> - lists:reverse(Fields); -decode_xdata_reported_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"field">>, _attrs, _} = _el | _els], - Fields) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:x:data">> -> - decode_xdata_reported_els(__TopXMLNS, __IgnoreEls, _els, - [decode_xdata_field(__TopXMLNS, __IgnoreEls, - _el) - | Fields]); - <<"jabber:x:data">> -> - decode_xdata_reported_els(__TopXMLNS, __IgnoreEls, _els, - [decode_xdata_field(<<"jabber:x:data">>, - __IgnoreEls, _el) - | Fields]); - _ -> - decode_xdata_reported_els(__TopXMLNS, __IgnoreEls, _els, - Fields) - end; -decode_xdata_reported_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Fields) -> - decode_xdata_reported_els(__TopXMLNS, __IgnoreEls, _els, - Fields). - -encode_xdata_reported(Fields, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:x:data">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_xdata_reported_$fields'(Fields, - __NewTopXMLNS, [])), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"reported">>, _attrs, _els}. - -'encode_xdata_reported_$fields'([], __TopXMLNS, _acc) -> - _acc; -'encode_xdata_reported_$fields'([Fields | _els], - __TopXMLNS, _acc) -> - 'encode_xdata_reported_$fields'(_els, __TopXMLNS, - [encode_xdata_field(Fields, __TopXMLNS) - | _acc]). - -decode_xdata_title(__TopXMLNS, __IgnoreEls, - {xmlel, <<"title">>, _attrs, _els}) -> - Cdata = decode_xdata_title_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_xdata_title_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_xdata_title_cdata(__TopXMLNS, Cdata); -decode_xdata_title_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_xdata_title_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_xdata_title_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_xdata_title_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_xdata_title(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:x:data">>, - [], __TopXMLNS), - _els = encode_xdata_title_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"title">>, _attrs, _els}. - -decode_xdata_title_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_xdata_title_cdata(__TopXMLNS, _val) -> _val. - -encode_xdata_title_cdata(<<>>, _acc) -> _acc; -encode_xdata_title_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_xdata_instructions(__TopXMLNS, __IgnoreEls, - {xmlel, <<"instructions">>, _attrs, _els}) -> - Cdata = decode_xdata_instructions_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_xdata_instructions_els(__TopXMLNS, __IgnoreEls, - [], Cdata) -> - decode_xdata_instructions_cdata(__TopXMLNS, Cdata); -decode_xdata_instructions_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_xdata_instructions_els(__TopXMLNS, __IgnoreEls, - _els, <>); -decode_xdata_instructions_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_xdata_instructions_els(__TopXMLNS, __IgnoreEls, - _els, Cdata). - -encode_xdata_instructions(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:x:data">>, - [], __TopXMLNS), - _els = encode_xdata_instructions_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"instructions">>, _attrs, _els}. - -decode_xdata_instructions_cdata(__TopXMLNS, <<>>) -> - <<>>; -decode_xdata_instructions_cdata(__TopXMLNS, _val) -> - _val. - -encode_xdata_instructions_cdata(<<>>, _acc) -> _acc; -encode_xdata_instructions_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_xdata_field(__TopXMLNS, __IgnoreEls, - {xmlel, <<"field">>, _attrs, _els}) -> - {Options, Values, Desc, Required, __Els} = - decode_xdata_field_els(__TopXMLNS, __IgnoreEls, _els, - [], [], <<>>, false, []), - {Label, Type, Var} = - decode_xdata_field_attrs(__TopXMLNS, _attrs, undefined, - undefined, undefined), - {xdata_field, Label, Type, Var, Required, Desc, Values, - Options, __Els}. - -decode_xdata_field_els(__TopXMLNS, __IgnoreEls, [], - Options, Values, Desc, Required, __Els) -> - {lists:reverse(Options), lists:reverse(Values), Desc, - Required, lists:reverse(__Els)}; -decode_xdata_field_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"required">>, _attrs, _} = _el | _els], - Options, Values, Desc, Required, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:x:data">> -> - decode_xdata_field_els(__TopXMLNS, __IgnoreEls, _els, - Options, Values, Desc, - decode_xdata_field_required(__TopXMLNS, - __IgnoreEls, _el), - __Els); - <<"jabber:x:data">> -> - decode_xdata_field_els(__TopXMLNS, __IgnoreEls, _els, - Options, Values, Desc, - decode_xdata_field_required(<<"jabber:x:data">>, - __IgnoreEls, _el), - __Els); - _ -> - decode_xdata_field_els(__TopXMLNS, __IgnoreEls, _els, - Options, Values, Desc, Required, __Els) - end; -decode_xdata_field_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"desc">>, _attrs, _} = _el | _els], Options, - Values, Desc, Required, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:x:data">> -> - decode_xdata_field_els(__TopXMLNS, __IgnoreEls, _els, - Options, Values, - decode_xdata_field_desc(__TopXMLNS, - __IgnoreEls, _el), - Required, __Els); - <<"jabber:x:data">> -> - decode_xdata_field_els(__TopXMLNS, __IgnoreEls, _els, - Options, Values, - decode_xdata_field_desc(<<"jabber:x:data">>, - __IgnoreEls, _el), - Required, __Els); - _ -> - decode_xdata_field_els(__TopXMLNS, __IgnoreEls, _els, - Options, Values, Desc, Required, __Els) - end; -decode_xdata_field_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"value">>, _attrs, _} = _el | _els], Options, - Values, Desc, Required, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:x:data">> -> - decode_xdata_field_els(__TopXMLNS, __IgnoreEls, _els, - Options, - [decode_xdata_field_value(__TopXMLNS, - __IgnoreEls, _el) - | Values], - Desc, Required, __Els); - <<"jabber:x:data">> -> - decode_xdata_field_els(__TopXMLNS, __IgnoreEls, _els, - Options, - [decode_xdata_field_value(<<"jabber:x:data">>, - __IgnoreEls, _el) - | Values], - Desc, Required, __Els); - _ -> - decode_xdata_field_els(__TopXMLNS, __IgnoreEls, _els, - Options, Values, Desc, Required, __Els) - end; -decode_xdata_field_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"option">>, _attrs, _} = _el | _els], - Options, Values, Desc, Required, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:x:data">> -> - decode_xdata_field_els(__TopXMLNS, __IgnoreEls, _els, - [decode_xdata_field_option(__TopXMLNS, - __IgnoreEls, _el) - | Options], - Values, Desc, Required, __Els); - <<"jabber:x:data">> -> - decode_xdata_field_els(__TopXMLNS, __IgnoreEls, _els, - [decode_xdata_field_option(<<"jabber:x:data">>, - __IgnoreEls, _el) - | Options], - Values, Desc, Required, __Els); - _ -> - decode_xdata_field_els(__TopXMLNS, __IgnoreEls, _els, - Options, Values, Desc, Required, __Els) - end; -decode_xdata_field_els(__TopXMLNS, __IgnoreEls, - [{xmlel, _, _, _} = _el | _els], Options, Values, Desc, - Required, __Els) -> - if __IgnoreEls -> - decode_xdata_field_els(__TopXMLNS, __IgnoreEls, _els, - Options, Values, Desc, Required, - [_el | __Els]); - true -> - case is_known_tag(_el, __TopXMLNS) of - true -> - decode_xdata_field_els(__TopXMLNS, __IgnoreEls, _els, - Options, Values, Desc, Required, - [decode(_el, __TopXMLNS, []) | __Els]); - false -> - decode_xdata_field_els(__TopXMLNS, __IgnoreEls, _els, - Options, Values, Desc, Required, __Els) - end - end; -decode_xdata_field_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Options, Values, Desc, Required, __Els) -> - decode_xdata_field_els(__TopXMLNS, __IgnoreEls, _els, - Options, Values, Desc, Required, __Els). - -decode_xdata_field_attrs(__TopXMLNS, - [{<<"label">>, _val} | _attrs], _Label, Type, Var) -> - decode_xdata_field_attrs(__TopXMLNS, _attrs, _val, Type, - Var); -decode_xdata_field_attrs(__TopXMLNS, - [{<<"type">>, _val} | _attrs], Label, _Type, Var) -> - decode_xdata_field_attrs(__TopXMLNS, _attrs, Label, - _val, Var); -decode_xdata_field_attrs(__TopXMLNS, - [{<<"var">>, _val} | _attrs], Label, Type, _Var) -> - decode_xdata_field_attrs(__TopXMLNS, _attrs, Label, - Type, _val); -decode_xdata_field_attrs(__TopXMLNS, [_ | _attrs], - Label, Type, Var) -> - decode_xdata_field_attrs(__TopXMLNS, _attrs, Label, - Type, Var); -decode_xdata_field_attrs(__TopXMLNS, [], Label, Type, - Var) -> - {decode_xdata_field_attr_label(__TopXMLNS, Label), - decode_xdata_field_attr_type(__TopXMLNS, Type), - decode_xdata_field_attr_var(__TopXMLNS, Var)}. - -encode_xdata_field({xdata_field, Label, Type, Var, - Required, Desc, Values, Options, __Els}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:x:data">>, - [], __TopXMLNS), - _els = [encode(_el, __NewTopXMLNS) || _el <- __Els] ++ - lists:reverse('encode_xdata_field_$options'(Options, - __NewTopXMLNS, - 'encode_xdata_field_$values'(Values, - __NewTopXMLNS, - 'encode_xdata_field_$desc'(Desc, - __NewTopXMLNS, - 'encode_xdata_field_$required'(Required, - __NewTopXMLNS, - []))))), - _attrs = encode_xdata_field_attr_var(Var, - encode_xdata_field_attr_type(Type, - encode_xdata_field_attr_label(Label, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)))), - {xmlel, <<"field">>, _attrs, _els}. - -'encode_xdata_field_$options'([], __TopXMLNS, _acc) -> - _acc; -'encode_xdata_field_$options'([Options | _els], - __TopXMLNS, _acc) -> - 'encode_xdata_field_$options'(_els, __TopXMLNS, - [encode_xdata_field_option(Options, - __TopXMLNS) - | _acc]). - -'encode_xdata_field_$values'([], __TopXMLNS, _acc) -> - _acc; -'encode_xdata_field_$values'([Values | _els], - __TopXMLNS, _acc) -> - 'encode_xdata_field_$values'(_els, __TopXMLNS, - [encode_xdata_field_value(Values, __TopXMLNS) - | _acc]). - -'encode_xdata_field_$desc'(<<>>, __TopXMLNS, _acc) -> - _acc; -'encode_xdata_field_$desc'(Desc, __TopXMLNS, _acc) -> - [encode_xdata_field_desc(Desc, __TopXMLNS) | _acc]. - -'encode_xdata_field_$required'(false, __TopXMLNS, - _acc) -> - _acc; -'encode_xdata_field_$required'(Required, __TopXMLNS, - _acc) -> - [encode_xdata_field_required(Required, __TopXMLNS) - | _acc]. - -decode_xdata_field_attr_label(__TopXMLNS, undefined) -> - <<>>; -decode_xdata_field_attr_label(__TopXMLNS, _val) -> _val. - -encode_xdata_field_attr_label(<<>>, _acc) -> _acc; -encode_xdata_field_attr_label(_val, _acc) -> - [{<<"label">>, _val} | _acc]. - -decode_xdata_field_attr_type(__TopXMLNS, undefined) -> - undefined; -decode_xdata_field_attr_type(__TopXMLNS, _val) -> - case catch dec_enum(_val, - [boolean, fixed, hidden, 'jid-multi', 'jid-single', - 'list-multi', 'list-single', 'text-multi', - 'text-private', 'text-single']) - of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"type">>, <<"field">>, __TopXMLNS}}); - _res -> _res - end. - -encode_xdata_field_attr_type(undefined, _acc) -> _acc; -encode_xdata_field_attr_type(_val, _acc) -> - [{<<"type">>, enc_enum(_val)} | _acc]. - -decode_xdata_field_attr_var(__TopXMLNS, undefined) -> - <<>>; -decode_xdata_field_attr_var(__TopXMLNS, _val) -> _val. - -encode_xdata_field_attr_var(<<>>, _acc) -> _acc; -encode_xdata_field_attr_var(_val, _acc) -> - [{<<"var">>, _val} | _acc]. - -decode_xdata_field_option(__TopXMLNS, __IgnoreEls, - {xmlel, <<"option">>, _attrs, _els}) -> - Value = decode_xdata_field_option_els(__TopXMLNS, - __IgnoreEls, _els, error), - Label = decode_xdata_field_option_attrs(__TopXMLNS, - _attrs, undefined), - {xdata_option, Label, Value}. - -decode_xdata_field_option_els(__TopXMLNS, __IgnoreEls, - [], Value) -> - case Value of - error -> - erlang:error({xmpp_codec, - {missing_tag, <<"value">>, __TopXMLNS}}); - {value, Value1} -> Value1 - end; -decode_xdata_field_option_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"value">>, _attrs, _} = _el | _els], - Value) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:x:data">> -> - decode_xdata_field_option_els(__TopXMLNS, __IgnoreEls, - _els, - {value, - decode_xdata_field_value(__TopXMLNS, - __IgnoreEls, - _el)}); - <<"jabber:x:data">> -> - decode_xdata_field_option_els(__TopXMLNS, __IgnoreEls, - _els, - {value, - decode_xdata_field_value(<<"jabber:x:data">>, - __IgnoreEls, - _el)}); - _ -> - decode_xdata_field_option_els(__TopXMLNS, __IgnoreEls, - _els, Value) - end; -decode_xdata_field_option_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Value) -> - decode_xdata_field_option_els(__TopXMLNS, __IgnoreEls, - _els, Value). - -decode_xdata_field_option_attrs(__TopXMLNS, - [{<<"label">>, _val} | _attrs], _Label) -> - decode_xdata_field_option_attrs(__TopXMLNS, _attrs, - _val); -decode_xdata_field_option_attrs(__TopXMLNS, - [_ | _attrs], Label) -> - decode_xdata_field_option_attrs(__TopXMLNS, _attrs, - Label); -decode_xdata_field_option_attrs(__TopXMLNS, [], - Label) -> - decode_xdata_field_option_attr_label(__TopXMLNS, Label). - -encode_xdata_field_option({xdata_option, Label, Value}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:x:data">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_xdata_field_option_$value'(Value, - __NewTopXMLNS, [])), - _attrs = encode_xdata_field_option_attr_label(Label, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"option">>, _attrs, _els}. - -'encode_xdata_field_option_$value'(Value, __TopXMLNS, - _acc) -> - [encode_xdata_field_value(Value, __TopXMLNS) | _acc]. - -decode_xdata_field_option_attr_label(__TopXMLNS, - undefined) -> - <<>>; -decode_xdata_field_option_attr_label(__TopXMLNS, - _val) -> - _val. - -encode_xdata_field_option_attr_label(<<>>, _acc) -> - _acc; -encode_xdata_field_option_attr_label(_val, _acc) -> - [{<<"label">>, _val} | _acc]. - -decode_xdata_field_value(__TopXMLNS, __IgnoreEls, - {xmlel, <<"value">>, _attrs, _els}) -> - Cdata = decode_xdata_field_value_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_xdata_field_value_els(__TopXMLNS, __IgnoreEls, - [], Cdata) -> - decode_xdata_field_value_cdata(__TopXMLNS, Cdata); -decode_xdata_field_value_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_xdata_field_value_els(__TopXMLNS, __IgnoreEls, - _els, <>); -decode_xdata_field_value_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_xdata_field_value_els(__TopXMLNS, __IgnoreEls, - _els, Cdata). - -encode_xdata_field_value(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:x:data">>, - [], __TopXMLNS), - _els = encode_xdata_field_value_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"value">>, _attrs, _els}. - -decode_xdata_field_value_cdata(__TopXMLNS, <<>>) -> - <<>>; -decode_xdata_field_value_cdata(__TopXMLNS, _val) -> - _val. - -encode_xdata_field_value_cdata(<<>>, _acc) -> _acc; -encode_xdata_field_value_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_xdata_field_desc(__TopXMLNS, __IgnoreEls, - {xmlel, <<"desc">>, _attrs, _els}) -> - Cdata = decode_xdata_field_desc_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_xdata_field_desc_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_xdata_field_desc_cdata(__TopXMLNS, Cdata); -decode_xdata_field_desc_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_xdata_field_desc_els(__TopXMLNS, __IgnoreEls, - _els, <>); -decode_xdata_field_desc_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_xdata_field_desc_els(__TopXMLNS, __IgnoreEls, - _els, Cdata). - -encode_xdata_field_desc(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:x:data">>, - [], __TopXMLNS), - _els = encode_xdata_field_desc_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"desc">>, _attrs, _els}. - -decode_xdata_field_desc_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_xdata_field_desc_cdata(__TopXMLNS, _val) -> _val. - -encode_xdata_field_desc_cdata(<<>>, _acc) -> _acc; -encode_xdata_field_desc_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_xdata_field_required(__TopXMLNS, __IgnoreEls, - {xmlel, <<"required">>, _attrs, _els}) -> - true. - -encode_xdata_field_required(true, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:x:data">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"required">>, _attrs, _els}. - -decode_vcard_xupdate(__TopXMLNS, __IgnoreEls, - {xmlel, <<"x">>, _attrs, _els}) -> - Hash = decode_vcard_xupdate_els(__TopXMLNS, __IgnoreEls, - _els, undefined), - {vcard_xupdate, {<<>>, <<>>}, Hash}. - -decode_vcard_xupdate_els(__TopXMLNS, __IgnoreEls, [], - Hash) -> - Hash; -decode_vcard_xupdate_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"photo">>, _attrs, _} = _el | _els], - Hash) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp:x:update">> -> - decode_vcard_xupdate_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_xupdate_photo(__TopXMLNS, - __IgnoreEls, - _el)); - <<"vcard-temp:x:update">> -> - decode_vcard_xupdate_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_xupdate_photo(<<"vcard-temp:x:update">>, - __IgnoreEls, - _el)); - _ -> - decode_vcard_xupdate_els(__TopXMLNS, __IgnoreEls, _els, - Hash) - end; -decode_vcard_xupdate_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Hash) -> - decode_vcard_xupdate_els(__TopXMLNS, __IgnoreEls, _els, - Hash). - -encode_vcard_xupdate({vcard_xupdate, _, Hash}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"vcard-temp:x:update">>, [], - __TopXMLNS), - _els = lists:reverse('encode_vcard_xupdate_$hash'(Hash, - __NewTopXMLNS, [])), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"x">>, _attrs, _els}. - -'encode_vcard_xupdate_$hash'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_xupdate_$hash'(Hash, __TopXMLNS, _acc) -> - [encode_vcard_xupdate_photo(Hash, __TopXMLNS) | _acc]. - -decode_vcard_xupdate_photo(__TopXMLNS, __IgnoreEls, - {xmlel, <<"photo">>, _attrs, _els}) -> - Cdata = decode_vcard_xupdate_photo_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_vcard_xupdate_photo_els(__TopXMLNS, __IgnoreEls, - [], Cdata) -> - decode_vcard_xupdate_photo_cdata(__TopXMLNS, Cdata); -decode_vcard_xupdate_photo_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_xupdate_photo_els(__TopXMLNS, __IgnoreEls, - _els, <>); -decode_vcard_xupdate_photo_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_xupdate_photo_els(__TopXMLNS, __IgnoreEls, - _els, Cdata). - -encode_vcard_xupdate_photo(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"vcard-temp:x:update">>, [], - __TopXMLNS), - _els = encode_vcard_xupdate_photo_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"photo">>, _attrs, _els}. - -decode_vcard_xupdate_photo_cdata(__TopXMLNS, <<>>) -> - <<>>; -decode_vcard_xupdate_photo_cdata(__TopXMLNS, _val) -> - _val. - -encode_vcard_xupdate_photo_cdata(<<>>, _acc) -> _acc; -encode_vcard_xupdate_photo_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_temp(__TopXMLNS, __IgnoreEls, - {xmlel, <<"vCard">>, _attrs, _els}) -> - {Mailer, Adr, Class, Categories, Desc, Uid, Prodid, - Jabberid, Sound, Note, Role, Title, Nickname, Rev, - Sort_string, Org, Bday, Key, Tz, Url, Email, Tel, Label, - Fn, Version, N, Photo, Logo, Geo} = - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - undefined, [], undefined, [], undefined, - undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, - undefined, undefined, undefined, [], [], [], - undefined, undefined, undefined, undefined, - undefined, undefined), - {vcard_temp, Version, Fn, N, Nickname, Photo, Bday, Adr, - Label, Tel, Email, Jabberid, Mailer, Tz, Geo, Title, - Role, Logo, Org, Categories, Note, Prodid, Rev, - Sort_string, Sound, Uid, Url, Class, Key, Desc}. - -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, [], - Mailer, Adr, Class, Categories, Desc, Uid, Prodid, - Jabberid, Sound, Note, Role, Title, Nickname, Rev, - Sort_string, Org, Bday, Key, Tz, Url, Email, Tel, Label, - Fn, Version, N, Photo, Logo, Geo) -> - {Mailer, lists:reverse(Adr), Class, Categories, Desc, - Uid, Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, Url, - lists:reverse(Email), lists:reverse(Tel), - lists:reverse(Label), Fn, Version, N, Photo, Logo, Geo}; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"N">>, _attrs, _} = _el | _els], Mailer, Adr, - Class, Categories, Desc, Uid, Prodid, Jabberid, Sound, - Note, Role, Title, Nickname, Rev, Sort_string, Org, - Bday, Key, Tz, Url, Email, Tel, Label, Fn, Version, N, - Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, - decode_vcard_N(__TopXMLNS, __IgnoreEls, _el), - Photo, Logo, Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, - decode_vcard_N(<<"vcard-temp">>, __IgnoreEls, - _el), - Photo, Logo, Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"ADR">>, _attrs, _} = _el | _els], Mailer, - Adr, Class, Categories, Desc, Uid, Prodid, Jabberid, - Sound, Note, Role, Title, Nickname, Rev, Sort_string, - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, Version, - N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, - [decode_vcard_ADR(__TopXMLNS, __IgnoreEls, _el) - | Adr], - Class, Categories, Desc, Uid, Prodid, Jabberid, - Sound, Note, Role, Title, Nickname, Rev, - Sort_string, Org, Bday, Key, Tz, Url, Email, - Tel, Label, Fn, Version, N, Photo, Logo, Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, - [decode_vcard_ADR(<<"vcard-temp">>, __IgnoreEls, - _el) - | Adr], - Class, Categories, Desc, Uid, Prodid, Jabberid, - Sound, Note, Role, Title, Nickname, Rev, - Sort_string, Org, Bday, Key, Tz, Url, Email, - Tel, Label, Fn, Version, N, Photo, Logo, Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"LABEL">>, _attrs, _} = _el | _els], Mailer, - Adr, Class, Categories, Desc, Uid, Prodid, Jabberid, - Sound, Note, Role, Title, Nickname, Rev, Sort_string, - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, Version, - N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, - [decode_vcard_LABEL(__TopXMLNS, __IgnoreEls, - _el) - | Label], - Fn, Version, N, Photo, Logo, Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, - [decode_vcard_LABEL(<<"vcard-temp">>, - __IgnoreEls, _el) - | Label], - Fn, Version, N, Photo, Logo, Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"TEL">>, _attrs, _} = _el | _els], Mailer, - Adr, Class, Categories, Desc, Uid, Prodid, Jabberid, - Sound, Note, Role, Title, Nickname, Rev, Sort_string, - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, Version, - N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, - [decode_vcard_TEL(__TopXMLNS, __IgnoreEls, _el) - | Tel], - Label, Fn, Version, N, Photo, Logo, Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, - [decode_vcard_TEL(<<"vcard-temp">>, __IgnoreEls, - _el) - | Tel], - Label, Fn, Version, N, Photo, Logo, Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"EMAIL">>, _attrs, _} = _el | _els], Mailer, - Adr, Class, Categories, Desc, Uid, Prodid, Jabberid, - Sound, Note, Role, Title, Nickname, Rev, Sort_string, - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, Version, - N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, - [decode_vcard_EMAIL(__TopXMLNS, __IgnoreEls, - _el) - | Email], - Tel, Label, Fn, Version, N, Photo, Logo, Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, - [decode_vcard_EMAIL(<<"vcard-temp">>, - __IgnoreEls, _el) - | Email], - Tel, Label, Fn, Version, N, Photo, Logo, Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"GEO">>, _attrs, _} = _el | _els], Mailer, - Adr, Class, Categories, Desc, Uid, Prodid, Jabberid, - Sound, Note, Role, Title, Nickname, Rev, Sort_string, - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, Version, - N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, - decode_vcard_GEO(__TopXMLNS, __IgnoreEls, _el)); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, - decode_vcard_GEO(<<"vcard-temp">>, __IgnoreEls, - _el)); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"LOGO">>, _attrs, _} = _el | _els], Mailer, - Adr, Class, Categories, Desc, Uid, Prodid, Jabberid, - Sound, Note, Role, Title, Nickname, Rev, Sort_string, - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, Version, - N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - decode_vcard_LOGO(__TopXMLNS, __IgnoreEls, _el), - Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - decode_vcard_LOGO(<<"vcard-temp">>, __IgnoreEls, - _el), - Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"PHOTO">>, _attrs, _} = _el | _els], Mailer, - Adr, Class, Categories, Desc, Uid, Prodid, Jabberid, - Sound, Note, Role, Title, Nickname, Rev, Sort_string, - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, Version, - N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, - decode_vcard_PHOTO(__TopXMLNS, __IgnoreEls, - _el), - Logo, Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, - decode_vcard_PHOTO(<<"vcard-temp">>, - __IgnoreEls, _el), - Logo, Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"ORG">>, _attrs, _} = _el | _els], Mailer, - Adr, Class, Categories, Desc, Uid, Prodid, Jabberid, - Sound, Note, Role, Title, Nickname, Rev, Sort_string, - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, Version, - N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, - decode_vcard_ORG(__TopXMLNS, __IgnoreEls, _el), - Bday, Key, Tz, Url, Email, Tel, Label, Fn, - Version, N, Photo, Logo, Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, - decode_vcard_ORG(<<"vcard-temp">>, __IgnoreEls, - _el), - Bday, Key, Tz, Url, Email, Tel, Label, Fn, - Version, N, Photo, Logo, Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"SOUND">>, _attrs, _} = _el | _els], Mailer, - Adr, Class, Categories, Desc, Uid, Prodid, Jabberid, - Sound, Note, Role, Title, Nickname, Rev, Sort_string, - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, Version, - N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, - decode_vcard_SOUND(__TopXMLNS, __IgnoreEls, - _el), - Note, Role, Title, Nickname, Rev, Sort_string, - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, - Version, N, Photo, Logo, Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, - decode_vcard_SOUND(<<"vcard-temp">>, - __IgnoreEls, _el), - Note, Role, Title, Nickname, Rev, Sort_string, - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, - Version, N, Photo, Logo, Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"KEY">>, _attrs, _} = _el | _els], Mailer, - Adr, Class, Categories, Desc, Uid, Prodid, Jabberid, - Sound, Note, Role, Title, Nickname, Rev, Sort_string, - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, Version, - N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, - decode_vcard_KEY(__TopXMLNS, __IgnoreEls, _el), - Tz, Url, Email, Tel, Label, Fn, Version, N, - Photo, Logo, Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, - decode_vcard_KEY(<<"vcard-temp">>, __IgnoreEls, - _el), - Tz, Url, Email, Tel, Label, Fn, Version, N, - Photo, Logo, Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"VERSION">>, _attrs, _} = _el | _els], - Mailer, Adr, Class, Categories, Desc, Uid, Prodid, - Jabberid, Sound, Note, Role, Title, Nickname, Rev, - Sort_string, Org, Bday, Key, Tz, Url, Email, Tel, Label, - Fn, Version, N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, - decode_vcard_VERSION(__TopXMLNS, __IgnoreEls, - _el), - N, Photo, Logo, Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, - decode_vcard_VERSION(<<"vcard-temp">>, - __IgnoreEls, _el), - N, Photo, Logo, Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"FN">>, _attrs, _} = _el | _els], Mailer, - Adr, Class, Categories, Desc, Uid, Prodid, Jabberid, - Sound, Note, Role, Title, Nickname, Rev, Sort_string, - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, Version, - N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, - decode_vcard_FN(__TopXMLNS, __IgnoreEls, _el), - Version, N, Photo, Logo, Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, - decode_vcard_FN(<<"vcard-temp">>, __IgnoreEls, - _el), - Version, N, Photo, Logo, Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"NICKNAME">>, _attrs, _} = _el | _els], - Mailer, Adr, Class, Categories, Desc, Uid, Prodid, - Jabberid, Sound, Note, Role, Title, Nickname, Rev, - Sort_string, Org, Bday, Key, Tz, Url, Email, Tel, Label, - Fn, Version, N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - decode_vcard_NICKNAME(__TopXMLNS, __IgnoreEls, - _el), - Rev, Sort_string, Org, Bday, Key, Tz, Url, - Email, Tel, Label, Fn, Version, N, Photo, Logo, - Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - decode_vcard_NICKNAME(<<"vcard-temp">>, - __IgnoreEls, _el), - Rev, Sort_string, Org, Bday, Key, Tz, Url, - Email, Tel, Label, Fn, Version, N, Photo, Logo, - Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"BDAY">>, _attrs, _} = _el | _els], Mailer, - Adr, Class, Categories, Desc, Uid, Prodid, Jabberid, - Sound, Note, Role, Title, Nickname, Rev, Sort_string, - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, Version, - N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, - decode_vcard_BDAY(__TopXMLNS, __IgnoreEls, _el), - Key, Tz, Url, Email, Tel, Label, Fn, Version, N, - Photo, Logo, Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, - decode_vcard_BDAY(<<"vcard-temp">>, __IgnoreEls, - _el), - Key, Tz, Url, Email, Tel, Label, Fn, Version, N, - Photo, Logo, Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"JABBERID">>, _attrs, _} = _el | _els], - Mailer, Adr, Class, Categories, Desc, Uid, Prodid, - Jabberid, Sound, Note, Role, Title, Nickname, Rev, - Sort_string, Org, Bday, Key, Tz, Url, Email, Tel, Label, - Fn, Version, N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, - decode_vcard_JABBERID(__TopXMLNS, __IgnoreEls, - _el), - Sound, Note, Role, Title, Nickname, Rev, - Sort_string, Org, Bday, Key, Tz, Url, Email, - Tel, Label, Fn, Version, N, Photo, Logo, Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, - decode_vcard_JABBERID(<<"vcard-temp">>, - __IgnoreEls, _el), - Sound, Note, Role, Title, Nickname, Rev, - Sort_string, Org, Bday, Key, Tz, Url, Email, - Tel, Label, Fn, Version, N, Photo, Logo, Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"MAILER">>, _attrs, _} = _el | _els], Mailer, - Adr, Class, Categories, Desc, Uid, Prodid, Jabberid, - Sound, Note, Role, Title, Nickname, Rev, Sort_string, - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, Version, - N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_MAILER(__TopXMLNS, __IgnoreEls, - _el), - Adr, Class, Categories, Desc, Uid, Prodid, - Jabberid, Sound, Note, Role, Title, Nickname, - Rev, Sort_string, Org, Bday, Key, Tz, Url, - Email, Tel, Label, Fn, Version, N, Photo, Logo, - Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_MAILER(<<"vcard-temp">>, - __IgnoreEls, _el), - Adr, Class, Categories, Desc, Uid, Prodid, - Jabberid, Sound, Note, Role, Title, Nickname, - Rev, Sort_string, Org, Bday, Key, Tz, Url, - Email, Tel, Label, Fn, Version, N, Photo, Logo, - Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"TZ">>, _attrs, _} = _el | _els], Mailer, - Adr, Class, Categories, Desc, Uid, Prodid, Jabberid, - Sound, Note, Role, Title, Nickname, Rev, Sort_string, - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, Version, - N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, - decode_vcard_TZ(__TopXMLNS, __IgnoreEls, _el), - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, - decode_vcard_TZ(<<"vcard-temp">>, __IgnoreEls, - _el), - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"TITLE">>, _attrs, _} = _el | _els], Mailer, - Adr, Class, Categories, Desc, Uid, Prodid, Jabberid, - Sound, Note, Role, Title, Nickname, Rev, Sort_string, - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, Version, - N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, - decode_vcard_TITLE(__TopXMLNS, __IgnoreEls, - _el), - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, - decode_vcard_TITLE(<<"vcard-temp">>, - __IgnoreEls, _el), - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"ROLE">>, _attrs, _} = _el | _els], Mailer, - Adr, Class, Categories, Desc, Uid, Prodid, Jabberid, - Sound, Note, Role, Title, Nickname, Rev, Sort_string, - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, Version, - N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, - decode_vcard_ROLE(__TopXMLNS, __IgnoreEls, _el), - Title, Nickname, Rev, Sort_string, Org, Bday, - Key, Tz, Url, Email, Tel, Label, Fn, Version, N, - Photo, Logo, Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, - decode_vcard_ROLE(<<"vcard-temp">>, __IgnoreEls, - _el), - Title, Nickname, Rev, Sort_string, Org, Bday, - Key, Tz, Url, Email, Tel, Label, Fn, Version, N, - Photo, Logo, Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"NOTE">>, _attrs, _} = _el | _els], Mailer, - Adr, Class, Categories, Desc, Uid, Prodid, Jabberid, - Sound, Note, Role, Title, Nickname, Rev, Sort_string, - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, Version, - N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, - decode_vcard_NOTE(__TopXMLNS, __IgnoreEls, _el), - Role, Title, Nickname, Rev, Sort_string, Org, - Bday, Key, Tz, Url, Email, Tel, Label, Fn, - Version, N, Photo, Logo, Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, - decode_vcard_NOTE(<<"vcard-temp">>, __IgnoreEls, - _el), - Role, Title, Nickname, Rev, Sort_string, Org, - Bday, Key, Tz, Url, Email, Tel, Label, Fn, - Version, N, Photo, Logo, Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"PRODID">>, _attrs, _} = _el | _els], Mailer, - Adr, Class, Categories, Desc, Uid, Prodid, Jabberid, - Sound, Note, Role, Title, Nickname, Rev, Sort_string, - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, Version, - N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - decode_vcard_PRODID(__TopXMLNS, __IgnoreEls, - _el), - Jabberid, Sound, Note, Role, Title, Nickname, - Rev, Sort_string, Org, Bday, Key, Tz, Url, - Email, Tel, Label, Fn, Version, N, Photo, Logo, - Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - decode_vcard_PRODID(<<"vcard-temp">>, - __IgnoreEls, _el), - Jabberid, Sound, Note, Role, Title, Nickname, - Rev, Sort_string, Org, Bday, Key, Tz, Url, - Email, Tel, Label, Fn, Version, N, Photo, Logo, - Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"REV">>, _attrs, _} = _el | _els], Mailer, - Adr, Class, Categories, Desc, Uid, Prodid, Jabberid, - Sound, Note, Role, Title, Nickname, Rev, Sort_string, - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, Version, - N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, - decode_vcard_REV(__TopXMLNS, __IgnoreEls, _el), - Sort_string, Org, Bday, Key, Tz, Url, Email, - Tel, Label, Fn, Version, N, Photo, Logo, Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, - decode_vcard_REV(<<"vcard-temp">>, __IgnoreEls, - _el), - Sort_string, Org, Bday, Key, Tz, Url, Email, - Tel, Label, Fn, Version, N, Photo, Logo, Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"SORT-STRING">>, _attrs, _} = _el | _els], - Mailer, Adr, Class, Categories, Desc, Uid, Prodid, - Jabberid, Sound, Note, Role, Title, Nickname, Rev, - Sort_string, Org, Bday, Key, Tz, Url, Email, Tel, Label, - Fn, Version, N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, - decode_vcard_SORT_STRING(__TopXMLNS, - __IgnoreEls, _el), - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, - Version, N, Photo, Logo, Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, - decode_vcard_SORT_STRING(<<"vcard-temp">>, - __IgnoreEls, _el), - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, - Version, N, Photo, Logo, Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"UID">>, _attrs, _} = _el | _els], Mailer, - Adr, Class, Categories, Desc, Uid, Prodid, Jabberid, - Sound, Note, Role, Title, Nickname, Rev, Sort_string, - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, Version, - N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, - decode_vcard_UID(__TopXMLNS, __IgnoreEls, _el), - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, - decode_vcard_UID(<<"vcard-temp">>, __IgnoreEls, - _el), - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"URL">>, _attrs, _} = _el | _els], Mailer, - Adr, Class, Categories, Desc, Uid, Prodid, Jabberid, - Sound, Note, Role, Title, Nickname, Rev, Sort_string, - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, Version, - N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - decode_vcard_URL(__TopXMLNS, __IgnoreEls, _el), - Email, Tel, Label, Fn, Version, N, Photo, Logo, - Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - decode_vcard_URL(<<"vcard-temp">>, __IgnoreEls, - _el), - Email, Tel, Label, Fn, Version, N, Photo, Logo, - Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"DESC">>, _attrs, _} = _el | _els], Mailer, - Adr, Class, Categories, Desc, Uid, Prodid, Jabberid, - Sound, Note, Role, Title, Nickname, Rev, Sort_string, - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, Version, - N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, - decode_vcard_DESC(__TopXMLNS, __IgnoreEls, _el), - Uid, Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, - decode_vcard_DESC(<<"vcard-temp">>, __IgnoreEls, - _el), - Uid, Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"CATEGORIES">>, _attrs, _} = _el | _els], - Mailer, Adr, Class, Categories, Desc, Uid, Prodid, - Jabberid, Sound, Note, Role, Title, Nickname, Rev, - Sort_string, Org, Bday, Key, Tz, Url, Email, Tel, Label, - Fn, Version, N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, - decode_vcard_CATEGORIES(__TopXMLNS, __IgnoreEls, - _el), - Desc, Uid, Prodid, Jabberid, Sound, Note, Role, - Title, Nickname, Rev, Sort_string, Org, Bday, - Key, Tz, Url, Email, Tel, Label, Fn, Version, N, - Photo, Logo, Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, - decode_vcard_CATEGORIES(<<"vcard-temp">>, - __IgnoreEls, _el), - Desc, Uid, Prodid, Jabberid, Sound, Note, Role, - Title, Nickname, Rev, Sort_string, Org, Bday, - Key, Tz, Url, Email, Tel, Label, Fn, Version, N, - Photo, Logo, Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"CLASS">>, _attrs, _} = _el | _els], Mailer, - Adr, Class, Categories, Desc, Uid, Prodid, Jabberid, - Sound, Note, Role, Title, Nickname, Rev, Sort_string, - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, Version, - N, Photo, Logo, Geo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, - decode_vcard_CLASS(__TopXMLNS, __IgnoreEls, - _el), - Categories, Desc, Uid, Prodid, Jabberid, Sound, - Note, Role, Title, Nickname, Rev, Sort_string, - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, - Version, N, Photo, Logo, Geo); - <<"vcard-temp">> -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, - decode_vcard_CLASS(<<"vcard-temp">>, - __IgnoreEls, _el), - Categories, Desc, Uid, Prodid, Jabberid, Sound, - Note, Role, Title, Nickname, Rev, Sort_string, - Org, Bday, Key, Tz, Url, Email, Tel, Label, Fn, - Version, N, Photo, Logo, Geo); - _ -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, - Nickname, Rev, Sort_string, Org, Bday, Key, Tz, - Url, Email, Tel, Label, Fn, Version, N, Photo, - Logo, Geo) - end; -decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Mailer, Adr, Class, Categories, Desc, Uid, - Prodid, Jabberid, Sound, Note, Role, Title, Nickname, - Rev, Sort_string, Org, Bday, Key, Tz, Url, Email, Tel, - Label, Fn, Version, N, Photo, Logo, Geo) -> - decode_vcard_temp_els(__TopXMLNS, __IgnoreEls, _els, - Mailer, Adr, Class, Categories, Desc, Uid, Prodid, - Jabberid, Sound, Note, Role, Title, Nickname, Rev, - Sort_string, Org, Bday, Key, Tz, Url, Email, Tel, - Label, Fn, Version, N, Photo, Logo, Geo). - -encode_vcard_temp({vcard_temp, Version, Fn, N, Nickname, - Photo, Bday, Adr, Label, Tel, Email, Jabberid, Mailer, - Tz, Geo, Title, Role, Logo, Org, Categories, Note, - Prodid, Rev, Sort_string, Sound, Uid, Url, Class, Key, - Desc}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = lists:reverse('encode_vcard_temp_$mailer'(Mailer, - __NewTopXMLNS, - 'encode_vcard_temp_$adr'(Adr, - __NewTopXMLNS, - 'encode_vcard_temp_$class'(Class, - __NewTopXMLNS, - 'encode_vcard_temp_$categories'(Categories, - __NewTopXMLNS, - 'encode_vcard_temp_$desc'(Desc, - __NewTopXMLNS, - 'encode_vcard_temp_$uid'(Uid, - __NewTopXMLNS, - 'encode_vcard_temp_$prodid'(Prodid, - __NewTopXMLNS, - 'encode_vcard_temp_$jabberid'(Jabberid, - __NewTopXMLNS, - 'encode_vcard_temp_$sound'(Sound, - __NewTopXMLNS, - 'encode_vcard_temp_$note'(Note, - __NewTopXMLNS, - 'encode_vcard_temp_$role'(Role, - __NewTopXMLNS, - 'encode_vcard_temp_$title'(Title, - __NewTopXMLNS, - 'encode_vcard_temp_$nickname'(Nickname, - __NewTopXMLNS, - 'encode_vcard_temp_$rev'(Rev, - __NewTopXMLNS, - 'encode_vcard_temp_$sort_string'(Sort_string, - __NewTopXMLNS, - 'encode_vcard_temp_$org'(Org, - __NewTopXMLNS, - 'encode_vcard_temp_$bday'(Bday, - __NewTopXMLNS, - 'encode_vcard_temp_$key'(Key, - __NewTopXMLNS, - 'encode_vcard_temp_$tz'(Tz, - __NewTopXMLNS, - 'encode_vcard_temp_$url'(Url, - __NewTopXMLNS, - 'encode_vcard_temp_$email'(Email, - __NewTopXMLNS, - 'encode_vcard_temp_$tel'(Tel, - __NewTopXMLNS, - 'encode_vcard_temp_$label'(Label, - __NewTopXMLNS, - 'encode_vcard_temp_$fn'(Fn, - __NewTopXMLNS, - 'encode_vcard_temp_$version'(Version, - __NewTopXMLNS, - 'encode_vcard_temp_$n'(N, - __NewTopXMLNS, - 'encode_vcard_temp_$photo'(Photo, - __NewTopXMLNS, - 'encode_vcard_temp_$logo'(Logo, - __NewTopXMLNS, - 'encode_vcard_temp_$geo'(Geo, - __NewTopXMLNS, - [])))))))))))))))))))))))))))))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"vCard">>, _attrs, _els}. - -'encode_vcard_temp_$mailer'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_temp_$mailer'(Mailer, __TopXMLNS, _acc) -> - [encode_vcard_MAILER(Mailer, __TopXMLNS) | _acc]. - -'encode_vcard_temp_$adr'([], __TopXMLNS, _acc) -> _acc; -'encode_vcard_temp_$adr'([Adr | _els], __TopXMLNS, - _acc) -> - 'encode_vcard_temp_$adr'(_els, __TopXMLNS, - [encode_vcard_ADR(Adr, __TopXMLNS) | _acc]). - -'encode_vcard_temp_$class'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_temp_$class'(Class, __TopXMLNS, _acc) -> - [encode_vcard_CLASS(Class, __TopXMLNS) | _acc]. - -'encode_vcard_temp_$categories'([], __TopXMLNS, _acc) -> - _acc; -'encode_vcard_temp_$categories'(Categories, __TopXMLNS, - _acc) -> - [encode_vcard_CATEGORIES(Categories, __TopXMLNS) - | _acc]. - -'encode_vcard_temp_$desc'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_temp_$desc'(Desc, __TopXMLNS, _acc) -> - [encode_vcard_DESC(Desc, __TopXMLNS) | _acc]. - -'encode_vcard_temp_$uid'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_temp_$uid'(Uid, __TopXMLNS, _acc) -> - [encode_vcard_UID(Uid, __TopXMLNS) | _acc]. - -'encode_vcard_temp_$prodid'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_temp_$prodid'(Prodid, __TopXMLNS, _acc) -> - [encode_vcard_PRODID(Prodid, __TopXMLNS) | _acc]. - -'encode_vcard_temp_$jabberid'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_temp_$jabberid'(Jabberid, __TopXMLNS, - _acc) -> - [encode_vcard_JABBERID(Jabberid, __TopXMLNS) | _acc]. - -'encode_vcard_temp_$sound'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_temp_$sound'(Sound, __TopXMLNS, _acc) -> - [encode_vcard_SOUND(Sound, __TopXMLNS) | _acc]. - -'encode_vcard_temp_$note'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_temp_$note'(Note, __TopXMLNS, _acc) -> - [encode_vcard_NOTE(Note, __TopXMLNS) | _acc]. - -'encode_vcard_temp_$role'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_temp_$role'(Role, __TopXMLNS, _acc) -> - [encode_vcard_ROLE(Role, __TopXMLNS) | _acc]. - -'encode_vcard_temp_$title'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_temp_$title'(Title, __TopXMLNS, _acc) -> - [encode_vcard_TITLE(Title, __TopXMLNS) | _acc]. - -'encode_vcard_temp_$nickname'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_temp_$nickname'(Nickname, __TopXMLNS, - _acc) -> - [encode_vcard_NICKNAME(Nickname, __TopXMLNS) | _acc]. - -'encode_vcard_temp_$rev'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_temp_$rev'(Rev, __TopXMLNS, _acc) -> - [encode_vcard_REV(Rev, __TopXMLNS) | _acc]. - -'encode_vcard_temp_$sort_string'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_temp_$sort_string'(Sort_string, - __TopXMLNS, _acc) -> - [encode_vcard_SORT_STRING(Sort_string, __TopXMLNS) - | _acc]. - -'encode_vcard_temp_$org'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_temp_$org'(Org, __TopXMLNS, _acc) -> - [encode_vcard_ORG(Org, __TopXMLNS) | _acc]. - -'encode_vcard_temp_$bday'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_temp_$bday'(Bday, __TopXMLNS, _acc) -> - [encode_vcard_BDAY(Bday, __TopXMLNS) | _acc]. - -'encode_vcard_temp_$key'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_temp_$key'(Key, __TopXMLNS, _acc) -> - [encode_vcard_KEY(Key, __TopXMLNS) | _acc]. - -'encode_vcard_temp_$tz'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_temp_$tz'(Tz, __TopXMLNS, _acc) -> - [encode_vcard_TZ(Tz, __TopXMLNS) | _acc]. - -'encode_vcard_temp_$url'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_temp_$url'(Url, __TopXMLNS, _acc) -> - [encode_vcard_URL(Url, __TopXMLNS) | _acc]. - -'encode_vcard_temp_$email'([], __TopXMLNS, _acc) -> - _acc; -'encode_vcard_temp_$email'([Email | _els], __TopXMLNS, - _acc) -> - 'encode_vcard_temp_$email'(_els, __TopXMLNS, - [encode_vcard_EMAIL(Email, __TopXMLNS) | _acc]). - -'encode_vcard_temp_$tel'([], __TopXMLNS, _acc) -> _acc; -'encode_vcard_temp_$tel'([Tel | _els], __TopXMLNS, - _acc) -> - 'encode_vcard_temp_$tel'(_els, __TopXMLNS, - [encode_vcard_TEL(Tel, __TopXMLNS) | _acc]). - -'encode_vcard_temp_$label'([], __TopXMLNS, _acc) -> - _acc; -'encode_vcard_temp_$label'([Label | _els], __TopXMLNS, - _acc) -> - 'encode_vcard_temp_$label'(_els, __TopXMLNS, - [encode_vcard_LABEL(Label, __TopXMLNS) | _acc]). - -'encode_vcard_temp_$fn'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_temp_$fn'(Fn, __TopXMLNS, _acc) -> - [encode_vcard_FN(Fn, __TopXMLNS) | _acc]. - -'encode_vcard_temp_$version'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_temp_$version'(Version, __TopXMLNS, - _acc) -> - [encode_vcard_VERSION(Version, __TopXMLNS) | _acc]. - -'encode_vcard_temp_$n'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_temp_$n'(N, __TopXMLNS, _acc) -> - [encode_vcard_N(N, __TopXMLNS) | _acc]. - -'encode_vcard_temp_$photo'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_temp_$photo'(Photo, __TopXMLNS, _acc) -> - [encode_vcard_PHOTO(Photo, __TopXMLNS) | _acc]. - -'encode_vcard_temp_$logo'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_temp_$logo'(Logo, __TopXMLNS, _acc) -> - [encode_vcard_LOGO(Logo, __TopXMLNS) | _acc]. - -'encode_vcard_temp_$geo'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_temp_$geo'(Geo, __TopXMLNS, _acc) -> - [encode_vcard_GEO(Geo, __TopXMLNS) | _acc]. - -decode_vcard_CLASS(__TopXMLNS, __IgnoreEls, - {xmlel, <<"CLASS">>, _attrs, _els}) -> - Class = decode_vcard_CLASS_els(__TopXMLNS, __IgnoreEls, - _els, undefined), - Class. - -decode_vcard_CLASS_els(__TopXMLNS, __IgnoreEls, [], - Class) -> - Class; -decode_vcard_CLASS_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"PUBLIC">>, _attrs, _} = _el | _els], - Class) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_CLASS_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_PUBLIC(__TopXMLNS, __IgnoreEls, - _el)); - <<"vcard-temp">> -> - decode_vcard_CLASS_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_PUBLIC(<<"vcard-temp">>, - __IgnoreEls, _el)); - _ -> - decode_vcard_CLASS_els(__TopXMLNS, __IgnoreEls, _els, - Class) - end; -decode_vcard_CLASS_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"PRIVATE">>, _attrs, _} = _el | _els], - Class) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_CLASS_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_PRIVATE(__TopXMLNS, __IgnoreEls, - _el)); - <<"vcard-temp">> -> - decode_vcard_CLASS_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_PRIVATE(<<"vcard-temp">>, - __IgnoreEls, _el)); - _ -> - decode_vcard_CLASS_els(__TopXMLNS, __IgnoreEls, _els, - Class) - end; -decode_vcard_CLASS_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"CONFIDENTIAL">>, _attrs, _} = _el | _els], - Class) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_CLASS_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_CONFIDENTIAL(__TopXMLNS, - __IgnoreEls, _el)); - <<"vcard-temp">> -> - decode_vcard_CLASS_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_CONFIDENTIAL(<<"vcard-temp">>, - __IgnoreEls, _el)); - _ -> - decode_vcard_CLASS_els(__TopXMLNS, __IgnoreEls, _els, - Class) - end; -decode_vcard_CLASS_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Class) -> - decode_vcard_CLASS_els(__TopXMLNS, __IgnoreEls, _els, - Class). - -encode_vcard_CLASS(Class, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = lists:reverse('encode_vcard_CLASS_$class'(Class, - __NewTopXMLNS, [])), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"CLASS">>, _attrs, _els}. - -'encode_vcard_CLASS_$class'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_CLASS_$class'(public = Class, __TopXMLNS, - _acc) -> - [encode_vcard_PUBLIC(Class, __TopXMLNS) | _acc]; -'encode_vcard_CLASS_$class'(private = Class, __TopXMLNS, - _acc) -> - [encode_vcard_PRIVATE(Class, __TopXMLNS) | _acc]; -'encode_vcard_CLASS_$class'(confidential = Class, - __TopXMLNS, _acc) -> - [encode_vcard_CONFIDENTIAL(Class, __TopXMLNS) | _acc]. - -decode_vcard_CATEGORIES(__TopXMLNS, __IgnoreEls, - {xmlel, <<"CATEGORIES">>, _attrs, _els}) -> - Keywords = decode_vcard_CATEGORIES_els(__TopXMLNS, - __IgnoreEls, _els, []), - Keywords. - -decode_vcard_CATEGORIES_els(__TopXMLNS, __IgnoreEls, [], - Keywords) -> - lists:reverse(Keywords); -decode_vcard_CATEGORIES_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"KEYWORD">>, _attrs, _} = _el | _els], - Keywords) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_CATEGORIES_els(__TopXMLNS, __IgnoreEls, - _els, - [decode_vcard_KEYWORD(__TopXMLNS, - __IgnoreEls, _el) - | Keywords]); - <<"vcard-temp">> -> - decode_vcard_CATEGORIES_els(__TopXMLNS, __IgnoreEls, - _els, - [decode_vcard_KEYWORD(<<"vcard-temp">>, - __IgnoreEls, _el) - | Keywords]); - _ -> - decode_vcard_CATEGORIES_els(__TopXMLNS, __IgnoreEls, - _els, Keywords) - end; -decode_vcard_CATEGORIES_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Keywords) -> - decode_vcard_CATEGORIES_els(__TopXMLNS, __IgnoreEls, - _els, Keywords). - -encode_vcard_CATEGORIES(Keywords, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = - lists:reverse('encode_vcard_CATEGORIES_$keywords'(Keywords, - __NewTopXMLNS, [])), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"CATEGORIES">>, _attrs, _els}. - -'encode_vcard_CATEGORIES_$keywords'([], __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_CATEGORIES_$keywords'([Keywords | _els], - __TopXMLNS, _acc) -> - 'encode_vcard_CATEGORIES_$keywords'(_els, __TopXMLNS, - [encode_vcard_KEYWORD(Keywords, - __TopXMLNS) - | _acc]). - -decode_vcard_KEY(__TopXMLNS, __IgnoreEls, - {xmlel, <<"KEY">>, _attrs, _els}) -> - {Cred, Type} = decode_vcard_KEY_els(__TopXMLNS, - __IgnoreEls, _els, undefined, - undefined), - {vcard_key, Type, Cred}. - -decode_vcard_KEY_els(__TopXMLNS, __IgnoreEls, [], Cred, - Type) -> - {Cred, Type}; -decode_vcard_KEY_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"TYPE">>, _attrs, _} = _el | _els], Cred, - Type) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_KEY_els(__TopXMLNS, __IgnoreEls, _els, - Cred, - decode_vcard_TYPE(__TopXMLNS, __IgnoreEls, _el)); - <<"vcard-temp">> -> - decode_vcard_KEY_els(__TopXMLNS, __IgnoreEls, _els, - Cred, - decode_vcard_TYPE(<<"vcard-temp">>, __IgnoreEls, - _el)); - _ -> - decode_vcard_KEY_els(__TopXMLNS, __IgnoreEls, _els, - Cred, Type) - end; -decode_vcard_KEY_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"CRED">>, _attrs, _} = _el | _els], Cred, - Type) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_KEY_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_CRED(__TopXMLNS, __IgnoreEls, _el), - Type); - <<"vcard-temp">> -> - decode_vcard_KEY_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_CRED(<<"vcard-temp">>, __IgnoreEls, - _el), - Type); - _ -> - decode_vcard_KEY_els(__TopXMLNS, __IgnoreEls, _els, - Cred, Type) - end; -decode_vcard_KEY_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cred, Type) -> - decode_vcard_KEY_els(__TopXMLNS, __IgnoreEls, _els, - Cred, Type). - -encode_vcard_KEY({vcard_key, Type, Cred}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = lists:reverse('encode_vcard_KEY_$cred'(Cred, - __NewTopXMLNS, - 'encode_vcard_KEY_$type'(Type, - __NewTopXMLNS, - []))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"KEY">>, _attrs, _els}. - -'encode_vcard_KEY_$cred'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_KEY_$cred'(Cred, __TopXMLNS, _acc) -> - [encode_vcard_CRED(Cred, __TopXMLNS) | _acc]. - -'encode_vcard_KEY_$type'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_KEY_$type'(Type, __TopXMLNS, _acc) -> - [encode_vcard_TYPE(Type, __TopXMLNS) | _acc]. - -decode_vcard_SOUND(__TopXMLNS, __IgnoreEls, - {xmlel, <<"SOUND">>, _attrs, _els}) -> - {Phonetic, Extval, Binval} = - decode_vcard_SOUND_els(__TopXMLNS, __IgnoreEls, _els, - undefined, undefined, undefined), - {vcard_sound, Phonetic, Binval, Extval}. - -decode_vcard_SOUND_els(__TopXMLNS, __IgnoreEls, [], - Phonetic, Extval, Binval) -> - {Phonetic, Extval, Binval}; -decode_vcard_SOUND_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"BINVAL">>, _attrs, _} = _el | _els], - Phonetic, Extval, Binval) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_SOUND_els(__TopXMLNS, __IgnoreEls, _els, - Phonetic, Extval, - decode_vcard_BINVAL(__TopXMLNS, __IgnoreEls, - _el)); - <<"vcard-temp">> -> - decode_vcard_SOUND_els(__TopXMLNS, __IgnoreEls, _els, - Phonetic, Extval, - decode_vcard_BINVAL(<<"vcard-temp">>, - __IgnoreEls, _el)); - _ -> - decode_vcard_SOUND_els(__TopXMLNS, __IgnoreEls, _els, - Phonetic, Extval, Binval) - end; -decode_vcard_SOUND_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"EXTVAL">>, _attrs, _} = _el | _els], - Phonetic, Extval, Binval) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_SOUND_els(__TopXMLNS, __IgnoreEls, _els, - Phonetic, - decode_vcard_EXTVAL(__TopXMLNS, __IgnoreEls, - _el), - Binval); - <<"vcard-temp">> -> - decode_vcard_SOUND_els(__TopXMLNS, __IgnoreEls, _els, - Phonetic, - decode_vcard_EXTVAL(<<"vcard-temp">>, - __IgnoreEls, _el), - Binval); - _ -> - decode_vcard_SOUND_els(__TopXMLNS, __IgnoreEls, _els, - Phonetic, Extval, Binval) - end; -decode_vcard_SOUND_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"PHONETIC">>, _attrs, _} = _el | _els], - Phonetic, Extval, Binval) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_SOUND_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_PHONETIC(__TopXMLNS, __IgnoreEls, - _el), - Extval, Binval); - <<"vcard-temp">> -> - decode_vcard_SOUND_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_PHONETIC(<<"vcard-temp">>, - __IgnoreEls, _el), - Extval, Binval); - _ -> - decode_vcard_SOUND_els(__TopXMLNS, __IgnoreEls, _els, - Phonetic, Extval, Binval) - end; -decode_vcard_SOUND_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Phonetic, Extval, Binval) -> - decode_vcard_SOUND_els(__TopXMLNS, __IgnoreEls, _els, - Phonetic, Extval, Binval). - -encode_vcard_SOUND({vcard_sound, Phonetic, Binval, - Extval}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = - lists:reverse('encode_vcard_SOUND_$phonetic'(Phonetic, - __NewTopXMLNS, - 'encode_vcard_SOUND_$extval'(Extval, - __NewTopXMLNS, - 'encode_vcard_SOUND_$binval'(Binval, - __NewTopXMLNS, - [])))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"SOUND">>, _attrs, _els}. - -'encode_vcard_SOUND_$phonetic'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_SOUND_$phonetic'(Phonetic, __TopXMLNS, - _acc) -> - [encode_vcard_PHONETIC(Phonetic, __TopXMLNS) | _acc]. - -'encode_vcard_SOUND_$extval'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_SOUND_$extval'(Extval, __TopXMLNS, - _acc) -> - [encode_vcard_EXTVAL(Extval, __TopXMLNS) | _acc]. - -'encode_vcard_SOUND_$binval'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_SOUND_$binval'(Binval, __TopXMLNS, - _acc) -> - [encode_vcard_BINVAL(Binval, __TopXMLNS) | _acc]. - -decode_vcard_ORG(__TopXMLNS, __IgnoreEls, - {xmlel, <<"ORG">>, _attrs, _els}) -> - {Units, Name} = decode_vcard_ORG_els(__TopXMLNS, - __IgnoreEls, _els, [], undefined), - {vcard_org, Name, Units}. - -decode_vcard_ORG_els(__TopXMLNS, __IgnoreEls, [], Units, - Name) -> - {lists:reverse(Units), Name}; -decode_vcard_ORG_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"ORGNAME">>, _attrs, _} = _el | _els], Units, - Name) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_ORG_els(__TopXMLNS, __IgnoreEls, _els, - Units, - decode_vcard_ORGNAME(__TopXMLNS, __IgnoreEls, - _el)); - <<"vcard-temp">> -> - decode_vcard_ORG_els(__TopXMLNS, __IgnoreEls, _els, - Units, - decode_vcard_ORGNAME(<<"vcard-temp">>, - __IgnoreEls, _el)); - _ -> - decode_vcard_ORG_els(__TopXMLNS, __IgnoreEls, _els, - Units, Name) - end; -decode_vcard_ORG_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"ORGUNIT">>, _attrs, _} = _el | _els], Units, - Name) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_ORG_els(__TopXMLNS, __IgnoreEls, _els, - [decode_vcard_ORGUNIT(__TopXMLNS, __IgnoreEls, - _el) - | Units], - Name); - <<"vcard-temp">> -> - decode_vcard_ORG_els(__TopXMLNS, __IgnoreEls, _els, - [decode_vcard_ORGUNIT(<<"vcard-temp">>, - __IgnoreEls, _el) - | Units], - Name); - _ -> - decode_vcard_ORG_els(__TopXMLNS, __IgnoreEls, _els, - Units, Name) - end; -decode_vcard_ORG_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Units, Name) -> - decode_vcard_ORG_els(__TopXMLNS, __IgnoreEls, _els, - Units, Name). - -encode_vcard_ORG({vcard_org, Name, Units}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = lists:reverse('encode_vcard_ORG_$units'(Units, - __NewTopXMLNS, - 'encode_vcard_ORG_$name'(Name, - __NewTopXMLNS, - []))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"ORG">>, _attrs, _els}. - -'encode_vcard_ORG_$units'([], __TopXMLNS, _acc) -> _acc; -'encode_vcard_ORG_$units'([Units | _els], __TopXMLNS, - _acc) -> - 'encode_vcard_ORG_$units'(_els, __TopXMLNS, - [encode_vcard_ORGUNIT(Units, __TopXMLNS) | _acc]). - -'encode_vcard_ORG_$name'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_ORG_$name'(Name, __TopXMLNS, _acc) -> - [encode_vcard_ORGNAME(Name, __TopXMLNS) | _acc]. - -decode_vcard_PHOTO(__TopXMLNS, __IgnoreEls, - {xmlel, <<"PHOTO">>, _attrs, _els}) -> - {Type, Extval, Binval} = - decode_vcard_PHOTO_els(__TopXMLNS, __IgnoreEls, _els, - undefined, undefined, undefined), - {vcard_photo, Type, Binval, Extval}. - -decode_vcard_PHOTO_els(__TopXMLNS, __IgnoreEls, [], - Type, Extval, Binval) -> - {Type, Extval, Binval}; -decode_vcard_PHOTO_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"TYPE">>, _attrs, _} = _el | _els], Type, - Extval, Binval) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_PHOTO_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_TYPE(__TopXMLNS, __IgnoreEls, - _el), - Extval, Binval); - <<"vcard-temp">> -> - decode_vcard_PHOTO_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_TYPE(<<"vcard-temp">>, - __IgnoreEls, _el), - Extval, Binval); - _ -> - decode_vcard_PHOTO_els(__TopXMLNS, __IgnoreEls, _els, - Type, Extval, Binval) - end; -decode_vcard_PHOTO_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"BINVAL">>, _attrs, _} = _el | _els], Type, - Extval, Binval) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_PHOTO_els(__TopXMLNS, __IgnoreEls, _els, - Type, Extval, - decode_vcard_BINVAL(__TopXMLNS, __IgnoreEls, - _el)); - <<"vcard-temp">> -> - decode_vcard_PHOTO_els(__TopXMLNS, __IgnoreEls, _els, - Type, Extval, - decode_vcard_BINVAL(<<"vcard-temp">>, - __IgnoreEls, _el)); - _ -> - decode_vcard_PHOTO_els(__TopXMLNS, __IgnoreEls, _els, - Type, Extval, Binval) - end; -decode_vcard_PHOTO_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"EXTVAL">>, _attrs, _} = _el | _els], Type, - Extval, Binval) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_PHOTO_els(__TopXMLNS, __IgnoreEls, _els, - Type, - decode_vcard_EXTVAL(__TopXMLNS, __IgnoreEls, - _el), - Binval); - <<"vcard-temp">> -> - decode_vcard_PHOTO_els(__TopXMLNS, __IgnoreEls, _els, - Type, - decode_vcard_EXTVAL(<<"vcard-temp">>, - __IgnoreEls, _el), - Binval); - _ -> - decode_vcard_PHOTO_els(__TopXMLNS, __IgnoreEls, _els, - Type, Extval, Binval) - end; -decode_vcard_PHOTO_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Type, Extval, Binval) -> - decode_vcard_PHOTO_els(__TopXMLNS, __IgnoreEls, _els, - Type, Extval, Binval). - -encode_vcard_PHOTO({vcard_photo, Type, Binval, Extval}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = lists:reverse('encode_vcard_PHOTO_$type'(Type, - __NewTopXMLNS, - 'encode_vcard_PHOTO_$extval'(Extval, - __NewTopXMLNS, - 'encode_vcard_PHOTO_$binval'(Binval, - __NewTopXMLNS, - [])))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"PHOTO">>, _attrs, _els}. - -'encode_vcard_PHOTO_$type'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_PHOTO_$type'(Type, __TopXMLNS, _acc) -> - [encode_vcard_TYPE(Type, __TopXMLNS) | _acc]. - -'encode_vcard_PHOTO_$extval'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_PHOTO_$extval'(Extval, __TopXMLNS, - _acc) -> - [encode_vcard_EXTVAL(Extval, __TopXMLNS) | _acc]. - -'encode_vcard_PHOTO_$binval'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_PHOTO_$binval'(Binval, __TopXMLNS, - _acc) -> - [encode_vcard_BINVAL(Binval, __TopXMLNS) | _acc]. - -decode_vcard_LOGO(__TopXMLNS, __IgnoreEls, - {xmlel, <<"LOGO">>, _attrs, _els}) -> - {Type, Extval, Binval} = - decode_vcard_LOGO_els(__TopXMLNS, __IgnoreEls, _els, - undefined, undefined, undefined), - {vcard_logo, Type, Binval, Extval}. - -decode_vcard_LOGO_els(__TopXMLNS, __IgnoreEls, [], Type, - Extval, Binval) -> - {Type, Extval, Binval}; -decode_vcard_LOGO_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"TYPE">>, _attrs, _} = _el | _els], Type, - Extval, Binval) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_LOGO_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_TYPE(__TopXMLNS, __IgnoreEls, _el), - Extval, Binval); - <<"vcard-temp">> -> - decode_vcard_LOGO_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_TYPE(<<"vcard-temp">>, __IgnoreEls, - _el), - Extval, Binval); - _ -> - decode_vcard_LOGO_els(__TopXMLNS, __IgnoreEls, _els, - Type, Extval, Binval) - end; -decode_vcard_LOGO_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"BINVAL">>, _attrs, _} = _el | _els], Type, - Extval, Binval) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_LOGO_els(__TopXMLNS, __IgnoreEls, _els, - Type, Extval, - decode_vcard_BINVAL(__TopXMLNS, __IgnoreEls, - _el)); - <<"vcard-temp">> -> - decode_vcard_LOGO_els(__TopXMLNS, __IgnoreEls, _els, - Type, Extval, - decode_vcard_BINVAL(<<"vcard-temp">>, - __IgnoreEls, _el)); - _ -> - decode_vcard_LOGO_els(__TopXMLNS, __IgnoreEls, _els, - Type, Extval, Binval) - end; -decode_vcard_LOGO_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"EXTVAL">>, _attrs, _} = _el | _els], Type, - Extval, Binval) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_LOGO_els(__TopXMLNS, __IgnoreEls, _els, - Type, - decode_vcard_EXTVAL(__TopXMLNS, __IgnoreEls, - _el), - Binval); - <<"vcard-temp">> -> - decode_vcard_LOGO_els(__TopXMLNS, __IgnoreEls, _els, - Type, - decode_vcard_EXTVAL(<<"vcard-temp">>, - __IgnoreEls, _el), - Binval); - _ -> - decode_vcard_LOGO_els(__TopXMLNS, __IgnoreEls, _els, - Type, Extval, Binval) - end; -decode_vcard_LOGO_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Type, Extval, Binval) -> - decode_vcard_LOGO_els(__TopXMLNS, __IgnoreEls, _els, - Type, Extval, Binval). - -encode_vcard_LOGO({vcard_logo, Type, Binval, Extval}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = lists:reverse('encode_vcard_LOGO_$type'(Type, - __NewTopXMLNS, - 'encode_vcard_LOGO_$extval'(Extval, - __NewTopXMLNS, - 'encode_vcard_LOGO_$binval'(Binval, - __NewTopXMLNS, - [])))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"LOGO">>, _attrs, _els}. - -'encode_vcard_LOGO_$type'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_LOGO_$type'(Type, __TopXMLNS, _acc) -> - [encode_vcard_TYPE(Type, __TopXMLNS) | _acc]. - -'encode_vcard_LOGO_$extval'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_LOGO_$extval'(Extval, __TopXMLNS, _acc) -> - [encode_vcard_EXTVAL(Extval, __TopXMLNS) | _acc]. - -'encode_vcard_LOGO_$binval'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_LOGO_$binval'(Binval, __TopXMLNS, _acc) -> - [encode_vcard_BINVAL(Binval, __TopXMLNS) | _acc]. - -decode_vcard_BINVAL(__TopXMLNS, __IgnoreEls, - {xmlel, <<"BINVAL">>, _attrs, _els}) -> - Cdata = decode_vcard_BINVAL_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_BINVAL_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_BINVAL_cdata(__TopXMLNS, Cdata); -decode_vcard_BINVAL_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_BINVAL_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_BINVAL_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_BINVAL_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_BINVAL(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_BINVAL_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"BINVAL">>, _attrs, _els}. - -decode_vcard_BINVAL_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_BINVAL_cdata(__TopXMLNS, _val) -> - case catch base64:decode(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_cdata_value, <<>>, <<"BINVAL">>, __TopXMLNS}}); - _res -> _res - end. - -encode_vcard_BINVAL_cdata(<<>>, _acc) -> _acc; -encode_vcard_BINVAL_cdata(_val, _acc) -> - [{xmlcdata, base64:encode(_val)} | _acc]. - -decode_vcard_GEO(__TopXMLNS, __IgnoreEls, - {xmlel, <<"GEO">>, _attrs, _els}) -> - {Lat, Lon} = decode_vcard_GEO_els(__TopXMLNS, - __IgnoreEls, _els, undefined, undefined), - {vcard_geo, Lat, Lon}. - -decode_vcard_GEO_els(__TopXMLNS, __IgnoreEls, [], Lat, - Lon) -> - {Lat, Lon}; -decode_vcard_GEO_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"LAT">>, _attrs, _} = _el | _els], Lat, - Lon) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_GEO_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_LAT(__TopXMLNS, __IgnoreEls, _el), - Lon); - <<"vcard-temp">> -> - decode_vcard_GEO_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_LAT(<<"vcard-temp">>, __IgnoreEls, - _el), - Lon); - _ -> - decode_vcard_GEO_els(__TopXMLNS, __IgnoreEls, _els, Lat, - Lon) - end; -decode_vcard_GEO_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"LON">>, _attrs, _} = _el | _els], Lat, - Lon) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_GEO_els(__TopXMLNS, __IgnoreEls, _els, Lat, - decode_vcard_LON(__TopXMLNS, __IgnoreEls, _el)); - <<"vcard-temp">> -> - decode_vcard_GEO_els(__TopXMLNS, __IgnoreEls, _els, Lat, - decode_vcard_LON(<<"vcard-temp">>, __IgnoreEls, - _el)); - _ -> - decode_vcard_GEO_els(__TopXMLNS, __IgnoreEls, _els, Lat, - Lon) - end; -decode_vcard_GEO_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Lat, Lon) -> - decode_vcard_GEO_els(__TopXMLNS, __IgnoreEls, _els, Lat, - Lon). - -encode_vcard_GEO({vcard_geo, Lat, Lon}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = lists:reverse('encode_vcard_GEO_$lat'(Lat, - __NewTopXMLNS, - 'encode_vcard_GEO_$lon'(Lon, - __NewTopXMLNS, - []))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"GEO">>, _attrs, _els}. - -'encode_vcard_GEO_$lat'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_GEO_$lat'(Lat, __TopXMLNS, _acc) -> - [encode_vcard_LAT(Lat, __TopXMLNS) | _acc]. - -'encode_vcard_GEO_$lon'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_GEO_$lon'(Lon, __TopXMLNS, _acc) -> - [encode_vcard_LON(Lon, __TopXMLNS) | _acc]. - -decode_vcard_EMAIL(__TopXMLNS, __IgnoreEls, - {xmlel, <<"EMAIL">>, _attrs, _els}) -> - {X400, Userid, Internet, Home, Pref, Work} = - decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, _els, - false, undefined, false, false, false, false), - {vcard_email, Home, Work, Internet, Pref, X400, Userid}. - -decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, [], - X400, Userid, Internet, Home, Pref, Work) -> - {X400, Userid, Internet, Home, Pref, Work}; -decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"HOME">>, _attrs, _} = _el | _els], X400, - Userid, Internet, Home, Pref, Work) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, _els, - X400, Userid, Internet, - decode_vcard_HOME(__TopXMLNS, __IgnoreEls, - _el), - Pref, Work); - <<"vcard-temp">> -> - decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, _els, - X400, Userid, Internet, - decode_vcard_HOME(<<"vcard-temp">>, - __IgnoreEls, _el), - Pref, Work); - _ -> - decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, _els, - X400, Userid, Internet, Home, Pref, Work) - end; -decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"WORK">>, _attrs, _} = _el | _els], X400, - Userid, Internet, Home, Pref, Work) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, _els, - X400, Userid, Internet, Home, Pref, - decode_vcard_WORK(__TopXMLNS, __IgnoreEls, - _el)); - <<"vcard-temp">> -> - decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, _els, - X400, Userid, Internet, Home, Pref, - decode_vcard_WORK(<<"vcard-temp">>, - __IgnoreEls, _el)); - _ -> - decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, _els, - X400, Userid, Internet, Home, Pref, Work) - end; -decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"INTERNET">>, _attrs, _} = _el | _els], X400, - Userid, Internet, Home, Pref, Work) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, _els, - X400, Userid, - decode_vcard_INTERNET(__TopXMLNS, __IgnoreEls, - _el), - Home, Pref, Work); - <<"vcard-temp">> -> - decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, _els, - X400, Userid, - decode_vcard_INTERNET(<<"vcard-temp">>, - __IgnoreEls, _el), - Home, Pref, Work); - _ -> - decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, _els, - X400, Userid, Internet, Home, Pref, Work) - end; -decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"PREF">>, _attrs, _} = _el | _els], X400, - Userid, Internet, Home, Pref, Work) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, _els, - X400, Userid, Internet, Home, - decode_vcard_PREF(__TopXMLNS, __IgnoreEls, - _el), - Work); - <<"vcard-temp">> -> - decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, _els, - X400, Userid, Internet, Home, - decode_vcard_PREF(<<"vcard-temp">>, - __IgnoreEls, _el), - Work); - _ -> - decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, _els, - X400, Userid, Internet, Home, Pref, Work) - end; -decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"X400">>, _attrs, _} = _el | _els], X400, - Userid, Internet, Home, Pref, Work) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_X400(__TopXMLNS, __IgnoreEls, - _el), - Userid, Internet, Home, Pref, Work); - <<"vcard-temp">> -> - decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_X400(<<"vcard-temp">>, - __IgnoreEls, _el), - Userid, Internet, Home, Pref, Work); - _ -> - decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, _els, - X400, Userid, Internet, Home, Pref, Work) - end; -decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"USERID">>, _attrs, _} = _el | _els], X400, - Userid, Internet, Home, Pref, Work) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, _els, - X400, - decode_vcard_USERID(__TopXMLNS, __IgnoreEls, - _el), - Internet, Home, Pref, Work); - <<"vcard-temp">> -> - decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, _els, - X400, - decode_vcard_USERID(<<"vcard-temp">>, - __IgnoreEls, _el), - Internet, Home, Pref, Work); - _ -> - decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, _els, - X400, Userid, Internet, Home, Pref, Work) - end; -decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, - [_ | _els], X400, Userid, Internet, Home, Pref, Work) -> - decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, _els, - X400, Userid, Internet, Home, Pref, Work). - -encode_vcard_EMAIL({vcard_email, Home, Work, Internet, - Pref, X400, Userid}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = lists:reverse('encode_vcard_EMAIL_$x400'(X400, - __NewTopXMLNS, - 'encode_vcard_EMAIL_$userid'(Userid, - __NewTopXMLNS, - 'encode_vcard_EMAIL_$internet'(Internet, - __NewTopXMLNS, - 'encode_vcard_EMAIL_$home'(Home, - __NewTopXMLNS, - 'encode_vcard_EMAIL_$pref'(Pref, - __NewTopXMLNS, - 'encode_vcard_EMAIL_$work'(Work, - __NewTopXMLNS, - []))))))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"EMAIL">>, _attrs, _els}. - -'encode_vcard_EMAIL_$x400'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_EMAIL_$x400'(X400, __TopXMLNS, _acc) -> - [encode_vcard_X400(X400, __TopXMLNS) | _acc]. - -'encode_vcard_EMAIL_$userid'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_EMAIL_$userid'(Userid, __TopXMLNS, - _acc) -> - [encode_vcard_USERID(Userid, __TopXMLNS) | _acc]. - -'encode_vcard_EMAIL_$internet'(false, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_EMAIL_$internet'(Internet, __TopXMLNS, - _acc) -> - [encode_vcard_INTERNET(Internet, __TopXMLNS) | _acc]. - -'encode_vcard_EMAIL_$home'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_EMAIL_$home'(Home, __TopXMLNS, _acc) -> - [encode_vcard_HOME(Home, __TopXMLNS) | _acc]. - -'encode_vcard_EMAIL_$pref'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_EMAIL_$pref'(Pref, __TopXMLNS, _acc) -> - [encode_vcard_PREF(Pref, __TopXMLNS) | _acc]. - -'encode_vcard_EMAIL_$work'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_EMAIL_$work'(Work, __TopXMLNS, _acc) -> - [encode_vcard_WORK(Work, __TopXMLNS) | _acc]. - -decode_vcard_TEL(__TopXMLNS, __IgnoreEls, - {xmlel, <<"TEL">>, _attrs, _els}) -> - {Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, Fax, - Work, Cell, Modem, Isdn, Video} = - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - undefined, false, false, false, false, false, - false, false, false, false, false, false, false, - false), - {vcard_tel, Home, Work, Voice, Fax, Pager, Msg, Cell, - Video, Bbs, Modem, Isdn, Pcs, Pref, Number}. - -decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, [], - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, Fax, - Work, Cell, Modem, Isdn, Video) -> - {Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, Fax, - Work, Cell, Modem, Isdn, Video}; -decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"HOME">>, _attrs, _} = _el | _els], Number, - Pager, Pcs, Bbs, Voice, Home, Pref, Msg, Fax, Work, - Cell, Modem, Isdn, Video) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, - decode_vcard_HOME(__TopXMLNS, __IgnoreEls, _el), - Pref, Msg, Fax, Work, Cell, Modem, Isdn, Video); - <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, - decode_vcard_HOME(<<"vcard-temp">>, __IgnoreEls, - _el), - Pref, Msg, Fax, Work, Cell, Modem, Isdn, Video); - _ -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, - Fax, Work, Cell, Modem, Isdn, Video) - end; -decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"WORK">>, _attrs, _} = _el | _els], Number, - Pager, Pcs, Bbs, Voice, Home, Pref, Msg, Fax, Work, - Cell, Modem, Isdn, Video) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, - Fax, - decode_vcard_WORK(__TopXMLNS, __IgnoreEls, _el), - Cell, Modem, Isdn, Video); - <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, - Fax, - decode_vcard_WORK(<<"vcard-temp">>, __IgnoreEls, - _el), - Cell, Modem, Isdn, Video); - _ -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, - Fax, Work, Cell, Modem, Isdn, Video) - end; -decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"VOICE">>, _attrs, _} = _el | _els], Number, - Pager, Pcs, Bbs, Voice, Home, Pref, Msg, Fax, Work, - Cell, Modem, Isdn, Video) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, - decode_vcard_VOICE(__TopXMLNS, __IgnoreEls, _el), - Home, Pref, Msg, Fax, Work, Cell, Modem, Isdn, - Video); - <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, - decode_vcard_VOICE(<<"vcard-temp">>, __IgnoreEls, - _el), - Home, Pref, Msg, Fax, Work, Cell, Modem, Isdn, - Video); - _ -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, - Fax, Work, Cell, Modem, Isdn, Video) - end; -decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"FAX">>, _attrs, _} = _el | _els], Number, - Pager, Pcs, Bbs, Voice, Home, Pref, Msg, Fax, Work, - Cell, Modem, Isdn, Video) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, - decode_vcard_FAX(__TopXMLNS, __IgnoreEls, _el), - Work, Cell, Modem, Isdn, Video); - <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, - decode_vcard_FAX(<<"vcard-temp">>, __IgnoreEls, - _el), - Work, Cell, Modem, Isdn, Video); - _ -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, - Fax, Work, Cell, Modem, Isdn, Video) - end; -decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"PAGER">>, _attrs, _} = _el | _els], Number, - Pager, Pcs, Bbs, Voice, Home, Pref, Msg, Fax, Work, - Cell, Modem, Isdn, Video) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, - decode_vcard_PAGER(__TopXMLNS, __IgnoreEls, _el), - Pcs, Bbs, Voice, Home, Pref, Msg, Fax, Work, - Cell, Modem, Isdn, Video); - <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, - decode_vcard_PAGER(<<"vcard-temp">>, __IgnoreEls, - _el), - Pcs, Bbs, Voice, Home, Pref, Msg, Fax, Work, - Cell, Modem, Isdn, Video); - _ -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, - Fax, Work, Cell, Modem, Isdn, Video) - end; -decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"MSG">>, _attrs, _} = _el | _els], Number, - Pager, Pcs, Bbs, Voice, Home, Pref, Msg, Fax, Work, - Cell, Modem, Isdn, Video) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, - decode_vcard_MSG(__TopXMLNS, __IgnoreEls, _el), - Fax, Work, Cell, Modem, Isdn, Video); - <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, - decode_vcard_MSG(<<"vcard-temp">>, __IgnoreEls, - _el), - Fax, Work, Cell, Modem, Isdn, Video); - _ -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, - Fax, Work, Cell, Modem, Isdn, Video) - end; -decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"CELL">>, _attrs, _} = _el | _els], Number, - Pager, Pcs, Bbs, Voice, Home, Pref, Msg, Fax, Work, - Cell, Modem, Isdn, Video) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, - Fax, Work, - decode_vcard_CELL(__TopXMLNS, __IgnoreEls, _el), - Modem, Isdn, Video); - <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, - Fax, Work, - decode_vcard_CELL(<<"vcard-temp">>, __IgnoreEls, - _el), - Modem, Isdn, Video); - _ -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, - Fax, Work, Cell, Modem, Isdn, Video) - end; -decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"VIDEO">>, _attrs, _} = _el | _els], Number, - Pager, Pcs, Bbs, Voice, Home, Pref, Msg, Fax, Work, - Cell, Modem, Isdn, Video) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, - Fax, Work, Cell, Modem, Isdn, - decode_vcard_VIDEO(__TopXMLNS, __IgnoreEls, - _el)); - <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, - Fax, Work, Cell, Modem, Isdn, - decode_vcard_VIDEO(<<"vcard-temp">>, __IgnoreEls, - _el)); - _ -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, - Fax, Work, Cell, Modem, Isdn, Video) - end; -decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"BBS">>, _attrs, _} = _el | _els], Number, - Pager, Pcs, Bbs, Voice, Home, Pref, Msg, Fax, Work, - Cell, Modem, Isdn, Video) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, - decode_vcard_BBS(__TopXMLNS, __IgnoreEls, _el), - Voice, Home, Pref, Msg, Fax, Work, Cell, Modem, - Isdn, Video); - <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, - decode_vcard_BBS(<<"vcard-temp">>, __IgnoreEls, - _el), - Voice, Home, Pref, Msg, Fax, Work, Cell, Modem, - Isdn, Video); - _ -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, - Fax, Work, Cell, Modem, Isdn, Video) - end; -decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"MODEM">>, _attrs, _} = _el | _els], Number, - Pager, Pcs, Bbs, Voice, Home, Pref, Msg, Fax, Work, - Cell, Modem, Isdn, Video) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, - Fax, Work, Cell, - decode_vcard_MODEM(__TopXMLNS, __IgnoreEls, _el), - Isdn, Video); - <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, - Fax, Work, Cell, - decode_vcard_MODEM(<<"vcard-temp">>, __IgnoreEls, - _el), - Isdn, Video); - _ -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, - Fax, Work, Cell, Modem, Isdn, Video) - end; -decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"ISDN">>, _attrs, _} = _el | _els], Number, - Pager, Pcs, Bbs, Voice, Home, Pref, Msg, Fax, Work, - Cell, Modem, Isdn, Video) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, - Fax, Work, Cell, Modem, - decode_vcard_ISDN(__TopXMLNS, __IgnoreEls, _el), - Video); - <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, - Fax, Work, Cell, Modem, - decode_vcard_ISDN(<<"vcard-temp">>, __IgnoreEls, - _el), - Video); - _ -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, - Fax, Work, Cell, Modem, Isdn, Video) - end; -decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"PCS">>, _attrs, _} = _el | _els], Number, - Pager, Pcs, Bbs, Voice, Home, Pref, Msg, Fax, Work, - Cell, Modem, Isdn, Video) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, - decode_vcard_PCS(__TopXMLNS, __IgnoreEls, _el), - Bbs, Voice, Home, Pref, Msg, Fax, Work, Cell, - Modem, Isdn, Video); - <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, - decode_vcard_PCS(<<"vcard-temp">>, __IgnoreEls, - _el), - Bbs, Voice, Home, Pref, Msg, Fax, Work, Cell, - Modem, Isdn, Video); - _ -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, - Fax, Work, Cell, Modem, Isdn, Video) - end; -decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"PREF">>, _attrs, _} = _el | _els], Number, - Pager, Pcs, Bbs, Voice, Home, Pref, Msg, Fax, Work, - Cell, Modem, Isdn, Video) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, - decode_vcard_PREF(__TopXMLNS, __IgnoreEls, _el), - Msg, Fax, Work, Cell, Modem, Isdn, Video); - <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, - decode_vcard_PREF(<<"vcard-temp">>, __IgnoreEls, - _el), - Msg, Fax, Work, Cell, Modem, Isdn, Video); - _ -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, - Fax, Work, Cell, Modem, Isdn, Video) - end; -decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"NUMBER">>, _attrs, _} = _el | _els], Number, - Pager, Pcs, Bbs, Voice, Home, Pref, Msg, Fax, Work, - Cell, Modem, Isdn, Video) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_NUMBER(__TopXMLNS, __IgnoreEls, - _el), - Pager, Pcs, Bbs, Voice, Home, Pref, Msg, Fax, - Work, Cell, Modem, Isdn, Video); - <<"vcard-temp">> -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_NUMBER(<<"vcard-temp">>, - __IgnoreEls, _el), - Pager, Pcs, Bbs, Voice, Home, Pref, Msg, Fax, - Work, Cell, Modem, Isdn, Video); - _ -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, - Fax, Work, Cell, Modem, Isdn, Video) - end; -decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Number, Pager, Pcs, Bbs, Voice, Home, Pref, - Msg, Fax, Work, Cell, Modem, Isdn, Video) -> - decode_vcard_TEL_els(__TopXMLNS, __IgnoreEls, _els, - Number, Pager, Pcs, Bbs, Voice, Home, Pref, Msg, Fax, - Work, Cell, Modem, Isdn, Video). - -encode_vcard_TEL({vcard_tel, Home, Work, Voice, Fax, - Pager, Msg, Cell, Video, Bbs, Modem, Isdn, Pcs, Pref, - Number}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = lists:reverse('encode_vcard_TEL_$number'(Number, - __NewTopXMLNS, - 'encode_vcard_TEL_$pager'(Pager, - __NewTopXMLNS, - 'encode_vcard_TEL_$pcs'(Pcs, - __NewTopXMLNS, - 'encode_vcard_TEL_$bbs'(Bbs, - __NewTopXMLNS, - 'encode_vcard_TEL_$voice'(Voice, - __NewTopXMLNS, - 'encode_vcard_TEL_$home'(Home, - __NewTopXMLNS, - 'encode_vcard_TEL_$pref'(Pref, - __NewTopXMLNS, - 'encode_vcard_TEL_$msg'(Msg, - __NewTopXMLNS, - 'encode_vcard_TEL_$fax'(Fax, - __NewTopXMLNS, - 'encode_vcard_TEL_$work'(Work, - __NewTopXMLNS, - 'encode_vcard_TEL_$cell'(Cell, - __NewTopXMLNS, - 'encode_vcard_TEL_$modem'(Modem, - __NewTopXMLNS, - 'encode_vcard_TEL_$isdn'(Isdn, - __NewTopXMLNS, - 'encode_vcard_TEL_$video'(Video, - __NewTopXMLNS, - []))))))))))))))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"TEL">>, _attrs, _els}. - -'encode_vcard_TEL_$number'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_TEL_$number'(Number, __TopXMLNS, _acc) -> - [encode_vcard_NUMBER(Number, __TopXMLNS) | _acc]. - -'encode_vcard_TEL_$pager'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_TEL_$pager'(Pager, __TopXMLNS, _acc) -> - [encode_vcard_PAGER(Pager, __TopXMLNS) | _acc]. - -'encode_vcard_TEL_$pcs'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_TEL_$pcs'(Pcs, __TopXMLNS, _acc) -> - [encode_vcard_PCS(Pcs, __TopXMLNS) | _acc]. - -'encode_vcard_TEL_$bbs'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_TEL_$bbs'(Bbs, __TopXMLNS, _acc) -> - [encode_vcard_BBS(Bbs, __TopXMLNS) | _acc]. - -'encode_vcard_TEL_$voice'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_TEL_$voice'(Voice, __TopXMLNS, _acc) -> - [encode_vcard_VOICE(Voice, __TopXMLNS) | _acc]. - -'encode_vcard_TEL_$home'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_TEL_$home'(Home, __TopXMLNS, _acc) -> - [encode_vcard_HOME(Home, __TopXMLNS) | _acc]. - -'encode_vcard_TEL_$pref'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_TEL_$pref'(Pref, __TopXMLNS, _acc) -> - [encode_vcard_PREF(Pref, __TopXMLNS) | _acc]. - -'encode_vcard_TEL_$msg'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_TEL_$msg'(Msg, __TopXMLNS, _acc) -> - [encode_vcard_MSG(Msg, __TopXMLNS) | _acc]. - -'encode_vcard_TEL_$fax'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_TEL_$fax'(Fax, __TopXMLNS, _acc) -> - [encode_vcard_FAX(Fax, __TopXMLNS) | _acc]. - -'encode_vcard_TEL_$work'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_TEL_$work'(Work, __TopXMLNS, _acc) -> - [encode_vcard_WORK(Work, __TopXMLNS) | _acc]. - -'encode_vcard_TEL_$cell'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_TEL_$cell'(Cell, __TopXMLNS, _acc) -> - [encode_vcard_CELL(Cell, __TopXMLNS) | _acc]. - -'encode_vcard_TEL_$modem'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_TEL_$modem'(Modem, __TopXMLNS, _acc) -> - [encode_vcard_MODEM(Modem, __TopXMLNS) | _acc]. - -'encode_vcard_TEL_$isdn'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_TEL_$isdn'(Isdn, __TopXMLNS, _acc) -> - [encode_vcard_ISDN(Isdn, __TopXMLNS) | _acc]. - -'encode_vcard_TEL_$video'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_TEL_$video'(Video, __TopXMLNS, _acc) -> - [encode_vcard_VIDEO(Video, __TopXMLNS) | _acc]. - -decode_vcard_LABEL(__TopXMLNS, __IgnoreEls, - {xmlel, <<"LABEL">>, _attrs, _els}) -> - {Line, Home, Pref, Work, Intl, Parcel, Postal, Dom} = - decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els, - [], false, false, false, false, false, false, - false), - {vcard_label, Home, Work, Postal, Parcel, Dom, Intl, - Pref, Line}. - -decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, [], - Line, Home, Pref, Work, Intl, Parcel, Postal, Dom) -> - {lists:reverse(Line), Home, Pref, Work, Intl, Parcel, - Postal, Dom}; -decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"HOME">>, _attrs, _} = _el | _els], Line, - Home, Pref, Work, Intl, Parcel, Postal, Dom) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els, - Line, - decode_vcard_HOME(__TopXMLNS, __IgnoreEls, - _el), - Pref, Work, Intl, Parcel, Postal, Dom); - <<"vcard-temp">> -> - decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els, - Line, - decode_vcard_HOME(<<"vcard-temp">>, - __IgnoreEls, _el), - Pref, Work, Intl, Parcel, Postal, Dom); - _ -> - decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els, - Line, Home, Pref, Work, Intl, Parcel, Postal, - Dom) - end; -decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"WORK">>, _attrs, _} = _el | _els], Line, - Home, Pref, Work, Intl, Parcel, Postal, Dom) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els, - Line, Home, Pref, - decode_vcard_WORK(__TopXMLNS, __IgnoreEls, - _el), - Intl, Parcel, Postal, Dom); - <<"vcard-temp">> -> - decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els, - Line, Home, Pref, - decode_vcard_WORK(<<"vcard-temp">>, - __IgnoreEls, _el), - Intl, Parcel, Postal, Dom); - _ -> - decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els, - Line, Home, Pref, Work, Intl, Parcel, Postal, - Dom) - end; -decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"POSTAL">>, _attrs, _} = _el | _els], Line, - Home, Pref, Work, Intl, Parcel, Postal, Dom) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els, - Line, Home, Pref, Work, Intl, Parcel, - decode_vcard_POSTAL(__TopXMLNS, __IgnoreEls, - _el), - Dom); - <<"vcard-temp">> -> - decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els, - Line, Home, Pref, Work, Intl, Parcel, - decode_vcard_POSTAL(<<"vcard-temp">>, - __IgnoreEls, _el), - Dom); - _ -> - decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els, - Line, Home, Pref, Work, Intl, Parcel, Postal, - Dom) - end; -decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"PARCEL">>, _attrs, _} = _el | _els], Line, - Home, Pref, Work, Intl, Parcel, Postal, Dom) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els, - Line, Home, Pref, Work, Intl, - decode_vcard_PARCEL(__TopXMLNS, __IgnoreEls, - _el), - Postal, Dom); - <<"vcard-temp">> -> - decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els, - Line, Home, Pref, Work, Intl, - decode_vcard_PARCEL(<<"vcard-temp">>, - __IgnoreEls, _el), - Postal, Dom); - _ -> - decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els, - Line, Home, Pref, Work, Intl, Parcel, Postal, - Dom) - end; -decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"DOM">>, _attrs, _} = _el | _els], Line, - Home, Pref, Work, Intl, Parcel, Postal, Dom) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els, - Line, Home, Pref, Work, Intl, Parcel, Postal, - decode_vcard_DOM(__TopXMLNS, __IgnoreEls, - _el)); - <<"vcard-temp">> -> - decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els, - Line, Home, Pref, Work, Intl, Parcel, Postal, - decode_vcard_DOM(<<"vcard-temp">>, __IgnoreEls, - _el)); - _ -> - decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els, - Line, Home, Pref, Work, Intl, Parcel, Postal, - Dom) - end; -decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"INTL">>, _attrs, _} = _el | _els], Line, - Home, Pref, Work, Intl, Parcel, Postal, Dom) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els, - Line, Home, Pref, Work, - decode_vcard_INTL(__TopXMLNS, __IgnoreEls, - _el), - Parcel, Postal, Dom); - <<"vcard-temp">> -> - decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els, - Line, Home, Pref, Work, - decode_vcard_INTL(<<"vcard-temp">>, - __IgnoreEls, _el), - Parcel, Postal, Dom); - _ -> - decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els, - Line, Home, Pref, Work, Intl, Parcel, Postal, - Dom) - end; -decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"PREF">>, _attrs, _} = _el | _els], Line, - Home, Pref, Work, Intl, Parcel, Postal, Dom) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els, - Line, Home, - decode_vcard_PREF(__TopXMLNS, __IgnoreEls, - _el), - Work, Intl, Parcel, Postal, Dom); - <<"vcard-temp">> -> - decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els, - Line, Home, - decode_vcard_PREF(<<"vcard-temp">>, - __IgnoreEls, _el), - Work, Intl, Parcel, Postal, Dom); - _ -> - decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els, - Line, Home, Pref, Work, Intl, Parcel, Postal, - Dom) - end; -decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"LINE">>, _attrs, _} = _el | _els], Line, - Home, Pref, Work, Intl, Parcel, Postal, Dom) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els, - [decode_vcard_LINE(__TopXMLNS, __IgnoreEls, - _el) - | Line], - Home, Pref, Work, Intl, Parcel, Postal, Dom); - <<"vcard-temp">> -> - decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els, - [decode_vcard_LINE(<<"vcard-temp">>, - __IgnoreEls, _el) - | Line], - Home, Pref, Work, Intl, Parcel, Postal, Dom); - _ -> - decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els, - Line, Home, Pref, Work, Intl, Parcel, Postal, - Dom) - end; -decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Line, Home, Pref, Work, Intl, Parcel, - Postal, Dom) -> - decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els, - Line, Home, Pref, Work, Intl, Parcel, Postal, Dom). - -encode_vcard_LABEL({vcard_label, Home, Work, Postal, - Parcel, Dom, Intl, Pref, Line}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = lists:reverse('encode_vcard_LABEL_$line'(Line, - __NewTopXMLNS, - 'encode_vcard_LABEL_$home'(Home, - __NewTopXMLNS, - 'encode_vcard_LABEL_$pref'(Pref, - __NewTopXMLNS, - 'encode_vcard_LABEL_$work'(Work, - __NewTopXMLNS, - 'encode_vcard_LABEL_$intl'(Intl, - __NewTopXMLNS, - 'encode_vcard_LABEL_$parcel'(Parcel, - __NewTopXMLNS, - 'encode_vcard_LABEL_$postal'(Postal, - __NewTopXMLNS, - 'encode_vcard_LABEL_$dom'(Dom, - __NewTopXMLNS, - []))))))))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"LABEL">>, _attrs, _els}. - -'encode_vcard_LABEL_$line'([], __TopXMLNS, _acc) -> - _acc; -'encode_vcard_LABEL_$line'([Line | _els], __TopXMLNS, - _acc) -> - 'encode_vcard_LABEL_$line'(_els, __TopXMLNS, - [encode_vcard_LINE(Line, __TopXMLNS) | _acc]). - -'encode_vcard_LABEL_$home'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_LABEL_$home'(Home, __TopXMLNS, _acc) -> - [encode_vcard_HOME(Home, __TopXMLNS) | _acc]. - -'encode_vcard_LABEL_$pref'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_LABEL_$pref'(Pref, __TopXMLNS, _acc) -> - [encode_vcard_PREF(Pref, __TopXMLNS) | _acc]. - -'encode_vcard_LABEL_$work'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_LABEL_$work'(Work, __TopXMLNS, _acc) -> - [encode_vcard_WORK(Work, __TopXMLNS) | _acc]. - -'encode_vcard_LABEL_$intl'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_LABEL_$intl'(Intl, __TopXMLNS, _acc) -> - [encode_vcard_INTL(Intl, __TopXMLNS) | _acc]. - -'encode_vcard_LABEL_$parcel'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_LABEL_$parcel'(Parcel, __TopXMLNS, - _acc) -> - [encode_vcard_PARCEL(Parcel, __TopXMLNS) | _acc]. - -'encode_vcard_LABEL_$postal'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_LABEL_$postal'(Postal, __TopXMLNS, - _acc) -> - [encode_vcard_POSTAL(Postal, __TopXMLNS) | _acc]. - -'encode_vcard_LABEL_$dom'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_LABEL_$dom'(Dom, __TopXMLNS, _acc) -> - [encode_vcard_DOM(Dom, __TopXMLNS) | _acc]. - -decode_vcard_ADR(__TopXMLNS, __IgnoreEls, - {xmlel, <<"ADR">>, _attrs, _els}) -> - {Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, Intl, Parcel, Postal, Dom, Region} = - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - undefined, undefined, undefined, false, false, - undefined, undefined, undefined, false, false, - false, false, false, undefined), - {vcard_adr, Home, Work, Postal, Parcel, Dom, Intl, Pref, - Pobox, Extadd, Street, Locality, Region, Pcode, Ctry}. - -decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, [], - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, Intl, Parcel, Postal, Dom, Region) -> - {Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, Intl, Parcel, Postal, Dom, Region}; -decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"HOME">>, _attrs, _} = _el | _els], Street, - Extadd, Pcode, Home, Pref, Pobox, Ctry, Locality, Work, - Intl, Parcel, Postal, Dom, Region) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, - decode_vcard_HOME(__TopXMLNS, __IgnoreEls, _el), - Pref, Pobox, Ctry, Locality, Work, Intl, Parcel, - Postal, Dom, Region); - <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, - decode_vcard_HOME(<<"vcard-temp">>, __IgnoreEls, - _el), - Pref, Pobox, Ctry, Locality, Work, Intl, Parcel, - Postal, Dom, Region); - _ -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, Intl, Parcel, Postal, Dom, - Region) - end; -decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"WORK">>, _attrs, _} = _el | _els], Street, - Extadd, Pcode, Home, Pref, Pobox, Ctry, Locality, Work, - Intl, Parcel, Postal, Dom, Region) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, - decode_vcard_WORK(__TopXMLNS, __IgnoreEls, _el), - Intl, Parcel, Postal, Dom, Region); - <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, - decode_vcard_WORK(<<"vcard-temp">>, __IgnoreEls, - _el), - Intl, Parcel, Postal, Dom, Region); - _ -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, Intl, Parcel, Postal, Dom, - Region) - end; -decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"POSTAL">>, _attrs, _} = _el | _els], Street, - Extadd, Pcode, Home, Pref, Pobox, Ctry, Locality, Work, - Intl, Parcel, Postal, Dom, Region) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, Intl, Parcel, - decode_vcard_POSTAL(__TopXMLNS, __IgnoreEls, - _el), - Dom, Region); - <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, Intl, Parcel, - decode_vcard_POSTAL(<<"vcard-temp">>, - __IgnoreEls, _el), - Dom, Region); - _ -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, Intl, Parcel, Postal, Dom, - Region) - end; -decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"PARCEL">>, _attrs, _} = _el | _els], Street, - Extadd, Pcode, Home, Pref, Pobox, Ctry, Locality, Work, - Intl, Parcel, Postal, Dom, Region) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, Intl, - decode_vcard_PARCEL(__TopXMLNS, __IgnoreEls, - _el), - Postal, Dom, Region); - <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, Intl, - decode_vcard_PARCEL(<<"vcard-temp">>, - __IgnoreEls, _el), - Postal, Dom, Region); - _ -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, Intl, Parcel, Postal, Dom, - Region) - end; -decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"DOM">>, _attrs, _} = _el | _els], Street, - Extadd, Pcode, Home, Pref, Pobox, Ctry, Locality, Work, - Intl, Parcel, Postal, Dom, Region) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, Intl, Parcel, Postal, - decode_vcard_DOM(__TopXMLNS, __IgnoreEls, _el), - Region); - <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, Intl, Parcel, Postal, - decode_vcard_DOM(<<"vcard-temp">>, __IgnoreEls, - _el), - Region); - _ -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, Intl, Parcel, Postal, Dom, - Region) - end; -decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"INTL">>, _attrs, _} = _el | _els], Street, - Extadd, Pcode, Home, Pref, Pobox, Ctry, Locality, Work, - Intl, Parcel, Postal, Dom, Region) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, - decode_vcard_INTL(__TopXMLNS, __IgnoreEls, _el), - Parcel, Postal, Dom, Region); - <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, - decode_vcard_INTL(<<"vcard-temp">>, __IgnoreEls, - _el), - Parcel, Postal, Dom, Region); - _ -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, Intl, Parcel, Postal, Dom, - Region) - end; -decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"PREF">>, _attrs, _} = _el | _els], Street, - Extadd, Pcode, Home, Pref, Pobox, Ctry, Locality, Work, - Intl, Parcel, Postal, Dom, Region) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, - decode_vcard_PREF(__TopXMLNS, __IgnoreEls, _el), - Pobox, Ctry, Locality, Work, Intl, Parcel, - Postal, Dom, Region); - <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, - decode_vcard_PREF(<<"vcard-temp">>, __IgnoreEls, - _el), - Pobox, Ctry, Locality, Work, Intl, Parcel, - Postal, Dom, Region); - _ -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, Intl, Parcel, Postal, Dom, - Region) - end; -decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"POBOX">>, _attrs, _} = _el | _els], Street, - Extadd, Pcode, Home, Pref, Pobox, Ctry, Locality, Work, - Intl, Parcel, Postal, Dom, Region) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, - decode_vcard_POBOX(__TopXMLNS, __IgnoreEls, _el), - Ctry, Locality, Work, Intl, Parcel, Postal, Dom, - Region); - <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, - decode_vcard_POBOX(<<"vcard-temp">>, __IgnoreEls, - _el), - Ctry, Locality, Work, Intl, Parcel, Postal, Dom, - Region); - _ -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, Intl, Parcel, Postal, Dom, - Region) - end; -decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"EXTADD">>, _attrs, _} = _el | _els], Street, - Extadd, Pcode, Home, Pref, Pobox, Ctry, Locality, Work, - Intl, Parcel, Postal, Dom, Region) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, - decode_vcard_EXTADD(__TopXMLNS, __IgnoreEls, - _el), - Pcode, Home, Pref, Pobox, Ctry, Locality, Work, - Intl, Parcel, Postal, Dom, Region); - <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, - decode_vcard_EXTADD(<<"vcard-temp">>, - __IgnoreEls, _el), - Pcode, Home, Pref, Pobox, Ctry, Locality, Work, - Intl, Parcel, Postal, Dom, Region); - _ -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, Intl, Parcel, Postal, Dom, - Region) - end; -decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"STREET">>, _attrs, _} = _el | _els], Street, - Extadd, Pcode, Home, Pref, Pobox, Ctry, Locality, Work, - Intl, Parcel, Postal, Dom, Region) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_STREET(__TopXMLNS, __IgnoreEls, - _el), - Extadd, Pcode, Home, Pref, Pobox, Ctry, Locality, - Work, Intl, Parcel, Postal, Dom, Region); - <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_STREET(<<"vcard-temp">>, - __IgnoreEls, _el), - Extadd, Pcode, Home, Pref, Pobox, Ctry, Locality, - Work, Intl, Parcel, Postal, Dom, Region); - _ -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, Intl, Parcel, Postal, Dom, - Region) - end; -decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"LOCALITY">>, _attrs, _} = _el | _els], - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, Intl, Parcel, Postal, Dom, Region) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - decode_vcard_LOCALITY(__TopXMLNS, __IgnoreEls, - _el), - Work, Intl, Parcel, Postal, Dom, Region); - <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - decode_vcard_LOCALITY(<<"vcard-temp">>, - __IgnoreEls, _el), - Work, Intl, Parcel, Postal, Dom, Region); - _ -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, Intl, Parcel, Postal, Dom, - Region) - end; -decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"REGION">>, _attrs, _} = _el | _els], Street, - Extadd, Pcode, Home, Pref, Pobox, Ctry, Locality, Work, - Intl, Parcel, Postal, Dom, Region) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, Intl, Parcel, Postal, Dom, - decode_vcard_REGION(__TopXMLNS, __IgnoreEls, - _el)); - <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, Intl, Parcel, Postal, Dom, - decode_vcard_REGION(<<"vcard-temp">>, - __IgnoreEls, _el)); - _ -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, Intl, Parcel, Postal, Dom, - Region) - end; -decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"PCODE">>, _attrs, _} = _el | _els], Street, - Extadd, Pcode, Home, Pref, Pobox, Ctry, Locality, Work, - Intl, Parcel, Postal, Dom, Region) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, - decode_vcard_PCODE(__TopXMLNS, __IgnoreEls, _el), - Home, Pref, Pobox, Ctry, Locality, Work, Intl, - Parcel, Postal, Dom, Region); - <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, - decode_vcard_PCODE(<<"vcard-temp">>, __IgnoreEls, - _el), - Home, Pref, Pobox, Ctry, Locality, Work, Intl, - Parcel, Postal, Dom, Region); - _ -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, Intl, Parcel, Postal, Dom, - Region) - end; -decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"CTRY">>, _attrs, _} = _el | _els], Street, - Extadd, Pcode, Home, Pref, Pobox, Ctry, Locality, Work, - Intl, Parcel, Postal, Dom, Region) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, - decode_vcard_CTRY(__TopXMLNS, __IgnoreEls, _el), - Locality, Work, Intl, Parcel, Postal, Dom, - Region); - <<"vcard-temp">> -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, - decode_vcard_CTRY(<<"vcard-temp">>, __IgnoreEls, - _el), - Locality, Work, Intl, Parcel, Postal, Dom, - Region); - _ -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, Intl, Parcel, Postal, Dom, - Region) - end; -decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Street, Extadd, Pcode, Home, Pref, Pobox, - Ctry, Locality, Work, Intl, Parcel, Postal, Dom, - Region) -> - decode_vcard_ADR_els(__TopXMLNS, __IgnoreEls, _els, - Street, Extadd, Pcode, Home, Pref, Pobox, Ctry, - Locality, Work, Intl, Parcel, Postal, Dom, Region). - -encode_vcard_ADR({vcard_adr, Home, Work, Postal, Parcel, - Dom, Intl, Pref, Pobox, Extadd, Street, Locality, - Region, Pcode, Ctry}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = lists:reverse('encode_vcard_ADR_$street'(Street, - __NewTopXMLNS, - 'encode_vcard_ADR_$extadd'(Extadd, - __NewTopXMLNS, - 'encode_vcard_ADR_$pcode'(Pcode, - __NewTopXMLNS, - 'encode_vcard_ADR_$home'(Home, - __NewTopXMLNS, - 'encode_vcard_ADR_$pref'(Pref, - __NewTopXMLNS, - 'encode_vcard_ADR_$pobox'(Pobox, - __NewTopXMLNS, - 'encode_vcard_ADR_$ctry'(Ctry, - __NewTopXMLNS, - 'encode_vcard_ADR_$locality'(Locality, - __NewTopXMLNS, - 'encode_vcard_ADR_$work'(Work, - __NewTopXMLNS, - 'encode_vcard_ADR_$intl'(Intl, - __NewTopXMLNS, - 'encode_vcard_ADR_$parcel'(Parcel, - __NewTopXMLNS, - 'encode_vcard_ADR_$postal'(Postal, - __NewTopXMLNS, - 'encode_vcard_ADR_$dom'(Dom, - __NewTopXMLNS, - 'encode_vcard_ADR_$region'(Region, - __NewTopXMLNS, - []))))))))))))))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"ADR">>, _attrs, _els}. - -'encode_vcard_ADR_$street'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_ADR_$street'(Street, __TopXMLNS, _acc) -> - [encode_vcard_STREET(Street, __TopXMLNS) | _acc]. - -'encode_vcard_ADR_$extadd'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_ADR_$extadd'(Extadd, __TopXMLNS, _acc) -> - [encode_vcard_EXTADD(Extadd, __TopXMLNS) | _acc]. - -'encode_vcard_ADR_$pcode'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_ADR_$pcode'(Pcode, __TopXMLNS, _acc) -> - [encode_vcard_PCODE(Pcode, __TopXMLNS) | _acc]. - -'encode_vcard_ADR_$home'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_ADR_$home'(Home, __TopXMLNS, _acc) -> - [encode_vcard_HOME(Home, __TopXMLNS) | _acc]. - -'encode_vcard_ADR_$pref'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_ADR_$pref'(Pref, __TopXMLNS, _acc) -> - [encode_vcard_PREF(Pref, __TopXMLNS) | _acc]. - -'encode_vcard_ADR_$pobox'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_ADR_$pobox'(Pobox, __TopXMLNS, _acc) -> - [encode_vcard_POBOX(Pobox, __TopXMLNS) | _acc]. - -'encode_vcard_ADR_$ctry'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_ADR_$ctry'(Ctry, __TopXMLNS, _acc) -> - [encode_vcard_CTRY(Ctry, __TopXMLNS) | _acc]. - -'encode_vcard_ADR_$locality'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_ADR_$locality'(Locality, __TopXMLNS, - _acc) -> - [encode_vcard_LOCALITY(Locality, __TopXMLNS) | _acc]. - -'encode_vcard_ADR_$work'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_ADR_$work'(Work, __TopXMLNS, _acc) -> - [encode_vcard_WORK(Work, __TopXMLNS) | _acc]. - -'encode_vcard_ADR_$intl'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_ADR_$intl'(Intl, __TopXMLNS, _acc) -> - [encode_vcard_INTL(Intl, __TopXMLNS) | _acc]. - -'encode_vcard_ADR_$parcel'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_ADR_$parcel'(Parcel, __TopXMLNS, _acc) -> - [encode_vcard_PARCEL(Parcel, __TopXMLNS) | _acc]. - -'encode_vcard_ADR_$postal'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_ADR_$postal'(Postal, __TopXMLNS, _acc) -> - [encode_vcard_POSTAL(Postal, __TopXMLNS) | _acc]. - -'encode_vcard_ADR_$dom'(false, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_ADR_$dom'(Dom, __TopXMLNS, _acc) -> - [encode_vcard_DOM(Dom, __TopXMLNS) | _acc]. - -'encode_vcard_ADR_$region'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_vcard_ADR_$region'(Region, __TopXMLNS, _acc) -> - [encode_vcard_REGION(Region, __TopXMLNS) | _acc]. - -decode_vcard_N(__TopXMLNS, __IgnoreEls, - {xmlel, <<"N">>, _attrs, _els}) -> - {Middle, Suffix, Prefix, Family, Given} = - decode_vcard_N_els(__TopXMLNS, __IgnoreEls, _els, - undefined, undefined, undefined, undefined, - undefined), - {vcard_name, Family, Given, Middle, Prefix, Suffix}. - -decode_vcard_N_els(__TopXMLNS, __IgnoreEls, [], Middle, - Suffix, Prefix, Family, Given) -> - {Middle, Suffix, Prefix, Family, Given}; -decode_vcard_N_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"FAMILY">>, _attrs, _} = _el | _els], Middle, - Suffix, Prefix, Family, Given) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_N_els(__TopXMLNS, __IgnoreEls, _els, - Middle, Suffix, Prefix, - decode_vcard_FAMILY(__TopXMLNS, __IgnoreEls, _el), - Given); - <<"vcard-temp">> -> - decode_vcard_N_els(__TopXMLNS, __IgnoreEls, _els, - Middle, Suffix, Prefix, - decode_vcard_FAMILY(<<"vcard-temp">>, __IgnoreEls, - _el), - Given); - _ -> - decode_vcard_N_els(__TopXMLNS, __IgnoreEls, _els, - Middle, Suffix, Prefix, Family, Given) - end; -decode_vcard_N_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"GIVEN">>, _attrs, _} = _el | _els], Middle, - Suffix, Prefix, Family, Given) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_N_els(__TopXMLNS, __IgnoreEls, _els, - Middle, Suffix, Prefix, Family, - decode_vcard_GIVEN(__TopXMLNS, __IgnoreEls, _el)); - <<"vcard-temp">> -> - decode_vcard_N_els(__TopXMLNS, __IgnoreEls, _els, - Middle, Suffix, Prefix, Family, - decode_vcard_GIVEN(<<"vcard-temp">>, __IgnoreEls, - _el)); - _ -> - decode_vcard_N_els(__TopXMLNS, __IgnoreEls, _els, - Middle, Suffix, Prefix, Family, Given) - end; -decode_vcard_N_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"MIDDLE">>, _attrs, _} = _el | _els], Middle, - Suffix, Prefix, Family, Given) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_N_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_MIDDLE(__TopXMLNS, __IgnoreEls, _el), - Suffix, Prefix, Family, Given); - <<"vcard-temp">> -> - decode_vcard_N_els(__TopXMLNS, __IgnoreEls, _els, - decode_vcard_MIDDLE(<<"vcard-temp">>, __IgnoreEls, - _el), - Suffix, Prefix, Family, Given); - _ -> - decode_vcard_N_els(__TopXMLNS, __IgnoreEls, _els, - Middle, Suffix, Prefix, Family, Given) - end; -decode_vcard_N_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"PREFIX">>, _attrs, _} = _el | _els], Middle, - Suffix, Prefix, Family, Given) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_N_els(__TopXMLNS, __IgnoreEls, _els, - Middle, Suffix, - decode_vcard_PREFIX(__TopXMLNS, __IgnoreEls, _el), - Family, Given); - <<"vcard-temp">> -> - decode_vcard_N_els(__TopXMLNS, __IgnoreEls, _els, - Middle, Suffix, - decode_vcard_PREFIX(<<"vcard-temp">>, __IgnoreEls, - _el), - Family, Given); - _ -> - decode_vcard_N_els(__TopXMLNS, __IgnoreEls, _els, - Middle, Suffix, Prefix, Family, Given) - end; -decode_vcard_N_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"SUFFIX">>, _attrs, _} = _el | _els], Middle, - Suffix, Prefix, Family, Given) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"vcard-temp">> -> - decode_vcard_N_els(__TopXMLNS, __IgnoreEls, _els, - Middle, - decode_vcard_SUFFIX(__TopXMLNS, __IgnoreEls, _el), - Prefix, Family, Given); - <<"vcard-temp">> -> - decode_vcard_N_els(__TopXMLNS, __IgnoreEls, _els, - Middle, - decode_vcard_SUFFIX(<<"vcard-temp">>, __IgnoreEls, - _el), - Prefix, Family, Given); - _ -> - decode_vcard_N_els(__TopXMLNS, __IgnoreEls, _els, - Middle, Suffix, Prefix, Family, Given) - end; -decode_vcard_N_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Middle, Suffix, Prefix, Family, Given) -> - decode_vcard_N_els(__TopXMLNS, __IgnoreEls, _els, - Middle, Suffix, Prefix, Family, Given). - -encode_vcard_N({vcard_name, Family, Given, Middle, - Prefix, Suffix}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = lists:reverse('encode_vcard_N_$middle'(Middle, - __NewTopXMLNS, - 'encode_vcard_N_$suffix'(Suffix, - __NewTopXMLNS, - 'encode_vcard_N_$prefix'(Prefix, - __NewTopXMLNS, - 'encode_vcard_N_$family'(Family, - __NewTopXMLNS, - 'encode_vcard_N_$given'(Given, - __NewTopXMLNS, - [])))))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"N">>, _attrs, _els}. - -'encode_vcard_N_$middle'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_N_$middle'(Middle, __TopXMLNS, _acc) -> - [encode_vcard_MIDDLE(Middle, __TopXMLNS) | _acc]. - -'encode_vcard_N_$suffix'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_N_$suffix'(Suffix, __TopXMLNS, _acc) -> - [encode_vcard_SUFFIX(Suffix, __TopXMLNS) | _acc]. - -'encode_vcard_N_$prefix'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_N_$prefix'(Prefix, __TopXMLNS, _acc) -> - [encode_vcard_PREFIX(Prefix, __TopXMLNS) | _acc]. - -'encode_vcard_N_$family'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_N_$family'(Family, __TopXMLNS, _acc) -> - [encode_vcard_FAMILY(Family, __TopXMLNS) | _acc]. - -'encode_vcard_N_$given'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_vcard_N_$given'(Given, __TopXMLNS, _acc) -> - [encode_vcard_GIVEN(Given, __TopXMLNS) | _acc]. - -decode_vcard_CONFIDENTIAL(__TopXMLNS, __IgnoreEls, - {xmlel, <<"CONFIDENTIAL">>, _attrs, _els}) -> - confidential. - -encode_vcard_CONFIDENTIAL(confidential, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"CONFIDENTIAL">>, _attrs, _els}. - -decode_vcard_PRIVATE(__TopXMLNS, __IgnoreEls, - {xmlel, <<"PRIVATE">>, _attrs, _els}) -> - private. - -encode_vcard_PRIVATE(private, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"PRIVATE">>, _attrs, _els}. - -decode_vcard_PUBLIC(__TopXMLNS, __IgnoreEls, - {xmlel, <<"PUBLIC">>, _attrs, _els}) -> - public. - -encode_vcard_PUBLIC(public, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"PUBLIC">>, _attrs, _els}. - -decode_vcard_EXTVAL(__TopXMLNS, __IgnoreEls, - {xmlel, <<"EXTVAL">>, _attrs, _els}) -> - Cdata = decode_vcard_EXTVAL_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_EXTVAL_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_EXTVAL_cdata(__TopXMLNS, Cdata); -decode_vcard_EXTVAL_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_EXTVAL_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_EXTVAL_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_EXTVAL_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_EXTVAL(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_EXTVAL_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"EXTVAL">>, _attrs, _els}. - -decode_vcard_EXTVAL_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_EXTVAL_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_EXTVAL_cdata(<<>>, _acc) -> _acc; -encode_vcard_EXTVAL_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_TYPE(__TopXMLNS, __IgnoreEls, - {xmlel, <<"TYPE">>, _attrs, _els}) -> - Cdata = decode_vcard_TYPE_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_TYPE_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_TYPE_cdata(__TopXMLNS, Cdata); -decode_vcard_TYPE_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_TYPE_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_TYPE_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_TYPE_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_TYPE(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_TYPE_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"TYPE">>, _attrs, _els}. - -decode_vcard_TYPE_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_TYPE_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_TYPE_cdata(<<>>, _acc) -> _acc; -encode_vcard_TYPE_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_DESC(__TopXMLNS, __IgnoreEls, - {xmlel, <<"DESC">>, _attrs, _els}) -> - Cdata = decode_vcard_DESC_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_DESC_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_DESC_cdata(__TopXMLNS, Cdata); -decode_vcard_DESC_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_DESC_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_DESC_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_DESC_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_DESC(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_DESC_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"DESC">>, _attrs, _els}. - -decode_vcard_DESC_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_DESC_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_DESC_cdata(<<>>, _acc) -> _acc; -encode_vcard_DESC_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_URL(__TopXMLNS, __IgnoreEls, - {xmlel, <<"URL">>, _attrs, _els}) -> - Cdata = decode_vcard_URL_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_URL_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_URL_cdata(__TopXMLNS, Cdata); -decode_vcard_URL_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_URL_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_URL_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_URL_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_URL(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_URL_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"URL">>, _attrs, _els}. - -decode_vcard_URL_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_URL_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_URL_cdata(<<>>, _acc) -> _acc; -encode_vcard_URL_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_UID(__TopXMLNS, __IgnoreEls, - {xmlel, <<"UID">>, _attrs, _els}) -> - Cdata = decode_vcard_UID_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_UID_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_UID_cdata(__TopXMLNS, Cdata); -decode_vcard_UID_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_UID_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_UID_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_UID_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_UID(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_UID_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"UID">>, _attrs, _els}. - -decode_vcard_UID_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_UID_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_UID_cdata(<<>>, _acc) -> _acc; -encode_vcard_UID_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_SORT_STRING(__TopXMLNS, __IgnoreEls, - {xmlel, <<"SORT-STRING">>, _attrs, _els}) -> - Cdata = decode_vcard_SORT_STRING_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_vcard_SORT_STRING_els(__TopXMLNS, __IgnoreEls, - [], Cdata) -> - decode_vcard_SORT_STRING_cdata(__TopXMLNS, Cdata); -decode_vcard_SORT_STRING_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_SORT_STRING_els(__TopXMLNS, __IgnoreEls, - _els, <>); -decode_vcard_SORT_STRING_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_SORT_STRING_els(__TopXMLNS, __IgnoreEls, - _els, Cdata). - -encode_vcard_SORT_STRING(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_SORT_STRING_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"SORT-STRING">>, _attrs, _els}. - -decode_vcard_SORT_STRING_cdata(__TopXMLNS, <<>>) -> - <<>>; -decode_vcard_SORT_STRING_cdata(__TopXMLNS, _val) -> - _val. - -encode_vcard_SORT_STRING_cdata(<<>>, _acc) -> _acc; -encode_vcard_SORT_STRING_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_REV(__TopXMLNS, __IgnoreEls, - {xmlel, <<"REV">>, _attrs, _els}) -> - Cdata = decode_vcard_REV_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_REV_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_REV_cdata(__TopXMLNS, Cdata); -decode_vcard_REV_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_REV_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_REV_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_REV_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_REV(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_REV_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"REV">>, _attrs, _els}. - -decode_vcard_REV_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_REV_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_REV_cdata(<<>>, _acc) -> _acc; -encode_vcard_REV_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_PRODID(__TopXMLNS, __IgnoreEls, - {xmlel, <<"PRODID">>, _attrs, _els}) -> - Cdata = decode_vcard_PRODID_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_PRODID_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_PRODID_cdata(__TopXMLNS, Cdata); -decode_vcard_PRODID_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_PRODID_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_PRODID_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_PRODID_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_PRODID(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_PRODID_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"PRODID">>, _attrs, _els}. - -decode_vcard_PRODID_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_PRODID_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_PRODID_cdata(<<>>, _acc) -> _acc; -encode_vcard_PRODID_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_NOTE(__TopXMLNS, __IgnoreEls, - {xmlel, <<"NOTE">>, _attrs, _els}) -> - Cdata = decode_vcard_NOTE_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_NOTE_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_NOTE_cdata(__TopXMLNS, Cdata); -decode_vcard_NOTE_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_NOTE_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_NOTE_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_NOTE_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_NOTE(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_NOTE_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"NOTE">>, _attrs, _els}. - -decode_vcard_NOTE_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_NOTE_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_NOTE_cdata(<<>>, _acc) -> _acc; -encode_vcard_NOTE_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_KEYWORD(__TopXMLNS, __IgnoreEls, - {xmlel, <<"KEYWORD">>, _attrs, _els}) -> - Cdata = decode_vcard_KEYWORD_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_vcard_KEYWORD_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_KEYWORD_cdata(__TopXMLNS, Cdata); -decode_vcard_KEYWORD_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_KEYWORD_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_KEYWORD_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_KEYWORD_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_KEYWORD(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_KEYWORD_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"KEYWORD">>, _attrs, _els}. - -decode_vcard_KEYWORD_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_KEYWORD_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_KEYWORD_cdata(<<>>, _acc) -> _acc; -encode_vcard_KEYWORD_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_ROLE(__TopXMLNS, __IgnoreEls, - {xmlel, <<"ROLE">>, _attrs, _els}) -> - Cdata = decode_vcard_ROLE_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_ROLE_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_ROLE_cdata(__TopXMLNS, Cdata); -decode_vcard_ROLE_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_ROLE_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_ROLE_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_ROLE_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_ROLE(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_ROLE_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"ROLE">>, _attrs, _els}. - -decode_vcard_ROLE_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_ROLE_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_ROLE_cdata(<<>>, _acc) -> _acc; -encode_vcard_ROLE_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_TITLE(__TopXMLNS, __IgnoreEls, - {xmlel, <<"TITLE">>, _attrs, _els}) -> - Cdata = decode_vcard_TITLE_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_TITLE_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_TITLE_cdata(__TopXMLNS, Cdata); -decode_vcard_TITLE_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_TITLE_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_TITLE_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_TITLE_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_TITLE(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_TITLE_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"TITLE">>, _attrs, _els}. - -decode_vcard_TITLE_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_TITLE_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_TITLE_cdata(<<>>, _acc) -> _acc; -encode_vcard_TITLE_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_TZ(__TopXMLNS, __IgnoreEls, - {xmlel, <<"TZ">>, _attrs, _els}) -> - Cdata = decode_vcard_TZ_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_TZ_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_TZ_cdata(__TopXMLNS, Cdata); -decode_vcard_TZ_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_TZ_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_TZ_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Cdata) -> - decode_vcard_TZ_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_TZ(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_TZ_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"TZ">>, _attrs, _els}. - -decode_vcard_TZ_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_TZ_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_TZ_cdata(<<>>, _acc) -> _acc; -encode_vcard_TZ_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_MAILER(__TopXMLNS, __IgnoreEls, - {xmlel, <<"MAILER">>, _attrs, _els}) -> - Cdata = decode_vcard_MAILER_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_MAILER_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_MAILER_cdata(__TopXMLNS, Cdata); -decode_vcard_MAILER_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_MAILER_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_MAILER_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_MAILER_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_MAILER(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_MAILER_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"MAILER">>, _attrs, _els}. - -decode_vcard_MAILER_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_MAILER_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_MAILER_cdata(<<>>, _acc) -> _acc; -encode_vcard_MAILER_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_JABBERID(__TopXMLNS, __IgnoreEls, - {xmlel, <<"JABBERID">>, _attrs, _els}) -> - Cdata = decode_vcard_JABBERID_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_vcard_JABBERID_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_JABBERID_cdata(__TopXMLNS, Cdata); -decode_vcard_JABBERID_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_JABBERID_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_JABBERID_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_JABBERID_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_JABBERID(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_JABBERID_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"JABBERID">>, _attrs, _els}. - -decode_vcard_JABBERID_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_JABBERID_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_JABBERID_cdata(<<>>, _acc) -> _acc; -encode_vcard_JABBERID_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_BDAY(__TopXMLNS, __IgnoreEls, - {xmlel, <<"BDAY">>, _attrs, _els}) -> - Cdata = decode_vcard_BDAY_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_BDAY_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_BDAY_cdata(__TopXMLNS, Cdata); -decode_vcard_BDAY_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_BDAY_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_BDAY_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_BDAY_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_BDAY(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_BDAY_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"BDAY">>, _attrs, _els}. - -decode_vcard_BDAY_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_BDAY_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_BDAY_cdata(<<>>, _acc) -> _acc; -encode_vcard_BDAY_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_NICKNAME(__TopXMLNS, __IgnoreEls, - {xmlel, <<"NICKNAME">>, _attrs, _els}) -> - Cdata = decode_vcard_NICKNAME_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_vcard_NICKNAME_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_NICKNAME_cdata(__TopXMLNS, Cdata); -decode_vcard_NICKNAME_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_NICKNAME_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_NICKNAME_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_NICKNAME_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_NICKNAME(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_NICKNAME_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"NICKNAME">>, _attrs, _els}. - -decode_vcard_NICKNAME_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_NICKNAME_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_NICKNAME_cdata(<<>>, _acc) -> _acc; -encode_vcard_NICKNAME_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_FN(__TopXMLNS, __IgnoreEls, - {xmlel, <<"FN">>, _attrs, _els}) -> - Cdata = decode_vcard_FN_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_FN_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_FN_cdata(__TopXMLNS, Cdata); -decode_vcard_FN_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_FN_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_FN_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Cdata) -> - decode_vcard_FN_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_FN(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_FN_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"FN">>, _attrs, _els}. - -decode_vcard_FN_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_FN_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_FN_cdata(<<>>, _acc) -> _acc; -encode_vcard_FN_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_VERSION(__TopXMLNS, __IgnoreEls, - {xmlel, <<"VERSION">>, _attrs, _els}) -> - Cdata = decode_vcard_VERSION_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_vcard_VERSION_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_VERSION_cdata(__TopXMLNS, Cdata); -decode_vcard_VERSION_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_VERSION_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_VERSION_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_VERSION_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_VERSION(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_VERSION_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"VERSION">>, _attrs, _els}. - -decode_vcard_VERSION_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_VERSION_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_VERSION_cdata(<<>>, _acc) -> _acc; -encode_vcard_VERSION_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_CRED(__TopXMLNS, __IgnoreEls, - {xmlel, <<"CRED">>, _attrs, _els}) -> - Cdata = decode_vcard_CRED_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_CRED_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_CRED_cdata(__TopXMLNS, Cdata); -decode_vcard_CRED_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_CRED_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_CRED_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_CRED_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_CRED(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_CRED_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"CRED">>, _attrs, _els}. - -decode_vcard_CRED_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_CRED_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_CRED_cdata(<<>>, _acc) -> _acc; -encode_vcard_CRED_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_PHONETIC(__TopXMLNS, __IgnoreEls, - {xmlel, <<"PHONETIC">>, _attrs, _els}) -> - Cdata = decode_vcard_PHONETIC_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_vcard_PHONETIC_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_PHONETIC_cdata(__TopXMLNS, Cdata); -decode_vcard_PHONETIC_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_PHONETIC_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_PHONETIC_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_PHONETIC_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_PHONETIC(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_PHONETIC_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"PHONETIC">>, _attrs, _els}. - -decode_vcard_PHONETIC_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_PHONETIC_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_PHONETIC_cdata(<<>>, _acc) -> _acc; -encode_vcard_PHONETIC_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_ORGUNIT(__TopXMLNS, __IgnoreEls, - {xmlel, <<"ORGUNIT">>, _attrs, _els}) -> - Cdata = decode_vcard_ORGUNIT_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_vcard_ORGUNIT_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_ORGUNIT_cdata(__TopXMLNS, Cdata); -decode_vcard_ORGUNIT_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_ORGUNIT_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_ORGUNIT_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_ORGUNIT_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_ORGUNIT(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_ORGUNIT_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"ORGUNIT">>, _attrs, _els}. - -decode_vcard_ORGUNIT_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_ORGUNIT_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_ORGUNIT_cdata(<<>>, _acc) -> _acc; -encode_vcard_ORGUNIT_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_ORGNAME(__TopXMLNS, __IgnoreEls, - {xmlel, <<"ORGNAME">>, _attrs, _els}) -> - Cdata = decode_vcard_ORGNAME_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_vcard_ORGNAME_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_ORGNAME_cdata(__TopXMLNS, Cdata); -decode_vcard_ORGNAME_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_ORGNAME_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_ORGNAME_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_ORGNAME_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_ORGNAME(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_ORGNAME_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"ORGNAME">>, _attrs, _els}. - -decode_vcard_ORGNAME_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_ORGNAME_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_ORGNAME_cdata(<<>>, _acc) -> _acc; -encode_vcard_ORGNAME_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_LON(__TopXMLNS, __IgnoreEls, - {xmlel, <<"LON">>, _attrs, _els}) -> - Cdata = decode_vcard_LON_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_LON_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_LON_cdata(__TopXMLNS, Cdata); -decode_vcard_LON_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_LON_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_LON_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_LON_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_LON(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_LON_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"LON">>, _attrs, _els}. - -decode_vcard_LON_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_LON_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_LON_cdata(<<>>, _acc) -> _acc; -encode_vcard_LON_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_LAT(__TopXMLNS, __IgnoreEls, - {xmlel, <<"LAT">>, _attrs, _els}) -> - Cdata = decode_vcard_LAT_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_LAT_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_LAT_cdata(__TopXMLNS, Cdata); -decode_vcard_LAT_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_LAT_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_LAT_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_LAT_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_LAT(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_LAT_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"LAT">>, _attrs, _els}. - -decode_vcard_LAT_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_LAT_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_LAT_cdata(<<>>, _acc) -> _acc; -encode_vcard_LAT_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_USERID(__TopXMLNS, __IgnoreEls, - {xmlel, <<"USERID">>, _attrs, _els}) -> - Cdata = decode_vcard_USERID_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_USERID_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_USERID_cdata(__TopXMLNS, Cdata); -decode_vcard_USERID_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_USERID_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_USERID_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_USERID_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_USERID(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_USERID_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"USERID">>, _attrs, _els}. - -decode_vcard_USERID_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_USERID_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_USERID_cdata(<<>>, _acc) -> _acc; -encode_vcard_USERID_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_NUMBER(__TopXMLNS, __IgnoreEls, - {xmlel, <<"NUMBER">>, _attrs, _els}) -> - Cdata = decode_vcard_NUMBER_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_NUMBER_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_NUMBER_cdata(__TopXMLNS, Cdata); -decode_vcard_NUMBER_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_NUMBER_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_NUMBER_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_NUMBER_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_NUMBER(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_NUMBER_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"NUMBER">>, _attrs, _els}. - -decode_vcard_NUMBER_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_NUMBER_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_NUMBER_cdata(<<>>, _acc) -> _acc; -encode_vcard_NUMBER_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_LINE(__TopXMLNS, __IgnoreEls, - {xmlel, <<"LINE">>, _attrs, _els}) -> - Cdata = decode_vcard_LINE_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_LINE_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_LINE_cdata(__TopXMLNS, Cdata); -decode_vcard_LINE_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_LINE_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_LINE_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_LINE_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_LINE(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_LINE_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"LINE">>, _attrs, _els}. - -decode_vcard_LINE_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_LINE_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_LINE_cdata(<<>>, _acc) -> _acc; -encode_vcard_LINE_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_CTRY(__TopXMLNS, __IgnoreEls, - {xmlel, <<"CTRY">>, _attrs, _els}) -> - Cdata = decode_vcard_CTRY_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_CTRY_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_CTRY_cdata(__TopXMLNS, Cdata); -decode_vcard_CTRY_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_CTRY_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_CTRY_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_CTRY_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_CTRY(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_CTRY_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"CTRY">>, _attrs, _els}. - -decode_vcard_CTRY_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_CTRY_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_CTRY_cdata(<<>>, _acc) -> _acc; -encode_vcard_CTRY_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_PCODE(__TopXMLNS, __IgnoreEls, - {xmlel, <<"PCODE">>, _attrs, _els}) -> - Cdata = decode_vcard_PCODE_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_PCODE_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_PCODE_cdata(__TopXMLNS, Cdata); -decode_vcard_PCODE_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_PCODE_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_PCODE_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_PCODE_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_PCODE(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_PCODE_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"PCODE">>, _attrs, _els}. - -decode_vcard_PCODE_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_PCODE_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_PCODE_cdata(<<>>, _acc) -> _acc; -encode_vcard_PCODE_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_REGION(__TopXMLNS, __IgnoreEls, - {xmlel, <<"REGION">>, _attrs, _els}) -> - Cdata = decode_vcard_REGION_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_REGION_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_REGION_cdata(__TopXMLNS, Cdata); -decode_vcard_REGION_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_REGION_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_REGION_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_REGION_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_REGION(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_REGION_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"REGION">>, _attrs, _els}. - -decode_vcard_REGION_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_REGION_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_REGION_cdata(<<>>, _acc) -> _acc; -encode_vcard_REGION_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_LOCALITY(__TopXMLNS, __IgnoreEls, - {xmlel, <<"LOCALITY">>, _attrs, _els}) -> - Cdata = decode_vcard_LOCALITY_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_vcard_LOCALITY_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_LOCALITY_cdata(__TopXMLNS, Cdata); -decode_vcard_LOCALITY_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_LOCALITY_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_LOCALITY_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_LOCALITY_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_LOCALITY(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_LOCALITY_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"LOCALITY">>, _attrs, _els}. - -decode_vcard_LOCALITY_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_LOCALITY_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_LOCALITY_cdata(<<>>, _acc) -> _acc; -encode_vcard_LOCALITY_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_STREET(__TopXMLNS, __IgnoreEls, - {xmlel, <<"STREET">>, _attrs, _els}) -> - Cdata = decode_vcard_STREET_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_STREET_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_STREET_cdata(__TopXMLNS, Cdata); -decode_vcard_STREET_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_STREET_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_STREET_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_STREET_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_STREET(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_STREET_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"STREET">>, _attrs, _els}. - -decode_vcard_STREET_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_STREET_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_STREET_cdata(<<>>, _acc) -> _acc; -encode_vcard_STREET_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_EXTADD(__TopXMLNS, __IgnoreEls, - {xmlel, <<"EXTADD">>, _attrs, _els}) -> - Cdata = decode_vcard_EXTADD_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_EXTADD_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_EXTADD_cdata(__TopXMLNS, Cdata); -decode_vcard_EXTADD_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_EXTADD_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_EXTADD_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_EXTADD_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_EXTADD(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_EXTADD_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"EXTADD">>, _attrs, _els}. - -decode_vcard_EXTADD_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_EXTADD_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_EXTADD_cdata(<<>>, _acc) -> _acc; -encode_vcard_EXTADD_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_POBOX(__TopXMLNS, __IgnoreEls, - {xmlel, <<"POBOX">>, _attrs, _els}) -> - Cdata = decode_vcard_POBOX_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_POBOX_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_POBOX_cdata(__TopXMLNS, Cdata); -decode_vcard_POBOX_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_POBOX_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_POBOX_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_POBOX_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_POBOX(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_POBOX_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"POBOX">>, _attrs, _els}. - -decode_vcard_POBOX_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_POBOX_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_POBOX_cdata(<<>>, _acc) -> _acc; -encode_vcard_POBOX_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_SUFFIX(__TopXMLNS, __IgnoreEls, - {xmlel, <<"SUFFIX">>, _attrs, _els}) -> - Cdata = decode_vcard_SUFFIX_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_SUFFIX_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_SUFFIX_cdata(__TopXMLNS, Cdata); -decode_vcard_SUFFIX_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_SUFFIX_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_SUFFIX_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_SUFFIX_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_SUFFIX(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_SUFFIX_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"SUFFIX">>, _attrs, _els}. - -decode_vcard_SUFFIX_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_SUFFIX_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_SUFFIX_cdata(<<>>, _acc) -> _acc; -encode_vcard_SUFFIX_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_PREFIX(__TopXMLNS, __IgnoreEls, - {xmlel, <<"PREFIX">>, _attrs, _els}) -> - Cdata = decode_vcard_PREFIX_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_PREFIX_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_PREFIX_cdata(__TopXMLNS, Cdata); -decode_vcard_PREFIX_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_PREFIX_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_PREFIX_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_PREFIX_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_PREFIX(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_PREFIX_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"PREFIX">>, _attrs, _els}. - -decode_vcard_PREFIX_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_PREFIX_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_PREFIX_cdata(<<>>, _acc) -> _acc; -encode_vcard_PREFIX_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_MIDDLE(__TopXMLNS, __IgnoreEls, - {xmlel, <<"MIDDLE">>, _attrs, _els}) -> - Cdata = decode_vcard_MIDDLE_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_MIDDLE_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_MIDDLE_cdata(__TopXMLNS, Cdata); -decode_vcard_MIDDLE_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_MIDDLE_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_MIDDLE_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_MIDDLE_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_MIDDLE(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_MIDDLE_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"MIDDLE">>, _attrs, _els}. - -decode_vcard_MIDDLE_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_MIDDLE_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_MIDDLE_cdata(<<>>, _acc) -> _acc; -encode_vcard_MIDDLE_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_GIVEN(__TopXMLNS, __IgnoreEls, - {xmlel, <<"GIVEN">>, _attrs, _els}) -> - Cdata = decode_vcard_GIVEN_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_GIVEN_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_GIVEN_cdata(__TopXMLNS, Cdata); -decode_vcard_GIVEN_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_GIVEN_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_GIVEN_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_GIVEN_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_GIVEN(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_GIVEN_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"GIVEN">>, _attrs, _els}. - -decode_vcard_GIVEN_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_GIVEN_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_GIVEN_cdata(<<>>, _acc) -> _acc; -encode_vcard_GIVEN_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_FAMILY(__TopXMLNS, __IgnoreEls, - {xmlel, <<"FAMILY">>, _attrs, _els}) -> - Cdata = decode_vcard_FAMILY_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_vcard_FAMILY_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_vcard_FAMILY_cdata(__TopXMLNS, Cdata); -decode_vcard_FAMILY_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_vcard_FAMILY_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_vcard_FAMILY_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_vcard_FAMILY_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_vcard_FAMILY(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = encode_vcard_FAMILY_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"FAMILY">>, _attrs, _els}. - -decode_vcard_FAMILY_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_vcard_FAMILY_cdata(__TopXMLNS, _val) -> _val. - -encode_vcard_FAMILY_cdata(<<>>, _acc) -> _acc; -encode_vcard_FAMILY_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_vcard_X400(__TopXMLNS, __IgnoreEls, - {xmlel, <<"X400">>, _attrs, _els}) -> - true. - -encode_vcard_X400(true, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"X400">>, _attrs, _els}. - -decode_vcard_INTERNET(__TopXMLNS, __IgnoreEls, - {xmlel, <<"INTERNET">>, _attrs, _els}) -> - true. - -encode_vcard_INTERNET(true, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"INTERNET">>, _attrs, _els}. - -decode_vcard_PREF(__TopXMLNS, __IgnoreEls, - {xmlel, <<"PREF">>, _attrs, _els}) -> - true. - -encode_vcard_PREF(true, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"PREF">>, _attrs, _els}. - -decode_vcard_INTL(__TopXMLNS, __IgnoreEls, - {xmlel, <<"INTL">>, _attrs, _els}) -> - true. - -encode_vcard_INTL(true, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"INTL">>, _attrs, _els}. - -decode_vcard_DOM(__TopXMLNS, __IgnoreEls, - {xmlel, <<"DOM">>, _attrs, _els}) -> - true. - -encode_vcard_DOM(true, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"DOM">>, _attrs, _els}. - -decode_vcard_PARCEL(__TopXMLNS, __IgnoreEls, - {xmlel, <<"PARCEL">>, _attrs, _els}) -> - true. - -encode_vcard_PARCEL(true, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"PARCEL">>, _attrs, _els}. - -decode_vcard_POSTAL(__TopXMLNS, __IgnoreEls, - {xmlel, <<"POSTAL">>, _attrs, _els}) -> - true. - -encode_vcard_POSTAL(true, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"POSTAL">>, _attrs, _els}. - -decode_vcard_PCS(__TopXMLNS, __IgnoreEls, - {xmlel, <<"PCS">>, _attrs, _els}) -> - true. - -encode_vcard_PCS(true, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"PCS">>, _attrs, _els}. - -decode_vcard_ISDN(__TopXMLNS, __IgnoreEls, - {xmlel, <<"ISDN">>, _attrs, _els}) -> - true. - -encode_vcard_ISDN(true, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"ISDN">>, _attrs, _els}. - -decode_vcard_MODEM(__TopXMLNS, __IgnoreEls, - {xmlel, <<"MODEM">>, _attrs, _els}) -> - true. - -encode_vcard_MODEM(true, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"MODEM">>, _attrs, _els}. - -decode_vcard_BBS(__TopXMLNS, __IgnoreEls, - {xmlel, <<"BBS">>, _attrs, _els}) -> - true. - -encode_vcard_BBS(true, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"BBS">>, _attrs, _els}. - -decode_vcard_VIDEO(__TopXMLNS, __IgnoreEls, - {xmlel, <<"VIDEO">>, _attrs, _els}) -> - true. - -encode_vcard_VIDEO(true, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"VIDEO">>, _attrs, _els}. - -decode_vcard_CELL(__TopXMLNS, __IgnoreEls, - {xmlel, <<"CELL">>, _attrs, _els}) -> - true. - -encode_vcard_CELL(true, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"CELL">>, _attrs, _els}. - -decode_vcard_MSG(__TopXMLNS, __IgnoreEls, - {xmlel, <<"MSG">>, _attrs, _els}) -> - true. - -encode_vcard_MSG(true, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"MSG">>, _attrs, _els}. - -decode_vcard_PAGER(__TopXMLNS, __IgnoreEls, - {xmlel, <<"PAGER">>, _attrs, _els}) -> - true. - -encode_vcard_PAGER(true, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"PAGER">>, _attrs, _els}. - -decode_vcard_FAX(__TopXMLNS, __IgnoreEls, - {xmlel, <<"FAX">>, _attrs, _els}) -> - true. - -encode_vcard_FAX(true, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"FAX">>, _attrs, _els}. - -decode_vcard_VOICE(__TopXMLNS, __IgnoreEls, - {xmlel, <<"VOICE">>, _attrs, _els}) -> - true. - -encode_vcard_VOICE(true, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"VOICE">>, _attrs, _els}. - -decode_vcard_WORK(__TopXMLNS, __IgnoreEls, - {xmlel, <<"WORK">>, _attrs, _els}) -> - true. - -encode_vcard_WORK(true, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"WORK">>, _attrs, _els}. - -decode_vcard_HOME(__TopXMLNS, __IgnoreEls, - {xmlel, <<"HOME">>, _attrs, _els}) -> - true. - -encode_vcard_HOME(true, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"vcard-temp">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"HOME">>, _attrs, _els}. - -decode_stream_error(__TopXMLNS, __IgnoreEls, - {xmlel, <<"stream:error">>, _attrs, _els}) -> - {Text, Reason} = decode_stream_error_els(__TopXMLNS, - __IgnoreEls, _els, undefined, - undefined), - {stream_error, Reason, Text}. - -decode_stream_error_els(__TopXMLNS, __IgnoreEls, [], - Text, Reason) -> - {Text, Reason}; -decode_stream_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"text">>, _attrs, _} = _el | _els], Text, - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-streams">> -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - decode_stream_error_text(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - __IgnoreEls, _el), - Reason); - _ -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_stream_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"bad-format">>, _attrs, _} = _el | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-streams">> -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_stream_error_bad_format(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - __IgnoreEls, - _el)); - _ -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_stream_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"bad-namespace-prefix">>, _attrs, _} = _el - | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-streams">> -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_stream_error_bad_namespace_prefix(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - __IgnoreEls, - _el)); - _ -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_stream_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"conflict">>, _attrs, _} = _el | _els], Text, - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-streams">> -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_stream_error_conflict(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - __IgnoreEls, - _el)); - _ -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_stream_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"connection-timeout">>, _attrs, _} = _el - | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-streams">> -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_stream_error_connection_timeout(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - __IgnoreEls, - _el)); - _ -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_stream_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"host-gone">>, _attrs, _} = _el | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-streams">> -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_stream_error_host_gone(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - __IgnoreEls, - _el)); - _ -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_stream_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"host-unknown">>, _attrs, _} = _el | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-streams">> -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_stream_error_host_unknown(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - __IgnoreEls, - _el)); - _ -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_stream_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"improper-addressing">>, _attrs, _} = _el - | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-streams">> -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_stream_error_improper_addressing(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - __IgnoreEls, - _el)); - _ -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_stream_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"internal-server-error">>, _attrs, _} = _el - | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-streams">> -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_stream_error_internal_server_error(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - __IgnoreEls, - _el)); - _ -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_stream_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"invalid-from">>, _attrs, _} = _el | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-streams">> -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_stream_error_invalid_from(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - __IgnoreEls, - _el)); - _ -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_stream_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"invalid-id">>, _attrs, _} = _el | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-streams">> -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_stream_error_invalid_id(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - __IgnoreEls, - _el)); - _ -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_stream_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"invalid-namespace">>, _attrs, _} = _el - | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-streams">> -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_stream_error_invalid_namespace(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - __IgnoreEls, - _el)); - _ -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_stream_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"invalid-xml">>, _attrs, _} = _el | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-streams">> -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_stream_error_invalid_xml(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - __IgnoreEls, - _el)); - _ -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_stream_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"not-authorized">>, _attrs, _} = _el | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-streams">> -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_stream_error_not_authorized(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - __IgnoreEls, - _el)); - _ -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_stream_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"not-well-formed">>, _attrs, _} = _el - | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-streams">> -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_stream_error_not_well_formed(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - __IgnoreEls, - _el)); - _ -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_stream_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"policy-violation">>, _attrs, _} = _el - | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-streams">> -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_stream_error_policy_violation(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - __IgnoreEls, - _el)); - _ -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_stream_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"remote-connection-failed">>, _attrs, _} = - _el - | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-streams">> -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_stream_error_remote_connection_failed(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - __IgnoreEls, - _el)); - _ -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_stream_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"reset">>, _attrs, _} = _el | _els], Text, - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-streams">> -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_stream_error_reset(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - __IgnoreEls, _el)); - _ -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_stream_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"resource-constraint">>, _attrs, _} = _el - | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-streams">> -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_stream_error_resource_constraint(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - __IgnoreEls, - _el)); - _ -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_stream_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"restricted-xml">>, _attrs, _} = _el | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-streams">> -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_stream_error_restricted_xml(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - __IgnoreEls, - _el)); - _ -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_stream_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"see-other-host">>, _attrs, _} = _el | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-streams">> -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_stream_error_see_other_host(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - __IgnoreEls, - _el)); - _ -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_stream_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"system-shutdown">>, _attrs, _} = _el - | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-streams">> -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_stream_error_system_shutdown(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - __IgnoreEls, - _el)); - _ -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_stream_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"undefined-condition">>, _attrs, _} = _el - | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-streams">> -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_stream_error_undefined_condition(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - __IgnoreEls, - _el)); - _ -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_stream_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"unsupported-encoding">>, _attrs, _} = _el - | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-streams">> -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_stream_error_unsupported_encoding(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - __IgnoreEls, - _el)); - _ -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_stream_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"unsupported-stanza-type">>, _attrs, _} = _el - | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-streams">> -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_stream_error_unsupported_stanza_type(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - __IgnoreEls, - _el)); - _ -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_stream_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"unsupported-version">>, _attrs, _} = _el - | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-streams">> -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_stream_error_unsupported_version(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - __IgnoreEls, - _el)); - _ -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_stream_error_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Text, Reason) -> - decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason). - -encode_stream_error({stream_error, Reason, Text}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"jabber:client">>, <<"jabber:server">>, - <<"jabber:component:accept">>], - __TopXMLNS), - _els = lists:reverse('encode_stream_error_$text'(Text, - __NewTopXMLNS, - 'encode_stream_error_$reason'(Reason, - __NewTopXMLNS, - []))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"stream:error">>, _attrs, _els}. - -'encode_stream_error_$text'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_stream_error_$text'(Text, __TopXMLNS, _acc) -> - [encode_stream_error_text(Text, __TopXMLNS) | _acc]. - -'encode_stream_error_$reason'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_stream_error_$reason'('bad-format' = Reason, - __TopXMLNS, _acc) -> - [encode_stream_error_bad_format(Reason, __TopXMLNS) - | _acc]; -'encode_stream_error_$reason'('bad-namespace-prefix' = - Reason, - __TopXMLNS, _acc) -> - [encode_stream_error_bad_namespace_prefix(Reason, - __TopXMLNS) - | _acc]; -'encode_stream_error_$reason'(conflict = Reason, - __TopXMLNS, _acc) -> - [encode_stream_error_conflict(Reason, __TopXMLNS) - | _acc]; -'encode_stream_error_$reason'('connection-timeout' = - Reason, - __TopXMLNS, _acc) -> - [encode_stream_error_connection_timeout(Reason, - __TopXMLNS) - | _acc]; -'encode_stream_error_$reason'('host-gone' = Reason, - __TopXMLNS, _acc) -> - [encode_stream_error_host_gone(Reason, __TopXMLNS) - | _acc]; -'encode_stream_error_$reason'('host-unknown' = Reason, - __TopXMLNS, _acc) -> - [encode_stream_error_host_unknown(Reason, __TopXMLNS) - | _acc]; -'encode_stream_error_$reason'('improper-addressing' = - Reason, - __TopXMLNS, _acc) -> - [encode_stream_error_improper_addressing(Reason, - __TopXMLNS) - | _acc]; -'encode_stream_error_$reason'('internal-server-error' = - Reason, - __TopXMLNS, _acc) -> - [encode_stream_error_internal_server_error(Reason, - __TopXMLNS) - | _acc]; -'encode_stream_error_$reason'('invalid-from' = Reason, - __TopXMLNS, _acc) -> - [encode_stream_error_invalid_from(Reason, __TopXMLNS) - | _acc]; -'encode_stream_error_$reason'('invalid-id' = Reason, - __TopXMLNS, _acc) -> - [encode_stream_error_invalid_id(Reason, __TopXMLNS) - | _acc]; -'encode_stream_error_$reason'('invalid-namespace' = - Reason, - __TopXMLNS, _acc) -> - [encode_stream_error_invalid_namespace(Reason, - __TopXMLNS) - | _acc]; -'encode_stream_error_$reason'('invalid-xml' = Reason, - __TopXMLNS, _acc) -> - [encode_stream_error_invalid_xml(Reason, __TopXMLNS) - | _acc]; -'encode_stream_error_$reason'('not-authorized' = Reason, - __TopXMLNS, _acc) -> - [encode_stream_error_not_authorized(Reason, __TopXMLNS) - | _acc]; -'encode_stream_error_$reason'('not-well-formed' = - Reason, - __TopXMLNS, _acc) -> - [encode_stream_error_not_well_formed(Reason, __TopXMLNS) - | _acc]; -'encode_stream_error_$reason'('policy-violation' = - Reason, - __TopXMLNS, _acc) -> - [encode_stream_error_policy_violation(Reason, - __TopXMLNS) - | _acc]; -'encode_stream_error_$reason'('remote-connection-failed' = - Reason, - __TopXMLNS, _acc) -> - [encode_stream_error_remote_connection_failed(Reason, - __TopXMLNS) - | _acc]; -'encode_stream_error_$reason'(reset = Reason, - __TopXMLNS, _acc) -> - [encode_stream_error_reset(Reason, __TopXMLNS) | _acc]; -'encode_stream_error_$reason'('resource-constraint' = - Reason, - __TopXMLNS, _acc) -> - [encode_stream_error_resource_constraint(Reason, - __TopXMLNS) - | _acc]; -'encode_stream_error_$reason'('restricted-xml' = Reason, - __TopXMLNS, _acc) -> - [encode_stream_error_restricted_xml(Reason, __TopXMLNS) - | _acc]; -'encode_stream_error_$reason'({'see-other-host', _} = - Reason, - __TopXMLNS, _acc) -> - [encode_stream_error_see_other_host(Reason, __TopXMLNS) - | _acc]; -'encode_stream_error_$reason'('system-shutdown' = - Reason, - __TopXMLNS, _acc) -> - [encode_stream_error_system_shutdown(Reason, __TopXMLNS) - | _acc]; -'encode_stream_error_$reason'('undefined-condition' = - Reason, - __TopXMLNS, _acc) -> - [encode_stream_error_undefined_condition(Reason, - __TopXMLNS) - | _acc]; -'encode_stream_error_$reason'('unsupported-encoding' = - Reason, - __TopXMLNS, _acc) -> - [encode_stream_error_unsupported_encoding(Reason, - __TopXMLNS) - | _acc]; -'encode_stream_error_$reason'('unsupported-stanza-type' = - Reason, - __TopXMLNS, _acc) -> - [encode_stream_error_unsupported_stanza_type(Reason, - __TopXMLNS) - | _acc]; -'encode_stream_error_$reason'('unsupported-version' = - Reason, - __TopXMLNS, _acc) -> - [encode_stream_error_unsupported_version(Reason, - __TopXMLNS) - | _acc]. - -decode_stream_error_unsupported_version(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"unsupported-version">>, - _attrs, _els}) -> - 'unsupported-version'. - -encode_stream_error_unsupported_version('unsupported-version', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"unsupported-version">>, _attrs, _els}. - -decode_stream_error_unsupported_stanza_type(__TopXMLNS, - __IgnoreEls, - {xmlel, - <<"unsupported-stanza-type">>, - _attrs, _els}) -> - 'unsupported-stanza-type'. - -encode_stream_error_unsupported_stanza_type('unsupported-stanza-type', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"unsupported-stanza-type">>, _attrs, _els}. - -decode_stream_error_unsupported_encoding(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"unsupported-encoding">>, - _attrs, _els}) -> - 'unsupported-encoding'. - -encode_stream_error_unsupported_encoding('unsupported-encoding', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"unsupported-encoding">>, _attrs, _els}. - -decode_stream_error_undefined_condition(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"undefined-condition">>, - _attrs, _els}) -> - 'undefined-condition'. - -encode_stream_error_undefined_condition('undefined-condition', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"undefined-condition">>, _attrs, _els}. - -decode_stream_error_system_shutdown(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"system-shutdown">>, _attrs, - _els}) -> - 'system-shutdown'. - -encode_stream_error_system_shutdown('system-shutdown', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"system-shutdown">>, _attrs, _els}. - -decode_stream_error_see_other_host(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"see-other-host">>, _attrs, - _els}) -> - Host = - decode_stream_error_see_other_host_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - {'see-other-host', Host}. - -decode_stream_error_see_other_host_els(__TopXMLNS, - __IgnoreEls, [], Host) -> - decode_stream_error_see_other_host_cdata(__TopXMLNS, - Host); -decode_stream_error_see_other_host_els(__TopXMLNS, - __IgnoreEls, [{xmlcdata, _data} | _els], - Host) -> - decode_stream_error_see_other_host_els(__TopXMLNS, - __IgnoreEls, _els, - <>); -decode_stream_error_see_other_host_els(__TopXMLNS, - __IgnoreEls, [_ | _els], Host) -> - decode_stream_error_see_other_host_els(__TopXMLNS, - __IgnoreEls, _els, Host). - -encode_stream_error_see_other_host({'see-other-host', - Host}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - [], __TopXMLNS), - _els = encode_stream_error_see_other_host_cdata(Host, - []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"see-other-host">>, _attrs, _els}. - -decode_stream_error_see_other_host_cdata(__TopXMLNS, - <<>>) -> - erlang:error({xmpp_codec, - {missing_cdata, <<>>, <<"see-other-host">>, - __TopXMLNS}}); -decode_stream_error_see_other_host_cdata(__TopXMLNS, - _val) -> - case catch dec_host_port(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_cdata_value, <<>>, <<"see-other-host">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_stream_error_see_other_host_cdata(_val, _acc) -> - [{xmlcdata, enc_host_port(_val)} | _acc]. - -decode_stream_error_restricted_xml(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"restricted-xml">>, _attrs, - _els}) -> - 'restricted-xml'. - -encode_stream_error_restricted_xml('restricted-xml', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"restricted-xml">>, _attrs, _els}. - -decode_stream_error_resource_constraint(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"resource-constraint">>, - _attrs, _els}) -> - 'resource-constraint'. - -encode_stream_error_resource_constraint('resource-constraint', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"resource-constraint">>, _attrs, _els}. - -decode_stream_error_reset(__TopXMLNS, __IgnoreEls, - {xmlel, <<"reset">>, _attrs, _els}) -> - reset. - -encode_stream_error_reset(reset, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"reset">>, _attrs, _els}. - -decode_stream_error_remote_connection_failed(__TopXMLNS, - __IgnoreEls, - {xmlel, - <<"remote-connection-failed">>, - _attrs, _els}) -> - 'remote-connection-failed'. - -encode_stream_error_remote_connection_failed('remote-connection-failed', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"remote-connection-failed">>, _attrs, _els}. - -decode_stream_error_policy_violation(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"policy-violation">>, _attrs, - _els}) -> - 'policy-violation'. - -encode_stream_error_policy_violation('policy-violation', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"policy-violation">>, _attrs, _els}. - -decode_stream_error_not_well_formed(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"not-well-formed">>, _attrs, - _els}) -> - 'not-well-formed'. - -encode_stream_error_not_well_formed('not-well-formed', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"not-well-formed">>, _attrs, _els}. - -decode_stream_error_not_authorized(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"not-authorized">>, _attrs, - _els}) -> - 'not-authorized'. - -encode_stream_error_not_authorized('not-authorized', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"not-authorized">>, _attrs, _els}. - -decode_stream_error_invalid_xml(__TopXMLNS, __IgnoreEls, - {xmlel, <<"invalid-xml">>, _attrs, _els}) -> - 'invalid-xml'. - -encode_stream_error_invalid_xml('invalid-xml', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"invalid-xml">>, _attrs, _els}. - -decode_stream_error_invalid_namespace(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"invalid-namespace">>, _attrs, - _els}) -> - 'invalid-namespace'. - -encode_stream_error_invalid_namespace('invalid-namespace', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"invalid-namespace">>, _attrs, _els}. - -decode_stream_error_invalid_id(__TopXMLNS, __IgnoreEls, - {xmlel, <<"invalid-id">>, _attrs, _els}) -> - 'invalid-id'. - -encode_stream_error_invalid_id('invalid-id', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"invalid-id">>, _attrs, _els}. - -decode_stream_error_invalid_from(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"invalid-from">>, _attrs, _els}) -> - 'invalid-from'. - -encode_stream_error_invalid_from('invalid-from', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"invalid-from">>, _attrs, _els}. - -decode_stream_error_internal_server_error(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"internal-server-error">>, - _attrs, _els}) -> - 'internal-server-error'. - -encode_stream_error_internal_server_error('internal-server-error', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"internal-server-error">>, _attrs, _els}. - -decode_stream_error_improper_addressing(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"improper-addressing">>, - _attrs, _els}) -> - 'improper-addressing'. - -encode_stream_error_improper_addressing('improper-addressing', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"improper-addressing">>, _attrs, _els}. - -decode_stream_error_host_unknown(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"host-unknown">>, _attrs, _els}) -> - 'host-unknown'. - -encode_stream_error_host_unknown('host-unknown', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"host-unknown">>, _attrs, _els}. - -decode_stream_error_host_gone(__TopXMLNS, __IgnoreEls, - {xmlel, <<"host-gone">>, _attrs, _els}) -> - 'host-gone'. - -encode_stream_error_host_gone('host-gone', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"host-gone">>, _attrs, _els}. - -decode_stream_error_connection_timeout(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"connection-timeout">>, _attrs, - _els}) -> - 'connection-timeout'. - -encode_stream_error_connection_timeout('connection-timeout', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"connection-timeout">>, _attrs, _els}. - -decode_stream_error_conflict(__TopXMLNS, __IgnoreEls, - {xmlel, <<"conflict">>, _attrs, _els}) -> - conflict. - -encode_stream_error_conflict(conflict, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"conflict">>, _attrs, _els}. - -decode_stream_error_bad_namespace_prefix(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"bad-namespace-prefix">>, - _attrs, _els}) -> - 'bad-namespace-prefix'. - -encode_stream_error_bad_namespace_prefix('bad-namespace-prefix', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"bad-namespace-prefix">>, _attrs, _els}. - -decode_stream_error_bad_format(__TopXMLNS, __IgnoreEls, - {xmlel, <<"bad-format">>, _attrs, _els}) -> - 'bad-format'. - -encode_stream_error_bad_format('bad-format', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"bad-format">>, _attrs, _els}. - -decode_stream_error_text(__TopXMLNS, __IgnoreEls, - {xmlel, <<"text">>, _attrs, _els}) -> - Data = decode_stream_error_text_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Lang = decode_stream_error_text_attrs(__TopXMLNS, - _attrs, undefined), - {text, Lang, Data}. - -decode_stream_error_text_els(__TopXMLNS, __IgnoreEls, - [], Data) -> - decode_stream_error_text_cdata(__TopXMLNS, Data); -decode_stream_error_text_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Data) -> - decode_stream_error_text_els(__TopXMLNS, __IgnoreEls, - _els, <>); -decode_stream_error_text_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Data) -> - decode_stream_error_text_els(__TopXMLNS, __IgnoreEls, - _els, Data). - -decode_stream_error_text_attrs(__TopXMLNS, - [{<<"xml:lang">>, _val} | _attrs], _Lang) -> - decode_stream_error_text_attrs(__TopXMLNS, _attrs, - _val); -decode_stream_error_text_attrs(__TopXMLNS, [_ | _attrs], - Lang) -> - decode_stream_error_text_attrs(__TopXMLNS, _attrs, - Lang); -decode_stream_error_text_attrs(__TopXMLNS, [], Lang) -> - 'decode_stream_error_text_attr_xml:lang'(__TopXMLNS, - Lang). - -encode_stream_error_text({text, Lang, Data}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-streams">>, - [], __TopXMLNS), - _els = encode_stream_error_text_cdata(Data, []), - _attrs = 'encode_stream_error_text_attr_xml:lang'(Lang, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"text">>, _attrs, _els}. - -'decode_stream_error_text_attr_xml:lang'(__TopXMLNS, - undefined) -> - <<>>; -'decode_stream_error_text_attr_xml:lang'(__TopXMLNS, - _val) -> - _val. - -'encode_stream_error_text_attr_xml:lang'(<<>>, _acc) -> - _acc; -'encode_stream_error_text_attr_xml:lang'(_val, _acc) -> - [{<<"xml:lang">>, _val} | _acc]. - -decode_stream_error_text_cdata(__TopXMLNS, <<>>) -> - <<>>; -decode_stream_error_text_cdata(__TopXMLNS, _val) -> - _val. - -encode_stream_error_text_cdata(<<>>, _acc) -> _acc; -encode_stream_error_text_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_time(__TopXMLNS, __IgnoreEls, - {xmlel, <<"time">>, _attrs, _els}) -> - {Utc, Tzo} = decode_time_els(__TopXMLNS, __IgnoreEls, - _els, undefined, undefined), - {time, Tzo, Utc}. - -decode_time_els(__TopXMLNS, __IgnoreEls, [], Utc, - Tzo) -> - {Utc, Tzo}; -decode_time_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"tzo">>, _attrs, _} = _el | _els], Utc, - Tzo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"urn:xmpp:time">> -> - decode_time_els(__TopXMLNS, __IgnoreEls, _els, Utc, - decode_time_tzo(__TopXMLNS, __IgnoreEls, _el)); - <<"urn:xmpp:time">> -> - decode_time_els(__TopXMLNS, __IgnoreEls, _els, Utc, - decode_time_tzo(<<"urn:xmpp:time">>, __IgnoreEls, - _el)); - _ -> - decode_time_els(__TopXMLNS, __IgnoreEls, _els, Utc, Tzo) - end; -decode_time_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"utc">>, _attrs, _} = _el | _els], Utc, - Tzo) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"urn:xmpp:time">> -> - decode_time_els(__TopXMLNS, __IgnoreEls, _els, - decode_time_utc(__TopXMLNS, __IgnoreEls, _el), Tzo); - <<"urn:xmpp:time">> -> - decode_time_els(__TopXMLNS, __IgnoreEls, _els, - decode_time_utc(<<"urn:xmpp:time">>, __IgnoreEls, - _el), - Tzo); - _ -> - decode_time_els(__TopXMLNS, __IgnoreEls, _els, Utc, Tzo) - end; -decode_time_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Utc, Tzo) -> - decode_time_els(__TopXMLNS, __IgnoreEls, _els, Utc, - Tzo). - -encode_time({time, Tzo, Utc}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"urn:xmpp:time">>, - [], __TopXMLNS), - _els = lists:reverse('encode_time_$utc'(Utc, - __NewTopXMLNS, - 'encode_time_$tzo'(Tzo, - __NewTopXMLNS, - []))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"time">>, _attrs, _els}. - -'encode_time_$utc'(undefined, __TopXMLNS, _acc) -> _acc; -'encode_time_$utc'(Utc, __TopXMLNS, _acc) -> - [encode_time_utc(Utc, __TopXMLNS) | _acc]. - -'encode_time_$tzo'(undefined, __TopXMLNS, _acc) -> _acc; -'encode_time_$tzo'(Tzo, __TopXMLNS, _acc) -> - [encode_time_tzo(Tzo, __TopXMLNS) | _acc]. - -decode_time_tzo(__TopXMLNS, __IgnoreEls, - {xmlel, <<"tzo">>, _attrs, _els}) -> - Cdata = decode_time_tzo_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_time_tzo_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_time_tzo_cdata(__TopXMLNS, Cdata); -decode_time_tzo_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_time_tzo_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_time_tzo_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Cdata) -> - decode_time_tzo_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_time_tzo(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"urn:xmpp:time">>, - [], __TopXMLNS), - _els = encode_time_tzo_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"tzo">>, _attrs, _els}. - -decode_time_tzo_cdata(__TopXMLNS, <<>>) -> undefined; -decode_time_tzo_cdata(__TopXMLNS, _val) -> - case catch dec_tzo(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_cdata_value, <<>>, <<"tzo">>, __TopXMLNS}}); - _res -> _res - end. - -encode_time_tzo_cdata(undefined, _acc) -> _acc; -encode_time_tzo_cdata(_val, _acc) -> - [{xmlcdata, enc_tzo(_val)} | _acc]. - -decode_time_utc(__TopXMLNS, __IgnoreEls, - {xmlel, <<"utc">>, _attrs, _els}) -> - Cdata = decode_time_utc_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_time_utc_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_time_utc_cdata(__TopXMLNS, Cdata); -decode_time_utc_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_time_utc_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_time_utc_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Cdata) -> - decode_time_utc_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_time_utc(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"urn:xmpp:time">>, - [], __TopXMLNS), - _els = encode_time_utc_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"utc">>, _attrs, _els}. - -decode_time_utc_cdata(__TopXMLNS, <<>>) -> undefined; -decode_time_utc_cdata(__TopXMLNS, _val) -> - case catch dec_utc(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_cdata_value, <<>>, <<"utc">>, __TopXMLNS}}); - _res -> _res - end. - -encode_time_utc_cdata(undefined, _acc) -> _acc; -encode_time_utc_cdata(_val, _acc) -> - [{xmlcdata, enc_utc(_val)} | _acc]. - -decode_ping(__TopXMLNS, __IgnoreEls, - {xmlel, <<"ping">>, _attrs, _els}) -> - {ping}. - -encode_ping({ping}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"urn:xmpp:ping">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"ping">>, _attrs, _els}. - -decode_session(__TopXMLNS, __IgnoreEls, - {xmlel, <<"session">>, _attrs, _els}) -> - Optional = decode_session_els(__TopXMLNS, __IgnoreEls, - _els, false), - {xmpp_session, Optional}. - -decode_session_els(__TopXMLNS, __IgnoreEls, [], - Optional) -> - Optional; -decode_session_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"optional">>, _attrs, _} = _el | _els], - Optional) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"urn:ietf:params:xml:ns:xmpp-session">> -> - decode_session_els(__TopXMLNS, __IgnoreEls, _els, - decode_session_optional(__TopXMLNS, __IgnoreEls, - _el)); - <<"urn:ietf:params:xml:ns:xmpp-session">> -> - decode_session_els(__TopXMLNS, __IgnoreEls, _els, - decode_session_optional(<<"urn:ietf:params:xml:ns:xmpp-session">>, - __IgnoreEls, _el)); - _ -> - decode_session_els(__TopXMLNS, __IgnoreEls, _els, - Optional) - end; -decode_session_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Optional) -> - decode_session_els(__TopXMLNS, __IgnoreEls, _els, - Optional). - -encode_session({xmpp_session, Optional}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-session">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_session_$optional'(Optional, - __NewTopXMLNS, [])), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"session">>, _attrs, _els}. - -'encode_session_$optional'(false, __TopXMLNS, _acc) -> - _acc; -'encode_session_$optional'(Optional, __TopXMLNS, - _acc) -> - [encode_session_optional(Optional, __TopXMLNS) | _acc]. - -decode_session_optional(__TopXMLNS, __IgnoreEls, - {xmlel, <<"optional">>, _attrs, _els}) -> - true. - -encode_session_optional(true, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-session">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"optional">>, _attrs, _els}. - -decode_register(__TopXMLNS, __IgnoreEls, - {xmlel, <<"query">>, _attrs, _els}) -> - {Zip, Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, __Els} = - decode_register_els(__TopXMLNS, __IgnoreEls, _els, - undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, - undefined, false, undefined, undefined, undefined, - undefined, undefined, false, undefined, undefined, - undefined, undefined, undefined, []), - {register, Registered, Remove, Instructions, Username, - Nick, Password, Name, First, Last, Email, Address, City, - State, Zip, Phone, Url, Date, Misc, Text, Key, Xdata, - __Els}. - -decode_register_els(__TopXMLNS, __IgnoreEls, [], Zip, - Xdata, Misc, Address, Instructions, Text, Last, First, - Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, __Els) -> - {Zip, Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, - lists:reverse(__Els)}; -decode_register_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"x">>, _attrs, _} = _el | _els], Zip, Xdata, - Misc, Address, Instructions, Text, Last, First, - Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"jabber:x:data">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - decode_xdata(<<"jabber:x:data">>, __IgnoreEls, - _el), - Misc, Address, Instructions, Text, Last, First, - Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, - __Els); - _ -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - Email, __Els) - end; -decode_register_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"registered">>, _attrs, _} = _el | _els], - Zip, Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, - decode_register_registered(__TopXMLNS, - __IgnoreEls, _el), - Date, Phone, State, Name, Username, Remove, Key, - City, Nick, Url, Email, __Els); - <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, - decode_register_registered(<<"jabber:iq:register">>, - __IgnoreEls, _el), - Date, Phone, State, Name, Username, Remove, Key, - City, Nick, Url, Email, __Els); - _ -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - Email, __Els) - end; -decode_register_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"remove">>, _attrs, _} = _el | _els], Zip, - Xdata, Misc, Address, Instructions, Text, Last, First, - Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, - decode_register_remove(__TopXMLNS, __IgnoreEls, - _el), - Key, City, Nick, Url, Email, __Els); - <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, - decode_register_remove(<<"jabber:iq:register">>, - __IgnoreEls, _el), - Key, City, Nick, Url, Email, __Els); - _ -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - Email, __Els) - end; -decode_register_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"instructions">>, _attrs, _} = _el | _els], - Zip, Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, - decode_register_instructions(__TopXMLNS, - __IgnoreEls, _el), - Text, Last, First, Password, Registered, Date, - Phone, State, Name, Username, Remove, Key, City, - Nick, Url, Email, __Els); - <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, - decode_register_instructions(<<"jabber:iq:register">>, - __IgnoreEls, _el), - Text, Last, First, Password, Registered, Date, - Phone, State, Name, Username, Remove, Key, City, - Nick, Url, Email, __Els); - _ -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - Email, __Els) - end; -decode_register_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"username">>, _attrs, _} = _el | _els], Zip, - Xdata, Misc, Address, Instructions, Text, Last, First, - Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, - decode_register_username(__TopXMLNS, __IgnoreEls, - _el), - Remove, Key, City, Nick, Url, Email, __Els); - <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, - decode_register_username(<<"jabber:iq:register">>, - __IgnoreEls, _el), - Remove, Key, City, Nick, Url, Email, __Els); - _ -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - Email, __Els) - end; -decode_register_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"nick">>, _attrs, _} = _el | _els], Zip, - Xdata, Misc, Address, Instructions, Text, Last, First, - Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, - decode_register_nick(__TopXMLNS, __IgnoreEls, - _el), - Url, Email, __Els); - <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, - decode_register_nick(<<"jabber:iq:register">>, - __IgnoreEls, _el), - Url, Email, __Els); - _ -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - Email, __Els) - end; -decode_register_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"password">>, _attrs, _} = _el | _els], Zip, - Xdata, Misc, Address, Instructions, Text, Last, First, - Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, - decode_register_password(__TopXMLNS, __IgnoreEls, - _el), - Registered, Date, Phone, State, Name, Username, - Remove, Key, City, Nick, Url, Email, __Els); - <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, - decode_register_password(<<"jabber:iq:register">>, - __IgnoreEls, _el), - Registered, Date, Phone, State, Name, Username, - Remove, Key, City, Nick, Url, Email, __Els); - _ -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - Email, __Els) - end; -decode_register_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"name">>, _attrs, _} = _el | _els], Zip, - Xdata, Misc, Address, Instructions, Text, Last, First, - Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - decode_register_name(__TopXMLNS, __IgnoreEls, - _el), - Username, Remove, Key, City, Nick, Url, Email, - __Els); - <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - decode_register_name(<<"jabber:iq:register">>, - __IgnoreEls, _el), - Username, Remove, Key, City, Nick, Url, Email, - __Els); - _ -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - Email, __Els) - end; -decode_register_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"first">>, _attrs, _} = _el | _els], Zip, - Xdata, Misc, Address, Instructions, Text, Last, First, - Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - decode_register_first(__TopXMLNS, __IgnoreEls, - _el), - Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, - __Els); - <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - decode_register_first(<<"jabber:iq:register">>, - __IgnoreEls, _el), - Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, - __Els); - _ -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - Email, __Els) - end; -decode_register_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"last">>, _attrs, _} = _el | _els], Zip, - Xdata, Misc, Address, Instructions, Text, Last, First, - Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, - decode_register_last(__TopXMLNS, __IgnoreEls, - _el), - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - Email, __Els); - <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, - decode_register_last(<<"jabber:iq:register">>, - __IgnoreEls, _el), - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - Email, __Els); - _ -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - Email, __Els) - end; -decode_register_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"email">>, _attrs, _} = _el | _els], Zip, - Xdata, Misc, Address, Instructions, Text, Last, First, - Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - decode_register_email(__TopXMLNS, __IgnoreEls, - _el), - __Els); - <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - decode_register_email(<<"jabber:iq:register">>, - __IgnoreEls, _el), - __Els); - _ -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - Email, __Els) - end; -decode_register_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"address">>, _attrs, _} = _el | _els], Zip, - Xdata, Misc, Address, Instructions, Text, Last, First, - Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, - decode_register_address(__TopXMLNS, __IgnoreEls, - _el), - Instructions, Text, Last, First, Password, - Registered, Date, Phone, State, Name, Username, - Remove, Key, City, Nick, Url, Email, __Els); - <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, - decode_register_address(<<"jabber:iq:register">>, - __IgnoreEls, _el), - Instructions, Text, Last, First, Password, - Registered, Date, Phone, State, Name, Username, - Remove, Key, City, Nick, Url, Email, __Els); - _ -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - Email, __Els) - end; -decode_register_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"city">>, _attrs, _} = _el | _els], Zip, - Xdata, Misc, Address, Instructions, Text, Last, First, - Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, - decode_register_city(__TopXMLNS, __IgnoreEls, - _el), - Nick, Url, Email, __Els); - <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, - decode_register_city(<<"jabber:iq:register">>, - __IgnoreEls, _el), - Nick, Url, Email, __Els); - _ -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - Email, __Els) - end; -decode_register_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"state">>, _attrs, _} = _el | _els], Zip, - Xdata, Misc, Address, Instructions, Text, Last, First, - Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, - decode_register_state(__TopXMLNS, __IgnoreEls, - _el), - Name, Username, Remove, Key, City, Nick, Url, - Email, __Els); - <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, - decode_register_state(<<"jabber:iq:register">>, - __IgnoreEls, _el), - Name, Username, Remove, Key, City, Nick, Url, - Email, __Els); - _ -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - Email, __Els) - end; -decode_register_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"zip">>, _attrs, _} = _el | _els], Zip, - Xdata, Misc, Address, Instructions, Text, Last, First, - Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, - decode_register_zip(__TopXMLNS, __IgnoreEls, _el), - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - Email, __Els); - <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, - decode_register_zip(<<"jabber:iq:register">>, - __IgnoreEls, _el), - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - Email, __Els); - _ -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - Email, __Els) - end; -decode_register_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"phone">>, _attrs, _} = _el | _els], Zip, - Xdata, Misc, Address, Instructions, Text, Last, First, - Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, - decode_register_phone(__TopXMLNS, __IgnoreEls, - _el), - State, Name, Username, Remove, Key, City, Nick, - Url, Email, __Els); - <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, - decode_register_phone(<<"jabber:iq:register">>, - __IgnoreEls, _el), - State, Name, Username, Remove, Key, City, Nick, - Url, Email, __Els); - _ -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - Email, __Els) - end; -decode_register_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"url">>, _attrs, _} = _el | _els], Zip, - Xdata, Misc, Address, Instructions, Text, Last, First, - Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, - decode_register_url(__TopXMLNS, __IgnoreEls, _el), - Email, __Els); - <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, - decode_register_url(<<"jabber:iq:register">>, - __IgnoreEls, _el), - Email, __Els); - _ -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - Email, __Els) - end; -decode_register_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"date">>, _attrs, _} = _el | _els], Zip, - Xdata, Misc, Address, Instructions, Text, Last, First, - Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, - decode_register_date(__TopXMLNS, __IgnoreEls, - _el), - Phone, State, Name, Username, Remove, Key, City, - Nick, Url, Email, __Els); - <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, - decode_register_date(<<"jabber:iq:register">>, - __IgnoreEls, _el), - Phone, State, Name, Username, Remove, Key, City, - Nick, Url, Email, __Els); - _ -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - Email, __Els) - end; -decode_register_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"misc">>, _attrs, _} = _el | _els], Zip, - Xdata, Misc, Address, Instructions, Text, Last, First, - Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, - decode_register_misc(__TopXMLNS, __IgnoreEls, - _el), - Address, Instructions, Text, Last, First, - Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, - __Els); - <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, - decode_register_misc(<<"jabber:iq:register">>, - __IgnoreEls, _el), - Address, Instructions, Text, Last, First, - Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, - __Els); - _ -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - Email, __Els) - end; -decode_register_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"text">>, _attrs, _} = _el | _els], Zip, - Xdata, Misc, Address, Instructions, Text, Last, First, - Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, - decode_register_text(__TopXMLNS, __IgnoreEls, - _el), - Last, First, Password, Registered, Date, Phone, - State, Name, Username, Remove, Key, City, Nick, - Url, Email, __Els); - <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, - decode_register_text(<<"jabber:iq:register">>, - __IgnoreEls, _el), - Last, First, Password, Registered, Date, Phone, - State, Name, Username, Remove, Key, City, Nick, - Url, Email, __Els); - _ -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - Email, __Els) - end; -decode_register_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"key">>, _attrs, _} = _el | _els], Zip, - Xdata, Misc, Address, Instructions, Text, Last, First, - Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, - decode_register_key(__TopXMLNS, __IgnoreEls, _el), - City, Nick, Url, Email, __Els); - <<"jabber:iq:register">> -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, - decode_register_key(<<"jabber:iq:register">>, - __IgnoreEls, _el), - City, Nick, Url, Email, __Els); - _ -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - Email, __Els) - end; -decode_register_els(__TopXMLNS, __IgnoreEls, - [{xmlel, _, _, _} = _el | _els], Zip, Xdata, Misc, - Address, Instructions, Text, Last, First, Password, - Registered, Date, Phone, State, Name, Username, Remove, - Key, City, Nick, Url, Email, __Els) -> - if __IgnoreEls -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, - Name, Username, Remove, Key, City, Nick, Url, - Email, [_el | __Els]); - true -> - case is_known_tag(_el, __TopXMLNS) of - true -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, - Last, First, Password, Registered, Date, - Phone, State, Name, Username, Remove, Key, - City, Nick, Url, Email, - [decode(_el, __TopXMLNS, []) | __Els]); - false -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, - Last, First, Password, Registered, Date, - Phone, State, Name, Username, Remove, Key, - City, Nick, Url, Email, __Els) - end - end; -decode_register_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Zip, Xdata, Misc, Address, Instructions, Text, Last, - First, Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, __Els) -> - decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip, - Xdata, Misc, Address, Instructions, Text, Last, First, - Password, Registered, Date, Phone, State, Name, - Username, Remove, Key, City, Nick, Url, Email, __Els). - -encode_register({register, Registered, Remove, - Instructions, Username, Nick, Password, Name, First, - Last, Email, Address, City, State, Zip, Phone, Url, - Date, Misc, Text, Key, Xdata, __Els}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:register">>, [], - __TopXMLNS), - _els = [encode(_el, __NewTopXMLNS) || _el <- __Els] ++ - lists:reverse('encode_register_$zip'(Zip, __NewTopXMLNS, - 'encode_register_$xdata'(Xdata, - __NewTopXMLNS, - 'encode_register_$misc'(Misc, - __NewTopXMLNS, - 'encode_register_$address'(Address, - __NewTopXMLNS, - 'encode_register_$instructions'(Instructions, - __NewTopXMLNS, - 'encode_register_$text'(Text, - __NewTopXMLNS, - 'encode_register_$last'(Last, - __NewTopXMLNS, - 'encode_register_$first'(First, - __NewTopXMLNS, - 'encode_register_$password'(Password, - __NewTopXMLNS, - 'encode_register_$registered'(Registered, - __NewTopXMLNS, - 'encode_register_$date'(Date, - __NewTopXMLNS, - 'encode_register_$phone'(Phone, - __NewTopXMLNS, - 'encode_register_$state'(State, - __NewTopXMLNS, - 'encode_register_$name'(Name, - __NewTopXMLNS, - 'encode_register_$username'(Username, - __NewTopXMLNS, - 'encode_register_$remove'(Remove, - __NewTopXMLNS, - 'encode_register_$key'(Key, - __NewTopXMLNS, - 'encode_register_$city'(City, - __NewTopXMLNS, - 'encode_register_$nick'(Nick, - __NewTopXMLNS, - 'encode_register_$url'(Url, - __NewTopXMLNS, - 'encode_register_$email'(Email, - __NewTopXMLNS, - [])))))))))))))))))))))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"query">>, _attrs, _els}. - -'encode_register_$zip'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_register_$zip'(Zip, __TopXMLNS, _acc) -> - [encode_register_zip(Zip, __TopXMLNS) | _acc]. - -'encode_register_$xdata'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_register_$xdata'(Xdata, __TopXMLNS, _acc) -> - [encode_xdata(Xdata, __TopXMLNS) | _acc]. - -'encode_register_$misc'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_register_$misc'(Misc, __TopXMLNS, _acc) -> - [encode_register_misc(Misc, __TopXMLNS) | _acc]. - -'encode_register_$address'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_register_$address'(Address, __TopXMLNS, _acc) -> - [encode_register_address(Address, __TopXMLNS) | _acc]. - -'encode_register_$instructions'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_register_$instructions'(Instructions, - __TopXMLNS, _acc) -> - [encode_register_instructions(Instructions, __TopXMLNS) - | _acc]. - -'encode_register_$text'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_register_$text'(Text, __TopXMLNS, _acc) -> - [encode_register_text(Text, __TopXMLNS) | _acc]. - -'encode_register_$last'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_register_$last'(Last, __TopXMLNS, _acc) -> - [encode_register_last(Last, __TopXMLNS) | _acc]. - -'encode_register_$first'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_register_$first'(First, __TopXMLNS, _acc) -> - [encode_register_first(First, __TopXMLNS) | _acc]. - -'encode_register_$password'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_register_$password'(Password, __TopXMLNS, - _acc) -> - [encode_register_password(Password, __TopXMLNS) | _acc]. - -'encode_register_$registered'(false, __TopXMLNS, - _acc) -> - _acc; -'encode_register_$registered'(Registered, __TopXMLNS, - _acc) -> - [encode_register_registered(Registered, __TopXMLNS) - | _acc]. - -'encode_register_$date'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_register_$date'(Date, __TopXMLNS, _acc) -> - [encode_register_date(Date, __TopXMLNS) | _acc]. - -'encode_register_$phone'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_register_$phone'(Phone, __TopXMLNS, _acc) -> - [encode_register_phone(Phone, __TopXMLNS) | _acc]. - -'encode_register_$state'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_register_$state'(State, __TopXMLNS, _acc) -> - [encode_register_state(State, __TopXMLNS) | _acc]. - -'encode_register_$name'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_register_$name'(Name, __TopXMLNS, _acc) -> - [encode_register_name(Name, __TopXMLNS) | _acc]. - -'encode_register_$username'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_register_$username'(Username, __TopXMLNS, - _acc) -> - [encode_register_username(Username, __TopXMLNS) | _acc]. - -'encode_register_$remove'(false, __TopXMLNS, _acc) -> - _acc; -'encode_register_$remove'(Remove, __TopXMLNS, _acc) -> - [encode_register_remove(Remove, __TopXMLNS) | _acc]. - -'encode_register_$key'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_register_$key'(Key, __TopXMLNS, _acc) -> - [encode_register_key(Key, __TopXMLNS) | _acc]. - -'encode_register_$city'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_register_$city'(City, __TopXMLNS, _acc) -> - [encode_register_city(City, __TopXMLNS) | _acc]. - -'encode_register_$nick'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_register_$nick'(Nick, __TopXMLNS, _acc) -> - [encode_register_nick(Nick, __TopXMLNS) | _acc]. - -'encode_register_$url'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_register_$url'(Url, __TopXMLNS, _acc) -> - [encode_register_url(Url, __TopXMLNS) | _acc]. - -'encode_register_$email'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_register_$email'(Email, __TopXMLNS, _acc) -> - [encode_register_email(Email, __TopXMLNS) | _acc]. - -decode_register_key(__TopXMLNS, __IgnoreEls, - {xmlel, <<"key">>, _attrs, _els}) -> - Cdata = decode_register_key_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_register_key_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_register_key_cdata(__TopXMLNS, Cdata); -decode_register_key_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_register_key_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_register_key_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_register_key_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_register_key(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:register">>, [], - __TopXMLNS), - _els = encode_register_key_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"key">>, _attrs, _els}. - -decode_register_key_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_register_key_cdata(__TopXMLNS, _val) -> _val. - -encode_register_key_cdata(<<>>, _acc) -> _acc; -encode_register_key_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_register_text(__TopXMLNS, __IgnoreEls, - {xmlel, <<"text">>, _attrs, _els}) -> - Cdata = decode_register_text_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_register_text_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_register_text_cdata(__TopXMLNS, Cdata); -decode_register_text_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_register_text_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_register_text_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_register_text_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_register_text(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:register">>, [], - __TopXMLNS), - _els = encode_register_text_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"text">>, _attrs, _els}. - -decode_register_text_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_register_text_cdata(__TopXMLNS, _val) -> _val. - -encode_register_text_cdata(<<>>, _acc) -> _acc; -encode_register_text_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_register_misc(__TopXMLNS, __IgnoreEls, - {xmlel, <<"misc">>, _attrs, _els}) -> - Cdata = decode_register_misc_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_register_misc_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_register_misc_cdata(__TopXMLNS, Cdata); -decode_register_misc_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_register_misc_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_register_misc_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_register_misc_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_register_misc(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:register">>, [], - __TopXMLNS), - _els = encode_register_misc_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"misc">>, _attrs, _els}. - -decode_register_misc_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_register_misc_cdata(__TopXMLNS, _val) -> _val. - -encode_register_misc_cdata(<<>>, _acc) -> _acc; -encode_register_misc_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_register_date(__TopXMLNS, __IgnoreEls, - {xmlel, <<"date">>, _attrs, _els}) -> - Cdata = decode_register_date_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_register_date_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_register_date_cdata(__TopXMLNS, Cdata); -decode_register_date_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_register_date_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_register_date_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_register_date_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_register_date(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:register">>, [], - __TopXMLNS), - _els = encode_register_date_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"date">>, _attrs, _els}. - -decode_register_date_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_register_date_cdata(__TopXMLNS, _val) -> _val. - -encode_register_date_cdata(<<>>, _acc) -> _acc; -encode_register_date_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_register_url(__TopXMLNS, __IgnoreEls, - {xmlel, <<"url">>, _attrs, _els}) -> - Cdata = decode_register_url_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_register_url_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_register_url_cdata(__TopXMLNS, Cdata); -decode_register_url_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_register_url_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_register_url_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_register_url_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_register_url(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:register">>, [], - __TopXMLNS), - _els = encode_register_url_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"url">>, _attrs, _els}. - -decode_register_url_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_register_url_cdata(__TopXMLNS, _val) -> _val. - -encode_register_url_cdata(<<>>, _acc) -> _acc; -encode_register_url_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_register_phone(__TopXMLNS, __IgnoreEls, - {xmlel, <<"phone">>, _attrs, _els}) -> - Cdata = decode_register_phone_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_register_phone_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_register_phone_cdata(__TopXMLNS, Cdata); -decode_register_phone_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_register_phone_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_register_phone_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_register_phone_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_register_phone(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:register">>, [], - __TopXMLNS), - _els = encode_register_phone_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"phone">>, _attrs, _els}. - -decode_register_phone_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_register_phone_cdata(__TopXMLNS, _val) -> _val. - -encode_register_phone_cdata(<<>>, _acc) -> _acc; -encode_register_phone_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_register_zip(__TopXMLNS, __IgnoreEls, - {xmlel, <<"zip">>, _attrs, _els}) -> - Cdata = decode_register_zip_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_register_zip_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_register_zip_cdata(__TopXMLNS, Cdata); -decode_register_zip_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_register_zip_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_register_zip_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_register_zip_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_register_zip(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:register">>, [], - __TopXMLNS), - _els = encode_register_zip_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"zip">>, _attrs, _els}. - -decode_register_zip_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_register_zip_cdata(__TopXMLNS, _val) -> _val. - -encode_register_zip_cdata(<<>>, _acc) -> _acc; -encode_register_zip_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_register_state(__TopXMLNS, __IgnoreEls, - {xmlel, <<"state">>, _attrs, _els}) -> - Cdata = decode_register_state_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_register_state_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_register_state_cdata(__TopXMLNS, Cdata); -decode_register_state_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_register_state_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_register_state_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_register_state_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_register_state(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:register">>, [], - __TopXMLNS), - _els = encode_register_state_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"state">>, _attrs, _els}. - -decode_register_state_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_register_state_cdata(__TopXMLNS, _val) -> _val. - -encode_register_state_cdata(<<>>, _acc) -> _acc; -encode_register_state_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_register_city(__TopXMLNS, __IgnoreEls, - {xmlel, <<"city">>, _attrs, _els}) -> - Cdata = decode_register_city_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_register_city_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_register_city_cdata(__TopXMLNS, Cdata); -decode_register_city_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_register_city_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_register_city_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_register_city_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_register_city(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:register">>, [], - __TopXMLNS), - _els = encode_register_city_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"city">>, _attrs, _els}. - -decode_register_city_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_register_city_cdata(__TopXMLNS, _val) -> _val. - -encode_register_city_cdata(<<>>, _acc) -> _acc; -encode_register_city_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_register_address(__TopXMLNS, __IgnoreEls, - {xmlel, <<"address">>, _attrs, _els}) -> - Cdata = decode_register_address_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_register_address_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_register_address_cdata(__TopXMLNS, Cdata); -decode_register_address_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_register_address_els(__TopXMLNS, __IgnoreEls, - _els, <>); -decode_register_address_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_register_address_els(__TopXMLNS, __IgnoreEls, - _els, Cdata). - -encode_register_address(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:register">>, [], - __TopXMLNS), - _els = encode_register_address_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"address">>, _attrs, _els}. - -decode_register_address_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_register_address_cdata(__TopXMLNS, _val) -> _val. - -encode_register_address_cdata(<<>>, _acc) -> _acc; -encode_register_address_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_register_email(__TopXMLNS, __IgnoreEls, - {xmlel, <<"email">>, _attrs, _els}) -> - Cdata = decode_register_email_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_register_email_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_register_email_cdata(__TopXMLNS, Cdata); -decode_register_email_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_register_email_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_register_email_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_register_email_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_register_email(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:register">>, [], - __TopXMLNS), - _els = encode_register_email_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"email">>, _attrs, _els}. - -decode_register_email_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_register_email_cdata(__TopXMLNS, _val) -> _val. - -encode_register_email_cdata(<<>>, _acc) -> _acc; -encode_register_email_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_register_last(__TopXMLNS, __IgnoreEls, - {xmlel, <<"last">>, _attrs, _els}) -> - Cdata = decode_register_last_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_register_last_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_register_last_cdata(__TopXMLNS, Cdata); -decode_register_last_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_register_last_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_register_last_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_register_last_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_register_last(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:register">>, [], - __TopXMLNS), - _els = encode_register_last_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"last">>, _attrs, _els}. - -decode_register_last_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_register_last_cdata(__TopXMLNS, _val) -> _val. - -encode_register_last_cdata(<<>>, _acc) -> _acc; -encode_register_last_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_register_first(__TopXMLNS, __IgnoreEls, - {xmlel, <<"first">>, _attrs, _els}) -> - Cdata = decode_register_first_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_register_first_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_register_first_cdata(__TopXMLNS, Cdata); -decode_register_first_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_register_first_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_register_first_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_register_first_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_register_first(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:register">>, [], - __TopXMLNS), - _els = encode_register_first_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"first">>, _attrs, _els}. - -decode_register_first_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_register_first_cdata(__TopXMLNS, _val) -> _val. - -encode_register_first_cdata(<<>>, _acc) -> _acc; -encode_register_first_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_register_name(__TopXMLNS, __IgnoreEls, - {xmlel, <<"name">>, _attrs, _els}) -> - Cdata = decode_register_name_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_register_name_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_register_name_cdata(__TopXMLNS, Cdata); -decode_register_name_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_register_name_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_register_name_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_register_name_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_register_name(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:register">>, [], - __TopXMLNS), - _els = encode_register_name_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"name">>, _attrs, _els}. - -decode_register_name_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_register_name_cdata(__TopXMLNS, _val) -> _val. - -encode_register_name_cdata(<<>>, _acc) -> _acc; -encode_register_name_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_register_password(__TopXMLNS, __IgnoreEls, - {xmlel, <<"password">>, _attrs, _els}) -> - Cdata = decode_register_password_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_register_password_els(__TopXMLNS, __IgnoreEls, - [], Cdata) -> - decode_register_password_cdata(__TopXMLNS, Cdata); -decode_register_password_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_register_password_els(__TopXMLNS, __IgnoreEls, - _els, <>); -decode_register_password_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_register_password_els(__TopXMLNS, __IgnoreEls, - _els, Cdata). - -encode_register_password(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:register">>, [], - __TopXMLNS), - _els = encode_register_password_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"password">>, _attrs, _els}. - -decode_register_password_cdata(__TopXMLNS, <<>>) -> - <<>>; -decode_register_password_cdata(__TopXMLNS, _val) -> - _val. - -encode_register_password_cdata(<<>>, _acc) -> _acc; -encode_register_password_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_register_nick(__TopXMLNS, __IgnoreEls, - {xmlel, <<"nick">>, _attrs, _els}) -> - Cdata = decode_register_nick_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_register_nick_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_register_nick_cdata(__TopXMLNS, Cdata); -decode_register_nick_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_register_nick_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_register_nick_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_register_nick_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_register_nick(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:register">>, [], - __TopXMLNS), - _els = encode_register_nick_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"nick">>, _attrs, _els}. - -decode_register_nick_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_register_nick_cdata(__TopXMLNS, _val) -> _val. - -encode_register_nick_cdata(<<>>, _acc) -> _acc; -encode_register_nick_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_register_username(__TopXMLNS, __IgnoreEls, - {xmlel, <<"username">>, _attrs, _els}) -> - Cdata = decode_register_username_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_register_username_els(__TopXMLNS, __IgnoreEls, - [], Cdata) -> - decode_register_username_cdata(__TopXMLNS, Cdata); -decode_register_username_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_register_username_els(__TopXMLNS, __IgnoreEls, - _els, <>); -decode_register_username_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_register_username_els(__TopXMLNS, __IgnoreEls, - _els, Cdata). - -encode_register_username(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:register">>, [], - __TopXMLNS), - _els = encode_register_username_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"username">>, _attrs, _els}. - -decode_register_username_cdata(__TopXMLNS, <<>>) -> - <<>>; -decode_register_username_cdata(__TopXMLNS, _val) -> - _val. - -encode_register_username_cdata(<<>>, _acc) -> _acc; -encode_register_username_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_register_instructions(__TopXMLNS, __IgnoreEls, - {xmlel, <<"instructions">>, _attrs, _els}) -> - Cdata = decode_register_instructions_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_register_instructions_els(__TopXMLNS, - __IgnoreEls, [], Cdata) -> - decode_register_instructions_cdata(__TopXMLNS, Cdata); -decode_register_instructions_els(__TopXMLNS, - __IgnoreEls, [{xmlcdata, _data} | _els], - Cdata) -> - decode_register_instructions_els(__TopXMLNS, - __IgnoreEls, _els, - <>); -decode_register_instructions_els(__TopXMLNS, - __IgnoreEls, [_ | _els], Cdata) -> - decode_register_instructions_els(__TopXMLNS, - __IgnoreEls, _els, Cdata). - -encode_register_instructions(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:register">>, [], - __TopXMLNS), - _els = encode_register_instructions_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"instructions">>, _attrs, _els}. - -decode_register_instructions_cdata(__TopXMLNS, <<>>) -> - <<>>; -decode_register_instructions_cdata(__TopXMLNS, _val) -> - _val. - -encode_register_instructions_cdata(<<>>, _acc) -> _acc; -encode_register_instructions_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_register_remove(__TopXMLNS, __IgnoreEls, - {xmlel, <<"remove">>, _attrs, _els}) -> - true. - -encode_register_remove(true, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:register">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"remove">>, _attrs, _els}. - -decode_register_registered(__TopXMLNS, __IgnoreEls, - {xmlel, <<"registered">>, _attrs, _els}) -> - true. - -encode_register_registered(true, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:register">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"registered">>, _attrs, _els}. - -decode_feature_register(__TopXMLNS, __IgnoreEls, - {xmlel, <<"register">>, _attrs, _els}) -> - {feature_register}. - -encode_feature_register({feature_register}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/features/iq-register">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"register">>, _attrs, _els}. - -decode_caps(__TopXMLNS, __IgnoreEls, - {xmlel, <<"c">>, _attrs, _els}) -> - {Hash, Node, Exts, Version} = - decode_caps_attrs(__TopXMLNS, _attrs, undefined, - undefined, undefined, undefined), - {caps, Node, Version, Hash, Exts}. - -decode_caps_attrs(__TopXMLNS, - [{<<"hash">>, _val} | _attrs], _Hash, Node, Exts, - Version) -> - decode_caps_attrs(__TopXMLNS, _attrs, _val, Node, Exts, - Version); -decode_caps_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], Hash, _Node, Exts, - Version) -> - decode_caps_attrs(__TopXMLNS, _attrs, Hash, _val, Exts, - Version); -decode_caps_attrs(__TopXMLNS, - [{<<"ext">>, _val} | _attrs], Hash, Node, _Exts, - Version) -> - decode_caps_attrs(__TopXMLNS, _attrs, Hash, Node, _val, - Version); -decode_caps_attrs(__TopXMLNS, - [{<<"ver">>, _val} | _attrs], Hash, Node, Exts, - _Version) -> - decode_caps_attrs(__TopXMLNS, _attrs, Hash, Node, Exts, - _val); -decode_caps_attrs(__TopXMLNS, [_ | _attrs], Hash, Node, - Exts, Version) -> - decode_caps_attrs(__TopXMLNS, _attrs, Hash, Node, Exts, - Version); -decode_caps_attrs(__TopXMLNS, [], Hash, Node, Exts, - Version) -> - {decode_caps_attr_hash(__TopXMLNS, Hash), - decode_caps_attr_node(__TopXMLNS, Node), - decode_caps_attr_ext(__TopXMLNS, Exts), - decode_caps_attr_ver(__TopXMLNS, Version)}. - -encode_caps({caps, Node, Version, Hash, Exts}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/caps">>, - [], __TopXMLNS), - _els = [], - _attrs = encode_caps_attr_ver(Version, - encode_caps_attr_ext(Exts, - encode_caps_attr_node(Node, - encode_caps_attr_hash(Hash, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))))), - {xmlel, <<"c">>, _attrs, _els}. - -decode_caps_attr_hash(__TopXMLNS, undefined) -> <<>>; -decode_caps_attr_hash(__TopXMLNS, _val) -> _val. - -encode_caps_attr_hash(<<>>, _acc) -> _acc; -encode_caps_attr_hash(_val, _acc) -> - [{<<"hash">>, _val} | _acc]. - -decode_caps_attr_node(__TopXMLNS, undefined) -> <<>>; -decode_caps_attr_node(__TopXMLNS, _val) -> _val. - -encode_caps_attr_node(<<>>, _acc) -> _acc; -encode_caps_attr_node(_val, _acc) -> - [{<<"node">>, _val} | _acc]. - -decode_caps_attr_ext(__TopXMLNS, undefined) -> []; -decode_caps_attr_ext(__TopXMLNS, _val) -> - case catch re:split(_val, "\\h+") of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"ext">>, <<"c">>, __TopXMLNS}}); - _res -> _res - end. - -encode_caps_attr_ext([], _acc) -> _acc; -encode_caps_attr_ext(_val, _acc) -> - [{<<"ext">>, join(_val, 32)} | _acc]. - -decode_caps_attr_ver(__TopXMLNS, undefined) -> <<>>; -decode_caps_attr_ver(__TopXMLNS, _val) -> _val. - -encode_caps_attr_ver(<<>>, _acc) -> _acc; -encode_caps_attr_ver(_val, _acc) -> - [{<<"ver">>, _val} | _acc]. - -decode_p1_ack(__TopXMLNS, __IgnoreEls, - {xmlel, <<"ack">>, _attrs, _els}) -> - {p1_ack}. - -encode_p1_ack({p1_ack}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"p1:ack">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"ack">>, _attrs, _els}. - -decode_p1_rebind(__TopXMLNS, __IgnoreEls, - {xmlel, <<"rebind">>, _attrs, _els}) -> - {p1_rebind}. - -encode_p1_rebind({p1_rebind}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"p1:rebind">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"rebind">>, _attrs, _els}. - -decode_p1_push(__TopXMLNS, __IgnoreEls, - {xmlel, <<"push">>, _attrs, _els}) -> - {p1_push}. - -encode_p1_push({p1_push}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"p1:push">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"push">>, _attrs, _els}. - -decode_stream_features(__TopXMLNS, __IgnoreEls, - {xmlel, <<"stream:features">>, _attrs, _els}) -> - __Els = decode_stream_features_els(__TopXMLNS, - __IgnoreEls, _els, []), - {stream_features, __Els}. - -decode_stream_features_els(__TopXMLNS, __IgnoreEls, [], - __Els) -> - lists:reverse(__Els); -decode_stream_features_els(__TopXMLNS, __IgnoreEls, - [{xmlel, _, _, _} = _el | _els], __Els) -> - if __IgnoreEls -> - decode_stream_features_els(__TopXMLNS, __IgnoreEls, - _els, [_el | __Els]); - true -> - case is_known_tag(_el, __TopXMLNS) of - true -> - decode_stream_features_els(__TopXMLNS, __IgnoreEls, - _els, - [decode(_el, __TopXMLNS, []) - | __Els]); - false -> - decode_stream_features_els(__TopXMLNS, __IgnoreEls, - _els, __Els) - end - end; -decode_stream_features_els(__TopXMLNS, __IgnoreEls, - [_ | _els], __Els) -> - decode_stream_features_els(__TopXMLNS, __IgnoreEls, - _els, __Els). - -encode_stream_features({stream_features, __Els}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"jabber:client">>, <<"jabber:server">>], - __TopXMLNS), - _els = [encode(_el, __NewTopXMLNS) || _el <- __Els], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"stream:features">>, _attrs, _els}. - -decode_compression(__TopXMLNS, __IgnoreEls, - {xmlel, <<"compression">>, _attrs, _els}) -> - Methods = decode_compression_els(__TopXMLNS, - __IgnoreEls, _els, []), - {compression, Methods}. - -decode_compression_els(__TopXMLNS, __IgnoreEls, [], - Methods) -> - lists:reverse(Methods); -decode_compression_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"method">>, _attrs, _} = _el | _els], - Methods) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/features/compress">> -> - decode_compression_els(__TopXMLNS, __IgnoreEls, _els, - [decode_compression_method(__TopXMLNS, - __IgnoreEls, _el) - | Methods]); - <<"http://jabber.org/features/compress">> -> - decode_compression_els(__TopXMLNS, __IgnoreEls, _els, - [decode_compression_method(<<"http://jabber.org/features/compress">>, - __IgnoreEls, _el) - | Methods]); - _ -> - decode_compression_els(__TopXMLNS, __IgnoreEls, _els, - Methods) - end; -decode_compression_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Methods) -> - decode_compression_els(__TopXMLNS, __IgnoreEls, _els, - Methods). - -encode_compression({compression, Methods}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/features/compress">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_compression_$methods'(Methods, - __NewTopXMLNS, [])), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"compression">>, _attrs, _els}. - -'encode_compression_$methods'([], __TopXMLNS, _acc) -> - _acc; -'encode_compression_$methods'([Methods | _els], - __TopXMLNS, _acc) -> - 'encode_compression_$methods'(_els, __TopXMLNS, - [encode_compression_method(Methods, - __TopXMLNS) - | _acc]). - -decode_compression_method(__TopXMLNS, __IgnoreEls, - {xmlel, <<"method">>, _attrs, _els}) -> - Cdata = decode_compression_method_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_compression_method_els(__TopXMLNS, __IgnoreEls, - [], Cdata) -> - decode_compression_method_cdata(__TopXMLNS, Cdata); -decode_compression_method_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_compression_method_els(__TopXMLNS, __IgnoreEls, - _els, <>); -decode_compression_method_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_compression_method_els(__TopXMLNS, __IgnoreEls, - _els, Cdata). - -encode_compression_method(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/features/compress">>, - [], __TopXMLNS), - _els = encode_compression_method_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"method">>, _attrs, _els}. - -decode_compression_method_cdata(__TopXMLNS, <<>>) -> - <<>>; -decode_compression_method_cdata(__TopXMLNS, _val) -> - _val. - -encode_compression_method_cdata(<<>>, _acc) -> _acc; -encode_compression_method_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_compressed(__TopXMLNS, __IgnoreEls, - {xmlel, <<"compressed">>, _attrs, _els}) -> - {compressed}. - -encode_compressed({compressed}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/compress">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"compressed">>, _attrs, _els}. - -decode_compress(__TopXMLNS, __IgnoreEls, - {xmlel, <<"compress">>, _attrs, _els}) -> - Methods = decode_compress_els(__TopXMLNS, __IgnoreEls, - _els, []), - {compress, Methods}. - -decode_compress_els(__TopXMLNS, __IgnoreEls, [], - Methods) -> - lists:reverse(Methods); -decode_compress_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"method">>, _attrs, _} = _el | _els], - Methods) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/compress">> -> - decode_compress_els(__TopXMLNS, __IgnoreEls, _els, - [decode_compress_method(__TopXMLNS, __IgnoreEls, - _el) - | Methods]); - <<"http://jabber.org/protocol/compress">> -> - decode_compress_els(__TopXMLNS, __IgnoreEls, _els, - [decode_compress_method(<<"http://jabber.org/protocol/compress">>, - __IgnoreEls, _el) - | Methods]); - _ -> - decode_compress_els(__TopXMLNS, __IgnoreEls, _els, - Methods) - end; -decode_compress_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Methods) -> - decode_compress_els(__TopXMLNS, __IgnoreEls, _els, - Methods). - -encode_compress({compress, Methods}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/compress">>, - [], __TopXMLNS), - _els = lists:reverse('encode_compress_$methods'(Methods, - __NewTopXMLNS, [])), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"compress">>, _attrs, _els}. - -'encode_compress_$methods'([], __TopXMLNS, _acc) -> - _acc; -'encode_compress_$methods'([Methods | _els], __TopXMLNS, - _acc) -> - 'encode_compress_$methods'(_els, __TopXMLNS, - [encode_compress_method(Methods, __TopXMLNS) - | _acc]). - -decode_compress_method(__TopXMLNS, __IgnoreEls, - {xmlel, <<"method">>, _attrs, _els}) -> - Cdata = decode_compress_method_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_compress_method_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_compress_method_cdata(__TopXMLNS, Cdata); -decode_compress_method_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_compress_method_els(__TopXMLNS, __IgnoreEls, - _els, <>); -decode_compress_method_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_compress_method_els(__TopXMLNS, __IgnoreEls, - _els, Cdata). - -encode_compress_method(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/compress">>, - [], __TopXMLNS), - _els = encode_compress_method_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"method">>, _attrs, _els}. - -decode_compress_method_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_compress_method_cdata(__TopXMLNS, _val) -> _val. - -encode_compress_method_cdata(<<>>, _acc) -> _acc; -encode_compress_method_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_compress_failure(__TopXMLNS, __IgnoreEls, - {xmlel, <<"failure">>, _attrs, _els}) -> - Reason = decode_compress_failure_els(__TopXMLNS, - __IgnoreEls, _els, undefined), - {compress_failure, Reason}. - -decode_compress_failure_els(__TopXMLNS, __IgnoreEls, [], - Reason) -> - Reason; -decode_compress_failure_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"setup-failed">>, _attrs, _} = _el - | _els], - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/compress">> -> - decode_compress_failure_els(__TopXMLNS, __IgnoreEls, - _els, - decode_compress_failure_setup_failed(__TopXMLNS, - __IgnoreEls, - _el)); - <<"http://jabber.org/protocol/compress">> -> - decode_compress_failure_els(__TopXMLNS, __IgnoreEls, - _els, - decode_compress_failure_setup_failed(<<"http://jabber.org/protocol/compress">>, - __IgnoreEls, - _el)); - _ -> - decode_compress_failure_els(__TopXMLNS, __IgnoreEls, - _els, Reason) - end; -decode_compress_failure_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"processing-failed">>, _attrs, _} = _el - | _els], - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/compress">> -> - decode_compress_failure_els(__TopXMLNS, __IgnoreEls, - _els, - decode_compress_failure_processing_failed(__TopXMLNS, - __IgnoreEls, - _el)); - <<"http://jabber.org/protocol/compress">> -> - decode_compress_failure_els(__TopXMLNS, __IgnoreEls, - _els, - decode_compress_failure_processing_failed(<<"http://jabber.org/protocol/compress">>, - __IgnoreEls, - _el)); - _ -> - decode_compress_failure_els(__TopXMLNS, __IgnoreEls, - _els, Reason) - end; -decode_compress_failure_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"unsupported-method">>, _attrs, _} = _el - | _els], - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/compress">> -> - decode_compress_failure_els(__TopXMLNS, __IgnoreEls, - _els, - decode_compress_failure_unsupported_method(__TopXMLNS, - __IgnoreEls, - _el)); - <<"http://jabber.org/protocol/compress">> -> - decode_compress_failure_els(__TopXMLNS, __IgnoreEls, - _els, - decode_compress_failure_unsupported_method(<<"http://jabber.org/protocol/compress">>, - __IgnoreEls, - _el)); - _ -> - decode_compress_failure_els(__TopXMLNS, __IgnoreEls, - _els, Reason) - end; -decode_compress_failure_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Reason) -> - decode_compress_failure_els(__TopXMLNS, __IgnoreEls, - _els, Reason). - -encode_compress_failure({compress_failure, Reason}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/compress">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_compress_failure_$reason'(Reason, - __NewTopXMLNS, [])), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"failure">>, _attrs, _els}. - -'encode_compress_failure_$reason'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_compress_failure_$reason'('setup-failed' = - Reason, - __TopXMLNS, _acc) -> - [encode_compress_failure_setup_failed(Reason, - __TopXMLNS) - | _acc]; -'encode_compress_failure_$reason'('processing-failed' = - Reason, - __TopXMLNS, _acc) -> - [encode_compress_failure_processing_failed(Reason, - __TopXMLNS) - | _acc]; -'encode_compress_failure_$reason'('unsupported-method' = - Reason, - __TopXMLNS, _acc) -> - [encode_compress_failure_unsupported_method(Reason, - __TopXMLNS) - | _acc]. - -decode_compress_failure_unsupported_method(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"unsupported-method">>, - _attrs, _els}) -> - 'unsupported-method'. - -encode_compress_failure_unsupported_method('unsupported-method', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/compress">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"unsupported-method">>, _attrs, _els}. - -decode_compress_failure_processing_failed(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"processing-failed">>, - _attrs, _els}) -> - 'processing-failed'. - -encode_compress_failure_processing_failed('processing-failed', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/compress">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"processing-failed">>, _attrs, _els}. - -decode_compress_failure_setup_failed(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"setup-failed">>, _attrs, - _els}) -> - 'setup-failed'. - -encode_compress_failure_setup_failed('setup-failed', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/compress">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"setup-failed">>, _attrs, _els}. - -decode_starttls_failure(__TopXMLNS, __IgnoreEls, - {xmlel, <<"failure">>, _attrs, _els}) -> - {starttls_failure}. - -encode_starttls_failure({starttls_failure}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-tls">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"failure">>, _attrs, _els}. - -decode_starttls_proceed(__TopXMLNS, __IgnoreEls, - {xmlel, <<"proceed">>, _attrs, _els}) -> - {starttls_proceed}. - -encode_starttls_proceed({starttls_proceed}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-tls">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"proceed">>, _attrs, _els}. - -decode_starttls(__TopXMLNS, __IgnoreEls, - {xmlel, <<"starttls">>, _attrs, _els}) -> - Required = decode_starttls_els(__TopXMLNS, __IgnoreEls, - _els, false), - {starttls, Required}. - -decode_starttls_els(__TopXMLNS, __IgnoreEls, [], - Required) -> - Required; -decode_starttls_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"required">>, _attrs, _} = _el | _els], - Required) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"urn:ietf:params:xml:ns:xmpp-tls">> -> - decode_starttls_els(__TopXMLNS, __IgnoreEls, _els, - decode_starttls_required(__TopXMLNS, __IgnoreEls, - _el)); - <<"urn:ietf:params:xml:ns:xmpp-tls">> -> - decode_starttls_els(__TopXMLNS, __IgnoreEls, _els, - decode_starttls_required(<<"urn:ietf:params:xml:ns:xmpp-tls">>, - __IgnoreEls, _el)); - _ -> - decode_starttls_els(__TopXMLNS, __IgnoreEls, _els, - Required) - end; -decode_starttls_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Required) -> - decode_starttls_els(__TopXMLNS, __IgnoreEls, _els, - Required). - -encode_starttls({starttls, Required}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-tls">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_starttls_$required'(Required, - __NewTopXMLNS, [])), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"starttls">>, _attrs, _els}. - -'encode_starttls_$required'(false, __TopXMLNS, _acc) -> - _acc; -'encode_starttls_$required'(Required, __TopXMLNS, - _acc) -> - [encode_starttls_required(Required, __TopXMLNS) | _acc]. - -decode_starttls_required(__TopXMLNS, __IgnoreEls, - {xmlel, <<"required">>, _attrs, _els}) -> - true. - -encode_starttls_required(true, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-tls">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"required">>, _attrs, _els}. - -decode_sasl_mechanisms(__TopXMLNS, __IgnoreEls, - {xmlel, <<"mechanisms">>, _attrs, _els}) -> - List = decode_sasl_mechanisms_els(__TopXMLNS, - __IgnoreEls, _els, []), - {sasl_mechanisms, List}. - -decode_sasl_mechanisms_els(__TopXMLNS, __IgnoreEls, [], - List) -> - lists:reverse(List); -decode_sasl_mechanisms_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"mechanism">>, _attrs, _} = _el | _els], - List) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_mechanisms_els(__TopXMLNS, __IgnoreEls, - _els, - [decode_sasl_mechanism(__TopXMLNS, - __IgnoreEls, _el) - | List]); - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_mechanisms_els(__TopXMLNS, __IgnoreEls, - _els, - [decode_sasl_mechanism(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - __IgnoreEls, _el) - | List]); - _ -> - decode_sasl_mechanisms_els(__TopXMLNS, __IgnoreEls, - _els, List) - end; -decode_sasl_mechanisms_els(__TopXMLNS, __IgnoreEls, - [_ | _els], List) -> - decode_sasl_mechanisms_els(__TopXMLNS, __IgnoreEls, - _els, List). - -encode_sasl_mechanisms({sasl_mechanisms, List}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_sasl_mechanisms_$list'(List, - __NewTopXMLNS, [])), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"mechanisms">>, _attrs, _els}. - -'encode_sasl_mechanisms_$list'([], __TopXMLNS, _acc) -> - _acc; -'encode_sasl_mechanisms_$list'([List | _els], - __TopXMLNS, _acc) -> - 'encode_sasl_mechanisms_$list'(_els, __TopXMLNS, - [encode_sasl_mechanism(List, __TopXMLNS) - | _acc]). - -decode_sasl_mechanism(__TopXMLNS, __IgnoreEls, - {xmlel, <<"mechanism">>, _attrs, _els}) -> - Cdata = decode_sasl_mechanism_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_sasl_mechanism_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_sasl_mechanism_cdata(__TopXMLNS, Cdata); -decode_sasl_mechanism_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_sasl_mechanism_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_sasl_mechanism_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_sasl_mechanism_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_sasl_mechanism(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - [], __TopXMLNS), - _els = encode_sasl_mechanism_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"mechanism">>, _attrs, _els}. - -decode_sasl_mechanism_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_sasl_mechanism_cdata(__TopXMLNS, _val) -> _val. - -encode_sasl_mechanism_cdata(<<>>, _acc) -> _acc; -encode_sasl_mechanism_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_sasl_failure(__TopXMLNS, __IgnoreEls, - {xmlel, <<"failure">>, _attrs, _els}) -> - {Text, Reason} = decode_sasl_failure_els(__TopXMLNS, - __IgnoreEls, _els, [], undefined), - {sasl_failure, Reason, Text}. - -decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, [], - Text, Reason) -> - {lists:reverse(Text), Reason}; -decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"text">>, _attrs, _} = _el | _els], Text, - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - [decode_sasl_failure_text(__TopXMLNS, - __IgnoreEls, _el) - | Text], - Reason); - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - [decode_sasl_failure_text(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - __IgnoreEls, _el) - | Text], - Reason); - _ -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"aborted">>, _attrs, _} = _el | _els], Text, - Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_sasl_failure_aborted(__TopXMLNS, - __IgnoreEls, - _el)); - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_sasl_failure_aborted(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - __IgnoreEls, - _el)); - _ -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"account-disabled">>, _attrs, _} = _el - | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_sasl_failure_account_disabled(__TopXMLNS, - __IgnoreEls, - _el)); - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_sasl_failure_account_disabled(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - __IgnoreEls, - _el)); - _ -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"credentials-expired">>, _attrs, _} = _el - | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_sasl_failure_credentials_expired(__TopXMLNS, - __IgnoreEls, - _el)); - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_sasl_failure_credentials_expired(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - __IgnoreEls, - _el)); - _ -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"encryption-required">>, _attrs, _} = _el - | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_sasl_failure_encryption_required(__TopXMLNS, - __IgnoreEls, - _el)); - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_sasl_failure_encryption_required(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - __IgnoreEls, - _el)); - _ -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"incorrect-encoding">>, _attrs, _} = _el - | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_sasl_failure_incorrect_encoding(__TopXMLNS, - __IgnoreEls, - _el)); - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_sasl_failure_incorrect_encoding(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - __IgnoreEls, - _el)); - _ -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"invalid-authzid">>, _attrs, _} = _el - | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_sasl_failure_invalid_authzid(__TopXMLNS, - __IgnoreEls, - _el)); - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_sasl_failure_invalid_authzid(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - __IgnoreEls, - _el)); - _ -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"invalid-mechanism">>, _attrs, _} = _el - | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_sasl_failure_invalid_mechanism(__TopXMLNS, - __IgnoreEls, - _el)); - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_sasl_failure_invalid_mechanism(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - __IgnoreEls, - _el)); - _ -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"malformed-request">>, _attrs, _} = _el - | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_sasl_failure_malformed_request(__TopXMLNS, - __IgnoreEls, - _el)); - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_sasl_failure_malformed_request(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - __IgnoreEls, - _el)); - _ -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"mechanism-too-weak">>, _attrs, _} = _el - | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_sasl_failure_mechanism_too_weak(__TopXMLNS, - __IgnoreEls, - _el)); - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_sasl_failure_mechanism_too_weak(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - __IgnoreEls, - _el)); - _ -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"not-authorized">>, _attrs, _} = _el | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_sasl_failure_not_authorized(__TopXMLNS, - __IgnoreEls, - _el)); - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_sasl_failure_not_authorized(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - __IgnoreEls, - _el)); - _ -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"bad-protocol">>, _attrs, _} = _el | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_sasl_failure_bad_protocol(__TopXMLNS, - __IgnoreEls, - _el)); - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_sasl_failure_bad_protocol(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - __IgnoreEls, - _el)); - _ -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"temporary-auth-failure">>, _attrs, _} = _el - | _els], - Text, Reason) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_sasl_failure_temporary_auth_failure(__TopXMLNS, - __IgnoreEls, - _el)); - <<"urn:ietf:params:xml:ns:xmpp-sasl">> -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, - decode_sasl_failure_temporary_auth_failure(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - __IgnoreEls, - _el)); - _ -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason) - end; -decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Text, Reason) -> - decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els, - Text, Reason). - -encode_sasl_failure({sasl_failure, Reason, Text}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - [], __TopXMLNS), - _els = lists:reverse('encode_sasl_failure_$text'(Text, - __NewTopXMLNS, - 'encode_sasl_failure_$reason'(Reason, - __NewTopXMLNS, - []))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"failure">>, _attrs, _els}. - -'encode_sasl_failure_$text'([], __TopXMLNS, _acc) -> - _acc; -'encode_sasl_failure_$text'([Text | _els], __TopXMLNS, - _acc) -> - 'encode_sasl_failure_$text'(_els, __TopXMLNS, - [encode_sasl_failure_text(Text, __TopXMLNS) - | _acc]). - -'encode_sasl_failure_$reason'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_sasl_failure_$reason'(aborted = Reason, - __TopXMLNS, _acc) -> - [encode_sasl_failure_aborted(Reason, __TopXMLNS) - | _acc]; -'encode_sasl_failure_$reason'('account-disabled' = - Reason, - __TopXMLNS, _acc) -> - [encode_sasl_failure_account_disabled(Reason, - __TopXMLNS) - | _acc]; -'encode_sasl_failure_$reason'('credentials-expired' = - Reason, - __TopXMLNS, _acc) -> - [encode_sasl_failure_credentials_expired(Reason, - __TopXMLNS) - | _acc]; -'encode_sasl_failure_$reason'('encryption-required' = - Reason, - __TopXMLNS, _acc) -> - [encode_sasl_failure_encryption_required(Reason, - __TopXMLNS) - | _acc]; -'encode_sasl_failure_$reason'('incorrect-encoding' = - Reason, - __TopXMLNS, _acc) -> - [encode_sasl_failure_incorrect_encoding(Reason, - __TopXMLNS) - | _acc]; -'encode_sasl_failure_$reason'('invalid-authzid' = - Reason, - __TopXMLNS, _acc) -> - [encode_sasl_failure_invalid_authzid(Reason, __TopXMLNS) - | _acc]; -'encode_sasl_failure_$reason'('invalid-mechanism' = - Reason, - __TopXMLNS, _acc) -> - [encode_sasl_failure_invalid_mechanism(Reason, - __TopXMLNS) - | _acc]; -'encode_sasl_failure_$reason'('malformed-request' = - Reason, - __TopXMLNS, _acc) -> - [encode_sasl_failure_malformed_request(Reason, - __TopXMLNS) - | _acc]; -'encode_sasl_failure_$reason'('mechanism-too-weak' = - Reason, - __TopXMLNS, _acc) -> - [encode_sasl_failure_mechanism_too_weak(Reason, - __TopXMLNS) - | _acc]; -'encode_sasl_failure_$reason'('not-authorized' = Reason, - __TopXMLNS, _acc) -> - [encode_sasl_failure_not_authorized(Reason, __TopXMLNS) - | _acc]; -'encode_sasl_failure_$reason'('bad-protocol' = Reason, - __TopXMLNS, _acc) -> - [encode_sasl_failure_bad_protocol(Reason, __TopXMLNS) - | _acc]; -'encode_sasl_failure_$reason'('temporary-auth-failure' = - Reason, - __TopXMLNS, _acc) -> - [encode_sasl_failure_temporary_auth_failure(Reason, - __TopXMLNS) - | _acc]. - -decode_sasl_failure_temporary_auth_failure(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"temporary-auth-failure">>, - _attrs, _els}) -> - 'temporary-auth-failure'. - -encode_sasl_failure_temporary_auth_failure('temporary-auth-failure', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"temporary-auth-failure">>, _attrs, _els}. - -decode_sasl_failure_bad_protocol(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"bad-protocol">>, _attrs, _els}) -> - 'bad-protocol'. - -encode_sasl_failure_bad_protocol('bad-protocol', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"bad-protocol">>, _attrs, _els}. - -decode_sasl_failure_not_authorized(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"not-authorized">>, _attrs, - _els}) -> - 'not-authorized'. - -encode_sasl_failure_not_authorized('not-authorized', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"not-authorized">>, _attrs, _els}. - -decode_sasl_failure_mechanism_too_weak(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"mechanism-too-weak">>, _attrs, - _els}) -> - 'mechanism-too-weak'. - -encode_sasl_failure_mechanism_too_weak('mechanism-too-weak', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"mechanism-too-weak">>, _attrs, _els}. - -decode_sasl_failure_malformed_request(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"malformed-request">>, _attrs, - _els}) -> - 'malformed-request'. - -encode_sasl_failure_malformed_request('malformed-request', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"malformed-request">>, _attrs, _els}. - -decode_sasl_failure_invalid_mechanism(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"invalid-mechanism">>, _attrs, - _els}) -> - 'invalid-mechanism'. - -encode_sasl_failure_invalid_mechanism('invalid-mechanism', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"invalid-mechanism">>, _attrs, _els}. - -decode_sasl_failure_invalid_authzid(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"invalid-authzid">>, _attrs, - _els}) -> - 'invalid-authzid'. - -encode_sasl_failure_invalid_authzid('invalid-authzid', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"invalid-authzid">>, _attrs, _els}. - -decode_sasl_failure_incorrect_encoding(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"incorrect-encoding">>, _attrs, - _els}) -> - 'incorrect-encoding'. - -encode_sasl_failure_incorrect_encoding('incorrect-encoding', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"incorrect-encoding">>, _attrs, _els}. - -decode_sasl_failure_encryption_required(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"encryption-required">>, - _attrs, _els}) -> - 'encryption-required'. - -encode_sasl_failure_encryption_required('encryption-required', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"encryption-required">>, _attrs, _els}. - -decode_sasl_failure_credentials_expired(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"credentials-expired">>, - _attrs, _els}) -> - 'credentials-expired'. - -encode_sasl_failure_credentials_expired('credentials-expired', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"credentials-expired">>, _attrs, _els}. - -decode_sasl_failure_account_disabled(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"account-disabled">>, _attrs, - _els}) -> - 'account-disabled'. - -encode_sasl_failure_account_disabled('account-disabled', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"account-disabled">>, _attrs, _els}. - -decode_sasl_failure_aborted(__TopXMLNS, __IgnoreEls, - {xmlel, <<"aborted">>, _attrs, _els}) -> - aborted. - -encode_sasl_failure_aborted(aborted, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"aborted">>, _attrs, _els}. - -decode_sasl_failure_text(__TopXMLNS, __IgnoreEls, - {xmlel, <<"text">>, _attrs, _els}) -> - Data = decode_sasl_failure_text_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Lang = decode_sasl_failure_text_attrs(__TopXMLNS, - _attrs, undefined), - {text, Lang, Data}. - -decode_sasl_failure_text_els(__TopXMLNS, __IgnoreEls, - [], Data) -> - decode_sasl_failure_text_cdata(__TopXMLNS, Data); -decode_sasl_failure_text_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Data) -> - decode_sasl_failure_text_els(__TopXMLNS, __IgnoreEls, - _els, <>); -decode_sasl_failure_text_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Data) -> - decode_sasl_failure_text_els(__TopXMLNS, __IgnoreEls, - _els, Data). - -decode_sasl_failure_text_attrs(__TopXMLNS, - [{<<"xml:lang">>, _val} | _attrs], _Lang) -> - decode_sasl_failure_text_attrs(__TopXMLNS, _attrs, - _val); -decode_sasl_failure_text_attrs(__TopXMLNS, [_ | _attrs], - Lang) -> - decode_sasl_failure_text_attrs(__TopXMLNS, _attrs, - Lang); -decode_sasl_failure_text_attrs(__TopXMLNS, [], Lang) -> - 'decode_sasl_failure_text_attr_xml:lang'(__TopXMLNS, - Lang). - -encode_sasl_failure_text({text, Lang, Data}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - [], __TopXMLNS), - _els = encode_sasl_failure_text_cdata(Data, []), - _attrs = 'encode_sasl_failure_text_attr_xml:lang'(Lang, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"text">>, _attrs, _els}. - -'decode_sasl_failure_text_attr_xml:lang'(__TopXMLNS, - undefined) -> - <<>>; -'decode_sasl_failure_text_attr_xml:lang'(__TopXMLNS, - _val) -> - _val. - -'encode_sasl_failure_text_attr_xml:lang'(<<>>, _acc) -> - _acc; -'encode_sasl_failure_text_attr_xml:lang'(_val, _acc) -> - [{<<"xml:lang">>, _val} | _acc]. - -decode_sasl_failure_text_cdata(__TopXMLNS, <<>>) -> - <<>>; -decode_sasl_failure_text_cdata(__TopXMLNS, _val) -> - _val. - -encode_sasl_failure_text_cdata(<<>>, _acc) -> _acc; -encode_sasl_failure_text_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_sasl_success(__TopXMLNS, __IgnoreEls, - {xmlel, <<"success">>, _attrs, _els}) -> - Text = decode_sasl_success_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - {sasl_success, Text}. - -decode_sasl_success_els(__TopXMLNS, __IgnoreEls, [], - Text) -> - decode_sasl_success_cdata(__TopXMLNS, Text); -decode_sasl_success_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Text) -> - decode_sasl_success_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_sasl_success_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Text) -> - decode_sasl_success_els(__TopXMLNS, __IgnoreEls, _els, - Text). - -encode_sasl_success({sasl_success, Text}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - [], __TopXMLNS), - _els = encode_sasl_success_cdata(Text, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"success">>, _attrs, _els}. - -decode_sasl_success_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_sasl_success_cdata(__TopXMLNS, _val) -> - case catch base64:mime_decode(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_cdata_value, <<>>, <<"success">>, __TopXMLNS}}); - _res -> _res - end. - -encode_sasl_success_cdata(<<>>, _acc) -> _acc; -encode_sasl_success_cdata(_val, _acc) -> - [{xmlcdata, base64:encode(_val)} | _acc]. - -decode_sasl_response(__TopXMLNS, __IgnoreEls, - {xmlel, <<"response">>, _attrs, _els}) -> - Text = decode_sasl_response_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - {sasl_response, Text}. - -decode_sasl_response_els(__TopXMLNS, __IgnoreEls, [], - Text) -> - decode_sasl_response_cdata(__TopXMLNS, Text); -decode_sasl_response_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Text) -> - decode_sasl_response_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_sasl_response_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Text) -> - decode_sasl_response_els(__TopXMLNS, __IgnoreEls, _els, - Text). - -encode_sasl_response({sasl_response, Text}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - [], __TopXMLNS), - _els = encode_sasl_response_cdata(Text, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"response">>, _attrs, _els}. - -decode_sasl_response_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_sasl_response_cdata(__TopXMLNS, _val) -> - case catch base64:mime_decode(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_cdata_value, <<>>, <<"response">>, __TopXMLNS}}); - _res -> _res - end. - -encode_sasl_response_cdata(<<>>, _acc) -> _acc; -encode_sasl_response_cdata(_val, _acc) -> - [{xmlcdata, base64:encode(_val)} | _acc]. - -decode_sasl_challenge(__TopXMLNS, __IgnoreEls, - {xmlel, <<"challenge">>, _attrs, _els}) -> - Text = decode_sasl_challenge_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - {sasl_challenge, Text}. - -decode_sasl_challenge_els(__TopXMLNS, __IgnoreEls, [], - Text) -> - decode_sasl_challenge_cdata(__TopXMLNS, Text); -decode_sasl_challenge_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Text) -> - decode_sasl_challenge_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_sasl_challenge_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Text) -> - decode_sasl_challenge_els(__TopXMLNS, __IgnoreEls, _els, - Text). - -encode_sasl_challenge({sasl_challenge, Text}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - [], __TopXMLNS), - _els = encode_sasl_challenge_cdata(Text, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"challenge">>, _attrs, _els}. - -decode_sasl_challenge_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_sasl_challenge_cdata(__TopXMLNS, _val) -> - case catch base64:mime_decode(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_cdata_value, <<>>, <<"challenge">>, __TopXMLNS}}); - _res -> _res - end. - -encode_sasl_challenge_cdata(<<>>, _acc) -> _acc; -encode_sasl_challenge_cdata(_val, _acc) -> - [{xmlcdata, base64:encode(_val)} | _acc]. - -decode_sasl_abort(__TopXMLNS, __IgnoreEls, - {xmlel, <<"abort">>, _attrs, _els}) -> - {sasl_abort}. - -encode_sasl_abort({sasl_abort}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"abort">>, _attrs, _els}. - -decode_sasl_auth(__TopXMLNS, __IgnoreEls, - {xmlel, <<"auth">>, _attrs, _els}) -> - Text = decode_sasl_auth_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Mechanism = decode_sasl_auth_attrs(__TopXMLNS, _attrs, - undefined), - {sasl_auth, Mechanism, Text}. - -decode_sasl_auth_els(__TopXMLNS, __IgnoreEls, [], - Text) -> - decode_sasl_auth_cdata(__TopXMLNS, Text); -decode_sasl_auth_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Text) -> - decode_sasl_auth_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_sasl_auth_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Text) -> - decode_sasl_auth_els(__TopXMLNS, __IgnoreEls, _els, - Text). - -decode_sasl_auth_attrs(__TopXMLNS, - [{<<"mechanism">>, _val} | _attrs], _Mechanism) -> - decode_sasl_auth_attrs(__TopXMLNS, _attrs, _val); -decode_sasl_auth_attrs(__TopXMLNS, [_ | _attrs], - Mechanism) -> - decode_sasl_auth_attrs(__TopXMLNS, _attrs, Mechanism); -decode_sasl_auth_attrs(__TopXMLNS, [], Mechanism) -> - decode_sasl_auth_attr_mechanism(__TopXMLNS, Mechanism). - -encode_sasl_auth({sasl_auth, Mechanism, Text}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-sasl">>, - [], __TopXMLNS), - _els = encode_sasl_auth_cdata(Text, []), - _attrs = encode_sasl_auth_attr_mechanism(Mechanism, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"auth">>, _attrs, _els}. - -decode_sasl_auth_attr_mechanism(__TopXMLNS, - undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"mechanism">>, <<"auth">>, - __TopXMLNS}}); -decode_sasl_auth_attr_mechanism(__TopXMLNS, _val) -> - _val. - -encode_sasl_auth_attr_mechanism(_val, _acc) -> - [{<<"mechanism">>, _val} | _acc]. - -decode_sasl_auth_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_sasl_auth_cdata(__TopXMLNS, _val) -> - case catch base64:mime_decode(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_cdata_value, <<>>, <<"auth">>, __TopXMLNS}}); - _res -> _res - end. - -encode_sasl_auth_cdata(<<>>, _acc) -> _acc; -encode_sasl_auth_cdata(_val, _acc) -> - [{xmlcdata, base64:encode(_val)} | _acc]. - -decode_legacy_auth(__TopXMLNS, __IgnoreEls, - {xmlel, <<"query">>, _attrs, _els}) -> - {Digest, Password, Resource, Username} = - decode_legacy_auth_els(__TopXMLNS, __IgnoreEls, _els, - undefined, undefined, undefined, undefined), - {legacy_auth, Username, Password, Digest, Resource}. - -decode_legacy_auth_els(__TopXMLNS, __IgnoreEls, [], - Digest, Password, Resource, Username) -> - {Digest, Password, Resource, Username}; -decode_legacy_auth_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"username">>, _attrs, _} = _el | _els], - Digest, Password, Resource, Username) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:auth">> -> - decode_legacy_auth_els(__TopXMLNS, __IgnoreEls, _els, - Digest, Password, Resource, - decode_legacy_auth_username(__TopXMLNS, - __IgnoreEls, _el)); - <<"jabber:iq:auth">> -> - decode_legacy_auth_els(__TopXMLNS, __IgnoreEls, _els, - Digest, Password, Resource, - decode_legacy_auth_username(<<"jabber:iq:auth">>, - __IgnoreEls, _el)); - _ -> - decode_legacy_auth_els(__TopXMLNS, __IgnoreEls, _els, - Digest, Password, Resource, Username) - end; -decode_legacy_auth_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"password">>, _attrs, _} = _el | _els], - Digest, Password, Resource, Username) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:auth">> -> - decode_legacy_auth_els(__TopXMLNS, __IgnoreEls, _els, - Digest, - decode_legacy_auth_password(__TopXMLNS, - __IgnoreEls, _el), - Resource, Username); - <<"jabber:iq:auth">> -> - decode_legacy_auth_els(__TopXMLNS, __IgnoreEls, _els, - Digest, - decode_legacy_auth_password(<<"jabber:iq:auth">>, - __IgnoreEls, _el), - Resource, Username); - _ -> - decode_legacy_auth_els(__TopXMLNS, __IgnoreEls, _els, - Digest, Password, Resource, Username) - end; -decode_legacy_auth_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"digest">>, _attrs, _} = _el | _els], Digest, - Password, Resource, Username) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:auth">> -> - decode_legacy_auth_els(__TopXMLNS, __IgnoreEls, _els, - decode_legacy_auth_digest(__TopXMLNS, - __IgnoreEls, _el), - Password, Resource, Username); - <<"jabber:iq:auth">> -> - decode_legacy_auth_els(__TopXMLNS, __IgnoreEls, _els, - decode_legacy_auth_digest(<<"jabber:iq:auth">>, - __IgnoreEls, _el), - Password, Resource, Username); - _ -> - decode_legacy_auth_els(__TopXMLNS, __IgnoreEls, _els, - Digest, Password, Resource, Username) - end; -decode_legacy_auth_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"resource">>, _attrs, _} = _el | _els], - Digest, Password, Resource, Username) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:auth">> -> - decode_legacy_auth_els(__TopXMLNS, __IgnoreEls, _els, - Digest, Password, - decode_legacy_auth_resource(__TopXMLNS, - __IgnoreEls, _el), - Username); - <<"jabber:iq:auth">> -> - decode_legacy_auth_els(__TopXMLNS, __IgnoreEls, _els, - Digest, Password, - decode_legacy_auth_resource(<<"jabber:iq:auth">>, - __IgnoreEls, _el), - Username); - _ -> - decode_legacy_auth_els(__TopXMLNS, __IgnoreEls, _els, - Digest, Password, Resource, Username) - end; -decode_legacy_auth_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Digest, Password, Resource, Username) -> - decode_legacy_auth_els(__TopXMLNS, __IgnoreEls, _els, - Digest, Password, Resource, Username). - -encode_legacy_auth({legacy_auth, Username, Password, - Digest, Resource}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:iq:auth">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_legacy_auth_$digest'(Digest, - __NewTopXMLNS, - 'encode_legacy_auth_$password'(Password, - __NewTopXMLNS, - 'encode_legacy_auth_$resource'(Resource, - __NewTopXMLNS, - 'encode_legacy_auth_$username'(Username, - __NewTopXMLNS, - []))))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"query">>, _attrs, _els}. - -'encode_legacy_auth_$digest'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_legacy_auth_$digest'(Digest, __TopXMLNS, - _acc) -> - [encode_legacy_auth_digest(Digest, __TopXMLNS) | _acc]. - -'encode_legacy_auth_$password'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_legacy_auth_$password'(Password, __TopXMLNS, - _acc) -> - [encode_legacy_auth_password(Password, __TopXMLNS) - | _acc]. - -'encode_legacy_auth_$resource'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_legacy_auth_$resource'(Resource, __TopXMLNS, - _acc) -> - [encode_legacy_auth_resource(Resource, __TopXMLNS) - | _acc]. - -'encode_legacy_auth_$username'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_legacy_auth_$username'(Username, __TopXMLNS, - _acc) -> - [encode_legacy_auth_username(Username, __TopXMLNS) - | _acc]. - -decode_legacy_auth_resource(__TopXMLNS, __IgnoreEls, - {xmlel, <<"resource">>, _attrs, _els}) -> - Cdata = decode_legacy_auth_resource_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_legacy_auth_resource_els(__TopXMLNS, __IgnoreEls, - [], Cdata) -> - decode_legacy_auth_resource_cdata(__TopXMLNS, Cdata); -decode_legacy_auth_resource_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_legacy_auth_resource_els(__TopXMLNS, __IgnoreEls, - _els, <>); -decode_legacy_auth_resource_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_legacy_auth_resource_els(__TopXMLNS, __IgnoreEls, - _els, Cdata). - -encode_legacy_auth_resource(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:iq:auth">>, - [], __TopXMLNS), - _els = encode_legacy_auth_resource_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"resource">>, _attrs, _els}. - -decode_legacy_auth_resource_cdata(__TopXMLNS, <<>>) -> - <<>>; -decode_legacy_auth_resource_cdata(__TopXMLNS, _val) -> - _val. - -encode_legacy_auth_resource_cdata(<<>>, _acc) -> _acc; -encode_legacy_auth_resource_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_legacy_auth_digest(__TopXMLNS, __IgnoreEls, - {xmlel, <<"digest">>, _attrs, _els}) -> - Cdata = decode_legacy_auth_digest_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_legacy_auth_digest_els(__TopXMLNS, __IgnoreEls, - [], Cdata) -> - decode_legacy_auth_digest_cdata(__TopXMLNS, Cdata); -decode_legacy_auth_digest_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_legacy_auth_digest_els(__TopXMLNS, __IgnoreEls, - _els, <>); -decode_legacy_auth_digest_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_legacy_auth_digest_els(__TopXMLNS, __IgnoreEls, - _els, Cdata). - -encode_legacy_auth_digest(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:iq:auth">>, - [], __TopXMLNS), - _els = encode_legacy_auth_digest_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"digest">>, _attrs, _els}. - -decode_legacy_auth_digest_cdata(__TopXMLNS, <<>>) -> - <<>>; -decode_legacy_auth_digest_cdata(__TopXMLNS, _val) -> - _val. - -encode_legacy_auth_digest_cdata(<<>>, _acc) -> _acc; -encode_legacy_auth_digest_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_legacy_auth_password(__TopXMLNS, __IgnoreEls, - {xmlel, <<"password">>, _attrs, _els}) -> - Cdata = decode_legacy_auth_password_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_legacy_auth_password_els(__TopXMLNS, __IgnoreEls, - [], Cdata) -> - decode_legacy_auth_password_cdata(__TopXMLNS, Cdata); -decode_legacy_auth_password_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_legacy_auth_password_els(__TopXMLNS, __IgnoreEls, - _els, <>); -decode_legacy_auth_password_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_legacy_auth_password_els(__TopXMLNS, __IgnoreEls, - _els, Cdata). - -encode_legacy_auth_password(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:iq:auth">>, - [], __TopXMLNS), - _els = encode_legacy_auth_password_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"password">>, _attrs, _els}. - -decode_legacy_auth_password_cdata(__TopXMLNS, <<>>) -> - <<>>; -decode_legacy_auth_password_cdata(__TopXMLNS, _val) -> - _val. - -encode_legacy_auth_password_cdata(<<>>, _acc) -> _acc; -encode_legacy_auth_password_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_legacy_auth_username(__TopXMLNS, __IgnoreEls, - {xmlel, <<"username">>, _attrs, _els}) -> - Cdata = decode_legacy_auth_username_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_legacy_auth_username_els(__TopXMLNS, __IgnoreEls, - [], Cdata) -> - decode_legacy_auth_username_cdata(__TopXMLNS, Cdata); -decode_legacy_auth_username_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_legacy_auth_username_els(__TopXMLNS, __IgnoreEls, - _els, <>); -decode_legacy_auth_username_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_legacy_auth_username_els(__TopXMLNS, __IgnoreEls, - _els, Cdata). - -encode_legacy_auth_username(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:iq:auth">>, - [], __TopXMLNS), - _els = encode_legacy_auth_username_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"username">>, _attrs, _els}. - -decode_legacy_auth_username_cdata(__TopXMLNS, <<>>) -> - <<>>; -decode_legacy_auth_username_cdata(__TopXMLNS, _val) -> - _val. - -encode_legacy_auth_username_cdata(<<>>, _acc) -> _acc; -encode_legacy_auth_username_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_bind(__TopXMLNS, __IgnoreEls, - {xmlel, <<"bind">>, _attrs, _els}) -> - {Jid, Resource} = decode_bind_els(__TopXMLNS, - __IgnoreEls, _els, undefined, <<>>), - {bind, Jid, Resource}. - -decode_bind_els(__TopXMLNS, __IgnoreEls, [], Jid, - Resource) -> - {Jid, Resource}; -decode_bind_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"jid">>, _attrs, _} = _el | _els], Jid, - Resource) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"urn:ietf:params:xml:ns:xmpp-bind">> -> - decode_bind_els(__TopXMLNS, __IgnoreEls, _els, - decode_bind_jid(__TopXMLNS, __IgnoreEls, _el), - Resource); - <<"urn:ietf:params:xml:ns:xmpp-bind">> -> - decode_bind_els(__TopXMLNS, __IgnoreEls, _els, - decode_bind_jid(<<"urn:ietf:params:xml:ns:xmpp-bind">>, - __IgnoreEls, _el), - Resource); - _ -> - decode_bind_els(__TopXMLNS, __IgnoreEls, _els, Jid, - Resource) - end; -decode_bind_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"resource">>, _attrs, _} = _el | _els], Jid, - Resource) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"urn:ietf:params:xml:ns:xmpp-bind">> -> - decode_bind_els(__TopXMLNS, __IgnoreEls, _els, Jid, - decode_bind_resource(__TopXMLNS, __IgnoreEls, _el)); - <<"urn:ietf:params:xml:ns:xmpp-bind">> -> - decode_bind_els(__TopXMLNS, __IgnoreEls, _els, Jid, - decode_bind_resource(<<"urn:ietf:params:xml:ns:xmpp-bind">>, - __IgnoreEls, _el)); - _ -> - decode_bind_els(__TopXMLNS, __IgnoreEls, _els, Jid, - Resource) - end; -decode_bind_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Jid, Resource) -> - decode_bind_els(__TopXMLNS, __IgnoreEls, _els, Jid, - Resource). - -encode_bind({bind, Jid, Resource}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-bind">>, - [], __TopXMLNS), - _els = lists:reverse('encode_bind_$jid'(Jid, - __NewTopXMLNS, - 'encode_bind_$resource'(Resource, - __NewTopXMLNS, - []))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"bind">>, _attrs, _els}. - -'encode_bind_$jid'(undefined, __TopXMLNS, _acc) -> _acc; -'encode_bind_$jid'(Jid, __TopXMLNS, _acc) -> - [encode_bind_jid(Jid, __TopXMLNS) | _acc]. - -'encode_bind_$resource'(<<>>, __TopXMLNS, _acc) -> _acc; -'encode_bind_$resource'(Resource, __TopXMLNS, _acc) -> - [encode_bind_resource(Resource, __TopXMLNS) | _acc]. - -decode_bind_resource(__TopXMLNS, __IgnoreEls, - {xmlel, <<"resource">>, _attrs, _els}) -> - Cdata = decode_bind_resource_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_bind_resource_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_bind_resource_cdata(__TopXMLNS, Cdata); -decode_bind_resource_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_bind_resource_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_bind_resource_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_bind_resource_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_bind_resource(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-bind">>, - [], __TopXMLNS), - _els = encode_bind_resource_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"resource">>, _attrs, _els}. - -decode_bind_resource_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_bind_resource_cdata(__TopXMLNS, _val) -> - case catch resourceprep(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_cdata_value, <<>>, <<"resource">>, __TopXMLNS}}); - _res -> _res - end. - -encode_bind_resource_cdata(<<>>, _acc) -> _acc; -encode_bind_resource_cdata(_val, _acc) -> - [{xmlcdata, resourceprep(_val)} | _acc]. - -decode_bind_jid(__TopXMLNS, __IgnoreEls, - {xmlel, <<"jid">>, _attrs, _els}) -> - Cdata = decode_bind_jid_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_bind_jid_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_bind_jid_cdata(__TopXMLNS, Cdata); -decode_bind_jid_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_bind_jid_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_bind_jid_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Cdata) -> - decode_bind_jid_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_bind_jid(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-bind">>, - [], __TopXMLNS), - _els = encode_bind_jid_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"jid">>, _attrs, _els}. - -decode_bind_jid_cdata(__TopXMLNS, <<>>) -> undefined; -decode_bind_jid_cdata(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_cdata_value, <<>>, <<"jid">>, __TopXMLNS}}); - _res -> _res - end. - -encode_bind_jid_cdata(undefined, _acc) -> _acc; -encode_bind_jid_cdata(_val, _acc) -> - [{xmlcdata, enc_jid(_val)} | _acc]. - -decode_error(__TopXMLNS, __IgnoreEls, - {xmlel, <<"error">>, _attrs, _els}) -> - {Text, Reason, __Els} = decode_error_els(__TopXMLNS, - __IgnoreEls, _els, undefined, - undefined, []), - {Type, Code, By} = decode_error_attrs(__TopXMLNS, - _attrs, undefined, undefined, - undefined), - {stanza_error, Type, Code, By, Reason, Text, __Els}. - -decode_error_els(__TopXMLNS, __IgnoreEls, [], Text, - Reason, __Els) -> - {Text, Reason, lists:reverse(__Els)}; -decode_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"text">>, _attrs, _} = _el | _els], Text, - Reason, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, - decode_error_text(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el), - Reason, __Els); - _ -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, __Els) - end; -decode_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"bad-request">>, _attrs, _} = _el | _els], - Text, Reason, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - decode_error_bad_request(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el), - __Els); - _ -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, __Els) - end; -decode_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"conflict">>, _attrs, _} = _el | _els], Text, - Reason, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - decode_error_conflict(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el), - __Els); - _ -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, __Els) - end; -decode_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"feature-not-implemented">>, _attrs, _} = _el - | _els], - Text, Reason, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - decode_error_feature_not_implemented(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, - _el), - __Els); - _ -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, __Els) - end; -decode_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"forbidden">>, _attrs, _} = _el | _els], - Text, Reason, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - decode_error_forbidden(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el), - __Els); - _ -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, __Els) - end; -decode_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"gone">>, _attrs, _} = _el | _els], Text, - Reason, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - decode_error_gone(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el), - __Els); - _ -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, __Els) - end; -decode_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"internal-server-error">>, _attrs, _} = _el - | _els], - Text, Reason, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - decode_error_internal_server_error(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el), - __Els); - _ -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, __Els) - end; -decode_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"item-not-found">>, _attrs, _} = _el | _els], - Text, Reason, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - decode_error_item_not_found(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el), - __Els); - _ -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, __Els) - end; -decode_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"jid-malformed">>, _attrs, _} = _el | _els], - Text, Reason, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - decode_error_jid_malformed(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el), - __Els); - _ -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, __Els) - end; -decode_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"not-acceptable">>, _attrs, _} = _el | _els], - Text, Reason, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - decode_error_not_acceptable(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el), - __Els); - _ -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, __Els) - end; -decode_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"not-allowed">>, _attrs, _} = _el | _els], - Text, Reason, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - decode_error_not_allowed(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el), - __Els); - _ -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, __Els) - end; -decode_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"not-authorized">>, _attrs, _} = _el | _els], - Text, Reason, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - decode_error_not_authorized(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el), - __Els); - _ -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, __Els) - end; -decode_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"payment-required">>, _attrs, _} = _el - | _els], - Text, Reason, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - decode_error_payment_required(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el), - __Els); - _ -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, __Els) - end; -decode_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"policy-violation">>, _attrs, _} = _el - | _els], - Text, Reason, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - decode_error_policy_violation(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el), - __Els); - _ -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, __Els) - end; -decode_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"recipient-unavailable">>, _attrs, _} = _el - | _els], - Text, Reason, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - decode_error_recipient_unavailable(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el), - __Els); - _ -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, __Els) - end; -decode_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"redirect">>, _attrs, _} = _el | _els], Text, - Reason, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - decode_error_redirect(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el), - __Els); - _ -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, __Els) - end; -decode_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"registration-required">>, _attrs, _} = _el - | _els], - Text, Reason, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - decode_error_registration_required(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el), - __Els); - _ -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, __Els) - end; -decode_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"remote-server-not-found">>, _attrs, _} = _el - | _els], - Text, Reason, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - decode_error_remote_server_not_found(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, - _el), - __Els); - _ -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, __Els) - end; -decode_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"remote-server-timeout">>, _attrs, _} = _el - | _els], - Text, Reason, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - decode_error_remote_server_timeout(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el), - __Els); - _ -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, __Els) - end; -decode_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"resource-constraint">>, _attrs, _} = _el - | _els], - Text, Reason, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - decode_error_resource_constraint(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el), - __Els); - _ -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, __Els) - end; -decode_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"service-unavailable">>, _attrs, _} = _el - | _els], - Text, Reason, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - decode_error_service_unavailable(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el), - __Els); - _ -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, __Els) - end; -decode_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"subscription-required">>, _attrs, _} = _el - | _els], - Text, Reason, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - decode_error_subscription_required(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el), - __Els); - _ -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, __Els) - end; -decode_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"undefined-condition">>, _attrs, _} = _el - | _els], - Text, Reason, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - decode_error_undefined_condition(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el), - __Els); - _ -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, __Els) - end; -decode_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"unexpected-request">>, _attrs, _} = _el - | _els], - Text, Reason, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"urn:ietf:params:xml:ns:xmpp-stanzas">> -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - decode_error_unexpected_request(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - __IgnoreEls, _el), - __Els); - _ -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, __Els) - end; -decode_error_els(__TopXMLNS, __IgnoreEls, - [{xmlel, _, _, _} = _el | _els], Text, Reason, __Els) -> - if __IgnoreEls -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, [_el | __Els]); - true -> - case is_known_tag(_el, __TopXMLNS) of - true -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, - [decode(_el, __TopXMLNS, []) | __Els]); - false -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, __Els) - end - end; -decode_error_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Text, Reason, __Els) -> - decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text, - Reason, __Els). - -decode_error_attrs(__TopXMLNS, - [{<<"type">>, _val} | _attrs], _Type, Code, By) -> - decode_error_attrs(__TopXMLNS, _attrs, _val, Code, By); -decode_error_attrs(__TopXMLNS, - [{<<"code">>, _val} | _attrs], Type, _Code, By) -> - decode_error_attrs(__TopXMLNS, _attrs, Type, _val, By); -decode_error_attrs(__TopXMLNS, - [{<<"by">>, _val} | _attrs], Type, Code, _By) -> - decode_error_attrs(__TopXMLNS, _attrs, Type, Code, - _val); -decode_error_attrs(__TopXMLNS, [_ | _attrs], Type, Code, - By) -> - decode_error_attrs(__TopXMLNS, _attrs, Type, Code, By); -decode_error_attrs(__TopXMLNS, [], Type, Code, By) -> - {decode_error_attr_type(__TopXMLNS, Type), - decode_error_attr_code(__TopXMLNS, Code), - decode_error_attr_by(__TopXMLNS, By)}. - -encode_error({stanza_error, Type, Code, By, Reason, - Text, __Els}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"jabber:client">>, <<"jabber:server">>, - <<"jabber:component:accept">>], - __TopXMLNS), - _els = [encode(_el, __NewTopXMLNS) || _el <- __Els] ++ - lists:reverse('encode_error_$text'(Text, __NewTopXMLNS, - 'encode_error_$reason'(Reason, - __NewTopXMLNS, - []))), - _attrs = encode_error_attr_by(By, - encode_error_attr_code(Code, - encode_error_attr_type(Type, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)))), - {xmlel, <<"error">>, _attrs, _els}. - -'encode_error_$text'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_error_$text'(Text, __TopXMLNS, _acc) -> - [encode_error_text(Text, __TopXMLNS) | _acc]. - -'encode_error_$reason'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_error_$reason'('bad-request' = Reason, - __TopXMLNS, _acc) -> - [encode_error_bad_request(Reason, __TopXMLNS) | _acc]; -'encode_error_$reason'(conflict = Reason, __TopXMLNS, - _acc) -> - [encode_error_conflict(Reason, __TopXMLNS) | _acc]; -'encode_error_$reason'('feature-not-implemented' = - Reason, - __TopXMLNS, _acc) -> - [encode_error_feature_not_implemented(Reason, - __TopXMLNS) - | _acc]; -'encode_error_$reason'(forbidden = Reason, __TopXMLNS, - _acc) -> - [encode_error_forbidden(Reason, __TopXMLNS) | _acc]; -'encode_error_$reason'({gone, _} = Reason, __TopXMLNS, - _acc) -> - [encode_error_gone(Reason, __TopXMLNS) | _acc]; -'encode_error_$reason'('internal-server-error' = Reason, - __TopXMLNS, _acc) -> - [encode_error_internal_server_error(Reason, __TopXMLNS) - | _acc]; -'encode_error_$reason'('item-not-found' = Reason, - __TopXMLNS, _acc) -> - [encode_error_item_not_found(Reason, __TopXMLNS) - | _acc]; -'encode_error_$reason'('jid-malformed' = Reason, - __TopXMLNS, _acc) -> - [encode_error_jid_malformed(Reason, __TopXMLNS) | _acc]; -'encode_error_$reason'('not-acceptable' = Reason, - __TopXMLNS, _acc) -> - [encode_error_not_acceptable(Reason, __TopXMLNS) - | _acc]; -'encode_error_$reason'('not-allowed' = Reason, - __TopXMLNS, _acc) -> - [encode_error_not_allowed(Reason, __TopXMLNS) | _acc]; -'encode_error_$reason'('not-authorized' = Reason, - __TopXMLNS, _acc) -> - [encode_error_not_authorized(Reason, __TopXMLNS) - | _acc]; -'encode_error_$reason'('payment-required' = Reason, - __TopXMLNS, _acc) -> - [encode_error_payment_required(Reason, __TopXMLNS) - | _acc]; -'encode_error_$reason'('policy-violation' = Reason, - __TopXMLNS, _acc) -> - [encode_error_policy_violation(Reason, __TopXMLNS) - | _acc]; -'encode_error_$reason'('recipient-unavailable' = Reason, - __TopXMLNS, _acc) -> - [encode_error_recipient_unavailable(Reason, __TopXMLNS) - | _acc]; -'encode_error_$reason'({redirect, _} = Reason, - __TopXMLNS, _acc) -> - [encode_error_redirect(Reason, __TopXMLNS) | _acc]; -'encode_error_$reason'('registration-required' = Reason, - __TopXMLNS, _acc) -> - [encode_error_registration_required(Reason, __TopXMLNS) - | _acc]; -'encode_error_$reason'('remote-server-not-found' = - Reason, - __TopXMLNS, _acc) -> - [encode_error_remote_server_not_found(Reason, - __TopXMLNS) - | _acc]; -'encode_error_$reason'('remote-server-timeout' = Reason, - __TopXMLNS, _acc) -> - [encode_error_remote_server_timeout(Reason, __TopXMLNS) - | _acc]; -'encode_error_$reason'('resource-constraint' = Reason, - __TopXMLNS, _acc) -> - [encode_error_resource_constraint(Reason, __TopXMLNS) - | _acc]; -'encode_error_$reason'('service-unavailable' = Reason, - __TopXMLNS, _acc) -> - [encode_error_service_unavailable(Reason, __TopXMLNS) - | _acc]; -'encode_error_$reason'('subscription-required' = Reason, - __TopXMLNS, _acc) -> - [encode_error_subscription_required(Reason, __TopXMLNS) - | _acc]; -'encode_error_$reason'('undefined-condition' = Reason, - __TopXMLNS, _acc) -> - [encode_error_undefined_condition(Reason, __TopXMLNS) - | _acc]; -'encode_error_$reason'('unexpected-request' = Reason, - __TopXMLNS, _acc) -> - [encode_error_unexpected_request(Reason, __TopXMLNS) - | _acc]. - -decode_error_attr_type(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"type">>, <<"error">>, __TopXMLNS}}); -decode_error_attr_type(__TopXMLNS, _val) -> - case catch dec_enum(_val, - [auth, cancel, continue, modify, wait]) - of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"type">>, <<"error">>, __TopXMLNS}}); - _res -> _res - end. - -encode_error_attr_type(_val, _acc) -> - [{<<"type">>, enc_enum(_val)} | _acc]. - -decode_error_attr_code(__TopXMLNS, undefined) -> - undefined; -decode_error_attr_code(__TopXMLNS, _val) -> - case catch dec_int(_val, 0, infinity) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"code">>, <<"error">>, __TopXMLNS}}); - _res -> _res - end. - -encode_error_attr_code(undefined, _acc) -> _acc; -encode_error_attr_code(_val, _acc) -> - [{<<"code">>, enc_int(_val)} | _acc]. - -decode_error_attr_by(__TopXMLNS, undefined) -> <<>>; -decode_error_attr_by(__TopXMLNS, _val) -> _val. - -encode_error_attr_by(<<>>, _acc) -> _acc; -encode_error_attr_by(_val, _acc) -> - [{<<"by">>, _val} | _acc]. - -decode_error_text(__TopXMLNS, __IgnoreEls, - {xmlel, <<"text">>, _attrs, _els}) -> - Data = decode_error_text_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Lang = decode_error_text_attrs(__TopXMLNS, _attrs, - undefined), - {text, Lang, Data}. - -decode_error_text_els(__TopXMLNS, __IgnoreEls, [], - Data) -> - decode_error_text_cdata(__TopXMLNS, Data); -decode_error_text_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Data) -> - decode_error_text_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_error_text_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Data) -> - decode_error_text_els(__TopXMLNS, __IgnoreEls, _els, - Data). - -decode_error_text_attrs(__TopXMLNS, - [{<<"xml:lang">>, _val} | _attrs], _Lang) -> - decode_error_text_attrs(__TopXMLNS, _attrs, _val); -decode_error_text_attrs(__TopXMLNS, [_ | _attrs], - Lang) -> - decode_error_text_attrs(__TopXMLNS, _attrs, Lang); -decode_error_text_attrs(__TopXMLNS, [], Lang) -> - 'decode_error_text_attr_xml:lang'(__TopXMLNS, Lang). - -encode_error_text({text, Lang, Data}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - [], __TopXMLNS), - _els = encode_error_text_cdata(Data, []), - _attrs = 'encode_error_text_attr_xml:lang'(Lang, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"text">>, _attrs, _els}. - -'decode_error_text_attr_xml:lang'(__TopXMLNS, - undefined) -> - <<>>; -'decode_error_text_attr_xml:lang'(__TopXMLNS, _val) -> - _val. - -'encode_error_text_attr_xml:lang'(<<>>, _acc) -> _acc; -'encode_error_text_attr_xml:lang'(_val, _acc) -> - [{<<"xml:lang">>, _val} | _acc]. - -decode_error_text_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_error_text_cdata(__TopXMLNS, _val) -> _val. - -encode_error_text_cdata(<<>>, _acc) -> _acc; -encode_error_text_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_error_unexpected_request(__TopXMLNS, __IgnoreEls, - {xmlel, <<"unexpected-request">>, _attrs, - _els}) -> - 'unexpected-request'. - -encode_error_unexpected_request('unexpected-request', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"unexpected-request">>, _attrs, _els}. - -decode_error_undefined_condition(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"undefined-condition">>, _attrs, - _els}) -> - 'undefined-condition'. - -encode_error_undefined_condition('undefined-condition', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"undefined-condition">>, _attrs, _els}. - -decode_error_subscription_required(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"subscription-required">>, _attrs, - _els}) -> - 'subscription-required'. - -encode_error_subscription_required('subscription-required', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"subscription-required">>, _attrs, _els}. - -decode_error_service_unavailable(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"service-unavailable">>, _attrs, - _els}) -> - 'service-unavailable'. - -encode_error_service_unavailable('service-unavailable', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"service-unavailable">>, _attrs, _els}. - -decode_error_resource_constraint(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"resource-constraint">>, _attrs, - _els}) -> - 'resource-constraint'. - -encode_error_resource_constraint('resource-constraint', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"resource-constraint">>, _attrs, _els}. - -decode_error_remote_server_timeout(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"remote-server-timeout">>, _attrs, - _els}) -> - 'remote-server-timeout'. - -encode_error_remote_server_timeout('remote-server-timeout', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"remote-server-timeout">>, _attrs, _els}. - -decode_error_remote_server_not_found(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"remote-server-not-found">>, - _attrs, _els}) -> - 'remote-server-not-found'. - -encode_error_remote_server_not_found('remote-server-not-found', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"remote-server-not-found">>, _attrs, _els}. - -decode_error_registration_required(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"registration-required">>, _attrs, - _els}) -> - 'registration-required'. - -encode_error_registration_required('registration-required', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"registration-required">>, _attrs, _els}. - -decode_error_redirect(__TopXMLNS, __IgnoreEls, - {xmlel, <<"redirect">>, _attrs, _els}) -> - Uri = decode_error_redirect_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - {redirect, Uri}. - -decode_error_redirect_els(__TopXMLNS, __IgnoreEls, [], - Uri) -> - decode_error_redirect_cdata(__TopXMLNS, Uri); -decode_error_redirect_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Uri) -> - decode_error_redirect_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_error_redirect_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Uri) -> - decode_error_redirect_els(__TopXMLNS, __IgnoreEls, _els, - Uri). - -encode_error_redirect({redirect, Uri}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - [], __TopXMLNS), - _els = encode_error_redirect_cdata(Uri, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"redirect">>, _attrs, _els}. - -decode_error_redirect_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_error_redirect_cdata(__TopXMLNS, _val) -> _val. - -encode_error_redirect_cdata(<<>>, _acc) -> _acc; -encode_error_redirect_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_error_recipient_unavailable(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"recipient-unavailable">>, _attrs, - _els}) -> - 'recipient-unavailable'. - -encode_error_recipient_unavailable('recipient-unavailable', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"recipient-unavailable">>, _attrs, _els}. - -decode_error_policy_violation(__TopXMLNS, __IgnoreEls, - {xmlel, <<"policy-violation">>, _attrs, _els}) -> - 'policy-violation'. - -encode_error_policy_violation('policy-violation', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"policy-violation">>, _attrs, _els}. - -decode_error_payment_required(__TopXMLNS, __IgnoreEls, - {xmlel, <<"payment-required">>, _attrs, _els}) -> - 'payment-required'. - -encode_error_payment_required('payment-required', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"payment-required">>, _attrs, _els}. - -decode_error_not_authorized(__TopXMLNS, __IgnoreEls, - {xmlel, <<"not-authorized">>, _attrs, _els}) -> - 'not-authorized'. - -encode_error_not_authorized('not-authorized', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"not-authorized">>, _attrs, _els}. - -decode_error_not_allowed(__TopXMLNS, __IgnoreEls, - {xmlel, <<"not-allowed">>, _attrs, _els}) -> - 'not-allowed'. - -encode_error_not_allowed('not-allowed', __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"not-allowed">>, _attrs, _els}. - -decode_error_not_acceptable(__TopXMLNS, __IgnoreEls, - {xmlel, <<"not-acceptable">>, _attrs, _els}) -> - 'not-acceptable'. - -encode_error_not_acceptable('not-acceptable', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"not-acceptable">>, _attrs, _els}. - -decode_error_jid_malformed(__TopXMLNS, __IgnoreEls, - {xmlel, <<"jid-malformed">>, _attrs, _els}) -> - 'jid-malformed'. - -encode_error_jid_malformed('jid-malformed', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"jid-malformed">>, _attrs, _els}. - -decode_error_item_not_found(__TopXMLNS, __IgnoreEls, - {xmlel, <<"item-not-found">>, _attrs, _els}) -> - 'item-not-found'. - -encode_error_item_not_found('item-not-found', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"item-not-found">>, _attrs, _els}. - -decode_error_internal_server_error(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"internal-server-error">>, _attrs, - _els}) -> - 'internal-server-error'. - -encode_error_internal_server_error('internal-server-error', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"internal-server-error">>, _attrs, _els}. - -decode_error_gone(__TopXMLNS, __IgnoreEls, - {xmlel, <<"gone">>, _attrs, _els}) -> - Uri = decode_error_gone_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - {gone, Uri}. - -decode_error_gone_els(__TopXMLNS, __IgnoreEls, [], - Uri) -> - decode_error_gone_cdata(__TopXMLNS, Uri); -decode_error_gone_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Uri) -> - decode_error_gone_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_error_gone_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Uri) -> - decode_error_gone_els(__TopXMLNS, __IgnoreEls, _els, - Uri). - -encode_error_gone({gone, Uri}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - [], __TopXMLNS), - _els = encode_error_gone_cdata(Uri, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"gone">>, _attrs, _els}. - -decode_error_gone_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_error_gone_cdata(__TopXMLNS, _val) -> _val. - -encode_error_gone_cdata(<<>>, _acc) -> _acc; -encode_error_gone_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_error_forbidden(__TopXMLNS, __IgnoreEls, - {xmlel, <<"forbidden">>, _attrs, _els}) -> - forbidden. - -encode_error_forbidden(forbidden, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"forbidden">>, _attrs, _els}. - -decode_error_feature_not_implemented(__TopXMLNS, - __IgnoreEls, - {xmlel, <<"feature-not-implemented">>, - _attrs, _els}) -> - 'feature-not-implemented'. - -encode_error_feature_not_implemented('feature-not-implemented', - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"feature-not-implemented">>, _attrs, _els}. - -decode_error_conflict(__TopXMLNS, __IgnoreEls, - {xmlel, <<"conflict">>, _attrs, _els}) -> - conflict. - -encode_error_conflict(conflict, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"conflict">>, _attrs, _els}. - -decode_error_bad_request(__TopXMLNS, __IgnoreEls, - {xmlel, <<"bad-request">>, _attrs, _els}) -> - 'bad-request'. - -encode_error_bad_request('bad-request', __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:ietf:params:xml:ns:xmpp-stanzas">>, - [], __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"bad-request">>, _attrs, _els}. - -decode_presence(__TopXMLNS, __IgnoreEls, - {xmlel, <<"presence">>, _attrs, _els}) -> - {Status, Show, Priority, __Els} = - decode_presence_els(__TopXMLNS, __IgnoreEls, _els, [], - undefined, undefined, []), - {Id, Type, From, To, Lang} = - decode_presence_attrs(__TopXMLNS, _attrs, undefined, - undefined, undefined, undefined, undefined), - {presence, Id, Type, Lang, From, To, Show, Status, - Priority, __Els}. - -decode_presence_els(__TopXMLNS, __IgnoreEls, [], Status, - Show, Priority, __Els) -> - {lists:reverse(Status), Show, Priority, - lists:reverse(__Els)}; -decode_presence_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"show">>, _attrs, _} = _el | _els], Status, - Show, Priority, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == <<"jabber:server">>; - __TopXMLNS == <<"jabber:component:accept">>; - __TopXMLNS == <<"jabber:client">> -> - decode_presence_els(__TopXMLNS, __IgnoreEls, _els, - Status, - decode_presence_show(__TopXMLNS, __IgnoreEls, - _el), - Priority, __Els); - <<"jabber:client">> -> - decode_presence_els(__TopXMLNS, __IgnoreEls, _els, - Status, - decode_presence_show(<<"jabber:client">>, - __IgnoreEls, _el), - Priority, __Els); - <<"jabber:server">> -> - decode_presence_els(__TopXMLNS, __IgnoreEls, _els, - Status, - decode_presence_show(<<"jabber:server">>, - __IgnoreEls, _el), - Priority, __Els); - <<"jabber:component:accept">> -> - decode_presence_els(__TopXMLNS, __IgnoreEls, _els, - Status, - decode_presence_show(<<"jabber:component:accept">>, - __IgnoreEls, _el), - Priority, __Els); - _ -> - decode_presence_els(__TopXMLNS, __IgnoreEls, _els, - Status, Show, Priority, __Els) - end; -decode_presence_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"status">>, _attrs, _} = _el | _els], Status, - Show, Priority, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == <<"jabber:server">>; - __TopXMLNS == <<"jabber:component:accept">>; - __TopXMLNS == <<"jabber:client">> -> - decode_presence_els(__TopXMLNS, __IgnoreEls, _els, - [decode_presence_status(__TopXMLNS, __IgnoreEls, - _el) - | Status], - Show, Priority, __Els); - <<"jabber:client">> -> - decode_presence_els(__TopXMLNS, __IgnoreEls, _els, - [decode_presence_status(<<"jabber:client">>, - __IgnoreEls, _el) - | Status], - Show, Priority, __Els); - <<"jabber:server">> -> - decode_presence_els(__TopXMLNS, __IgnoreEls, _els, - [decode_presence_status(<<"jabber:server">>, - __IgnoreEls, _el) - | Status], - Show, Priority, __Els); - <<"jabber:component:accept">> -> - decode_presence_els(__TopXMLNS, __IgnoreEls, _els, - [decode_presence_status(<<"jabber:component:accept">>, - __IgnoreEls, _el) - | Status], - Show, Priority, __Els); - _ -> - decode_presence_els(__TopXMLNS, __IgnoreEls, _els, - Status, Show, Priority, __Els) - end; -decode_presence_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"priority">>, _attrs, _} = _el | _els], - Status, Show, Priority, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == <<"jabber:server">>; - __TopXMLNS == <<"jabber:component:accept">>; - __TopXMLNS == <<"jabber:client">> -> - decode_presence_els(__TopXMLNS, __IgnoreEls, _els, - Status, Show, - decode_presence_priority(__TopXMLNS, __IgnoreEls, - _el), - __Els); - <<"jabber:client">> -> - decode_presence_els(__TopXMLNS, __IgnoreEls, _els, - Status, Show, - decode_presence_priority(<<"jabber:client">>, - __IgnoreEls, _el), - __Els); - <<"jabber:server">> -> - decode_presence_els(__TopXMLNS, __IgnoreEls, _els, - Status, Show, - decode_presence_priority(<<"jabber:server">>, - __IgnoreEls, _el), - __Els); - <<"jabber:component:accept">> -> - decode_presence_els(__TopXMLNS, __IgnoreEls, _els, - Status, Show, - decode_presence_priority(<<"jabber:component:accept">>, - __IgnoreEls, _el), - __Els); - _ -> - decode_presence_els(__TopXMLNS, __IgnoreEls, _els, - Status, Show, Priority, __Els) - end; -decode_presence_els(__TopXMLNS, __IgnoreEls, - [{xmlel, _, _, _} = _el | _els], Status, Show, Priority, - __Els) -> - if __IgnoreEls -> - decode_presence_els(__TopXMLNS, __IgnoreEls, _els, - Status, Show, Priority, [_el | __Els]); - true -> - case is_known_tag(_el, __TopXMLNS) of - true -> - decode_presence_els(__TopXMLNS, __IgnoreEls, _els, - Status, Show, Priority, - [decode(_el, __TopXMLNS, []) | __Els]); - false -> - decode_presence_els(__TopXMLNS, __IgnoreEls, _els, - Status, Show, Priority, __Els) - end - end; -decode_presence_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Status, Show, Priority, __Els) -> - decode_presence_els(__TopXMLNS, __IgnoreEls, _els, - Status, Show, Priority, __Els). - -decode_presence_attrs(__TopXMLNS, - [{<<"id">>, _val} | _attrs], _Id, Type, From, To, - Lang) -> - decode_presence_attrs(__TopXMLNS, _attrs, _val, Type, - From, To, Lang); -decode_presence_attrs(__TopXMLNS, - [{<<"type">>, _val} | _attrs], Id, _Type, From, To, - Lang) -> - decode_presence_attrs(__TopXMLNS, _attrs, Id, _val, - From, To, Lang); -decode_presence_attrs(__TopXMLNS, - [{<<"from">>, _val} | _attrs], Id, Type, _From, To, - Lang) -> - decode_presence_attrs(__TopXMLNS, _attrs, Id, Type, - _val, To, Lang); -decode_presence_attrs(__TopXMLNS, - [{<<"to">>, _val} | _attrs], Id, Type, From, _To, - Lang) -> - decode_presence_attrs(__TopXMLNS, _attrs, Id, Type, - From, _val, Lang); -decode_presence_attrs(__TopXMLNS, - [{<<"xml:lang">>, _val} | _attrs], Id, Type, From, To, - _Lang) -> - decode_presence_attrs(__TopXMLNS, _attrs, Id, Type, - From, To, _val); -decode_presence_attrs(__TopXMLNS, [_ | _attrs], Id, - Type, From, To, Lang) -> - decode_presence_attrs(__TopXMLNS, _attrs, Id, Type, - From, To, Lang); -decode_presence_attrs(__TopXMLNS, [], Id, Type, From, - To, Lang) -> - {decode_presence_attr_id(__TopXMLNS, Id), - decode_presence_attr_type(__TopXMLNS, Type), - decode_presence_attr_from(__TopXMLNS, From), - decode_presence_attr_to(__TopXMLNS, To), - 'decode_presence_attr_xml:lang'(__TopXMLNS, Lang)}. - -encode_presence({presence, Id, Type, Lang, From, To, - Show, Status, Priority, __Els}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"jabber:client">>, <<"jabber:server">>, - <<"jabber:component:accept">>], - __TopXMLNS), - _els = [encode(_el, __NewTopXMLNS) || _el <- __Els] ++ - lists:reverse('encode_presence_$status'(Status, - __NewTopXMLNS, - 'encode_presence_$show'(Show, - __NewTopXMLNS, - 'encode_presence_$priority'(Priority, - __NewTopXMLNS, - [])))), - _attrs = 'encode_presence_attr_xml:lang'(Lang, - encode_presence_attr_to(To, - encode_presence_attr_from(From, - encode_presence_attr_type(Type, - encode_presence_attr_id(Id, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)))))), - {xmlel, <<"presence">>, _attrs, _els}. - -'encode_presence_$status'([], __TopXMLNS, _acc) -> _acc; -'encode_presence_$status'([Status | _els], __TopXMLNS, - _acc) -> - 'encode_presence_$status'(_els, __TopXMLNS, - [encode_presence_status(Status, __TopXMLNS) - | _acc]). - -'encode_presence_$show'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_presence_$show'(Show, __TopXMLNS, _acc) -> - [encode_presence_show(Show, __TopXMLNS) | _acc]. - -'encode_presence_$priority'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_presence_$priority'(Priority, __TopXMLNS, - _acc) -> - [encode_presence_priority(Priority, __TopXMLNS) | _acc]. - -decode_presence_attr_id(__TopXMLNS, undefined) -> <<>>; -decode_presence_attr_id(__TopXMLNS, _val) -> _val. - -encode_presence_attr_id(<<>>, _acc) -> _acc; -encode_presence_attr_id(_val, _acc) -> - [{<<"id">>, _val} | _acc]. - -decode_presence_attr_type(__TopXMLNS, undefined) -> - available; -decode_presence_attr_type(__TopXMLNS, _val) -> - case catch dec_enum(_val, - [unavailable, subscribe, subscribed, unsubscribe, - unsubscribed, available, probe, error]) - of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"type">>, <<"presence">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_presence_attr_type(available, _acc) -> _acc; -encode_presence_attr_type(_val, _acc) -> - [{<<"type">>, enc_enum(_val)} | _acc]. - -decode_presence_attr_from(__TopXMLNS, undefined) -> - undefined; -decode_presence_attr_from(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"from">>, <<"presence">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_presence_attr_from(undefined, _acc) -> _acc; -encode_presence_attr_from(_val, _acc) -> - [{<<"from">>, enc_jid(_val)} | _acc]. - -decode_presence_attr_to(__TopXMLNS, undefined) -> - undefined; -decode_presence_attr_to(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"to">>, <<"presence">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_presence_attr_to(undefined, _acc) -> _acc; -encode_presence_attr_to(_val, _acc) -> - [{<<"to">>, enc_jid(_val)} | _acc]. - -'decode_presence_attr_xml:lang'(__TopXMLNS, - undefined) -> - <<>>; -'decode_presence_attr_xml:lang'(__TopXMLNS, _val) -> - _val. - -'encode_presence_attr_xml:lang'(<<>>, _acc) -> _acc; -'encode_presence_attr_xml:lang'(_val, _acc) -> - [{<<"xml:lang">>, _val} | _acc]. - -decode_presence_priority(__TopXMLNS, __IgnoreEls, - {xmlel, <<"priority">>, _attrs, _els}) -> - Cdata = decode_presence_priority_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_presence_priority_els(__TopXMLNS, __IgnoreEls, - [], Cdata) -> - decode_presence_priority_cdata(__TopXMLNS, Cdata); -decode_presence_priority_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_presence_priority_els(__TopXMLNS, __IgnoreEls, - _els, <>); -decode_presence_priority_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_presence_priority_els(__TopXMLNS, __IgnoreEls, - _els, Cdata). - -encode_presence_priority(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"jabber:client">>, <<"jabber:server">>, - <<"jabber:component:accept">>], - __TopXMLNS), - _els = encode_presence_priority_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"priority">>, _attrs, _els}. - -decode_presence_priority_cdata(__TopXMLNS, <<>>) -> - undefined; -decode_presence_priority_cdata(__TopXMLNS, _val) -> - case catch dec_int(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_cdata_value, <<>>, <<"priority">>, __TopXMLNS}}); - _res -> _res - end. - -encode_presence_priority_cdata(undefined, _acc) -> _acc; -encode_presence_priority_cdata(_val, _acc) -> - [{xmlcdata, enc_int(_val)} | _acc]. - -decode_presence_status(__TopXMLNS, __IgnoreEls, - {xmlel, <<"status">>, _attrs, _els}) -> - Data = decode_presence_status_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Lang = decode_presence_status_attrs(__TopXMLNS, _attrs, - undefined), - {text, Lang, Data}. - -decode_presence_status_els(__TopXMLNS, __IgnoreEls, [], - Data) -> - decode_presence_status_cdata(__TopXMLNS, Data); -decode_presence_status_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Data) -> - decode_presence_status_els(__TopXMLNS, __IgnoreEls, - _els, <>); -decode_presence_status_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Data) -> - decode_presence_status_els(__TopXMLNS, __IgnoreEls, - _els, Data). - -decode_presence_status_attrs(__TopXMLNS, - [{<<"xml:lang">>, _val} | _attrs], _Lang) -> - decode_presence_status_attrs(__TopXMLNS, _attrs, _val); -decode_presence_status_attrs(__TopXMLNS, [_ | _attrs], - Lang) -> - decode_presence_status_attrs(__TopXMLNS, _attrs, Lang); -decode_presence_status_attrs(__TopXMLNS, [], Lang) -> - 'decode_presence_status_attr_xml:lang'(__TopXMLNS, - Lang). - -encode_presence_status({text, Lang, Data}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"jabber:client">>, <<"jabber:server">>, - <<"jabber:component:accept">>], - __TopXMLNS), - _els = encode_presence_status_cdata(Data, []), - _attrs = 'encode_presence_status_attr_xml:lang'(Lang, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"status">>, _attrs, _els}. - -'decode_presence_status_attr_xml:lang'(__TopXMLNS, - undefined) -> - <<>>; -'decode_presence_status_attr_xml:lang'(__TopXMLNS, - _val) -> - _val. - -'encode_presence_status_attr_xml:lang'(<<>>, _acc) -> - _acc; -'encode_presence_status_attr_xml:lang'(_val, _acc) -> - [{<<"xml:lang">>, _val} | _acc]. - -decode_presence_status_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_presence_status_cdata(__TopXMLNS, _val) -> _val. - -encode_presence_status_cdata(<<>>, _acc) -> _acc; -encode_presence_status_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_presence_show(__TopXMLNS, __IgnoreEls, - {xmlel, <<"show">>, _attrs, _els}) -> - Cdata = decode_presence_show_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_presence_show_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_presence_show_cdata(__TopXMLNS, Cdata); -decode_presence_show_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_presence_show_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_presence_show_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_presence_show_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_presence_show(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"jabber:client">>, <<"jabber:server">>, - <<"jabber:component:accept">>], - __TopXMLNS), - _els = encode_presence_show_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"show">>, _attrs, _els}. - -decode_presence_show_cdata(__TopXMLNS, <<>>) -> - undefined; -decode_presence_show_cdata(__TopXMLNS, _val) -> - case catch dec_enum(_val, [away, chat, dnd, xa]) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_cdata_value, <<>>, <<"show">>, __TopXMLNS}}); - _res -> _res - end. - -encode_presence_show_cdata(undefined, _acc) -> _acc; -encode_presence_show_cdata(_val, _acc) -> - [{xmlcdata, enc_enum(_val)} | _acc]. - -decode_message(__TopXMLNS, __IgnoreEls, - {xmlel, <<"message">>, _attrs, _els}) -> - {Thread, Subject, Body, __Els} = - decode_message_els(__TopXMLNS, __IgnoreEls, _els, - undefined, [], [], []), - {Id, Type, From, To, Lang} = - decode_message_attrs(__TopXMLNS, _attrs, undefined, - undefined, undefined, undefined, undefined), - {message, Id, Type, Lang, From, To, Subject, Body, - Thread, __Els}. - -decode_message_els(__TopXMLNS, __IgnoreEls, [], Thread, - Subject, Body, __Els) -> - {Thread, lists:reverse(Subject), lists:reverse(Body), - lists:reverse(__Els)}; -decode_message_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"subject">>, _attrs, _} = _el | _els], - Thread, Subject, Body, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == <<"jabber:server">>; - __TopXMLNS == <<"jabber:component:accept">>; - __TopXMLNS == <<"jabber:client">> -> - decode_message_els(__TopXMLNS, __IgnoreEls, _els, - Thread, - [decode_message_subject(__TopXMLNS, __IgnoreEls, - _el) - | Subject], - Body, __Els); - <<"jabber:client">> -> - decode_message_els(__TopXMLNS, __IgnoreEls, _els, - Thread, - [decode_message_subject(<<"jabber:client">>, - __IgnoreEls, _el) - | Subject], - Body, __Els); - <<"jabber:server">> -> - decode_message_els(__TopXMLNS, __IgnoreEls, _els, - Thread, - [decode_message_subject(<<"jabber:server">>, - __IgnoreEls, _el) - | Subject], - Body, __Els); - <<"jabber:component:accept">> -> - decode_message_els(__TopXMLNS, __IgnoreEls, _els, - Thread, - [decode_message_subject(<<"jabber:component:accept">>, - __IgnoreEls, _el) - | Subject], - Body, __Els); - _ -> - decode_message_els(__TopXMLNS, __IgnoreEls, _els, - Thread, Subject, Body, __Els) - end; -decode_message_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"thread">>, _attrs, _} = _el | _els], Thread, - Subject, Body, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == <<"jabber:server">>; - __TopXMLNS == <<"jabber:component:accept">>; - __TopXMLNS == <<"jabber:client">> -> - decode_message_els(__TopXMLNS, __IgnoreEls, _els, - decode_message_thread(__TopXMLNS, __IgnoreEls, - _el), - Subject, Body, __Els); - <<"jabber:client">> -> - decode_message_els(__TopXMLNS, __IgnoreEls, _els, - decode_message_thread(<<"jabber:client">>, - __IgnoreEls, _el), - Subject, Body, __Els); - <<"jabber:server">> -> - decode_message_els(__TopXMLNS, __IgnoreEls, _els, - decode_message_thread(<<"jabber:server">>, - __IgnoreEls, _el), - Subject, Body, __Els); - <<"jabber:component:accept">> -> - decode_message_els(__TopXMLNS, __IgnoreEls, _els, - decode_message_thread(<<"jabber:component:accept">>, - __IgnoreEls, _el), - Subject, Body, __Els); - _ -> - decode_message_els(__TopXMLNS, __IgnoreEls, _els, - Thread, Subject, Body, __Els) - end; -decode_message_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"body">>, _attrs, _} = _el | _els], Thread, - Subject, Body, __Els) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == <<"jabber:server">>; - __TopXMLNS == <<"jabber:component:accept">>; - __TopXMLNS == <<"jabber:client">> -> - decode_message_els(__TopXMLNS, __IgnoreEls, _els, - Thread, Subject, - [decode_message_body(__TopXMLNS, __IgnoreEls, _el) - | Body], - __Els); - <<"jabber:client">> -> - decode_message_els(__TopXMLNS, __IgnoreEls, _els, - Thread, Subject, - [decode_message_body(<<"jabber:client">>, - __IgnoreEls, _el) - | Body], - __Els); - <<"jabber:server">> -> - decode_message_els(__TopXMLNS, __IgnoreEls, _els, - Thread, Subject, - [decode_message_body(<<"jabber:server">>, - __IgnoreEls, _el) - | Body], - __Els); - <<"jabber:component:accept">> -> - decode_message_els(__TopXMLNS, __IgnoreEls, _els, - Thread, Subject, - [decode_message_body(<<"jabber:component:accept">>, - __IgnoreEls, _el) - | Body], - __Els); - _ -> - decode_message_els(__TopXMLNS, __IgnoreEls, _els, - Thread, Subject, Body, __Els) - end; -decode_message_els(__TopXMLNS, __IgnoreEls, - [{xmlel, _, _, _} = _el | _els], Thread, Subject, Body, - __Els) -> - if __IgnoreEls -> - decode_message_els(__TopXMLNS, __IgnoreEls, _els, - Thread, Subject, Body, [_el | __Els]); - true -> - case is_known_tag(_el, __TopXMLNS) of - true -> - decode_message_els(__TopXMLNS, __IgnoreEls, _els, - Thread, Subject, Body, - [decode(_el, __TopXMLNS, []) | __Els]); - false -> - decode_message_els(__TopXMLNS, __IgnoreEls, _els, - Thread, Subject, Body, __Els) - end - end; -decode_message_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Thread, Subject, Body, __Els) -> - decode_message_els(__TopXMLNS, __IgnoreEls, _els, - Thread, Subject, Body, __Els). - -decode_message_attrs(__TopXMLNS, - [{<<"id">>, _val} | _attrs], _Id, Type, From, To, - Lang) -> - decode_message_attrs(__TopXMLNS, _attrs, _val, Type, - From, To, Lang); -decode_message_attrs(__TopXMLNS, - [{<<"type">>, _val} | _attrs], Id, _Type, From, To, - Lang) -> - decode_message_attrs(__TopXMLNS, _attrs, Id, _val, From, - To, Lang); -decode_message_attrs(__TopXMLNS, - [{<<"from">>, _val} | _attrs], Id, Type, _From, To, - Lang) -> - decode_message_attrs(__TopXMLNS, _attrs, Id, Type, _val, - To, Lang); -decode_message_attrs(__TopXMLNS, - [{<<"to">>, _val} | _attrs], Id, Type, From, _To, - Lang) -> - decode_message_attrs(__TopXMLNS, _attrs, Id, Type, From, - _val, Lang); -decode_message_attrs(__TopXMLNS, - [{<<"xml:lang">>, _val} | _attrs], Id, Type, From, To, - _Lang) -> - decode_message_attrs(__TopXMLNS, _attrs, Id, Type, From, - To, _val); -decode_message_attrs(__TopXMLNS, [_ | _attrs], Id, Type, - From, To, Lang) -> - decode_message_attrs(__TopXMLNS, _attrs, Id, Type, From, - To, Lang); -decode_message_attrs(__TopXMLNS, [], Id, Type, From, To, - Lang) -> - {decode_message_attr_id(__TopXMLNS, Id), - decode_message_attr_type(__TopXMLNS, Type), - decode_message_attr_from(__TopXMLNS, From), - decode_message_attr_to(__TopXMLNS, To), - 'decode_message_attr_xml:lang'(__TopXMLNS, Lang)}. - -encode_message({message, Id, Type, Lang, From, To, - Subject, Body, Thread, __Els}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"jabber:client">>, <<"jabber:server">>, - <<"jabber:component:accept">>], - __TopXMLNS), - _els = [encode(_el, __NewTopXMLNS) || _el <- __Els] ++ - lists:reverse('encode_message_$thread'(Thread, - __NewTopXMLNS, - 'encode_message_$subject'(Subject, - __NewTopXMLNS, - 'encode_message_$body'(Body, - __NewTopXMLNS, - [])))), - _attrs = 'encode_message_attr_xml:lang'(Lang, - encode_message_attr_to(To, - encode_message_attr_from(From, - encode_message_attr_type(Type, - encode_message_attr_id(Id, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)))))), - {xmlel, <<"message">>, _attrs, _els}. - -'encode_message_$thread'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_message_$thread'(Thread, __TopXMLNS, _acc) -> - [encode_message_thread(Thread, __TopXMLNS) | _acc]. - -'encode_message_$subject'([], __TopXMLNS, _acc) -> _acc; -'encode_message_$subject'([Subject | _els], __TopXMLNS, - _acc) -> - 'encode_message_$subject'(_els, __TopXMLNS, - [encode_message_subject(Subject, __TopXMLNS) - | _acc]). - -'encode_message_$body'([], __TopXMLNS, _acc) -> _acc; -'encode_message_$body'([Body | _els], __TopXMLNS, - _acc) -> - 'encode_message_$body'(_els, __TopXMLNS, - [encode_message_body(Body, __TopXMLNS) | _acc]). - -decode_message_attr_id(__TopXMLNS, undefined) -> <<>>; -decode_message_attr_id(__TopXMLNS, _val) -> _val. - -encode_message_attr_id(<<>>, _acc) -> _acc; -encode_message_attr_id(_val, _acc) -> - [{<<"id">>, _val} | _acc]. - -decode_message_attr_type(__TopXMLNS, undefined) -> - normal; -decode_message_attr_type(__TopXMLNS, _val) -> - case catch dec_enum(_val, - [chat, normal, groupchat, headline, error]) - of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"type">>, <<"message">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_message_attr_type(normal, _acc) -> _acc; -encode_message_attr_type(_val, _acc) -> - [{<<"type">>, enc_enum(_val)} | _acc]. - -decode_message_attr_from(__TopXMLNS, undefined) -> - undefined; -decode_message_attr_from(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"from">>, <<"message">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_message_attr_from(undefined, _acc) -> _acc; -encode_message_attr_from(_val, _acc) -> - [{<<"from">>, enc_jid(_val)} | _acc]. - -decode_message_attr_to(__TopXMLNS, undefined) -> - undefined; -decode_message_attr_to(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"to">>, <<"message">>, __TopXMLNS}}); - _res -> _res - end. - -encode_message_attr_to(undefined, _acc) -> _acc; -encode_message_attr_to(_val, _acc) -> - [{<<"to">>, enc_jid(_val)} | _acc]. - -'decode_message_attr_xml:lang'(__TopXMLNS, undefined) -> - <<>>; -'decode_message_attr_xml:lang'(__TopXMLNS, _val) -> - _val. - -'encode_message_attr_xml:lang'(<<>>, _acc) -> _acc; -'encode_message_attr_xml:lang'(_val, _acc) -> - [{<<"xml:lang">>, _val} | _acc]. - -decode_message_thread(__TopXMLNS, __IgnoreEls, - {xmlel, <<"thread">>, _attrs, _els}) -> - Cdata = decode_message_thread_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_message_thread_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_message_thread_cdata(__TopXMLNS, Cdata); -decode_message_thread_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_message_thread_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_message_thread_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_message_thread_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_message_thread(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"jabber:client">>, <<"jabber:server">>, - <<"jabber:component:accept">>], - __TopXMLNS), - _els = encode_message_thread_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"thread">>, _attrs, _els}. - -decode_message_thread_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_message_thread_cdata(__TopXMLNS, _val) -> _val. - -encode_message_thread_cdata(<<>>, _acc) -> _acc; -encode_message_thread_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_message_body(__TopXMLNS, __IgnoreEls, - {xmlel, <<"body">>, _attrs, _els}) -> - Data = decode_message_body_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Lang = decode_message_body_attrs(__TopXMLNS, _attrs, - undefined), - {text, Lang, Data}. - -decode_message_body_els(__TopXMLNS, __IgnoreEls, [], - Data) -> - decode_message_body_cdata(__TopXMLNS, Data); -decode_message_body_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Data) -> - decode_message_body_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_message_body_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Data) -> - decode_message_body_els(__TopXMLNS, __IgnoreEls, _els, - Data). - -decode_message_body_attrs(__TopXMLNS, - [{<<"xml:lang">>, _val} | _attrs], _Lang) -> - decode_message_body_attrs(__TopXMLNS, _attrs, _val); -decode_message_body_attrs(__TopXMLNS, [_ | _attrs], - Lang) -> - decode_message_body_attrs(__TopXMLNS, _attrs, Lang); -decode_message_body_attrs(__TopXMLNS, [], Lang) -> - 'decode_message_body_attr_xml:lang'(__TopXMLNS, Lang). - -encode_message_body({text, Lang, Data}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"jabber:client">>, <<"jabber:server">>, - <<"jabber:component:accept">>], - __TopXMLNS), - _els = encode_message_body_cdata(Data, []), - _attrs = 'encode_message_body_attr_xml:lang'(Lang, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"body">>, _attrs, _els}. - -'decode_message_body_attr_xml:lang'(__TopXMLNS, - undefined) -> - <<>>; -'decode_message_body_attr_xml:lang'(__TopXMLNS, _val) -> - _val. - -'encode_message_body_attr_xml:lang'(<<>>, _acc) -> _acc; -'encode_message_body_attr_xml:lang'(_val, _acc) -> - [{<<"xml:lang">>, _val} | _acc]. - -decode_message_body_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_message_body_cdata(__TopXMLNS, _val) -> _val. - -encode_message_body_cdata(<<>>, _acc) -> _acc; -encode_message_body_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_message_subject(__TopXMLNS, __IgnoreEls, - {xmlel, <<"subject">>, _attrs, _els}) -> - Data = decode_message_subject_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Lang = decode_message_subject_attrs(__TopXMLNS, _attrs, - undefined), - {text, Lang, Data}. - -decode_message_subject_els(__TopXMLNS, __IgnoreEls, [], - Data) -> - decode_message_subject_cdata(__TopXMLNS, Data); -decode_message_subject_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Data) -> - decode_message_subject_els(__TopXMLNS, __IgnoreEls, - _els, <>); -decode_message_subject_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Data) -> - decode_message_subject_els(__TopXMLNS, __IgnoreEls, - _els, Data). - -decode_message_subject_attrs(__TopXMLNS, - [{<<"xml:lang">>, _val} | _attrs], _Lang) -> - decode_message_subject_attrs(__TopXMLNS, _attrs, _val); -decode_message_subject_attrs(__TopXMLNS, [_ | _attrs], - Lang) -> - decode_message_subject_attrs(__TopXMLNS, _attrs, Lang); -decode_message_subject_attrs(__TopXMLNS, [], Lang) -> - 'decode_message_subject_attr_xml:lang'(__TopXMLNS, - Lang). - -encode_message_subject({text, Lang, Data}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"jabber:client">>, <<"jabber:server">>, - <<"jabber:component:accept">>], - __TopXMLNS), - _els = encode_message_subject_cdata(Data, []), - _attrs = 'encode_message_subject_attr_xml:lang'(Lang, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"subject">>, _attrs, _els}. - -'decode_message_subject_attr_xml:lang'(__TopXMLNS, - undefined) -> - <<>>; -'decode_message_subject_attr_xml:lang'(__TopXMLNS, - _val) -> - _val. - -'encode_message_subject_attr_xml:lang'(<<>>, _acc) -> - _acc; -'encode_message_subject_attr_xml:lang'(_val, _acc) -> - [{<<"xml:lang">>, _val} | _acc]. - -decode_message_subject_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_message_subject_cdata(__TopXMLNS, _val) -> _val. - -encode_message_subject_cdata(<<>>, _acc) -> _acc; -encode_message_subject_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_iq(__TopXMLNS, __IgnoreEls, - {xmlel, <<"iq">>, _attrs, _els}) -> - __Els = decode_iq_els(__TopXMLNS, __IgnoreEls, _els, - []), - {Id, Type, From, To, Lang} = decode_iq_attrs(__TopXMLNS, - _attrs, undefined, undefined, - undefined, undefined, - undefined), - {iq, Id, Type, Lang, From, To, __Els}. - -decode_iq_els(__TopXMLNS, __IgnoreEls, [], __Els) -> - lists:reverse(__Els); -decode_iq_els(__TopXMLNS, __IgnoreEls, - [{xmlel, _, _, _} = _el | _els], __Els) -> - if __IgnoreEls -> - decode_iq_els(__TopXMLNS, __IgnoreEls, _els, - [_el | __Els]); - true -> - case is_known_tag(_el, __TopXMLNS) of - true -> - decode_iq_els(__TopXMLNS, __IgnoreEls, _els, - [decode(_el, __TopXMLNS, []) | __Els]); - false -> - decode_iq_els(__TopXMLNS, __IgnoreEls, _els, __Els) - end - end; -decode_iq_els(__TopXMLNS, __IgnoreEls, [_ | _els], - __Els) -> - decode_iq_els(__TopXMLNS, __IgnoreEls, _els, __Els). - -decode_iq_attrs(__TopXMLNS, [{<<"id">>, _val} | _attrs], - _Id, Type, From, To, Lang) -> - decode_iq_attrs(__TopXMLNS, _attrs, _val, Type, From, - To, Lang); -decode_iq_attrs(__TopXMLNS, - [{<<"type">>, _val} | _attrs], Id, _Type, From, To, - Lang) -> - decode_iq_attrs(__TopXMLNS, _attrs, Id, _val, From, To, - Lang); -decode_iq_attrs(__TopXMLNS, - [{<<"from">>, _val} | _attrs], Id, Type, _From, To, - Lang) -> - decode_iq_attrs(__TopXMLNS, _attrs, Id, Type, _val, To, - Lang); -decode_iq_attrs(__TopXMLNS, [{<<"to">>, _val} | _attrs], - Id, Type, From, _To, Lang) -> - decode_iq_attrs(__TopXMLNS, _attrs, Id, Type, From, - _val, Lang); -decode_iq_attrs(__TopXMLNS, - [{<<"xml:lang">>, _val} | _attrs], Id, Type, From, To, - _Lang) -> - decode_iq_attrs(__TopXMLNS, _attrs, Id, Type, From, To, - _val); -decode_iq_attrs(__TopXMLNS, [_ | _attrs], Id, Type, - From, To, Lang) -> - decode_iq_attrs(__TopXMLNS, _attrs, Id, Type, From, To, - Lang); -decode_iq_attrs(__TopXMLNS, [], Id, Type, From, To, - Lang) -> - {decode_iq_attr_id(__TopXMLNS, Id), - decode_iq_attr_type(__TopXMLNS, Type), - decode_iq_attr_from(__TopXMLNS, From), - decode_iq_attr_to(__TopXMLNS, To), - 'decode_iq_attr_xml:lang'(__TopXMLNS, Lang)}. - -encode_iq({iq, Id, Type, Lang, From, To, __Els}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<>>, - [<<"jabber:client">>, <<"jabber:server">>, - <<"jabber:component:accept">>], - __TopXMLNS), - _els = [encode(_el, __NewTopXMLNS) || _el <- __Els], - _attrs = 'encode_iq_attr_xml:lang'(Lang, - encode_iq_attr_to(To, - encode_iq_attr_from(From, - encode_iq_attr_type(Type, - encode_iq_attr_id(Id, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)))))), - {xmlel, <<"iq">>, _attrs, _els}. - -decode_iq_attr_id(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"id">>, <<"iq">>, __TopXMLNS}}); -decode_iq_attr_id(__TopXMLNS, _val) -> _val. - -encode_iq_attr_id(_val, _acc) -> - [{<<"id">>, _val} | _acc]. - -decode_iq_attr_type(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"type">>, <<"iq">>, __TopXMLNS}}); -decode_iq_attr_type(__TopXMLNS, _val) -> - case catch dec_enum(_val, [get, set, result, error]) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"type">>, <<"iq">>, __TopXMLNS}}); - _res -> _res - end. - -encode_iq_attr_type(_val, _acc) -> - [{<<"type">>, enc_enum(_val)} | _acc]. - -decode_iq_attr_from(__TopXMLNS, undefined) -> undefined; -decode_iq_attr_from(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"from">>, <<"iq">>, __TopXMLNS}}); - _res -> _res - end. - -encode_iq_attr_from(undefined, _acc) -> _acc; -encode_iq_attr_from(_val, _acc) -> - [{<<"from">>, enc_jid(_val)} | _acc]. - -decode_iq_attr_to(__TopXMLNS, undefined) -> undefined; -decode_iq_attr_to(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"to">>, <<"iq">>, __TopXMLNS}}); - _res -> _res - end. - -encode_iq_attr_to(undefined, _acc) -> _acc; -encode_iq_attr_to(_val, _acc) -> - [{<<"to">>, enc_jid(_val)} | _acc]. - -'decode_iq_attr_xml:lang'(__TopXMLNS, undefined) -> - <<>>; -'decode_iq_attr_xml:lang'(__TopXMLNS, _val) -> _val. - -'encode_iq_attr_xml:lang'(<<>>, _acc) -> _acc; -'encode_iq_attr_xml:lang'(_val, _acc) -> - [{<<"xml:lang">>, _val} | _acc]. - -decode_stats(__TopXMLNS, __IgnoreEls, - {xmlel, <<"query">>, _attrs, _els}) -> - List = decode_stats_els(__TopXMLNS, __IgnoreEls, _els, - []), - Node = decode_stats_attrs(__TopXMLNS, _attrs, - undefined), - {stats, List, Node}. - -decode_stats_els(__TopXMLNS, __IgnoreEls, [], List) -> - lists:reverse(List); -decode_stats_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"stat">>, _attrs, _} = _el | _els], List) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/stats">> -> - decode_stats_els(__TopXMLNS, __IgnoreEls, _els, - [decode_stat(__TopXMLNS, __IgnoreEls, _el) | List]); - <<"http://jabber.org/protocol/stats">> -> - decode_stats_els(__TopXMLNS, __IgnoreEls, _els, - [decode_stat(<<"http://jabber.org/protocol/stats">>, - __IgnoreEls, _el) - | List]); - _ -> - decode_stats_els(__TopXMLNS, __IgnoreEls, _els, List) - end; -decode_stats_els(__TopXMLNS, __IgnoreEls, [_ | _els], - List) -> - decode_stats_els(__TopXMLNS, __IgnoreEls, _els, List). - -decode_stats_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], _Node) -> - decode_stats_attrs(__TopXMLNS, _attrs, _val); -decode_stats_attrs(__TopXMLNS, [_ | _attrs], Node) -> - decode_stats_attrs(__TopXMLNS, _attrs, Node); -decode_stats_attrs(__TopXMLNS, [], Node) -> - decode_stats_attr_node(__TopXMLNS, Node). - -encode_stats({stats, List, Node}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/stats">>, - [], __TopXMLNS), - _els = lists:reverse('encode_stats_$list'(List, - __NewTopXMLNS, [])), - _attrs = encode_stats_attr_node(Node, - enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS)), - {xmlel, <<"query">>, _attrs, _els}. - -'encode_stats_$list'([], __TopXMLNS, _acc) -> _acc; -'encode_stats_$list'([List | _els], __TopXMLNS, _acc) -> - 'encode_stats_$list'(_els, __TopXMLNS, - [encode_stat(List, __TopXMLNS) | _acc]). - -decode_stats_attr_node(__TopXMLNS, undefined) -> <<>>; -decode_stats_attr_node(__TopXMLNS, _val) -> _val. - -encode_stats_attr_node(<<>>, _acc) -> _acc; -encode_stats_attr_node(_val, _acc) -> - [{<<"node">>, _val} | _acc]. - -decode_stat(__TopXMLNS, __IgnoreEls, - {xmlel, <<"stat">>, _attrs, _els}) -> - Error = decode_stat_els(__TopXMLNS, __IgnoreEls, _els, - undefined), - {Name, Units, Value} = decode_stat_attrs(__TopXMLNS, - _attrs, undefined, undefined, - undefined), - {stat, Name, Units, Value, Error}. - -decode_stat_els(__TopXMLNS, __IgnoreEls, [], Error) -> - Error; -decode_stat_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"error">>, _attrs, _} = _el | _els], - Error) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/stats">> -> - decode_stat_els(__TopXMLNS, __IgnoreEls, _els, - decode_stat_error(__TopXMLNS, __IgnoreEls, _el)); - <<"http://jabber.org/protocol/stats">> -> - decode_stat_els(__TopXMLNS, __IgnoreEls, _els, - decode_stat_error(<<"http://jabber.org/protocol/stats">>, - __IgnoreEls, _el)); - _ -> - decode_stat_els(__TopXMLNS, __IgnoreEls, _els, Error) - end; -decode_stat_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Error) -> - decode_stat_els(__TopXMLNS, __IgnoreEls, _els, Error). - -decode_stat_attrs(__TopXMLNS, - [{<<"name">>, _val} | _attrs], _Name, Units, Value) -> - decode_stat_attrs(__TopXMLNS, _attrs, _val, Units, - Value); -decode_stat_attrs(__TopXMLNS, - [{<<"units">>, _val} | _attrs], Name, _Units, Value) -> - decode_stat_attrs(__TopXMLNS, _attrs, Name, _val, - Value); -decode_stat_attrs(__TopXMLNS, - [{<<"value">>, _val} | _attrs], Name, Units, _Value) -> - decode_stat_attrs(__TopXMLNS, _attrs, Name, Units, - _val); -decode_stat_attrs(__TopXMLNS, [_ | _attrs], Name, Units, - Value) -> - decode_stat_attrs(__TopXMLNS, _attrs, Name, Units, - Value); -decode_stat_attrs(__TopXMLNS, [], Name, Units, Value) -> - {decode_stat_attr_name(__TopXMLNS, Name), - decode_stat_attr_units(__TopXMLNS, Units), - decode_stat_attr_value(__TopXMLNS, Value)}. - -encode_stat({stat, Name, Units, Value, Error}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/stats">>, - [], __TopXMLNS), - _els = lists:reverse('encode_stat_$error'(Error, - __NewTopXMLNS, [])), - _attrs = encode_stat_attr_value(Value, - encode_stat_attr_units(Units, - encode_stat_attr_name(Name, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)))), - {xmlel, <<"stat">>, _attrs, _els}. - -'encode_stat_$error'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_stat_$error'(Error, __TopXMLNS, _acc) -> - [encode_stat_error(Error, __TopXMLNS) | _acc]. - -decode_stat_attr_name(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"name">>, <<"stat">>, __TopXMLNS}}); -decode_stat_attr_name(__TopXMLNS, _val) -> _val. - -encode_stat_attr_name(_val, _acc) -> - [{<<"name">>, _val} | _acc]. - -decode_stat_attr_units(__TopXMLNS, undefined) -> <<>>; -decode_stat_attr_units(__TopXMLNS, _val) -> _val. - -encode_stat_attr_units(<<>>, _acc) -> _acc; -encode_stat_attr_units(_val, _acc) -> - [{<<"units">>, _val} | _acc]. - -decode_stat_attr_value(__TopXMLNS, undefined) -> <<>>; -decode_stat_attr_value(__TopXMLNS, _val) -> _val. - -encode_stat_attr_value(<<>>, _acc) -> _acc; -encode_stat_attr_value(_val, _acc) -> - [{<<"value">>, _val} | _acc]. - -decode_stat_error(__TopXMLNS, __IgnoreEls, - {xmlel, <<"error">>, _attrs, _els}) -> - Reason = decode_stat_error_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Code = decode_stat_error_attrs(__TopXMLNS, _attrs, - undefined), - {stat_error, Code, Reason}. - -decode_stat_error_els(__TopXMLNS, __IgnoreEls, [], - Reason) -> - decode_stat_error_cdata(__TopXMLNS, Reason); -decode_stat_error_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Reason) -> - decode_stat_error_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_stat_error_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Reason) -> - decode_stat_error_els(__TopXMLNS, __IgnoreEls, _els, - Reason). - -decode_stat_error_attrs(__TopXMLNS, - [{<<"code">>, _val} | _attrs], _Code) -> - decode_stat_error_attrs(__TopXMLNS, _attrs, _val); -decode_stat_error_attrs(__TopXMLNS, [_ | _attrs], - Code) -> - decode_stat_error_attrs(__TopXMLNS, _attrs, Code); -decode_stat_error_attrs(__TopXMLNS, [], Code) -> - decode_stat_error_attr_code(__TopXMLNS, Code). - -encode_stat_error({stat_error, Code, Reason}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/stats">>, - [], __TopXMLNS), - _els = encode_stat_error_cdata(Reason, []), - _attrs = encode_stat_error_attr_code(Code, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"error">>, _attrs, _els}. - -decode_stat_error_attr_code(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"code">>, <<"error">>, __TopXMLNS}}); -decode_stat_error_attr_code(__TopXMLNS, _val) -> - case catch dec_int(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"code">>, <<"error">>, __TopXMLNS}}); - _res -> _res - end. - -encode_stat_error_attr_code(_val, _acc) -> - [{<<"code">>, enc_int(_val)} | _acc]. - -decode_stat_error_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_stat_error_cdata(__TopXMLNS, _val) -> _val. - -encode_stat_error_cdata(<<>>, _acc) -> _acc; -encode_stat_error_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_bookmarks_storage(__TopXMLNS, __IgnoreEls, - {xmlel, <<"storage">>, _attrs, _els}) -> - {Conference, Url} = - decode_bookmarks_storage_els(__TopXMLNS, __IgnoreEls, - _els, [], []), - {bookmark_storage, Conference, Url}. - -decode_bookmarks_storage_els(__TopXMLNS, __IgnoreEls, - [], Conference, Url) -> - {lists:reverse(Conference), lists:reverse(Url)}; -decode_bookmarks_storage_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"conference">>, _attrs, _} = _el - | _els], - Conference, Url) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"storage:bookmarks">> -> - decode_bookmarks_storage_els(__TopXMLNS, __IgnoreEls, - _els, - [decode_bookmark_conference(__TopXMLNS, - __IgnoreEls, - _el) - | Conference], - Url); - <<"storage:bookmarks">> -> - decode_bookmarks_storage_els(__TopXMLNS, __IgnoreEls, - _els, - [decode_bookmark_conference(<<"storage:bookmarks">>, - __IgnoreEls, - _el) - | Conference], - Url); - _ -> - decode_bookmarks_storage_els(__TopXMLNS, __IgnoreEls, - _els, Conference, Url) - end; -decode_bookmarks_storage_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"url">>, _attrs, _} = _el | _els], - Conference, Url) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"storage:bookmarks">> -> - decode_bookmarks_storage_els(__TopXMLNS, __IgnoreEls, - _els, Conference, - [decode_bookmark_url(__TopXMLNS, - __IgnoreEls, _el) - | Url]); - <<"storage:bookmarks">> -> - decode_bookmarks_storage_els(__TopXMLNS, __IgnoreEls, - _els, Conference, - [decode_bookmark_url(<<"storage:bookmarks">>, - __IgnoreEls, _el) - | Url]); - _ -> - decode_bookmarks_storage_els(__TopXMLNS, __IgnoreEls, - _els, Conference, Url) - end; -decode_bookmarks_storage_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Conference, Url) -> - decode_bookmarks_storage_els(__TopXMLNS, __IgnoreEls, - _els, Conference, Url). - -encode_bookmarks_storage({bookmark_storage, Conference, - Url}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"storage:bookmarks">>, [], - __TopXMLNS), - _els = - lists:reverse('encode_bookmarks_storage_$conference'(Conference, - __NewTopXMLNS, - 'encode_bookmarks_storage_$url'(Url, - __NewTopXMLNS, - []))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"storage">>, _attrs, _els}. - -'encode_bookmarks_storage_$conference'([], __TopXMLNS, - _acc) -> - _acc; -'encode_bookmarks_storage_$conference'([Conference - | _els], - __TopXMLNS, _acc) -> - 'encode_bookmarks_storage_$conference'(_els, __TopXMLNS, - [encode_bookmark_conference(Conference, - __TopXMLNS) - | _acc]). - -'encode_bookmarks_storage_$url'([], __TopXMLNS, _acc) -> - _acc; -'encode_bookmarks_storage_$url'([Url | _els], - __TopXMLNS, _acc) -> - 'encode_bookmarks_storage_$url'(_els, __TopXMLNS, - [encode_bookmark_url(Url, __TopXMLNS) - | _acc]). - -decode_bookmark_url(__TopXMLNS, __IgnoreEls, - {xmlel, <<"url">>, _attrs, _els}) -> - {Name, Url} = decode_bookmark_url_attrs(__TopXMLNS, - _attrs, undefined, undefined), - {bookmark_url, Name, Url}. - -decode_bookmark_url_attrs(__TopXMLNS, - [{<<"name">>, _val} | _attrs], _Name, Url) -> - decode_bookmark_url_attrs(__TopXMLNS, _attrs, _val, - Url); -decode_bookmark_url_attrs(__TopXMLNS, - [{<<"url">>, _val} | _attrs], Name, _Url) -> - decode_bookmark_url_attrs(__TopXMLNS, _attrs, Name, - _val); -decode_bookmark_url_attrs(__TopXMLNS, [_ | _attrs], - Name, Url) -> - decode_bookmark_url_attrs(__TopXMLNS, _attrs, Name, - Url); -decode_bookmark_url_attrs(__TopXMLNS, [], Name, Url) -> - {decode_bookmark_url_attr_name(__TopXMLNS, Name), - decode_bookmark_url_attr_url(__TopXMLNS, Url)}. - -encode_bookmark_url({bookmark_url, Name, Url}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"storage:bookmarks">>, [], - __TopXMLNS), - _els = [], - _attrs = encode_bookmark_url_attr_url(Url, - encode_bookmark_url_attr_name(Name, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))), - {xmlel, <<"url">>, _attrs, _els}. - -decode_bookmark_url_attr_name(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"name">>, <<"url">>, __TopXMLNS}}); -decode_bookmark_url_attr_name(__TopXMLNS, _val) -> _val. - -encode_bookmark_url_attr_name(_val, _acc) -> - [{<<"name">>, _val} | _acc]. - -decode_bookmark_url_attr_url(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"url">>, <<"url">>, __TopXMLNS}}); -decode_bookmark_url_attr_url(__TopXMLNS, _val) -> _val. - -encode_bookmark_url_attr_url(_val, _acc) -> - [{<<"url">>, _val} | _acc]. - -decode_bookmark_conference(__TopXMLNS, __IgnoreEls, - {xmlel, <<"conference">>, _attrs, _els}) -> - {Password, Nick} = - decode_bookmark_conference_els(__TopXMLNS, __IgnoreEls, - _els, undefined, undefined), - {Name, Jid, Autojoin} = - decode_bookmark_conference_attrs(__TopXMLNS, _attrs, - undefined, undefined, undefined), - {bookmark_conference, Name, Jid, Autojoin, Nick, - Password}. - -decode_bookmark_conference_els(__TopXMLNS, __IgnoreEls, - [], Password, Nick) -> - {Password, Nick}; -decode_bookmark_conference_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"nick">>, _attrs, _} = _el | _els], - Password, Nick) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"storage:bookmarks">> -> - decode_bookmark_conference_els(__TopXMLNS, __IgnoreEls, - _els, Password, - decode_conference_nick(__TopXMLNS, - __IgnoreEls, - _el)); - <<"storage:bookmarks">> -> - decode_bookmark_conference_els(__TopXMLNS, __IgnoreEls, - _els, Password, - decode_conference_nick(<<"storage:bookmarks">>, - __IgnoreEls, - _el)); - _ -> - decode_bookmark_conference_els(__TopXMLNS, __IgnoreEls, - _els, Password, Nick) - end; -decode_bookmark_conference_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"password">>, _attrs, _} = _el - | _els], - Password, Nick) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"storage:bookmarks">> -> - decode_bookmark_conference_els(__TopXMLNS, __IgnoreEls, - _els, - decode_conference_password(__TopXMLNS, - __IgnoreEls, - _el), - Nick); - <<"storage:bookmarks">> -> - decode_bookmark_conference_els(__TopXMLNS, __IgnoreEls, - _els, - decode_conference_password(<<"storage:bookmarks">>, - __IgnoreEls, - _el), - Nick); - _ -> - decode_bookmark_conference_els(__TopXMLNS, __IgnoreEls, - _els, Password, Nick) - end; -decode_bookmark_conference_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Password, Nick) -> - decode_bookmark_conference_els(__TopXMLNS, __IgnoreEls, - _els, Password, Nick). - -decode_bookmark_conference_attrs(__TopXMLNS, - [{<<"name">>, _val} | _attrs], _Name, Jid, - Autojoin) -> - decode_bookmark_conference_attrs(__TopXMLNS, _attrs, - _val, Jid, Autojoin); -decode_bookmark_conference_attrs(__TopXMLNS, - [{<<"jid">>, _val} | _attrs], Name, _Jid, - Autojoin) -> - decode_bookmark_conference_attrs(__TopXMLNS, _attrs, - Name, _val, Autojoin); -decode_bookmark_conference_attrs(__TopXMLNS, - [{<<"autojoin">>, _val} | _attrs], Name, Jid, - _Autojoin) -> - decode_bookmark_conference_attrs(__TopXMLNS, _attrs, - Name, Jid, _val); -decode_bookmark_conference_attrs(__TopXMLNS, - [_ | _attrs], Name, Jid, Autojoin) -> - decode_bookmark_conference_attrs(__TopXMLNS, _attrs, - Name, Jid, Autojoin); -decode_bookmark_conference_attrs(__TopXMLNS, [], Name, - Jid, Autojoin) -> - {decode_bookmark_conference_attr_name(__TopXMLNS, Name), - decode_bookmark_conference_attr_jid(__TopXMLNS, Jid), - decode_bookmark_conference_attr_autojoin(__TopXMLNS, - Autojoin)}. - -encode_bookmark_conference({bookmark_conference, Name, - Jid, Autojoin, Nick, Password}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"storage:bookmarks">>, [], - __TopXMLNS), - _els = - lists:reverse('encode_bookmark_conference_$password'(Password, - __NewTopXMLNS, - 'encode_bookmark_conference_$nick'(Nick, - __NewTopXMLNS, - []))), - _attrs = - encode_bookmark_conference_attr_autojoin(Autojoin, - encode_bookmark_conference_attr_jid(Jid, - encode_bookmark_conference_attr_name(Name, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)))), - {xmlel, <<"conference">>, _attrs, _els}. - -'encode_bookmark_conference_$password'(undefined, - __TopXMLNS, _acc) -> - _acc; -'encode_bookmark_conference_$password'(Password, - __TopXMLNS, _acc) -> - [encode_conference_password(Password, __TopXMLNS) - | _acc]. - -'encode_bookmark_conference_$nick'(undefined, - __TopXMLNS, _acc) -> - _acc; -'encode_bookmark_conference_$nick'(Nick, __TopXMLNS, - _acc) -> - [encode_conference_nick(Nick, __TopXMLNS) | _acc]. - -decode_bookmark_conference_attr_name(__TopXMLNS, - undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"name">>, <<"conference">>, - __TopXMLNS}}); -decode_bookmark_conference_attr_name(__TopXMLNS, - _val) -> - _val. - -encode_bookmark_conference_attr_name(_val, _acc) -> - [{<<"name">>, _val} | _acc]. - -decode_bookmark_conference_attr_jid(__TopXMLNS, - undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"jid">>, <<"conference">>, - __TopXMLNS}}); -decode_bookmark_conference_attr_jid(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"jid">>, <<"conference">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_bookmark_conference_attr_jid(_val, _acc) -> - [{<<"jid">>, enc_jid(_val)} | _acc]. - -decode_bookmark_conference_attr_autojoin(__TopXMLNS, - undefined) -> - false; -decode_bookmark_conference_attr_autojoin(__TopXMLNS, - _val) -> - case catch dec_bool(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"autojoin">>, <<"conference">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_bookmark_conference_attr_autojoin(false, _acc) -> - _acc; -encode_bookmark_conference_attr_autojoin(_val, _acc) -> - [{<<"autojoin">>, enc_bool(_val)} | _acc]. - -decode_conference_password(__TopXMLNS, __IgnoreEls, - {xmlel, <<"password">>, _attrs, _els}) -> - Cdata = decode_conference_password_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_conference_password_els(__TopXMLNS, __IgnoreEls, - [], Cdata) -> - decode_conference_password_cdata(__TopXMLNS, Cdata); -decode_conference_password_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_conference_password_els(__TopXMLNS, __IgnoreEls, - _els, <>); -decode_conference_password_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_conference_password_els(__TopXMLNS, __IgnoreEls, - _els, Cdata). - -encode_conference_password(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"storage:bookmarks">>, [], - __TopXMLNS), - _els = encode_conference_password_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"password">>, _attrs, _els}. - -decode_conference_password_cdata(__TopXMLNS, <<>>) -> - <<>>; -decode_conference_password_cdata(__TopXMLNS, _val) -> - _val. - -encode_conference_password_cdata(<<>>, _acc) -> _acc; -encode_conference_password_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_conference_nick(__TopXMLNS, __IgnoreEls, - {xmlel, <<"nick">>, _attrs, _els}) -> - Cdata = decode_conference_nick_els(__TopXMLNS, - __IgnoreEls, _els, <<>>), - Cdata. - -decode_conference_nick_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_conference_nick_cdata(__TopXMLNS, Cdata); -decode_conference_nick_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_conference_nick_els(__TopXMLNS, __IgnoreEls, - _els, <>); -decode_conference_nick_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_conference_nick_els(__TopXMLNS, __IgnoreEls, - _els, Cdata). - -encode_conference_nick(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"storage:bookmarks">>, [], - __TopXMLNS), - _els = encode_conference_nick_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"nick">>, _attrs, _els}. - -decode_conference_nick_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_conference_nick_cdata(__TopXMLNS, _val) -> _val. - -encode_conference_nick_cdata(<<>>, _acc) -> _acc; -encode_conference_nick_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_private(__TopXMLNS, __IgnoreEls, - {xmlel, <<"query">>, _attrs, _els}) -> - __Xmls = decode_private_els(__TopXMLNS, __IgnoreEls, - _els, []), - {private, __Xmls}. - -decode_private_els(__TopXMLNS, __IgnoreEls, [], - __Xmls) -> - lists:reverse(__Xmls); -decode_private_els(__TopXMLNS, __IgnoreEls, - [{xmlel, _, _, _} = _el | _els], __Xmls) -> - decode_private_els(__TopXMLNS, __IgnoreEls, _els, - [_el | __Xmls]); -decode_private_els(__TopXMLNS, __IgnoreEls, [_ | _els], - __Xmls) -> - decode_private_els(__TopXMLNS, __IgnoreEls, _els, - __Xmls). - -encode_private({private, __Xmls}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:private">>, [], - __TopXMLNS), - _els = __Xmls, - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"query">>, _attrs, _els}. - -decode_disco_items(__TopXMLNS, __IgnoreEls, - {xmlel, <<"query">>, _attrs, _els}) -> - {Items, Rsm} = decode_disco_items_els(__TopXMLNS, - __IgnoreEls, _els, [], undefined), - Node = decode_disco_items_attrs(__TopXMLNS, _attrs, - undefined), - {disco_items, Node, Items, Rsm}. - -decode_disco_items_els(__TopXMLNS, __IgnoreEls, [], - Items, Rsm) -> - {lists:reverse(Items), Rsm}; -decode_disco_items_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"item">>, _attrs, _} = _el | _els], Items, - Rsm) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/disco#items">> -> - decode_disco_items_els(__TopXMLNS, __IgnoreEls, _els, - [decode_disco_item(__TopXMLNS, __IgnoreEls, - _el) - | Items], - Rsm); - <<"http://jabber.org/protocol/disco#items">> -> - decode_disco_items_els(__TopXMLNS, __IgnoreEls, _els, - [decode_disco_item(<<"http://jabber.org/protocol/disco#items">>, - __IgnoreEls, _el) - | Items], - Rsm); - _ -> - decode_disco_items_els(__TopXMLNS, __IgnoreEls, _els, - Items, Rsm) - end; -decode_disco_items_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"set">>, _attrs, _} = _el | _els], Items, - Rsm) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"http://jabber.org/protocol/rsm">> -> - decode_disco_items_els(__TopXMLNS, __IgnoreEls, _els, - Items, - decode_rsm_set(<<"http://jabber.org/protocol/rsm">>, - __IgnoreEls, _el)); - _ -> - decode_disco_items_els(__TopXMLNS, __IgnoreEls, _els, - Items, Rsm) - end; -decode_disco_items_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Items, Rsm) -> - decode_disco_items_els(__TopXMLNS, __IgnoreEls, _els, - Items, Rsm). - -decode_disco_items_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], _Node) -> - decode_disco_items_attrs(__TopXMLNS, _attrs, _val); -decode_disco_items_attrs(__TopXMLNS, [_ | _attrs], - Node) -> - decode_disco_items_attrs(__TopXMLNS, _attrs, Node); -decode_disco_items_attrs(__TopXMLNS, [], Node) -> - decode_disco_items_attr_node(__TopXMLNS, Node). - -encode_disco_items({disco_items, Node, Items, Rsm}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/disco#items">>, - [], __TopXMLNS), - _els = lists:reverse('encode_disco_items_$items'(Items, - __NewTopXMLNS, - 'encode_disco_items_$rsm'(Rsm, - __NewTopXMLNS, - []))), - _attrs = encode_disco_items_attr_node(Node, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"query">>, _attrs, _els}. - -'encode_disco_items_$items'([], __TopXMLNS, _acc) -> - _acc; -'encode_disco_items_$items'([Items | _els], __TopXMLNS, - _acc) -> - 'encode_disco_items_$items'(_els, __TopXMLNS, - [encode_disco_item(Items, __TopXMLNS) | _acc]). - -'encode_disco_items_$rsm'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_disco_items_$rsm'(Rsm, __TopXMLNS, _acc) -> - [encode_rsm_set(Rsm, __TopXMLNS) | _acc]. - -decode_disco_items_attr_node(__TopXMLNS, undefined) -> - <<>>; -decode_disco_items_attr_node(__TopXMLNS, _val) -> _val. - -encode_disco_items_attr_node(<<>>, _acc) -> _acc; -encode_disco_items_attr_node(_val, _acc) -> - [{<<"node">>, _val} | _acc]. - -decode_disco_item(__TopXMLNS, __IgnoreEls, - {xmlel, <<"item">>, _attrs, _els}) -> - {Jid, Name, Node} = decode_disco_item_attrs(__TopXMLNS, - _attrs, undefined, undefined, - undefined), - {disco_item, Jid, Name, Node}. - -decode_disco_item_attrs(__TopXMLNS, - [{<<"jid">>, _val} | _attrs], _Jid, Name, Node) -> - decode_disco_item_attrs(__TopXMLNS, _attrs, _val, Name, - Node); -decode_disco_item_attrs(__TopXMLNS, - [{<<"name">>, _val} | _attrs], Jid, _Name, Node) -> - decode_disco_item_attrs(__TopXMLNS, _attrs, Jid, _val, - Node); -decode_disco_item_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], Jid, Name, _Node) -> - decode_disco_item_attrs(__TopXMLNS, _attrs, Jid, Name, - _val); -decode_disco_item_attrs(__TopXMLNS, [_ | _attrs], Jid, - Name, Node) -> - decode_disco_item_attrs(__TopXMLNS, _attrs, Jid, Name, - Node); -decode_disco_item_attrs(__TopXMLNS, [], Jid, Name, - Node) -> - {decode_disco_item_attr_jid(__TopXMLNS, Jid), - decode_disco_item_attr_name(__TopXMLNS, Name), - decode_disco_item_attr_node(__TopXMLNS, Node)}. - -encode_disco_item({disco_item, Jid, Name, Node}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/disco#items">>, - [], __TopXMLNS), - _els = [], - _attrs = encode_disco_item_attr_node(Node, - encode_disco_item_attr_name(Name, - encode_disco_item_attr_jid(Jid, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)))), - {xmlel, <<"item">>, _attrs, _els}. - -decode_disco_item_attr_jid(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"jid">>, <<"item">>, __TopXMLNS}}); -decode_disco_item_attr_jid(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"jid">>, <<"item">>, __TopXMLNS}}); - _res -> _res - end. - -encode_disco_item_attr_jid(_val, _acc) -> - [{<<"jid">>, enc_jid(_val)} | _acc]. - -decode_disco_item_attr_name(__TopXMLNS, undefined) -> - <<>>; -decode_disco_item_attr_name(__TopXMLNS, _val) -> _val. - -encode_disco_item_attr_name(<<>>, _acc) -> _acc; -encode_disco_item_attr_name(_val, _acc) -> - [{<<"name">>, _val} | _acc]. - -decode_disco_item_attr_node(__TopXMLNS, undefined) -> - <<>>; -decode_disco_item_attr_node(__TopXMLNS, _val) -> _val. - -encode_disco_item_attr_node(<<>>, _acc) -> _acc; -encode_disco_item_attr_node(_val, _acc) -> - [{<<"node">>, _val} | _acc]. - -decode_disco_info(__TopXMLNS, __IgnoreEls, - {xmlel, <<"query">>, _attrs, _els}) -> - {Xdata, Features, Identities} = - decode_disco_info_els(__TopXMLNS, __IgnoreEls, _els, [], - [], []), - Node = decode_disco_info_attrs(__TopXMLNS, _attrs, - undefined), - {disco_info, Node, Identities, Features, Xdata}. - -decode_disco_info_els(__TopXMLNS, __IgnoreEls, [], - Xdata, Features, Identities) -> - {lists:reverse(Xdata), lists:reverse(Features), - lists:reverse(Identities)}; -decode_disco_info_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"identity">>, _attrs, _} = _el | _els], - Xdata, Features, Identities) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/disco#info">> -> - decode_disco_info_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, Features, - [decode_disco_identity(__TopXMLNS, __IgnoreEls, - _el) - | Identities]); - <<"http://jabber.org/protocol/disco#info">> -> - decode_disco_info_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, Features, - [decode_disco_identity(<<"http://jabber.org/protocol/disco#info">>, - __IgnoreEls, _el) - | Identities]); - _ -> - decode_disco_info_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, Features, Identities) - end; -decode_disco_info_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"feature">>, _attrs, _} = _el | _els], Xdata, - Features, Identities) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> - when __TopXMLNS == - <<"http://jabber.org/protocol/disco#info">> -> - decode_disco_info_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, - [decode_disco_feature(__TopXMLNS, __IgnoreEls, - _el) - | Features], - Identities); - <<"http://jabber.org/protocol/disco#info">> -> - decode_disco_info_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, - [decode_disco_feature(<<"http://jabber.org/protocol/disco#info">>, - __IgnoreEls, _el) - | Features], - Identities); - _ -> - decode_disco_info_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, Features, Identities) - end; -decode_disco_info_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"x">>, _attrs, _} = _el | _els], Xdata, - Features, Identities) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"jabber:x:data">> -> - decode_disco_info_els(__TopXMLNS, __IgnoreEls, _els, - [decode_xdata(<<"jabber:x:data">>, __IgnoreEls, - _el) - | Xdata], - Features, Identities); - _ -> - decode_disco_info_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, Features, Identities) - end; -decode_disco_info_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Xdata, Features, Identities) -> - decode_disco_info_els(__TopXMLNS, __IgnoreEls, _els, - Xdata, Features, Identities). - -decode_disco_info_attrs(__TopXMLNS, - [{<<"node">>, _val} | _attrs], _Node) -> - decode_disco_info_attrs(__TopXMLNS, _attrs, _val); -decode_disco_info_attrs(__TopXMLNS, [_ | _attrs], - Node) -> - decode_disco_info_attrs(__TopXMLNS, _attrs, Node); -decode_disco_info_attrs(__TopXMLNS, [], Node) -> - decode_disco_info_attr_node(__TopXMLNS, Node). - -encode_disco_info({disco_info, Node, Identities, - Features, Xdata}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/disco#info">>, - [], __TopXMLNS), - _els = lists:reverse('encode_disco_info_$xdata'(Xdata, - __NewTopXMLNS, - 'encode_disco_info_$features'(Features, - __NewTopXMLNS, - 'encode_disco_info_$identities'(Identities, - __NewTopXMLNS, - [])))), - _attrs = encode_disco_info_attr_node(Node, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"query">>, _attrs, _els}. - -'encode_disco_info_$xdata'([], __TopXMLNS, _acc) -> - _acc; -'encode_disco_info_$xdata'([Xdata | _els], __TopXMLNS, - _acc) -> - 'encode_disco_info_$xdata'(_els, __TopXMLNS, - [encode_xdata(Xdata, __TopXMLNS) | _acc]). - -'encode_disco_info_$features'([], __TopXMLNS, _acc) -> - _acc; -'encode_disco_info_$features'([Features | _els], - __TopXMLNS, _acc) -> - 'encode_disco_info_$features'(_els, __TopXMLNS, - [encode_disco_feature(Features, __TopXMLNS) - | _acc]). - -'encode_disco_info_$identities'([], __TopXMLNS, _acc) -> - _acc; -'encode_disco_info_$identities'([Identities | _els], - __TopXMLNS, _acc) -> - 'encode_disco_info_$identities'(_els, __TopXMLNS, - [encode_disco_identity(Identities, - __TopXMLNS) - | _acc]). - -decode_disco_info_attr_node(__TopXMLNS, undefined) -> - <<>>; -decode_disco_info_attr_node(__TopXMLNS, _val) -> _val. - -encode_disco_info_attr_node(<<>>, _acc) -> _acc; -encode_disco_info_attr_node(_val, _acc) -> - [{<<"node">>, _val} | _acc]. - -decode_disco_feature(__TopXMLNS, __IgnoreEls, - {xmlel, <<"feature">>, _attrs, _els}) -> - Var = decode_disco_feature_attrs(__TopXMLNS, _attrs, - undefined), - Var. - -decode_disco_feature_attrs(__TopXMLNS, - [{<<"var">>, _val} | _attrs], _Var) -> - decode_disco_feature_attrs(__TopXMLNS, _attrs, _val); -decode_disco_feature_attrs(__TopXMLNS, [_ | _attrs], - Var) -> - decode_disco_feature_attrs(__TopXMLNS, _attrs, Var); -decode_disco_feature_attrs(__TopXMLNS, [], Var) -> - decode_disco_feature_attr_var(__TopXMLNS, Var). - -encode_disco_feature(Var, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/disco#info">>, - [], __TopXMLNS), - _els = [], - _attrs = encode_disco_feature_attr_var(Var, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"feature">>, _attrs, _els}. - -decode_disco_feature_attr_var(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"var">>, <<"feature">>, __TopXMLNS}}); -decode_disco_feature_attr_var(__TopXMLNS, _val) -> _val. - -encode_disco_feature_attr_var(_val, _acc) -> - [{<<"var">>, _val} | _acc]. - -decode_disco_identity(__TopXMLNS, __IgnoreEls, - {xmlel, <<"identity">>, _attrs, _els}) -> - {Category, Type, Lang, Name} = - decode_disco_identity_attrs(__TopXMLNS, _attrs, - undefined, undefined, undefined, undefined), - {identity, Category, Type, Lang, Name}. - -decode_disco_identity_attrs(__TopXMLNS, - [{<<"category">>, _val} | _attrs], _Category, Type, - Lang, Name) -> - decode_disco_identity_attrs(__TopXMLNS, _attrs, _val, - Type, Lang, Name); -decode_disco_identity_attrs(__TopXMLNS, - [{<<"type">>, _val} | _attrs], Category, _Type, - Lang, Name) -> - decode_disco_identity_attrs(__TopXMLNS, _attrs, - Category, _val, Lang, Name); -decode_disco_identity_attrs(__TopXMLNS, - [{<<"xml:lang">>, _val} | _attrs], Category, Type, - _Lang, Name) -> - decode_disco_identity_attrs(__TopXMLNS, _attrs, - Category, Type, _val, Name); -decode_disco_identity_attrs(__TopXMLNS, - [{<<"name">>, _val} | _attrs], Category, Type, Lang, - _Name) -> - decode_disco_identity_attrs(__TopXMLNS, _attrs, - Category, Type, Lang, _val); -decode_disco_identity_attrs(__TopXMLNS, [_ | _attrs], - Category, Type, Lang, Name) -> - decode_disco_identity_attrs(__TopXMLNS, _attrs, - Category, Type, Lang, Name); -decode_disco_identity_attrs(__TopXMLNS, [], Category, - Type, Lang, Name) -> - {decode_disco_identity_attr_category(__TopXMLNS, - Category), - decode_disco_identity_attr_type(__TopXMLNS, Type), - 'decode_disco_identity_attr_xml:lang'(__TopXMLNS, Lang), - decode_disco_identity_attr_name(__TopXMLNS, Name)}. - -encode_disco_identity({identity, Category, Type, Lang, - Name}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"http://jabber.org/protocol/disco#info">>, - [], __TopXMLNS), - _els = [], - _attrs = encode_disco_identity_attr_name(Name, - 'encode_disco_identity_attr_xml:lang'(Lang, - encode_disco_identity_attr_type(Type, - encode_disco_identity_attr_category(Category, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))))), - {xmlel, <<"identity">>, _attrs, _els}. - -decode_disco_identity_attr_category(__TopXMLNS, - undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"category">>, <<"identity">>, - __TopXMLNS}}); -decode_disco_identity_attr_category(__TopXMLNS, _val) -> - _val. - -encode_disco_identity_attr_category(_val, _acc) -> - [{<<"category">>, _val} | _acc]. - -decode_disco_identity_attr_type(__TopXMLNS, - undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"type">>, <<"identity">>, - __TopXMLNS}}); -decode_disco_identity_attr_type(__TopXMLNS, _val) -> - _val. - -encode_disco_identity_attr_type(_val, _acc) -> - [{<<"type">>, _val} | _acc]. - -'decode_disco_identity_attr_xml:lang'(__TopXMLNS, - undefined) -> - <<>>; -'decode_disco_identity_attr_xml:lang'(__TopXMLNS, - _val) -> - _val. - -'encode_disco_identity_attr_xml:lang'(<<>>, _acc) -> - _acc; -'encode_disco_identity_attr_xml:lang'(_val, _acc) -> - [{<<"xml:lang">>, _val} | _acc]. - -decode_disco_identity_attr_name(__TopXMLNS, - undefined) -> - <<>>; -decode_disco_identity_attr_name(__TopXMLNS, _val) -> - _val. - -encode_disco_identity_attr_name(<<>>, _acc) -> _acc; -encode_disco_identity_attr_name(_val, _acc) -> - [{<<"name">>, _val} | _acc]. - -decode_block_list(__TopXMLNS, __IgnoreEls, - {xmlel, <<"blocklist">>, _attrs, _els}) -> - Items = decode_block_list_els(__TopXMLNS, __IgnoreEls, - _els, []), - {block_list, Items}. - -decode_block_list_els(__TopXMLNS, __IgnoreEls, [], - Items) -> - lists:reverse(Items); -decode_block_list_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"item">>, _attrs, _} = _el | _els], Items) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"urn:xmpp:blocking">> -> - decode_block_list_els(__TopXMLNS, __IgnoreEls, _els, - [decode_block_item(__TopXMLNS, __IgnoreEls, _el) - | Items]); - <<"urn:xmpp:blocking">> -> - decode_block_list_els(__TopXMLNS, __IgnoreEls, _els, - [decode_block_item(<<"urn:xmpp:blocking">>, - __IgnoreEls, _el) - | Items]); - _ -> - decode_block_list_els(__TopXMLNS, __IgnoreEls, _els, - Items) - end; -decode_block_list_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Items) -> - decode_block_list_els(__TopXMLNS, __IgnoreEls, _els, - Items). - -encode_block_list({block_list, Items}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:xmpp:blocking">>, [], - __TopXMLNS), - _els = lists:reverse('encode_block_list_$items'(Items, - __NewTopXMLNS, [])), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"blocklist">>, _attrs, _els}. - -'encode_block_list_$items'([], __TopXMLNS, _acc) -> - _acc; -'encode_block_list_$items'([Items | _els], __TopXMLNS, - _acc) -> - 'encode_block_list_$items'(_els, __TopXMLNS, - [encode_block_item(Items, __TopXMLNS) | _acc]). - -decode_unblock(__TopXMLNS, __IgnoreEls, - {xmlel, <<"unblock">>, _attrs, _els}) -> - Items = decode_unblock_els(__TopXMLNS, __IgnoreEls, - _els, []), - {unblock, Items}. - -decode_unblock_els(__TopXMLNS, __IgnoreEls, [], - Items) -> - lists:reverse(Items); -decode_unblock_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"item">>, _attrs, _} = _el | _els], Items) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"urn:xmpp:blocking">> -> - decode_unblock_els(__TopXMLNS, __IgnoreEls, _els, - [decode_block_item(__TopXMLNS, __IgnoreEls, _el) - | Items]); - <<"urn:xmpp:blocking">> -> - decode_unblock_els(__TopXMLNS, __IgnoreEls, _els, - [decode_block_item(<<"urn:xmpp:blocking">>, - __IgnoreEls, _el) - | Items]); - _ -> - decode_unblock_els(__TopXMLNS, __IgnoreEls, _els, Items) - end; -decode_unblock_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Items) -> - decode_unblock_els(__TopXMLNS, __IgnoreEls, _els, - Items). - -encode_unblock({unblock, Items}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:xmpp:blocking">>, [], - __TopXMLNS), - _els = lists:reverse('encode_unblock_$items'(Items, - __NewTopXMLNS, [])), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"unblock">>, _attrs, _els}. - -'encode_unblock_$items'([], __TopXMLNS, _acc) -> _acc; -'encode_unblock_$items'([Items | _els], __TopXMLNS, - _acc) -> - 'encode_unblock_$items'(_els, __TopXMLNS, - [encode_block_item(Items, __TopXMLNS) | _acc]). - -decode_block(__TopXMLNS, __IgnoreEls, - {xmlel, <<"block">>, _attrs, _els}) -> - Items = decode_block_els(__TopXMLNS, __IgnoreEls, _els, - []), - {block, Items}. - -decode_block_els(__TopXMLNS, __IgnoreEls, [], Items) -> - lists:reverse(Items); -decode_block_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"item">>, _attrs, _} = _el | _els], Items) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"urn:xmpp:blocking">> -> - decode_block_els(__TopXMLNS, __IgnoreEls, _els, - [decode_block_item(__TopXMLNS, __IgnoreEls, _el) - | Items]); - <<"urn:xmpp:blocking">> -> - decode_block_els(__TopXMLNS, __IgnoreEls, _els, - [decode_block_item(<<"urn:xmpp:blocking">>, - __IgnoreEls, _el) - | Items]); - _ -> - decode_block_els(__TopXMLNS, __IgnoreEls, _els, Items) - end; -decode_block_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Items) -> - decode_block_els(__TopXMLNS, __IgnoreEls, _els, Items). - -encode_block({block, Items}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:xmpp:blocking">>, [], - __TopXMLNS), - _els = lists:reverse('encode_block_$items'(Items, - __NewTopXMLNS, [])), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"block">>, _attrs, _els}. - -'encode_block_$items'([], __TopXMLNS, _acc) -> _acc; -'encode_block_$items'([Items | _els], __TopXMLNS, - _acc) -> - 'encode_block_$items'(_els, __TopXMLNS, - [encode_block_item(Items, __TopXMLNS) | _acc]). - -decode_block_item(__TopXMLNS, __IgnoreEls, - {xmlel, <<"item">>, _attrs, _els}) -> - Jid = decode_block_item_attrs(__TopXMLNS, _attrs, - undefined), - Jid. - -decode_block_item_attrs(__TopXMLNS, - [{<<"jid">>, _val} | _attrs], _Jid) -> - decode_block_item_attrs(__TopXMLNS, _attrs, _val); -decode_block_item_attrs(__TopXMLNS, [_ | _attrs], - Jid) -> - decode_block_item_attrs(__TopXMLNS, _attrs, Jid); -decode_block_item_attrs(__TopXMLNS, [], Jid) -> - decode_block_item_attr_jid(__TopXMLNS, Jid). - -encode_block_item(Jid, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:xmpp:blocking">>, [], - __TopXMLNS), - _els = [], - _attrs = encode_block_item_attr_jid(Jid, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"item">>, _attrs, _els}. - -decode_block_item_attr_jid(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"jid">>, <<"item">>, __TopXMLNS}}); -decode_block_item_attr_jid(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"jid">>, <<"item">>, __TopXMLNS}}); - _res -> _res - end. - -encode_block_item_attr_jid(_val, _acc) -> - [{<<"jid">>, enc_jid(_val)} | _acc]. - -decode_privacy(__TopXMLNS, __IgnoreEls, - {xmlel, <<"query">>, _attrs, _els}) -> - {Lists, Default, Active} = - decode_privacy_els(__TopXMLNS, __IgnoreEls, _els, [], - undefined, undefined), - {privacy_query, Lists, Default, Active}. - -decode_privacy_els(__TopXMLNS, __IgnoreEls, [], Lists, - Default, Active) -> - {lists:reverse(Lists), Default, Active}; -decode_privacy_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"list">>, _attrs, _} = _el | _els], Lists, - Default, Active) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:privacy">> -> - decode_privacy_els(__TopXMLNS, __IgnoreEls, _els, - [decode_privacy_list(__TopXMLNS, __IgnoreEls, _el) - | Lists], - Default, Active); - <<"jabber:iq:privacy">> -> - decode_privacy_els(__TopXMLNS, __IgnoreEls, _els, - [decode_privacy_list(<<"jabber:iq:privacy">>, - __IgnoreEls, _el) - | Lists], - Default, Active); - _ -> - decode_privacy_els(__TopXMLNS, __IgnoreEls, _els, Lists, - Default, Active) - end; -decode_privacy_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"default">>, _attrs, _} = _el | _els], Lists, - Default, Active) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:privacy">> -> - decode_privacy_els(__TopXMLNS, __IgnoreEls, _els, Lists, - decode_privacy_default_list(__TopXMLNS, - __IgnoreEls, _el), - Active); - <<"jabber:iq:privacy">> -> - decode_privacy_els(__TopXMLNS, __IgnoreEls, _els, Lists, - decode_privacy_default_list(<<"jabber:iq:privacy">>, - __IgnoreEls, _el), - Active); - _ -> - decode_privacy_els(__TopXMLNS, __IgnoreEls, _els, Lists, - Default, Active) - end; -decode_privacy_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"active">>, _attrs, _} = _el | _els], Lists, - Default, Active) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:privacy">> -> - decode_privacy_els(__TopXMLNS, __IgnoreEls, _els, Lists, - Default, - decode_privacy_active_list(__TopXMLNS, __IgnoreEls, - _el)); - <<"jabber:iq:privacy">> -> - decode_privacy_els(__TopXMLNS, __IgnoreEls, _els, Lists, - Default, - decode_privacy_active_list(<<"jabber:iq:privacy">>, - __IgnoreEls, _el)); - _ -> - decode_privacy_els(__TopXMLNS, __IgnoreEls, _els, Lists, - Default, Active) - end; -decode_privacy_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Lists, Default, Active) -> - decode_privacy_els(__TopXMLNS, __IgnoreEls, _els, Lists, - Default, Active). - -encode_privacy({privacy_query, Lists, Default, Active}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:privacy">>, [], - __TopXMLNS), - _els = lists:reverse('encode_privacy_$lists'(Lists, - __NewTopXMLNS, - 'encode_privacy_$default'(Default, - __NewTopXMLNS, - 'encode_privacy_$active'(Active, - __NewTopXMLNS, - [])))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"query">>, _attrs, _els}. - -'encode_privacy_$lists'([], __TopXMLNS, _acc) -> _acc; -'encode_privacy_$lists'([Lists | _els], __TopXMLNS, - _acc) -> - 'encode_privacy_$lists'(_els, __TopXMLNS, - [encode_privacy_list(Lists, __TopXMLNS) | _acc]). - -'encode_privacy_$default'(undefined, __TopXMLNS, - _acc) -> - _acc; -'encode_privacy_$default'(Default, __TopXMLNS, _acc) -> - [encode_privacy_default_list(Default, __TopXMLNS) - | _acc]. - -'encode_privacy_$active'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_privacy_$active'(Active, __TopXMLNS, _acc) -> - [encode_privacy_active_list(Active, __TopXMLNS) | _acc]. - -decode_privacy_active_list(__TopXMLNS, __IgnoreEls, - {xmlel, <<"active">>, _attrs, _els}) -> - Name = decode_privacy_active_list_attrs(__TopXMLNS, - _attrs, undefined), - Name. - -decode_privacy_active_list_attrs(__TopXMLNS, - [{<<"name">>, _val} | _attrs], _Name) -> - decode_privacy_active_list_attrs(__TopXMLNS, _attrs, - _val); -decode_privacy_active_list_attrs(__TopXMLNS, - [_ | _attrs], Name) -> - decode_privacy_active_list_attrs(__TopXMLNS, _attrs, - Name); -decode_privacy_active_list_attrs(__TopXMLNS, [], - Name) -> - decode_privacy_active_list_attr_name(__TopXMLNS, Name). - -encode_privacy_active_list(Name, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:privacy">>, [], - __TopXMLNS), - _els = [], - _attrs = encode_privacy_active_list_attr_name(Name, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"active">>, _attrs, _els}. - -decode_privacy_active_list_attr_name(__TopXMLNS, - undefined) -> - none; -decode_privacy_active_list_attr_name(__TopXMLNS, - _val) -> - _val. - -encode_privacy_active_list_attr_name(none, _acc) -> - _acc; -encode_privacy_active_list_attr_name(_val, _acc) -> - [{<<"name">>, _val} | _acc]. - -decode_privacy_default_list(__TopXMLNS, __IgnoreEls, - {xmlel, <<"default">>, _attrs, _els}) -> - Name = decode_privacy_default_list_attrs(__TopXMLNS, - _attrs, undefined), - Name. - -decode_privacy_default_list_attrs(__TopXMLNS, - [{<<"name">>, _val} | _attrs], _Name) -> - decode_privacy_default_list_attrs(__TopXMLNS, _attrs, - _val); -decode_privacy_default_list_attrs(__TopXMLNS, - [_ | _attrs], Name) -> - decode_privacy_default_list_attrs(__TopXMLNS, _attrs, - Name); -decode_privacy_default_list_attrs(__TopXMLNS, [], - Name) -> - decode_privacy_default_list_attr_name(__TopXMLNS, Name). - -encode_privacy_default_list(Name, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:privacy">>, [], - __TopXMLNS), - _els = [], - _attrs = encode_privacy_default_list_attr_name(Name, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"default">>, _attrs, _els}. - -decode_privacy_default_list_attr_name(__TopXMLNS, - undefined) -> - none; -decode_privacy_default_list_attr_name(__TopXMLNS, - _val) -> - _val. - -encode_privacy_default_list_attr_name(none, _acc) -> - _acc; -encode_privacy_default_list_attr_name(_val, _acc) -> - [{<<"name">>, _val} | _acc]. - -decode_privacy_list(__TopXMLNS, __IgnoreEls, - {xmlel, <<"list">>, _attrs, _els}) -> - Items = decode_privacy_list_els(__TopXMLNS, __IgnoreEls, - _els, []), - Name = decode_privacy_list_attrs(__TopXMLNS, _attrs, - undefined), - {privacy_list, Name, Items}. - -decode_privacy_list_els(__TopXMLNS, __IgnoreEls, [], - Items) -> - lists:reverse(Items); -decode_privacy_list_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"item">>, _attrs, _} = _el | _els], Items) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:privacy">> -> - decode_privacy_list_els(__TopXMLNS, __IgnoreEls, _els, - [decode_privacy_item(__TopXMLNS, __IgnoreEls, - _el) - | Items]); - <<"jabber:iq:privacy">> -> - decode_privacy_list_els(__TopXMLNS, __IgnoreEls, _els, - [decode_privacy_item(<<"jabber:iq:privacy">>, - __IgnoreEls, _el) - | Items]); - _ -> - decode_privacy_list_els(__TopXMLNS, __IgnoreEls, _els, - Items) - end; -decode_privacy_list_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Items) -> - decode_privacy_list_els(__TopXMLNS, __IgnoreEls, _els, - Items). - -decode_privacy_list_attrs(__TopXMLNS, - [{<<"name">>, _val} | _attrs], _Name) -> - decode_privacy_list_attrs(__TopXMLNS, _attrs, _val); -decode_privacy_list_attrs(__TopXMLNS, [_ | _attrs], - Name) -> - decode_privacy_list_attrs(__TopXMLNS, _attrs, Name); -decode_privacy_list_attrs(__TopXMLNS, [], Name) -> - decode_privacy_list_attr_name(__TopXMLNS, Name). - -encode_privacy_list({privacy_list, Name, Items}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:privacy">>, [], - __TopXMLNS), - _els = lists:reverse('encode_privacy_list_$items'(Items, - __NewTopXMLNS, [])), - _attrs = encode_privacy_list_attr_name(Name, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"list">>, _attrs, _els}. - -'encode_privacy_list_$items'([], __TopXMLNS, _acc) -> - _acc; -'encode_privacy_list_$items'([Items | _els], __TopXMLNS, - _acc) -> - 'encode_privacy_list_$items'(_els, __TopXMLNS, - [encode_privacy_item(Items, __TopXMLNS) - | _acc]). - -decode_privacy_list_attr_name(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"name">>, <<"list">>, __TopXMLNS}}); -decode_privacy_list_attr_name(__TopXMLNS, _val) -> _val. - -encode_privacy_list_attr_name(_val, _acc) -> - [{<<"name">>, _val} | _acc]. - -decode_privacy_item(__TopXMLNS, __IgnoreEls, - {xmlel, <<"item">>, _attrs, _els}) -> - {Iq, Presence_out, Message, Presence_in} = - decode_privacy_item_els(__TopXMLNS, __IgnoreEls, _els, - false, false, false, false), - {Action, Order, Type, Value} = - decode_privacy_item_attrs(__TopXMLNS, _attrs, undefined, - undefined, undefined, undefined), - {privacy_item, Order, Action, Type, Value, Message, Iq, - Presence_in, Presence_out}. - -decode_privacy_item_els(__TopXMLNS, __IgnoreEls, [], Iq, - Presence_out, Message, Presence_in) -> - {Iq, Presence_out, Message, Presence_in}; -decode_privacy_item_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"message">>, _attrs, _} = _el | _els], Iq, - Presence_out, Message, Presence_in) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:privacy">> -> - decode_privacy_item_els(__TopXMLNS, __IgnoreEls, _els, - Iq, Presence_out, - decode_privacy_message(__TopXMLNS, - __IgnoreEls, _el), - Presence_in); - <<"jabber:iq:privacy">> -> - decode_privacy_item_els(__TopXMLNS, __IgnoreEls, _els, - Iq, Presence_out, - decode_privacy_message(<<"jabber:iq:privacy">>, - __IgnoreEls, _el), - Presence_in); - _ -> - decode_privacy_item_els(__TopXMLNS, __IgnoreEls, _els, - Iq, Presence_out, Message, Presence_in) - end; -decode_privacy_item_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"iq">>, _attrs, _} = _el | _els], Iq, - Presence_out, Message, Presence_in) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:privacy">> -> - decode_privacy_item_els(__TopXMLNS, __IgnoreEls, _els, - decode_privacy_iq(__TopXMLNS, __IgnoreEls, - _el), - Presence_out, Message, Presence_in); - <<"jabber:iq:privacy">> -> - decode_privacy_item_els(__TopXMLNS, __IgnoreEls, _els, - decode_privacy_iq(<<"jabber:iq:privacy">>, - __IgnoreEls, _el), - Presence_out, Message, Presence_in); - _ -> - decode_privacy_item_els(__TopXMLNS, __IgnoreEls, _els, - Iq, Presence_out, Message, Presence_in) - end; -decode_privacy_item_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"presence-in">>, _attrs, _} = _el | _els], - Iq, Presence_out, Message, Presence_in) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:privacy">> -> - decode_privacy_item_els(__TopXMLNS, __IgnoreEls, _els, - Iq, Presence_out, Message, - decode_privacy_presence_in(__TopXMLNS, - __IgnoreEls, _el)); - <<"jabber:iq:privacy">> -> - decode_privacy_item_els(__TopXMLNS, __IgnoreEls, _els, - Iq, Presence_out, Message, - decode_privacy_presence_in(<<"jabber:iq:privacy">>, - __IgnoreEls, _el)); - _ -> - decode_privacy_item_els(__TopXMLNS, __IgnoreEls, _els, - Iq, Presence_out, Message, Presence_in) - end; -decode_privacy_item_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"presence-out">>, _attrs, _} = _el | _els], - Iq, Presence_out, Message, Presence_in) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:privacy">> -> - decode_privacy_item_els(__TopXMLNS, __IgnoreEls, _els, - Iq, - decode_privacy_presence_out(__TopXMLNS, - __IgnoreEls, _el), - Message, Presence_in); - <<"jabber:iq:privacy">> -> - decode_privacy_item_els(__TopXMLNS, __IgnoreEls, _els, - Iq, - decode_privacy_presence_out(<<"jabber:iq:privacy">>, - __IgnoreEls, _el), - Message, Presence_in); - _ -> - decode_privacy_item_els(__TopXMLNS, __IgnoreEls, _els, - Iq, Presence_out, Message, Presence_in) - end; -decode_privacy_item_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Iq, Presence_out, Message, Presence_in) -> - decode_privacy_item_els(__TopXMLNS, __IgnoreEls, _els, - Iq, Presence_out, Message, Presence_in). - -decode_privacy_item_attrs(__TopXMLNS, - [{<<"action">>, _val} | _attrs], _Action, Order, Type, - Value) -> - decode_privacy_item_attrs(__TopXMLNS, _attrs, _val, - Order, Type, Value); -decode_privacy_item_attrs(__TopXMLNS, - [{<<"order">>, _val} | _attrs], Action, _Order, Type, - Value) -> - decode_privacy_item_attrs(__TopXMLNS, _attrs, Action, - _val, Type, Value); -decode_privacy_item_attrs(__TopXMLNS, - [{<<"type">>, _val} | _attrs], Action, Order, _Type, - Value) -> - decode_privacy_item_attrs(__TopXMLNS, _attrs, Action, - Order, _val, Value); -decode_privacy_item_attrs(__TopXMLNS, - [{<<"value">>, _val} | _attrs], Action, Order, Type, - _Value) -> - decode_privacy_item_attrs(__TopXMLNS, _attrs, Action, - Order, Type, _val); -decode_privacy_item_attrs(__TopXMLNS, [_ | _attrs], - Action, Order, Type, Value) -> - decode_privacy_item_attrs(__TopXMLNS, _attrs, Action, - Order, Type, Value); -decode_privacy_item_attrs(__TopXMLNS, [], Action, Order, - Type, Value) -> - {decode_privacy_item_attr_action(__TopXMLNS, Action), - decode_privacy_item_attr_order(__TopXMLNS, Order), - decode_privacy_item_attr_type(__TopXMLNS, Type), - decode_privacy_item_attr_value(__TopXMLNS, Value)}. - -encode_privacy_item({privacy_item, Order, Action, Type, - Value, Message, Iq, Presence_in, Presence_out}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:privacy">>, [], - __TopXMLNS), - _els = lists:reverse('encode_privacy_item_$iq'(Iq, - __NewTopXMLNS, - 'encode_privacy_item_$presence_out'(Presence_out, - __NewTopXMLNS, - 'encode_privacy_item_$message'(Message, - __NewTopXMLNS, - 'encode_privacy_item_$presence_in'(Presence_in, - __NewTopXMLNS, - []))))), - _attrs = encode_privacy_item_attr_value(Value, - encode_privacy_item_attr_type(Type, - encode_privacy_item_attr_order(Order, - encode_privacy_item_attr_action(Action, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))))), - {xmlel, <<"item">>, _attrs, _els}. - -'encode_privacy_item_$iq'(false, __TopXMLNS, _acc) -> - _acc; -'encode_privacy_item_$iq'(Iq, __TopXMLNS, _acc) -> - [encode_privacy_iq(Iq, __TopXMLNS) | _acc]. - -'encode_privacy_item_$presence_out'(false, __TopXMLNS, - _acc) -> - _acc; -'encode_privacy_item_$presence_out'(Presence_out, - __TopXMLNS, _acc) -> - [encode_privacy_presence_out(Presence_out, __TopXMLNS) - | _acc]. - -'encode_privacy_item_$message'(false, __TopXMLNS, - _acc) -> - _acc; -'encode_privacy_item_$message'(Message, __TopXMLNS, - _acc) -> - [encode_privacy_message(Message, __TopXMLNS) | _acc]. - -'encode_privacy_item_$presence_in'(false, __TopXMLNS, - _acc) -> - _acc; -'encode_privacy_item_$presence_in'(Presence_in, - __TopXMLNS, _acc) -> - [encode_privacy_presence_in(Presence_in, __TopXMLNS) - | _acc]. - -decode_privacy_item_attr_action(__TopXMLNS, - undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"action">>, <<"item">>, __TopXMLNS}}); -decode_privacy_item_attr_action(__TopXMLNS, _val) -> - case catch dec_enum(_val, [allow, deny]) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"action">>, <<"item">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_privacy_item_attr_action(_val, _acc) -> - [{<<"action">>, enc_enum(_val)} | _acc]. - -decode_privacy_item_attr_order(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"order">>, <<"item">>, __TopXMLNS}}); -decode_privacy_item_attr_order(__TopXMLNS, _val) -> - case catch dec_int(_val, 0, infinity) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"order">>, <<"item">>, __TopXMLNS}}); - _res -> _res - end. - -encode_privacy_item_attr_order(_val, _acc) -> - [{<<"order">>, enc_int(_val)} | _acc]. - -decode_privacy_item_attr_type(__TopXMLNS, undefined) -> - undefined; -decode_privacy_item_attr_type(__TopXMLNS, _val) -> - case catch dec_enum(_val, [group, jid, subscription]) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"type">>, <<"item">>, __TopXMLNS}}); - _res -> _res - end. - -encode_privacy_item_attr_type(undefined, _acc) -> _acc; -encode_privacy_item_attr_type(_val, _acc) -> - [{<<"type">>, enc_enum(_val)} | _acc]. - -decode_privacy_item_attr_value(__TopXMLNS, undefined) -> - <<>>; -decode_privacy_item_attr_value(__TopXMLNS, _val) -> - _val. - -encode_privacy_item_attr_value(<<>>, _acc) -> _acc; -encode_privacy_item_attr_value(_val, _acc) -> - [{<<"value">>, _val} | _acc]. - -decode_privacy_presence_out(__TopXMLNS, __IgnoreEls, - {xmlel, <<"presence-out">>, _attrs, _els}) -> - true. - -encode_privacy_presence_out(true, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:privacy">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"presence-out">>, _attrs, _els}. - -decode_privacy_presence_in(__TopXMLNS, __IgnoreEls, - {xmlel, <<"presence-in">>, _attrs, _els}) -> - true. - -encode_privacy_presence_in(true, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:privacy">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"presence-in">>, _attrs, _els}. - -decode_privacy_iq(__TopXMLNS, __IgnoreEls, - {xmlel, <<"iq">>, _attrs, _els}) -> - true. - -encode_privacy_iq(true, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:privacy">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"iq">>, _attrs, _els}. - -decode_privacy_message(__TopXMLNS, __IgnoreEls, - {xmlel, <<"message">>, _attrs, _els}) -> - true. - -encode_privacy_message(true, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:privacy">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"message">>, _attrs, _els}. - -decode_rosterver_feature(__TopXMLNS, __IgnoreEls, - {xmlel, <<"ver">>, _attrs, _els}) -> - {rosterver_feature}. - -encode_rosterver_feature({rosterver_feature}, - __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"urn:xmpp:features:rosterver">>, [], - __TopXMLNS), - _els = [], - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"ver">>, _attrs, _els}. - -decode_roster_query(__TopXMLNS, __IgnoreEls, - {xmlel, <<"query">>, _attrs, _els}) -> - Items = decode_roster_query_els(__TopXMLNS, __IgnoreEls, - _els, []), - Ver = decode_roster_query_attrs(__TopXMLNS, _attrs, - undefined), - {roster_query, Items, Ver}. - -decode_roster_query_els(__TopXMLNS, __IgnoreEls, [], - Items) -> - lists:reverse(Items); -decode_roster_query_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"item">>, _attrs, _} = _el | _els], Items) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:roster">> -> - decode_roster_query_els(__TopXMLNS, __IgnoreEls, _els, - [decode_roster_item(__TopXMLNS, __IgnoreEls, - _el) - | Items]); - <<"jabber:iq:roster">> -> - decode_roster_query_els(__TopXMLNS, __IgnoreEls, _els, - [decode_roster_item(<<"jabber:iq:roster">>, - __IgnoreEls, _el) - | Items]); - _ -> - decode_roster_query_els(__TopXMLNS, __IgnoreEls, _els, - Items) - end; -decode_roster_query_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Items) -> - decode_roster_query_els(__TopXMLNS, __IgnoreEls, _els, - Items). - -decode_roster_query_attrs(__TopXMLNS, - [{<<"ver">>, _val} | _attrs], _Ver) -> - decode_roster_query_attrs(__TopXMLNS, _attrs, _val); -decode_roster_query_attrs(__TopXMLNS, [_ | _attrs], - Ver) -> - decode_roster_query_attrs(__TopXMLNS, _attrs, Ver); -decode_roster_query_attrs(__TopXMLNS, [], Ver) -> - decode_roster_query_attr_ver(__TopXMLNS, Ver). - -encode_roster_query({roster_query, Items, Ver}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:iq:roster">>, - [], __TopXMLNS), - _els = lists:reverse('encode_roster_query_$items'(Items, - __NewTopXMLNS, [])), - _attrs = encode_roster_query_attr_ver(Ver, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"query">>, _attrs, _els}. - -'encode_roster_query_$items'([], __TopXMLNS, _acc) -> - _acc; -'encode_roster_query_$items'([Items | _els], __TopXMLNS, - _acc) -> - 'encode_roster_query_$items'(_els, __TopXMLNS, - [encode_roster_item(Items, __TopXMLNS) - | _acc]). - -decode_roster_query_attr_ver(__TopXMLNS, undefined) -> - undefined; -decode_roster_query_attr_ver(__TopXMLNS, _val) -> _val. - -encode_roster_query_attr_ver(undefined, _acc) -> _acc; -encode_roster_query_attr_ver(_val, _acc) -> - [{<<"ver">>, _val} | _acc]. - -decode_roster_item(__TopXMLNS, __IgnoreEls, - {xmlel, <<"item">>, _attrs, _els}) -> - Groups = decode_roster_item_els(__TopXMLNS, __IgnoreEls, - _els, []), - {Jid, Name, Subscription, Ask} = - decode_roster_item_attrs(__TopXMLNS, _attrs, undefined, - undefined, undefined, undefined), - {roster_item, Jid, Name, Groups, Subscription, Ask}. - -decode_roster_item_els(__TopXMLNS, __IgnoreEls, [], - Groups) -> - lists:reverse(Groups); -decode_roster_item_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"group">>, _attrs, _} = _el | _els], - Groups) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:roster">> -> - decode_roster_item_els(__TopXMLNS, __IgnoreEls, _els, - [decode_roster_group(__TopXMLNS, __IgnoreEls, - _el) - | Groups]); - <<"jabber:iq:roster">> -> - decode_roster_item_els(__TopXMLNS, __IgnoreEls, _els, - [decode_roster_group(<<"jabber:iq:roster">>, - __IgnoreEls, _el) - | Groups]); - _ -> - decode_roster_item_els(__TopXMLNS, __IgnoreEls, _els, - Groups) - end; -decode_roster_item_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Groups) -> - decode_roster_item_els(__TopXMLNS, __IgnoreEls, _els, - Groups). - -decode_roster_item_attrs(__TopXMLNS, - [{<<"jid">>, _val} | _attrs], _Jid, Name, Subscription, - Ask) -> - decode_roster_item_attrs(__TopXMLNS, _attrs, _val, Name, - Subscription, Ask); -decode_roster_item_attrs(__TopXMLNS, - [{<<"name">>, _val} | _attrs], Jid, _Name, - Subscription, Ask) -> - decode_roster_item_attrs(__TopXMLNS, _attrs, Jid, _val, - Subscription, Ask); -decode_roster_item_attrs(__TopXMLNS, - [{<<"subscription">>, _val} | _attrs], Jid, Name, - _Subscription, Ask) -> - decode_roster_item_attrs(__TopXMLNS, _attrs, Jid, Name, - _val, Ask); -decode_roster_item_attrs(__TopXMLNS, - [{<<"ask">>, _val} | _attrs], Jid, Name, Subscription, - _Ask) -> - decode_roster_item_attrs(__TopXMLNS, _attrs, Jid, Name, - Subscription, _val); -decode_roster_item_attrs(__TopXMLNS, [_ | _attrs], Jid, - Name, Subscription, Ask) -> - decode_roster_item_attrs(__TopXMLNS, _attrs, Jid, Name, - Subscription, Ask); -decode_roster_item_attrs(__TopXMLNS, [], Jid, Name, - Subscription, Ask) -> - {decode_roster_item_attr_jid(__TopXMLNS, Jid), - decode_roster_item_attr_name(__TopXMLNS, Name), - decode_roster_item_attr_subscription(__TopXMLNS, - Subscription), - decode_roster_item_attr_ask(__TopXMLNS, Ask)}. - -encode_roster_item({roster_item, Jid, Name, Groups, - Subscription, Ask}, - __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:iq:roster">>, - [], __TopXMLNS), - _els = - lists:reverse('encode_roster_item_$groups'(Groups, - __NewTopXMLNS, [])), - _attrs = encode_roster_item_attr_ask(Ask, - encode_roster_item_attr_subscription(Subscription, - encode_roster_item_attr_name(Name, - encode_roster_item_attr_jid(Jid, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS))))), - {xmlel, <<"item">>, _attrs, _els}. - -'encode_roster_item_$groups'([], __TopXMLNS, _acc) -> - _acc; -'encode_roster_item_$groups'([Groups | _els], - __TopXMLNS, _acc) -> - 'encode_roster_item_$groups'(_els, __TopXMLNS, - [encode_roster_group(Groups, __TopXMLNS) - | _acc]). - -decode_roster_item_attr_jid(__TopXMLNS, undefined) -> - erlang:error({xmpp_codec, - {missing_attr, <<"jid">>, <<"item">>, __TopXMLNS}}); -decode_roster_item_attr_jid(__TopXMLNS, _val) -> - case catch dec_jid(_val) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"jid">>, <<"item">>, __TopXMLNS}}); - _res -> _res - end. - -encode_roster_item_attr_jid(_val, _acc) -> - [{<<"jid">>, enc_jid(_val)} | _acc]. - -decode_roster_item_attr_name(__TopXMLNS, undefined) -> - <<>>; -decode_roster_item_attr_name(__TopXMLNS, _val) -> _val. - -encode_roster_item_attr_name(<<>>, _acc) -> _acc; -encode_roster_item_attr_name(_val, _acc) -> - [{<<"name">>, _val} | _acc]. - -decode_roster_item_attr_subscription(__TopXMLNS, - undefined) -> - none; -decode_roster_item_attr_subscription(__TopXMLNS, - _val) -> - case catch dec_enum(_val, - [none, to, from, both, remove]) - of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"subscription">>, <<"item">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_roster_item_attr_subscription(none, _acc) -> - _acc; -encode_roster_item_attr_subscription(_val, _acc) -> - [{<<"subscription">>, enc_enum(_val)} | _acc]. - -decode_roster_item_attr_ask(__TopXMLNS, undefined) -> - undefined; -decode_roster_item_attr_ask(__TopXMLNS, _val) -> - case catch dec_enum(_val, [subscribe]) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"ask">>, <<"item">>, __TopXMLNS}}); - _res -> _res - end. - -encode_roster_item_attr_ask(undefined, _acc) -> _acc; -encode_roster_item_attr_ask(_val, _acc) -> - [{<<"ask">>, enc_enum(_val)} | _acc]. - -decode_roster_group(__TopXMLNS, __IgnoreEls, - {xmlel, <<"group">>, _attrs, _els}) -> - Cdata = decode_roster_group_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_roster_group_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_roster_group_cdata(__TopXMLNS, Cdata); -decode_roster_group_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_roster_group_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_roster_group_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_roster_group_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_roster_group(Cdata, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:iq:roster">>, - [], __TopXMLNS), - _els = encode_roster_group_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"group">>, _attrs, _els}. - -decode_roster_group_cdata(__TopXMLNS, <<>>) -> - erlang:error({xmpp_codec, - {missing_cdata, <<>>, <<"group">>, __TopXMLNS}}); -decode_roster_group_cdata(__TopXMLNS, _val) -> _val. - -encode_roster_group_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_version(__TopXMLNS, __IgnoreEls, - {xmlel, <<"query">>, _attrs, _els}) -> - {Ver, Os, Name} = decode_version_els(__TopXMLNS, - __IgnoreEls, _els, undefined, - undefined, undefined), - {version, Name, Ver, Os}. - -decode_version_els(__TopXMLNS, __IgnoreEls, [], Ver, Os, - Name) -> - {Ver, Os, Name}; -decode_version_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"name">>, _attrs, _} = _el | _els], Ver, Os, - Name) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:version">> -> - decode_version_els(__TopXMLNS, __IgnoreEls, _els, Ver, - Os, - decode_version_name(__TopXMLNS, __IgnoreEls, _el)); - <<"jabber:iq:version">> -> - decode_version_els(__TopXMLNS, __IgnoreEls, _els, Ver, - Os, - decode_version_name(<<"jabber:iq:version">>, - __IgnoreEls, _el)); - _ -> - decode_version_els(__TopXMLNS, __IgnoreEls, _els, Ver, - Os, Name) - end; -decode_version_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"version">>, _attrs, _} = _el | _els], Ver, - Os, Name) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:version">> -> - decode_version_els(__TopXMLNS, __IgnoreEls, _els, - decode_version_ver(__TopXMLNS, __IgnoreEls, _el), - Os, Name); - <<"jabber:iq:version">> -> - decode_version_els(__TopXMLNS, __IgnoreEls, _els, - decode_version_ver(<<"jabber:iq:version">>, - __IgnoreEls, _el), - Os, Name); - _ -> - decode_version_els(__TopXMLNS, __IgnoreEls, _els, Ver, - Os, Name) - end; -decode_version_els(__TopXMLNS, __IgnoreEls, - [{xmlel, <<"os">>, _attrs, _} = _el | _els], Ver, Os, - Name) -> - case get_attr(<<"xmlns">>, _attrs) of - <<"">> when __TopXMLNS == <<"jabber:iq:version">> -> - decode_version_els(__TopXMLNS, __IgnoreEls, _els, Ver, - decode_version_os(__TopXMLNS, __IgnoreEls, _el), - Name); - <<"jabber:iq:version">> -> - decode_version_els(__TopXMLNS, __IgnoreEls, _els, Ver, - decode_version_os(<<"jabber:iq:version">>, - __IgnoreEls, _el), - Name); - _ -> - decode_version_els(__TopXMLNS, __IgnoreEls, _els, Ver, - Os, Name) - end; -decode_version_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Ver, Os, Name) -> - decode_version_els(__TopXMLNS, __IgnoreEls, _els, Ver, - Os, Name). - -encode_version({version, Name, Ver, Os}, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:version">>, [], - __TopXMLNS), - _els = lists:reverse('encode_version_$ver'(Ver, - __NewTopXMLNS, - 'encode_version_$os'(Os, - __NewTopXMLNS, - 'encode_version_$name'(Name, - __NewTopXMLNS, - [])))), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"query">>, _attrs, _els}. - -'encode_version_$ver'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_version_$ver'(Ver, __TopXMLNS, _acc) -> - [encode_version_ver(Ver, __TopXMLNS) | _acc]. - -'encode_version_$os'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_version_$os'(Os, __TopXMLNS, _acc) -> - [encode_version_os(Os, __TopXMLNS) | _acc]. - -'encode_version_$name'(undefined, __TopXMLNS, _acc) -> - _acc; -'encode_version_$name'(Name, __TopXMLNS, _acc) -> - [encode_version_name(Name, __TopXMLNS) | _acc]. - -decode_version_os(__TopXMLNS, __IgnoreEls, - {xmlel, <<"os">>, _attrs, _els}) -> - Cdata = decode_version_os_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_version_os_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_version_os_cdata(__TopXMLNS, Cdata); -decode_version_os_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_version_os_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_version_os_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_version_os_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_version_os(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:version">>, [], - __TopXMLNS), - _els = encode_version_os_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"os">>, _attrs, _els}. - -decode_version_os_cdata(__TopXMLNS, <<>>) -> - erlang:error({xmpp_codec, - {missing_cdata, <<>>, <<"os">>, __TopXMLNS}}); -decode_version_os_cdata(__TopXMLNS, _val) -> _val. - -encode_version_os_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_version_ver(__TopXMLNS, __IgnoreEls, - {xmlel, <<"version">>, _attrs, _els}) -> - Cdata = decode_version_ver_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_version_ver_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_version_ver_cdata(__TopXMLNS, Cdata); -decode_version_ver_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_version_ver_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_version_ver_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_version_ver_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_version_ver(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:version">>, [], - __TopXMLNS), - _els = encode_version_ver_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"version">>, _attrs, _els}. - -decode_version_ver_cdata(__TopXMLNS, <<>>) -> - erlang:error({xmpp_codec, - {missing_cdata, <<>>, <<"version">>, __TopXMLNS}}); -decode_version_ver_cdata(__TopXMLNS, _val) -> _val. - -encode_version_ver_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_version_name(__TopXMLNS, __IgnoreEls, - {xmlel, <<"name">>, _attrs, _els}) -> - Cdata = decode_version_name_els(__TopXMLNS, __IgnoreEls, - _els, <<>>), - Cdata. - -decode_version_name_els(__TopXMLNS, __IgnoreEls, [], - Cdata) -> - decode_version_name_cdata(__TopXMLNS, Cdata); -decode_version_name_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Cdata) -> - decode_version_name_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_version_name_els(__TopXMLNS, __IgnoreEls, - [_ | _els], Cdata) -> - decode_version_name_els(__TopXMLNS, __IgnoreEls, _els, - Cdata). - -encode_version_name(Cdata, __TopXMLNS) -> - __NewTopXMLNS = - choose_top_xmlns(<<"jabber:iq:version">>, [], - __TopXMLNS), - _els = encode_version_name_cdata(Cdata, []), - _attrs = enc_xmlns_attrs(__NewTopXMLNS, __TopXMLNS), - {xmlel, <<"name">>, _attrs, _els}. - -decode_version_name_cdata(__TopXMLNS, <<>>) -> - erlang:error({xmpp_codec, - {missing_cdata, <<>>, <<"name">>, __TopXMLNS}}); -decode_version_name_cdata(__TopXMLNS, _val) -> _val. - -encode_version_name_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc]. - -decode_last(__TopXMLNS, __IgnoreEls, - {xmlel, <<"query">>, _attrs, _els}) -> - Status = decode_last_els(__TopXMLNS, __IgnoreEls, _els, - <<>>), - Seconds = decode_last_attrs(__TopXMLNS, _attrs, - undefined), - {last, Seconds, Status}. - -decode_last_els(__TopXMLNS, __IgnoreEls, [], Status) -> - decode_last_cdata(__TopXMLNS, Status); -decode_last_els(__TopXMLNS, __IgnoreEls, - [{xmlcdata, _data} | _els], Status) -> - decode_last_els(__TopXMLNS, __IgnoreEls, _els, - <>); -decode_last_els(__TopXMLNS, __IgnoreEls, [_ | _els], - Status) -> - decode_last_els(__TopXMLNS, __IgnoreEls, _els, Status). - -decode_last_attrs(__TopXMLNS, - [{<<"seconds">>, _val} | _attrs], _Seconds) -> - decode_last_attrs(__TopXMLNS, _attrs, _val); -decode_last_attrs(__TopXMLNS, [_ | _attrs], Seconds) -> - decode_last_attrs(__TopXMLNS, _attrs, Seconds); -decode_last_attrs(__TopXMLNS, [], Seconds) -> - decode_last_attr_seconds(__TopXMLNS, Seconds). - -encode_last({last, Seconds, Status}, __TopXMLNS) -> - __NewTopXMLNS = choose_top_xmlns(<<"jabber:iq:last">>, - [], __TopXMLNS), - _els = encode_last_cdata(Status, []), - _attrs = encode_last_attr_seconds(Seconds, - enc_xmlns_attrs(__NewTopXMLNS, - __TopXMLNS)), - {xmlel, <<"query">>, _attrs, _els}. - -decode_last_attr_seconds(__TopXMLNS, undefined) -> - undefined; -decode_last_attr_seconds(__TopXMLNS, _val) -> - case catch dec_int(_val, 0, infinity) of - {'EXIT', _} -> - erlang:error({xmpp_codec, - {bad_attr_value, <<"seconds">>, <<"query">>, - __TopXMLNS}}); - _res -> _res - end. - -encode_last_attr_seconds(undefined, _acc) -> _acc; -encode_last_attr_seconds(_val, _acc) -> - [{<<"seconds">>, enc_int(_val)} | _acc]. - -decode_last_cdata(__TopXMLNS, <<>>) -> <<>>; -decode_last_cdata(__TopXMLNS, _val) -> _val. - -encode_last_cdata(<<>>, _acc) -> _acc; -encode_last_cdata(_val, _acc) -> - [{xmlcdata, _val} | _acc].