aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rwxr-xr-xtools/captcha.sh13
-rwxr-xr-xtools/check_xep_versions.sh21
-rwxr-xr-xtools/extract-tr.sh133
-rwxr-xr-xtools/hook_deps.sh443
-rwxr-xr-xtools/opt_types.sh606
-rwxr-xr-xtools/prepare-tr.sh100
-rwxr-xr-xtools/update-deps-releases.pl555
-rw-r--r--tools/xml_compress_gen.erl417
-rw-r--r--tools/xmpp_codec.erl20275
-rw-r--r--tools/xmpp_codec.hrl537
-rw-r--r--tools/xmpp_codec.spec2520
11 files changed, 2288 insertions, 23332 deletions
diff --git a/tools/captcha.sh b/tools/captcha.sh
index 560a048ad..9fa4a52c4 100755
--- a/tools/captcha.sh
+++ b/tools/captcha.sh
@@ -1,5 +1,18 @@
#!/bin/sh
+# This script is an example captcha script.
+# It takes the text to recognize in the captcha image as a parameter.
+# It return the image binary as a result. ejabberd support PNG, JPEG and GIF.
+
+# The whole idea of the captcha script is to let server admins adapt it to
+# their own needs. The goal is to be able to make the captcha generation as
+# unique as possible, to make the captcha challenge difficult to bypass by
+# a bot.
+# Server admins are thus supposed to write and use their own captcha generators.
+
+# This script relies on ImageMagick.
+# It is NOT compliant with ImageMagick forks like GraphicsMagick.
+
INPUT=$1
if test -n ${BASH_VERSION:-''} ; then
diff --git a/tools/check_xep_versions.sh b/tools/check_xep_versions.sh
new file mode 100755
index 000000000..c22781aaa
--- /dev/null
+++ b/tools/check_xep_versions.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+check_xep()
+{
+ xep=xep-$1
+ int=$(echo $1 | sed 's/^0*//')
+ [ -f $BASE/doc/$xep ] || curl -s -o $BASE/doc/$xep https://xmpp.org/extensions/$xep.html
+ title=$(sed '/<title>/!d;s/.*<title>\(.*\)<\/title>.*/\1/' $BASE/doc/$xep)
+ vsn=$(grep -A1 Version $BASE/doc/$xep | sed '/<dd>/!d;q' | sed 's/.*>\(.*\)<.*/\1/')
+ imp=$(grep "{xep, $int," $BASE/src/* | sed "s/.*src\/\(.*\).erl.*'\([0-9.-]*\)'.*/\1 \2/")
+ [ "$imp" == "" ] && imp="NA 0.0"
+ echo "$title;$vsn;${imp/ /;}"
+}
+
+[ $# -eq 1 ] && BASE="$1" || BASE="$PWD"
+[ -d $BASE/doc ] || mkdir $BASE/doc
+
+for x_num in $(grep "{xep" $BASE/src/* | sed "s/,//" | awk '{printf("%04d\n", $2)}' | sort -u)
+do
+ check_xep $x_num
+done
diff --git a/tools/extract-tr.sh b/tools/extract-tr.sh
new file mode 100755
index 000000000..242a81fec
--- /dev/null
+++ b/tools/extract-tr.sh
@@ -0,0 +1,133 @@
+#!/usr/bin/env escript
+%% -*- erlang -*-
+
+main(Paths) ->
+ Dict = fold_erls(
+ fun(File, Tokens, Acc) ->
+ File1 = filename:rootname(filename:basename(File)),
+ extract_tr(File1, Tokens, Acc)
+ end, dict:new(), Paths),
+ generate_pot(Dict).
+
+extract_tr(File, [{'?', _}, {var, _, 'T'}, {'(', Line}|Tokens], Acc) ->
+ case extract_string(Tokens, "") of
+ {"", Tokens1} ->
+ err("~s:~B: Warning: invalid string", [File, Line]),
+ extract_tr(File, Tokens1, Acc);
+ {String, Tokens1} ->
+ extract_tr(File, Tokens1, dict:append(String, {File, Line}, Acc))
+ end;
+extract_tr(File, [_|Tokens], Acc) ->
+ extract_tr(File, Tokens, Acc);
+extract_tr(_, [], Acc) ->
+ Acc.
+
+extract_string([{string, _, S}|Tokens], Acc) ->
+ extract_string(Tokens, [S|Acc]);
+extract_string([{')', _}|Tokens], Acc) ->
+ {lists:flatten(lists:reverse(Acc)), Tokens};
+extract_string(Tokens, _) ->
+ {"", Tokens}.
+
+fold_erls(Fun, State, Paths) ->
+ Paths1 = fold_paths(Paths),
+ Total = length(Paths1),
+ {_, State1} =
+ lists:foldl(
+ fun(File, {I, Acc}) ->
+ io:format(standard_error,
+ "Progress: ~B% (~B/~B)\r",
+ [round(I*100/Total), I, Total]),
+ case tokens(File) of
+ {ok, Tokens} ->
+ {I+1, Fun(File, Tokens, Acc)};
+ error ->
+ {I+1, Acc}
+ end
+ end, {0, State}, Paths1),
+ State1.
+
+fold_paths(Paths) ->
+ lists:flatmap(
+ fun(Path) ->
+ case filelib:is_dir(Path) of
+ true ->
+ lists:reverse(
+ filelib:fold_files(
+ Path, ".+\.erl\$", false,
+ fun(File, Acc) ->
+ [File|Acc]
+ end, []));
+ false ->
+ [Path]
+ end
+ end, Paths).
+
+tokens(File) ->
+ case file:read_file(File) of
+ {ok, Data} ->
+ case erl_scan:string(binary_to_list(Data)) of
+ {ok, Tokens, _} ->
+ {ok, Tokens};
+ {error, {_, Module, Desc}, Line} ->
+ err("~s:~n: Warning: scan error: ~s",
+ [filename:basename(File), Line, Module:format_error(Desc)]),
+ error
+ end;
+ {error, Why} ->
+ err("Warning: failed to read file ~s: ~s",
+ [File, file:format_error(Why)]),
+ error
+ end.
+
+generate_pot(Dict) ->
+ io:format("~s~n~n", [pot_header()]),
+ lists:foreach(
+ fun({Msg, Location}) ->
+ S1 = format_location(Location),
+ S2 = format_msg(Msg),
+ io:format("~smsgstr \"\"~n~n", [S1 ++ S2])
+ end, lists:keysort(1, dict:to_list(Dict))).
+
+format_location([A, B, C|T]) ->
+ format_location_list([A,B,C]) ++ format_location(T);
+format_location([A, B|T]) ->
+ format_location_list([A,B]) ++ format_location(T);
+format_location([A|T]) ->
+ format_location_list([A]) ++ format_location(T);
+format_location([]) ->
+ "".
+
+format_location_list(L) ->
+ "#: " ++ string:join(
+ lists:map(
+ fun({File, Pos}) ->
+ io_lib:format("~s.erl:~B", [File, Pos])
+ end, L),
+ " ") ++ io_lib:nl().
+
+format_msg(Bin) ->
+ io_lib:format("msgid \"~s\"~n", [escape(Bin)]).
+
+escape(Bin) ->
+ lists:map(
+ fun($") -> "\\\"";
+ (C) -> C
+ end, binary_to_list(iolist_to_binary(Bin))).
+
+pot_header() ->
+ string:join(
+ ["msgid \"\"",
+ "msgstr \"\"",
+ "\"Project-Id-Version: 15.11.127\\n\"",
+ "\"X-Language: Language Name\\n\"",
+ "\"Last-Translator: Translator name and contact method\\n\"",
+ "\"MIME-Version: 1.0\\n\"",
+ "\"Content-Type: text/plain; charset=UTF-8\\n\"",
+ "\"Content-Transfer-Encoding: 8bit\\n\"",
+ "\"X-Poedit-Basepath: ../../src\\n\"",
+ "\"X-Poedit-SearchPath-0: .\\n\""],
+ io_lib:nl()).
+
+err(Format, Args) ->
+ io:format(standard_error, Format ++ io_lib:nl(), Args).
diff --git a/tools/hook_deps.sh b/tools/hook_deps.sh
new file mode 100755
index 000000000..1df963d75
--- /dev/null
+++ b/tools/hook_deps.sh
@@ -0,0 +1,443 @@
+#!/usr/bin/env escript
+%% -*- erlang -*-
+
+-record(state, {run_hooks = #{},
+ run_fold_hooks = #{},
+ hooked_funs = {#{}, #{}},
+ iq_handlers = {#{}, #{}},
+ exports = #{},
+ module :: module(),
+ file :: filename:filename()}).
+
+main(Paths) ->
+ State =
+ fold_beams(
+ fun(File0, Tree, X, Acc0) ->
+ BareName = filename:rootname(filename:basename(File0)),
+ Mod = list_to_atom(BareName),
+ File = BareName ++ ".erl",
+ Exports = maps:put(Mod, X, Acc0#state.exports),
+ Acc1 = Acc0#state{file = File, module = Mod, exports = Exports},
+ erl_syntax_lib:fold(
+ fun(Form, Acc) ->
+ case erl_syntax:type(Form) of
+ application ->
+ case erl_syntax_lib:analyze_application(Form) of
+ {ejabberd_hooks, {run, N}} when N == 2; N == 3 ->
+ collect_run_hook(Form, Acc);
+ {ejabberd_hooks, {run_fold, N}} when N == 3; N == 4 ->
+ collect_run_fold_hook(Form, Acc);
+ {ejabberd_hooks, {add, N}} when N == 4; N == 5 ->
+ collect_run_fun(Form, add, Acc);
+ {ejabberd_hooks, {delete, N}} when N == 4; N == 5 ->
+ collect_run_fun(Form, delete, Acc);
+ {gen_iq_handler, {add_iq_handler, 5}} ->
+ collect_iq_handler(Form, add, Acc);
+ {gen_iq_handler, {remove_iq_handler, 3}} ->
+ collect_iq_handler(Form, delete, Acc);
+ _ ->
+ Acc
+ end;
+ _ ->
+ Acc
+ end
+ end, Acc1, Tree)
+ end, #state{}, Paths),
+ check_hooks_arity(State#state.run_hooks),
+ check_hooks_arity(State#state.run_fold_hooks),
+ check_iq_handlers_export(State#state.iq_handlers, State#state.exports),
+ analyze_iq_handlers(State#state.iq_handlers),
+ analyze_hooks(State#state.hooked_funs),
+ RunDeps = build_deps(State#state.run_hooks, State#state.hooked_funs),
+ RunFoldDeps = build_deps(State#state.run_fold_hooks, State#state.hooked_funs),
+ emit_module(RunDeps, RunFoldDeps, hooks_type_test).
+
+collect_run_hook(Form, State) ->
+ [Hook|Tail] = erl_syntax:application_arguments(Form),
+ case atom_value(Hook, State) of
+ undefined ->
+ State;
+ HookName ->
+ Args = case Tail of
+ [_Host, Args0] -> Args0;
+ [Args0] ->
+ Args0
+ end,
+ Arity = erl_syntax:list_length(Args),
+ Hooks = maps:put({HookName, Arity},
+ {State#state.file, erl_syntax:get_pos(Hook)},
+ State#state.run_hooks),
+ State#state{run_hooks = Hooks}
+ end.
+
+collect_run_fold_hook(Form, State) ->
+ [Hook|Tail] = erl_syntax:application_arguments(Form),
+ case atom_value(Hook, State) of
+ undefined ->
+ State;
+ HookName ->
+ Args = case Tail of
+ [_Host, _Val, Args0] -> Args0;
+ [_Val, Args0] -> Args0
+ end,
+ Arity = erl_syntax:list_length(Args) + 1,
+ Hooks = maps:put({HookName, Arity},
+ {State#state.file, erl_syntax:get_pos(Form)},
+ State#state.run_fold_hooks),
+ State#state{run_fold_hooks = Hooks}
+ end.
+
+collect_run_fun(Form, Action, State) ->
+ [Hook|Tail] = erl_syntax:application_arguments(Form),
+ case atom_value(Hook, State) of
+ undefined ->
+ State;
+ HookName ->
+ {Module, Fun, Seq} = case Tail of
+ [_Host, M, F, S] ->
+ {M, F, S};
+ [M, F, S] ->
+ {M, F, S}
+ end,
+ ModName = module_name(Module, State),
+ FunName = atom_value(Fun, State),
+ SeqInt = integer_value(Seq, State),
+ if ModName /= undefined, FunName /= undefined, SeqInt /= undefined ->
+ Pos = case Action of
+ add -> 1;
+ delete -> 2
+ end,
+ Funs = maps_append(
+ HookName,
+ {ModName, FunName, SeqInt,
+ {State#state.file, erl_syntax:get_pos(Form)}},
+ element(Pos, State#state.hooked_funs)),
+ Hooked = setelement(Pos, State#state.hooked_funs, Funs),
+ State#state{hooked_funs = Hooked};
+ true ->
+ State
+ end
+ end.
+
+collect_iq_handler(Form, add, #state{iq_handlers = {Add, Del}} = State) ->
+ [Component, _Host, Namespace, Module, Function] = erl_syntax:application_arguments(Form),
+ Mod = module_name(Module, State),
+ Fun = atom_value(Function, State),
+ Comp = atom_value(Component, State),
+ NS = binary_value(Namespace, State),
+ if Mod /= undefined, Fun /= undefined, Comp /= undefined, NS /= undefined ->
+ Handlers = maps_append(
+ {Comp, NS},
+ {Mod, Fun,
+ {State#state.file, erl_syntax:get_pos(Form)}},
+ Add),
+ State#state{iq_handlers = {Handlers, Del}};
+ true ->
+ State
+ end;
+collect_iq_handler(Form, delete, #state{iq_handlers = {Add, Del}} = State) ->
+ [Component, _Host, Namespace] = erl_syntax:application_arguments(Form),
+ Comp = atom_value(Component, State),
+ NS = binary_value(Namespace, State),
+ if Comp /= undefined, NS /= undefined ->
+ Handlers = maps_append(
+ {Comp, NS},
+ {State#state.file, erl_syntax:get_pos(Form)},
+ Del),
+ State#state{iq_handlers = {Add, Handlers}};
+ true ->
+ State
+ end.
+
+check_hooks_arity(Hooks) ->
+ maps:fold(
+ fun({Hook, Arity}, _, M) ->
+ case maps:is_key(Hook, M) of
+ true ->
+ err("Error: hook ~s is called with different "
+ "number of arguments~n", [Hook]);
+ false ->
+ maps:put(Hook, Arity, M)
+ end
+ end, #{}, Hooks).
+
+check_iq_handlers_export({HookedFuns, _}, Exports) ->
+ maps:map(
+ fun(_, Funs) ->
+ lists:foreach(
+ fun({Mod, Fun, {File, FileNo}}) ->
+ case is_exported(Mod, Fun, 1, Exports) of
+ true -> ok;
+ false ->
+ err("~s:~B: Error: "
+ "iq handler is registered on unexported function: "
+ "~s:~s/1~n", [File, FileNo, Mod, Fun])
+ end
+ end, Funs)
+ end, HookedFuns).
+
+analyze_iq_handlers({Add, Del}) ->
+ maps:map(
+ fun(Handler, Funs) ->
+ lists:foreach(
+ fun({_, _, {File, FileNo}}) ->
+ case maps:is_key(Handler, Del) of
+ true -> ok;
+ false ->
+ err("~s:~B: Error: "
+ "iq handler is added but not removed~n",
+ [File, FileNo])
+ end
+ end, Funs)
+ end, Add),
+ maps:map(
+ fun(Handler, Meta) ->
+ lists:foreach(
+ fun({File, FileNo}) ->
+ case maps:is_key(Handler, Add) of
+ true -> ok;
+ false ->
+ err("~s:~B: Error: "
+ "iq handler is removed but not added~n",
+ [File, FileNo])
+ end
+ end, Meta)
+ end, Del).
+
+analyze_hooks({Add, Del}) ->
+ Del1 = maps:fold(
+ fun(Hook, Funs, D) ->
+ lists:foldl(
+ fun({Mod, Fun, Seq, {File, FileNo}}, D1) ->
+ maps:put({Hook, Mod, Fun, Seq}, {File, FileNo}, D1)
+ end, D, Funs)
+ end, #{}, Del),
+ Add1 = maps:fold(
+ fun(Hook, Funs, D) ->
+ lists:foldl(
+ fun({Mod, Fun, Seq, {File, FileNo}}, D1) ->
+ maps:put({Hook, Mod, Fun, Seq}, {File, FileNo}, D1)
+ end, D, Funs)
+ end, #{}, Add),
+ lists:foreach(
+ fun({{Hook, Mod, Fun, _} = Key, {File, FileNo}}) ->
+ case maps:is_key(Key, Del1) of
+ true -> ok;
+ false ->
+ err("~s:~B: Error: "
+ "hook ~s->~s->~s is added but was never removed~n",
+ [File, FileNo, Hook, Mod, Fun])
+ end
+ end, maps:to_list(Add1)),
+ lists:foreach(
+ fun({{Hook, Mod, Fun, _} = Key, {File, FileNo}}) ->
+ case maps:is_key(Key, Add1) of
+ true -> ok;
+ false ->
+ err("~s:~B: Error: "
+ "hook ~s->~s->~s is removed but was never added~n",
+ [File, FileNo, Hook, Mod, Fun])
+ end
+ end, maps:to_list(Del1)).
+
+build_deps(Hooks, {HookedFuns, _}) ->
+ maps:fold(
+ fun({Hook, Arity}, Meta, Deps) ->
+ case maps:find(Hook, HookedFuns) of
+ {ok, Funs} ->
+ ExportedFuns =
+ lists:map(
+ fun({M, F, Seq, FunMeta}) ->
+ {{M, F, Arity}, Seq, FunMeta}
+ end, Funs),
+ maps_append_list({Hook, Arity, Meta}, ExportedFuns, Deps);
+ error ->
+ maps_append_list({Hook, Arity, Meta}, [], Deps)
+ end
+ end, #{}, Hooks).
+
+module_name(Form, State) ->
+ try
+ Name = erl_syntax:macro_name(Form),
+ 'MODULE' = erl_syntax:variable_name(Name),
+ State#state.module
+ catch _:_ ->
+ atom_value(Form, State)
+ end.
+
+atom_value(Form, State) ->
+ case erl_syntax:type(Form) of
+ atom ->
+ erl_syntax:atom_value(Form);
+ _ ->
+ warn_type(Form, State, "not an atom"),
+ undefined
+ end.
+
+integer_value(Form, State) ->
+ case erl_syntax:type(Form) of
+ integer ->
+ erl_syntax:integer_value(Form);
+ _ ->
+ warn_type(Form, State, "not an integer"),
+ undefined
+ end.
+
+binary_value(Form, State) ->
+ try erl_syntax:concrete(Form) of
+ Binary when is_binary(Binary) ->
+ Binary;
+ _ ->
+ warn_type(Form, State, "not a binary"),
+ undefined
+ catch _:_ ->
+ warn_type(Form, State, "not a binary"),
+ undefined
+ end.
+
+is_exported(Mod, Fun, Arity, Exports) ->
+ try maps:get(Mod, Exports) of
+ L -> lists:member({Fun, Arity}, L)
+ catch _:{badkey, _} -> false
+ end.
+
+warn_type(Form, State, Warning) ->
+ log("~s:~p: Warning: " ++ Warning ++ ": ~s~n",
+ [State#state.file,
+ erl_syntax:get_pos(Form),
+ erl_prettypr:format(Form)]).
+
+emit_module(RunDeps, RunFoldDeps, Module) ->
+ File = filename:join(["src", Module]) ++ ".erl",
+ try
+ {ok, Fd} = file:open(File, [write]),
+ write(Fd,
+ "%% Generated automatically~n"
+ "%% DO NOT EDIT: run `make hooks` instead~n~n", []),
+ write(Fd, "-module(~s).~n", [Module]),
+ write(Fd, "-compile(nowarn_unused_vars).~n", []),
+ write(Fd, "-dialyzer(no_return).~n~n", []),
+ emit_export(Fd, RunDeps, "run hooks"),
+ emit_export(Fd, RunFoldDeps, "run_fold hooks"),
+ emit_run_hooks(Fd, RunDeps),
+ emit_run_fold_hooks(Fd, RunFoldDeps),
+ file:close(Fd),
+ log("Module written to ~s~n", [File])
+ catch _:{badmatch, {error, Reason}} ->
+ err("Error: writing to ~s failed: ~s", [File, file:format_error(Reason)])
+ end.
+
+emit_run_hooks(Fd, Deps) ->
+ DepsList = lists:sort(maps:to_list(Deps)),
+ lists:foreach(
+ fun({{Hook, Arity, {File, LineNo}}, Funs}) ->
+ write(Fd, "%% called at ~s:~p~n", [File, LineNo]),
+ Args = string:join(
+ [[N] || N <- lists:sublist(lists:seq($A, $Z), Arity)],
+ ", "),
+ write(Fd, "~s(~s) ->~n ", [Hook, Args]),
+ Calls = [io_lib:format("_ = ~s:~s(~s)", [Mod, Fun, Args])
+ || {{Mod, Fun, _}, _Seq, _} <- lists:keysort(2, Funs)],
+ write(Fd, "~s.~n~n",
+ [string:join(Calls ++ ["ok"], ",\n ")])
+ end, DepsList).
+
+emit_run_fold_hooks(Fd, Deps) ->
+ DepsList = lists:sort(maps:to_list(Deps)),
+ lists:foreach(
+ fun({{Hook, Arity, {File, LineNo}}, []}) ->
+ write(Fd, "%% called at ~s:~p~n", [File, LineNo]),
+ Args = ["Acc"|lists:duplicate(Arity - 1, "_")],
+ write(Fd, "~s(~s) -> Acc.~n~n", [Hook, string:join(Args, ", ")]);
+ ({{Hook, Arity, {File, LineNo}}, Funs}) ->
+ write(Fd, "%% called at ~s:~p~n", [File, LineNo]),
+ Args = [[N] || N <- lists:sublist(lists:seq($A, $Z), Arity - 1)],
+ write(Fd, "~s(~s) ->~n ", [Hook, string:join(["Acc0"|Args], ", ")]),
+ {Calls, _} = lists:mapfoldl(
+ fun({{Mod, Fun, _}, _Seq, _}, N) ->
+ Args1 = ["Acc" ++ integer_to_list(N)|Args],
+ {io_lib:format("Acc~p = ~s:~s(~s)",
+ [N+1, Mod, Fun,
+ string:join(Args1, ", ")]),
+ N + 1}
+ end, 0, lists:keysort(2, Funs)),
+ write(Fd, "~s,~n", [string:join(Calls, ",\n ")]),
+ write(Fd, " Acc~p.~n~n", [length(Funs)])
+ end, DepsList).
+
+emit_export(Fd, Deps, Comment) ->
+ DepsList = lists:sort(maps:to_list(Deps)),
+ Exports = lists:map(
+ fun({{Hook, Arity, _}, _}) ->
+ io_lib:format("~s/~p", [Hook, Arity])
+ end, DepsList),
+ write(Fd, "%% ~s~n-export([~s]).~n~n",
+ [Comment, string:join(Exports, ",\n ")]).
+
+fold_beams(Fun, State, Paths) ->
+ Paths1 = fold_paths(Paths),
+ Total = length(Paths1),
+ {_, State1} =
+ lists:foldl(
+ fun(File, {I, Acc}) ->
+ io:format("Progress: ~B% (~B/~B)\r",
+ [round(I*100/Total), I, Total]),
+ case is_elixir_beam(File) of
+ true -> {I+1, Acc};
+ false ->
+ {AbsCode, Exports} = get_code_from_beam(File),
+ Acc2 = lists:foldl(
+ fun(Form, Acc1) ->
+ Fun(File, Form, Exports, Acc1)
+ end, Acc, AbsCode),
+ {I+1, Acc2}
+ end
+ end, {0, State}, Paths1),
+ State1.
+
+fold_paths(Paths) ->
+ lists:flatmap(
+ fun(Path) ->
+ case filelib:is_dir(Path) of
+ true ->
+ lists:reverse(
+ filelib:fold_files(
+ Path, ".+\.beam\$", false,
+ fun(File, Acc) ->
+ [File|Acc]
+ end, []));
+ false ->
+ [Path]
+ end
+ end, Paths).
+
+is_elixir_beam(File) ->
+ case filename:basename(File) of
+ "Elixir" ++ _ -> true;
+ _ -> false
+ end.
+
+get_code_from_beam(File) ->
+ case beam_lib:chunks(File, [abstract_code, exports]) of
+ {ok, {_, [{abstract_code, {raw_abstract_v1, Forms}}, {exports, X}]}} ->
+ {Forms, X};
+ _ ->
+ err("No abstract code found in ~s~n", [File])
+ end.
+
+log(Format, Args) ->
+ io:format(standard_io, Format, Args).
+
+err(Format, Args) ->
+ io:format(standard_error, Format, Args),
+ halt(1).
+
+write(Fd, Format, Args) ->
+ file:write(Fd, io_lib:format(Format, Args)).
+
+maps_append(K, V, M) ->
+ maps_append_list(K, [V], M).
+
+maps_append_list(K, L1, M) ->
+ L2 = maps:get(K, M, []),
+ maps:put(K, L2 ++ L1, M).
diff --git a/tools/opt_types.sh b/tools/opt_types.sh
new file mode 100755
index 000000000..658357cb2
--- /dev/null
+++ b/tools/opt_types.sh
@@ -0,0 +1,606 @@
+#!/usr/bin/env escript
+%% -*- erlang -*-
+
+-compile([nowarn_unused_function]).
+-record(state, {g_opts = #{} :: map(),
+ m_opts = #{} :: map(),
+ globals = [] :: [atom()],
+ defaults = #{} :: map(),
+ mod_defaults = #{} :: map(),
+ specs = #{} :: map(),
+ mod_specs = #{} :: map()}).
+
+main([Mod|Paths]) ->
+ State = fold_beams(
+ fun(File, Form, StateAcc) ->
+ append(Form, File, StateAcc)
+ end, #state{}, Paths),
+ emit_modules(map_to_specs(State#state.m_opts,
+ State#state.mod_defaults,
+ State#state.mod_specs)),
+ emit_config(Mod,
+ map_to_specs(State#state.g_opts,
+ State#state.defaults,
+ State#state.specs),
+ State#state.globals).
+
+emit_config(Mod, Specs, Globals) ->
+ File = filename:join("src", Mod ++ ".erl"),
+ case file:open(File, [write]) of
+ {ok, Fd} ->
+ emit_header(Fd, Mod, Specs, Globals),
+ emit_funs(Fd, Mod, Specs, Globals);
+ {error, Reason} ->
+ err("Failed to open file ~s for writing: ~s",
+ [File, file:format_error(Reason)])
+ end.
+
+emit_modules(Specs) ->
+ M = lists:foldl(
+ fun({{Mod, Opt}, Spec}, Acc) ->
+ Opts = maps:get(Mod, Acc, []),
+ Opts1 = [{Opt, Spec}|Opts],
+ maps:put(Mod, Opts1, Acc)
+ end, #{}, Specs),
+ maps:fold(
+ fun(Mod, OptSpecs, _) ->
+ ModS = atom_to_list(Mod) ++ "_opt",
+ File = filename:join("src", ModS ++ ".erl"),
+ case file:open(File, [write]) of
+ {ok, Fd} ->
+ OptSpecs1 = lists:reverse(OptSpecs),
+ emit_header(Fd, ModS, OptSpecs1),
+ emit_funs(Fd, Mod, OptSpecs1);
+ {error, Reason} ->
+ err("Failed to open file ~s for writing: ~s",
+ [File, file:format_error(Reason)])
+ end
+ end, ok, M).
+
+emit_header(Fd, Mod, Specs, Globals) ->
+ log(Fd, comment(), []),
+ log(Fd, "-module(~s).~n", [Mod]),
+ lists:foreach(
+ fun({{_, Opt}, _}) ->
+ case lists:member(Opt, Globals) of
+ true ->
+ log(Fd, "-export([~s/0]).", [Opt]);
+ false ->
+ log(Fd, "-export([~s/0, ~s/1]).", [Opt, Opt])
+ end
+ end, Specs),
+ log(Fd, "", []).
+
+emit_header(Fd, Mod, Specs) ->
+ log(Fd, comment(), []),
+ log(Fd, "-module(~s).~n", [Mod]),
+ lists:foreach(
+ fun({Opt, _}) ->
+ log(Fd, "-export([~s/1]).", [Opt])
+ end, Specs),
+ log(Fd, "", []).
+
+emit_funs(Fd, _Mod, Specs, Globals) ->
+ lists:foreach(
+ fun({{_, Opt}, Type}) ->
+ SType = t_to_string(Type),
+ case lists:member(Opt, Globals) of
+ true ->
+ log(Fd,
+ "-spec ~s() -> ~s.~n"
+ "~s() ->~n"
+ " ejabberd_config:get_option({~s, global}).~n",
+ [Opt, SType, Opt, Opt]);
+ false ->
+ log(Fd,
+ "-spec ~s() -> ~s.~n"
+ "~s() ->~n"
+ " ~s(global).~n"
+ "-spec ~s(global | binary()) -> ~s.~n"
+ "~s(Host) ->~n"
+ " ejabberd_config:get_option({~s, Host}).~n",
+ [Opt, SType, Opt, Opt, Opt, SType, Opt, Opt])
+ end
+ end, Specs).
+
+emit_funs(Fd, Mod, Specs) ->
+ lists:foreach(
+ fun({Opt, Type}) ->
+ log(Fd,
+ "-spec ~s(gen_mod:opts() | global | binary()) -> ~s.~n"
+ "~s(Opts) when is_map(Opts) ->~n"
+ " gen_mod:get_opt(~s, Opts);~n"
+ "~s(Host) ->~n"
+ " gen_mod:get_module_opt(Host, ~s, ~s).~n",
+ [Opt, t_to_string(Type), Opt, Opt, Opt, Mod, Opt])
+ end, Specs).
+
+append({globals, Form}, _File, State) ->
+ [Clause] = erl_syntax:function_clauses(Form),
+ Body = lists:last(erl_syntax:clause_body(Clause)),
+ Gs = lists:map(fun erl_syntax:atom_value/1,
+ erl_syntax:list_elements(Body)),
+ Globals = State#state.globals ++ Gs,
+ State#state{globals = Globals};
+append({Index, Form}, File, State) when Index == #state.defaults;
+ Index == #state.mod_defaults ->
+ Mod = module(File),
+ [Clause] = erl_syntax:function_clauses(Form),
+ Body = lists:last(erl_syntax:clause_body(Clause)),
+ case erl_syntax:is_proper_list(Body) of
+ true ->
+ Opts = lists:foldl(
+ fun(E, M) ->
+ try
+ [E1, E2|_] = erl_syntax:tuple_elements(E),
+ Name = erl_syntax:atom_value(E1),
+ Val = erl_syntax:concrete(E2),
+ maps:put({Mod, Name}, Val, M)
+ catch _:_ ->
+ M
+ end
+ end, element(Index, State), erl_syntax:list_elements(Body)),
+ setelement(Index, State, Opts);
+ false ->
+ warn("~s: improper list", [format_file(File, Body)]),
+ State
+ end;
+append({Index, Form}, File, State) when Index == #state.specs;
+ Index == #state.mod_specs ->
+ Specs = element(Index, State),
+ Mod = module(File),
+ try
+ {type, _, 'fun', Form1} = Form,
+ {type, _, list, Form2} = lists:last(Form1),
+ Tuples = case Form2 of
+ [{type, _, union, Form3}] -> Form3;
+ _ -> Form2
+ end,
+ Specs1 = lists:foldl(
+ fun({type, _, tuple, [{atom, _, Atom}, Form5]}, Acc) ->
+ maps:put({Mod, Atom}, Form5, Acc);
+ (_, Acc) ->
+ Acc
+ end, Specs, Tuples),
+ setelement(Index, State, Specs1)
+ catch _:_ ->
+ warn("~s: unsupported type spec", [format_file(File, Form)]),
+ State
+ end;
+append({Type, Form}, File, State) when Type == opt_type; Type == mod_opt_type ->
+ Clauses = erl_syntax:function_clauses(Form),
+ Mod = module(File),
+ lists:foldl(
+ fun(Clause, StateAcc) ->
+ [Arg] = erl_syntax:clause_patterns(Clause),
+ Body = lists:last(erl_syntax:clause_body(Clause)),
+ case erl_syntax:type(Arg) of
+ atom ->
+ Name = erl_syntax:atom_value(Arg),
+ case Type of
+ opt_type ->
+ GOpts = StateAcc#state.g_opts,
+ State#state{
+ g_opts = append_body({Mod, Name}, Body, GOpts)};
+ mod_opt_type ->
+ MOpts = StateAcc#state.m_opts,
+ State#state{
+ m_opts = append_body({Mod, Name}, Body, MOpts)}
+ end;
+ T ->
+ warn("~s: unexpected option name: ~s",
+ [format_file(File, Arg), T]),
+ StateAcc
+ end
+ end, State, Clauses).
+
+append_body(Name, Body, Map) ->
+ maps:put(Name, Body, Map).
+
+map_to_specs(Map, Defaults, Specs) ->
+ lists:keysort(
+ 1, maps:fold(
+ fun({Mod, Opt} = Key, Val, Acc) ->
+ S1 = type_with_default(Key, Val, Defaults),
+ S2 = case t_is_any(S1) of
+ true ->
+ try maps:get(Key, Specs)
+ catch _:{badkey, _} ->
+ warn("Cannot derive type for ~s->~s", [Mod, Opt]),
+ S1
+ end;
+ false ->
+ S1
+ end,
+ [{Key, S2}|Acc]
+ end, [], Map)).
+
+type_with_default({Mod, _} = Key, Val, Defaults) ->
+ S = try spec(Mod, Val)
+ catch throw:unknown -> erl_types:t_any()
+ end,
+ case t_is_any(S) of
+ true ->
+ S;
+ false ->
+ try maps:get(Key, Defaults) of
+ T ->
+ erl_types:t_sup(
+ [S, erl_types:t_from_term(T)])
+ catch _:{badkey, _} ->
+ S
+ end
+ end.
+
+spec(Mod, Form) ->
+ case erl_syntax:type(Form) of
+ application ->
+ case erl_syntax_lib:analyze_application(Form) of
+ {M, {Fun, Arity}} when M == econf;
+ M == yconf ->
+ Args = erl_syntax:application_arguments(Form),
+ spec(Fun, Arity, Args, Mod);
+ _ ->
+ t_unknown(Mod)
+ end;
+ _ ->
+ t_unknown(Mod)
+ end.
+
+spec(pos_int, 0, _, _) ->
+ erl_types:t_pos_integer();
+spec(pos_int, 1, [Inf], _) ->
+ erl_types:t_sup(
+ erl_types:t_pos_integer(),
+ erl_types:t_atom(erl_syntax:atom_value(Inf)));
+spec(non_neg_int, 0, _, _) ->
+ erl_types:t_non_neg_integer();
+spec(non_neg_int, 1, [Inf], _) ->
+ erl_types:t_sup(
+ erl_types:t_non_neg_integer(),
+ erl_types:t_atom(erl_syntax:atom_value(Inf)));
+spec(int, 0, _, _) ->
+ erl_types:t_integer();
+spec(int, 2, [Min, Max], _) ->
+ erl_types:t_from_range(
+ erl_syntax:integer_value(Min),
+ erl_syntax:integer_value(Max));
+spec(number, 1, _, _) ->
+ erl_types:t_number();
+spec(octal, 0, _, _) ->
+ erl_types:t_non_neg_integer();
+spec(binary, A, _, _) when A == 0; A == 1; A == 2 ->
+ erl_types:t_binary();
+spec(enum, 1, [L], _) ->
+ try
+ Els = erl_syntax:list_elements(L),
+ Atoms = lists:map(
+ fun(A) ->
+ erl_types:t_atom(
+ erl_syntax:atom_value(A))
+ end, Els),
+ erl_types:t_sup(Atoms)
+ catch _:_ ->
+ erl_types:t_binary()
+ end;
+spec(bool, 0, _, _) ->
+ erl_types:t_boolean();
+spec(atom, 0, _, _) ->
+ erl_types:t_atom();
+spec(string, A, _, _) when A == 0; A == 1; A == 2 ->
+ erl_types:t_string();
+spec(any, 0, _, Mod) ->
+ t_unknown(Mod);
+spec(url, A, _, _) when A == 0; A == 1 ->
+ erl_types:t_binary();
+spec(file, A, _, _) when A == 0; A == 1 ->
+ erl_types:t_binary();
+spec(directory, A, _, _) when A == 0; A == 1 ->
+ erl_types:t_binary();
+spec(ip, 0, _, _) ->
+ t_remote(inet, ip_address);
+spec(ipv4, 0, _, _) ->
+ t_remote(inet, ip4_address);
+spec(ipv6, 0, _, _) ->
+ t_remote(inet, ip6_address);
+spec(ip_mask, 0, _, _) ->
+ erl_types:t_sup(
+ erl_types:t_tuple(
+ [t_remote(inet, ip4_address), erl_types:t_from_range(0, 32)]),
+ erl_types:t_tuple(
+ [t_remote(inet, ip6_address), erl_types:t_from_range(0, 128)]));
+spec(port, 0, _, _) ->
+ erl_types:t_from_range(1, 65535);
+spec(re, A, _, _) when A == 0; A == 1 ->
+ t_remote(re, mp);
+spec(glob, A, _, _) when A == 0; A == 1 ->
+ t_remote(re, mp);
+spec(path, 0, _, _) ->
+ erl_types:t_binary();
+spec(binary_sep, 1, _, _) ->
+ erl_types:t_list(erl_types:t_binary());
+spec(beam, A, _, _) when A == 0; A == 1 ->
+ erl_types:t_module();
+spec(timeout, 1, _, _) ->
+ erl_types:t_pos_integer();
+spec(timeout, 2, [_, Inf], _) ->
+ erl_types:t_sup(
+ erl_types:t_pos_integer(),
+ erl_types:t_atom(erl_syntax:atom_value(Inf)));
+spec(non_empty, 1, [Form], Mod) ->
+ S = spec(Mod, Form),
+ case erl_types:t_is_list(S) of
+ true ->
+ erl_types:t_nonempty_list(
+ erl_types:t_list_elements(S));
+ false ->
+ S
+ end;
+spec(unique, 1, [Form], Mod) ->
+ spec(Mod, Form);
+spec(acl, 0, _, _) ->
+ t_remote(acl, acl);
+spec(shaper, 0, _, _) ->
+ erl_types:t_sup(
+ [erl_types:t_atom(),
+ erl_types:t_list(t_remote(ejabberd_shaper, shaper_rule))]);
+spec(url_or_file, 0, _, _) ->
+ erl_types:t_tuple(
+ [erl_types:t_sup([erl_types:t_atom(file),
+ erl_types:t_atom(url)]),
+ erl_types:t_binary()]);
+spec(lang, 0, _, _) ->
+ erl_types:t_binary();
+spec(pem, 0, _, _) ->
+ erl_types:t_binary();
+spec(jid, 0, _, _) ->
+ t_remote(jid, jid);
+spec(domain, 0, _, _) ->
+ erl_types:t_binary();
+spec(db_type, 1, _, _) ->
+ erl_types:t_atom();
+spec(queue_type, 0, _, _) ->
+ erl_types:t_sup([erl_types:t_atom(ram),
+ erl_types:t_atom(file)]);
+spec(ldap_filter, 0, _, _) ->
+ erl_types:t_binary();
+spec(sip_uri, 0, _, _) ->
+ t_remote(esip, uri);
+spec(Fun, A, [Form|_], Mod) when (A == 1 orelse A == 2) andalso
+ (Fun == list orelse Fun == list_or_single) ->
+ erl_types:t_list(spec(Mod, Form));
+spec(map, A, [F1, F2|OForm], Mod) when A == 2; A == 3 ->
+ T1 = spec(Mod, F1),
+ T2 = spec(Mod, F2),
+ case options_return_type(OForm) of
+ map ->
+ erl_types:t_map([], T1, T2);
+ dict ->
+ t_remote(dict, dict);
+ _ ->
+ erl_types:t_list(erl_types:t_tuple([T1, T2]))
+ end;
+spec(either, 2, [F1, F2], Mod) ->
+ Spec1 = case erl_syntax:type(F1) of
+ atom -> erl_types:t_atom(erl_syntax:atom_value(F1));
+ _ -> spec(Mod, F1)
+ end,
+ Spec2 = spec(Mod, F2),
+ erl_types:t_sup([Spec1, Spec2]);
+spec(and_then, 2, [_, F], Mod) ->
+ spec(Mod, F);
+spec(host, 0, _, _) ->
+ erl_types:t_binary();
+spec(hosts, 0, _, _) ->
+ erl_types:t_list(erl_types:t_binary());
+spec(vcard_temp, 0, _, _) ->
+ erl_types:t_sup([erl_types:t_atom(undefined),
+ erl_types:t_tuple()]);
+spec(options, A, [Form|OForm], Mod) when A == 1; A == 2 ->
+ case erl_syntax:type(Form) of
+ map_expr ->
+ Fs = erl_syntax:map_expr_fields(Form),
+ Required = options_required(OForm),
+ {Els, {DefK, DefV}} =
+ lists:mapfoldl(
+ fun(F, Acc) ->
+ Name = erl_syntax:map_field_assoc_name(F),
+ Val = erl_syntax:map_field_assoc_value(F),
+ OptType = spec(Mod, Val),
+ case erl_syntax:atom_value(Name) of
+ '_' ->
+ {[], {erl_types:t_atom(), OptType}};
+ Atom ->
+ Mand = case lists:member(Atom, Required) of
+ true -> mandatory;
+ false -> optional
+ end,
+ {[{erl_types:t_atom(Atom), Mand, OptType}], Acc}
+ end
+ end, {erl_types:t_none(), erl_types:t_none()}, Fs),
+ case options_return_type(OForm) of
+ map ->
+ erl_types:t_map(lists:keysort(1, lists:flatten(Els)), DefK, DefV);
+ dict ->
+ t_remote(dict, dict);
+ _ ->
+ erl_types:t_list(
+ erl_types:t_sup(
+ [erl_types:t_tuple([DefK, DefV])|
+ lists:map(
+ fun({K, _, V}) ->
+ erl_types:t_tuple([K, V])
+ end, lists:flatten(Els))]))
+ end;
+ _ ->
+ t_unknown(Mod)
+ end;
+spec(_, _, _, Mod) ->
+ t_unknown(Mod).
+
+t_from_form(Spec) ->
+ {T, _} = erl_types:t_from_form(
+ Spec, sets:new(), {type, {mod, foo, 1}}, dict:new(),
+ erl_types:var_table__new(), erl_types:cache__new()),
+ T.
+
+t_remote(Mod, Type) ->
+ D = maps:from_list([{{opaque, Type, []},
+ {{Mod, 1, 2, []}, type}}]),
+ [T] = erl_types:t_opaque_from_records(D),
+ T.
+
+t_unknown(_Mod) ->
+ throw(unknown).
+
+t_is_any(T) ->
+ T == erl_types:t_any().
+
+t_to_string(T) ->
+ case erl_types:is_erl_type(T) of
+ true -> erl_types:t_to_string(T);
+ false -> erl_types:t_form_to_string(T)
+ end.
+
+options_return_type([]) ->
+ list;
+options_return_type([Form]) ->
+ Opts = erl_syntax:concrete(Form),
+ proplists:get_value(return, Opts, list).
+
+options_required([]) ->
+ [];
+options_required([Form]) ->
+ Opts = erl_syntax:concrete(Form),
+ proplists:get_value(required, Opts, []).
+
+format_file(Path, Form) ->
+ filename:rootname(filename:basename(Path)) ++ ".erl:" ++
+ integer_to_list(erl_syntax:get_pos(Form)).
+
+module(Path) ->
+ list_to_atom(filename:rootname(filename:basename(Path))).
+
+fold_beams(Fun, State, Paths) ->
+ Paths1 = fold_paths(Paths),
+ Total = length(Paths1),
+ {_, State1} =
+ lists:foldl(
+ fun(File, {I, Acc}) ->
+ io:format("Progress: ~B% (~B/~B)\r",
+ [round(I*100/Total), I, Total]),
+ case is_elixir_beam(File) of
+ true -> {I+1, Acc};
+ false ->
+ AbsCode = get_code_from_beam(File),
+ Acc2 = case is_behaviour(AbsCode, ejabberd_config) of
+ true ->
+ fold_opt(File, Fun, Acc, AbsCode);
+ false ->
+ fold_mod_opt(File, Fun, Acc, AbsCode)
+ end,
+ {I+1, Acc2}
+ end
+ end, {0, State}, Paths1),
+ State1.
+
+fold_opt(File, Fun, Acc, AbsCode) ->
+ lists:foldl(
+ fun(Form, Acc1) ->
+ case erl_syntax_lib:analyze_form(Form) of
+ {function, {opt_type, 1}} ->
+ Fun(File, {opt_type, Form}, Acc1);
+ {function, {globals, 0}} ->
+ Fun(File, {globals, Form}, Acc1);
+ {function, {options, 0}} ->
+ Fun(File, {#state.defaults, Form}, Acc1);
+ {attribute, {spec, {spec, {{options, 0}, Spec}}}} ->
+ Fun(File, {#state.specs, hd(Spec)}, Acc1);
+ _ ->
+ Acc1
+ end
+ end, Acc, AbsCode).
+
+fold_mod_opt(File, Fun, Acc, AbsCode) ->
+ lists:foldl(
+ fun(Form, Acc1) ->
+ case erl_syntax_lib:analyze_form(Form) of
+ {function, {mod_opt_type, 1}} ->
+ Fun(File, {mod_opt_type, Form}, Acc1);
+ {function, {mod_options, 1}} ->
+ Fun(File, {#state.mod_defaults, Form}, Acc1);
+ {attribute, {spec, {spec, {{mod_options, 1}, Spec}}}} ->
+ Fun(File, {#state.mod_specs, hd(Spec)}, Acc1);
+ _ ->
+ Acc1
+ end
+ end, Acc, AbsCode).
+
+fold_paths(Paths) ->
+ lists:flatmap(
+ fun(Path) ->
+ case filelib:is_dir(Path) of
+ true ->
+ Beams = lists:reverse(
+ filelib:fold_files(
+ Path, ".+\.beam\$", false,
+ fun(File, Acc) ->
+ [File|Acc]
+ end, [])),
+ case Beams of
+ [] -> ok;
+ _ -> code:add_path(Path)
+ end,
+ Beams;
+ false ->
+ [Path]
+ end
+ end, Paths).
+
+is_behaviour(AbsCode, Mod) ->
+ lists:any(
+ fun(Form) ->
+ case erl_syntax_lib:analyze_form(Form) of
+ {attribute, {Attr, {_, Mod}}}
+ when Attr == behaviour orelse Attr == behavior ->
+ true;
+ _ ->
+ false
+ end
+ end, AbsCode).
+
+is_elixir_beam(File) ->
+ case filename:basename(File) of
+ "Elixir" ++ _ -> true;
+ _ -> false
+ end.
+
+get_code_from_beam(File) ->
+ try
+ {ok, {_, List}} = beam_lib:chunks(File, [abstract_code]),
+ {_, {raw_abstract_v1, Forms}} = lists:keyfind(abstract_code, 1, List),
+ Forms
+ catch _:{badmatch, _} ->
+ err("no abstract code found in ~s", [File])
+ end.
+
+comment() ->
+ "%% Generated automatically~n"
+ "%% DO NOT EDIT: run `make options` instead~n".
+
+log(Format, Args) ->
+ log(standard_io, Format, Args).
+
+log(Fd, Format, Args) ->
+ case io:format(Fd, Format ++ "~n", Args) of
+ ok -> ok;
+ {error, Reason} ->
+ err("Failed to write to file: ~s", [file:format_error(Reason)])
+ end.
+
+warn(Format, Args) ->
+ io:format(standard_error, "Warning: " ++ Format ++ "~n", Args).
+
+err(Format, Args) ->
+ io:format(standard_error, "Error: " ++ Format ++ "~n", Args),
+ halt(1).
diff --git a/tools/prepare-tr.sh b/tools/prepare-tr.sh
new file mode 100755
index 000000000..d8f7753a6
--- /dev/null
+++ b/tools/prepare-tr.sh
@@ -0,0 +1,100 @@
+#!/bin/bash
+
+# Frontend for ejabberd's extract-tr.sh
+
+# How to create template files for a new language:
+# NEWLANG=zh
+# cp priv/msgs/ejabberd.pot priv/msgs/$NEWLANG.po
+# echo \{\"\",\"\"\}. > priv/msgs/$NEWLANG.msg
+# make translations
+
+extract_lang_src2pot ()
+{
+ ./tools/extract-tr.sh src > priv/msgs/ejabberd.pot
+}
+
+extract_lang_popot2po ()
+{
+ LANG_CODE=$1
+ PO_PATH=$MSGS_DIR/$LANG_CODE.po
+ POT_PATH=$MSGS_DIR/$PROJECT.pot
+
+ msgmerge $PO_PATH $POT_PATH >$PO_PATH.translate 2>/dev/null
+ mv $PO_PATH.translate $PO_PATH
+}
+
+extract_lang_po2msg ()
+{
+ LANG_CODE=$1
+ PO_PATH=$LANG_CODE.po
+ MS_PATH=$PO_PATH.ms
+ MSGID_PATH=$PO_PATH.msgid
+ MSGSTR_PATH=$PO_PATH.msgstr
+ MSGS_PATH=$LANG_CODE.msg
+
+ cd $MSGS_DIR
+
+ # Check PO has correct ~
+ # Let's convert to C format so we can use msgfmt
+ PO_TEMP=$LANG_CODE.po.temp
+ cat $PO_PATH | sed 's/%/perc/g' | sed 's/~/%/g' | sed 's/#:.*/#, c-format/g' >$PO_TEMP
+ msgfmt $PO_TEMP --check-format
+ result=$?
+ rm $PO_TEMP
+ if [ $result -ne 0 ] ; then
+ exit 1
+ fi
+
+ msgattrib $PO_PATH --translated --no-fuzzy --no-obsolete --no-location --no-wrap | grep "^msg" | tail --lines=+3 >$MS_PATH
+ grep "^msgid" $PO_PATH.ms | sed 's/^msgid //g' >$MSGID_PATH
+ grep "^msgstr" $PO_PATH.ms | sed 's/^msgstr //g' >$MSGSTR_PATH
+ echo "%% -*- coding: utf-8 -*-" >$MSGS_PATH
+ paste $MSGID_PATH $MSGSTR_PATH --delimiter=, | awk '{print "{" $0 "}."}' | sort -g >>$MSGS_PATH
+
+ rm $MS_PATH
+ rm $MSGID_PATH
+ rm $MSGSTR_PATH
+}
+
+extract_lang_updateall ()
+{
+ echo ""
+ echo "Generating POT..."
+ extract_lang_src2pot
+
+ cd $MSGS_DIR
+ echo ""
+ echo -e "File Missing (fuzzy) Language Last translator"
+ echo -e "---- ------- ------- -------- ---------------"
+ for i in $( ls *.msg ) ; do
+ LANG_CODE=${i%.msg}
+ echo -n $LANG_CODE | awk '{printf "%-6s", $1 }'
+
+ PO=$LANG_CODE.po
+
+ extract_lang_popot2po $LANG_CODE
+ extract_lang_po2msg $LANG_CODE
+
+ MISSING=`msgfmt --statistics $PO 2>&1 | awk '{printf "%5s", $4+$7 }'`
+ echo -n " $MISSING"
+
+ FUZZY=`msgfmt --statistics $PO 2>&1 | awk '{printf "%7s", $4 }'`
+ echo -n " $FUZZY"
+
+ LANGUAGE=`grep "X-Language:" $PO | sed 's/\"X-Language: //g' | sed 's/\\\\n\"//g' | awk '{printf "%-12s", $1}'`
+ echo -n " $LANGUAGE"
+
+ LASTAUTH=`grep "Last-Translator" $PO | sed 's/\"Last-Translator: //g' | sed 's/\\\\n\"//g'`
+ echo " $LASTAUTH"
+ done
+ echo ""
+ rm messages.mo
+
+ cd ..
+}
+
+EJA_DIR=`pwd`
+PROJECT=ejabberd
+MSGS_DIR=$EJA_DIR/priv/msgs
+
+extract_lang_updateall
diff --git a/tools/update-deps-releases.pl b/tools/update-deps-releases.pl
new file mode 100755
index 000000000..17358d975
--- /dev/null
+++ b/tools/update-deps-releases.pl
@@ -0,0 +1,555 @@
+#!/usr/bin/perl
+
+use v5.10;
+use strict;
+use warnings;
+
+use File::Slurp qw(slurp write_file);
+use File::stat;
+use File::Touch;
+use File::chdir;
+use File::Spec;
+use Data::Dumper qw(Dumper);
+use Carp;
+use Term::ANSIColor;
+use Term::ReadKey;
+use List::Util qw(first);
+use Clone qw(clone);
+
+sub get_deps {
+ my ($config, %fdeps) = @_;
+
+ my %deps;
+
+ return { } unless $config =~ /\{\s*deps\s*,\s*\[(.*?)\]/s;
+ my $sdeps = $1;
+
+ while ($sdeps =~ /\{\s* (\w+) \s*,\s* ".*?" \s*,\s* \{\s*git \s*,\s* "(.*?)" \s*,\s*
+ (?:
+ (?:{\s*tag \s*,\s* "(.*?)") |
+ "(.*?)" |
+ ( \{ (?: (?-1) | [^{}]+ )+ \} ) )/sgx) {
+ next unless not %fdeps or exists $fdeps{$1};
+ $deps{$1} = { repo => $2, commit => $3 || $4 };
+ }
+ return \%deps;
+}
+my (%info_updates, %top_deps_updates, %sub_deps_updates, @operations);
+my $epoch = 1;
+
+sub top_deps {
+ state %deps;
+ state $my_epoch = $epoch;
+ if (not %deps or $my_epoch != $epoch) {
+ $my_epoch = $epoch;
+ my $config = slurp "rebar.config";
+ croak "Unable to extract floating_deps" unless $config =~ /\{floating_deps, \[(.*?)\]/s;
+
+ my $fdeps = $1;
+ $fdeps =~ s/\s*//g;
+ my %fdeps = map { $_ => 1 } split /,/, $fdeps;
+ %deps = %{get_deps($config, %fdeps)};
+ }
+ return {%deps, %top_deps_updates};
+}
+
+sub update_deps_repos {
+ my ($force) = @_;
+ my $deps = top_deps();
+ $epoch++;
+ mkdir(".deps-update") unless -d ".deps-update";
+ for my $dep (keys %{$deps}) {
+ my $dd = ".deps-update/$dep";
+ if (not -d $dd) {
+ say "Downloading $dep...";
+ my $repo = $deps->{$dep}->{repo};
+ $repo =~ s!^https?://github.com/!git\@github.com:!;
+ system("git", "-C", ".deps-update", "clone", $repo);
+ } elsif (time() - stat($dd)->mtime > 24 * 60 * 60 or $force) {
+ say "Updating $dep...";
+ system("git", "-C", $dd, "pull");
+ touch($dd)
+ }
+ }
+}
+
+sub sub_deps {
+ state %sub_deps;
+ state $my_epoch = $epoch;
+ if (not %sub_deps or $my_epoch != $epoch) {
+ $my_epoch = $epoch;
+ my $deps = top_deps();
+ for my $dep (keys %{$deps}) {
+ my $rc = ".deps-update/$dep/rebar.config";
+ $sub_deps{$dep} = { };
+ next unless -f $rc;
+ $sub_deps{$dep} = get_deps(scalar(slurp($rc)));
+ }
+ }
+ return {%sub_deps, %sub_deps_updates};
+}
+
+sub rev_deps_helper {
+ my ($rev_deps, $dep) = @_;
+ if (not exists $rev_deps->{$dep}->{indirect}) {
+ my %deps = %{$rev_deps->{$dep}->{direct} || {}};
+ for (keys %{$rev_deps->{$dep}->{direct}}) {
+ %deps = (%deps, %{rev_deps_helper($rev_deps, $_)});
+ }
+ $rev_deps->{$dep}->{indirect} = \%deps;
+ }
+ return $rev_deps->{$dep}->{indirect};
+}
+
+sub rev_deps {
+ state %rev_deps;
+ state $deps_epoch = $epoch;
+ if (not %rev_deps or $deps_epoch != $epoch) {
+ $deps_epoch = $epoch;
+ my $sub_deps = sub_deps();
+ for my $dep (keys %$sub_deps) {
+ $rev_deps{$_}->{direct}->{$dep} = 1 for keys %{$sub_deps->{$dep}};
+ }
+ for my $dep (keys %$sub_deps) {
+ $rev_deps{$dep}->{indirect} = rev_deps_helper(\%rev_deps, $dep);
+ }
+ }
+ return \%rev_deps;
+}
+
+sub update_changelog {
+ my ($dep, $version, @reasons) = @_;
+ my $cl = ".deps-update/$dep/CHANGELOG.md";
+ return if not -f $cl;
+ my $reason = join "\n", map {"* $_"} @reasons;
+ my $content = slurp($cl);
+ if (not $content =~ /^# Version $version/) {
+ $content = "# Version $version\n\n$reason\n\n$content";
+ } else {
+ $content =~ s/(# Version $version\n\n)/$1$reason\n/;
+ }
+ write_file($cl, $content);
+}
+
+sub edit_changelog {
+ my ($dep, $version) = @_;
+ my $cl = ".deps-update/$dep/CHANGELOG.md";
+
+ return if not -f $cl;
+
+ my $top_deps = top_deps();
+ my $git_info = deps_git_info();
+
+ say color("red"), "$dep", color("reset"), " ($top_deps->{$dep}->{commit}):";
+ say " $_" for @{$git_info->{$dep}->{new_commits}};
+ say "";
+
+ my $content = slurp($cl);
+ my $old_content = $content;
+
+ if (not $content =~ /^# Version $version/) {
+ $content = "# Version $version\n\n* \n\n$content";
+ } else {
+ $content =~ s/(# Version $version\n\n)/$1* \n/;
+ }
+ write_file($cl, $content);
+
+ system("$ENV{EDITOR} $cl");
+
+ my $new_content = slurp($cl);
+ if ($new_content eq $content) {
+ write_file($cl, $old_content);
+ } else {
+ system("git", "-C", ".deps-update/$dep", "commit", "-a", "-m", "Update changelog");
+ }
+}
+
+sub update_app_src {
+ my ($dep, $version) = @_;
+ my $app = ".deps-update/$dep/src/$dep.app.src";
+ return if not -f $app;
+ my $content = slurp($app);
+ $content =~ s/(\{\s*vsn\s*,\s*)".*"/$1"$version"/;
+ write_file($app, $content);
+}
+
+sub update_deps_versions {
+ my ($config_path, %deps) = @_;
+ my $config = slurp $config_path;
+
+ for (keys %deps) {
+ $config =~ s/(\{\s*$_\s*,\s*".*?"\s*,\s*\{\s*git\s*,\s*".*?"\s*,\s*)(?:{\s*tag\s*,\s*"(.*?)"\s*}|"(.*?)")/$1\{tag, "$deps{$_}"}/s;
+ }
+
+ write_file($config_path, $config);
+}
+
+sub cmp_ver {
+ my @a = split /(\d+)/, $a;
+ my @b = split /(\d+)/, $b;
+ my $is_num = 1;
+
+ return - 1 if $#a == 0;
+ return 1 if $#b == 0;
+
+ while (1) {
+ my $ap = shift @a;
+ my $bp = shift @b;
+ $is_num = 1 - $is_num;
+
+ if (defined $ap) {
+ if (defined $bp) {
+ if ($is_num) {
+ next if $ap == $bp;
+ return 1 if $ap > $bp;
+ return - 1;
+ } else {
+ next if $ap eq $bp;
+ return 1 if $ap gt $bp;
+ return - 1;
+ }
+ } else {
+ return 1;
+ }
+ } elsif (defined $bp) {
+ return - 1;
+ } else {
+ return 0;
+ }
+ }
+}
+
+sub deps_git_info {
+ state %info;
+ state $my_epoch = $epoch;
+ if (not %info or $my_epoch != $epoch) {
+ $my_epoch = $epoch;
+ my $deps = top_deps();
+ for my $dep (keys %{$deps}) {
+ my $dir = ".deps-update/$dep";
+ my @tags = `git -C "$dir" tag`;
+ chomp(@tags);
+ @tags = sort cmp_ver @tags;
+ my $last_tag = $tags[$#tags];
+ my @new = `git -C $dir log --oneline $last_tag..origin/master`;
+ my $new_tag = $last_tag;
+ $new_tag =~ s/(\d+)$/$1+1/e;
+ chomp(@new);
+
+ my $cl = ".deps-update/$dep/CHANGELOG.md";
+ my $content = slurp($cl, err_mode => "quiet") // "";
+ if ($content =~ /^# Version (\S+)/) {
+ if (!grep({$_ eq $1} @tags) && $1 ne $new_tag) {
+ $new_tag = $1;
+ }
+ }
+
+ $info{$dep} = { last_tag => $last_tag, new_commits => \@new, new_tag => $new_tag };
+ }
+ }
+ return { %info, %info_updates };
+}
+
+sub show_commands {
+ my %commands = @_;
+ my @keys;
+ while (@_) {
+ push @keys, shift;
+ shift;
+ }
+ for (@keys) {
+ say color("red"), $_, color("reset"), ") $commands{$_}";
+ }
+ ReadMode(4);
+ my $wkey = "";
+ while (1) {
+ my $key = ReadKey(0);
+ $wkey = substr($wkey.$key, -2);
+ if (defined $commands{uc($key)}) {
+ ReadMode(0);
+ say "";
+ return uc($key);
+ } elsif (defined $commands{uc($wkey)}) {
+ ReadMode(0);
+ say "";
+ return uc($wkey);
+ }
+ }
+}
+
+sub schedule_operation {
+ my ($type, $dep, $tag, $reason, $op) = @_;
+
+ my $idx = first { $operations[$_]->{dep} eq $dep } 0..$#operations;
+
+ if (defined $idx) {
+ my $mop = $operations[$idx];
+ if (defined $op) {
+ my $oidx = first { $mop->{operations}->[$_]->[0] eq $op->[0] } 0..$#{$mop->{operations}};
+ if (defined $oidx) {
+ $mop->{reasons}->[$oidx] = $reason;
+ $mop->{operations}->[$oidx] = $op;
+ } else {
+ push @{$mop->{reasons}}, $reason;
+ push @{$mop->{operations}}, $op;
+ }
+ }
+ return if $type eq "update";
+ $mop->{type} = $type;
+ $info_updates{$dep}->{new_commits} = [];
+ return;
+ }
+
+ my $info = deps_git_info();
+
+ $top_deps_updates{$dep} = {commit => $tag};
+ $info_updates{$dep} = {last_tag => $tag, new_tag => $tag,
+ new_commits => $type eq "tupdate" ? [] : $info->{$dep}->{new_commits}};
+
+ my $rev_deps = rev_deps();
+ @operations = sort {
+ exists $rev_deps->{$a->{dep}}->{indirect}->{$b->{dep}} ? -1 :
+ exists $rev_deps->{$b->{dep}}->{indirect}->{$a->{dep}} ? 1 : $a->{dep} cmp $b->{dep}
+ } (@operations, {
+ type => $type,
+ dep => $dep,
+ version => $tag,
+ reasons => ($reason ? [$reason] : []),
+ operations => ($op ? [$op] : [])}
+ );
+
+ my $sub_deps = sub_deps();
+
+ for (keys %{$rev_deps->{$dep}->{direct}}) {
+ schedule_operation("update", $_, $info->{$_}->{new_tag}, "Updating $dep to version $tag.", [$dep, $tag]);
+ $sub_deps_updates{$_} = $sub_deps_updates{$_} || clone($sub_deps->{$_});
+ $sub_deps_updates{$_}->{$dep}->{commit} = $tag;
+ }
+}
+
+sub git_tag {
+ my ($dep, $ver, $msg) = @_;
+
+ system("git", "-C", ".deps-update/$dep", "commit", "-a", "-m", $msg);
+ system("git", "-C", ".deps-update/$dep", "tag", $ver);
+}
+
+sub git_push {
+ my ($dep) = @_;
+ system("git", "-C", ".deps-update/$dep", "push");
+ system("git", "-C", ".deps-update/$dep", "push", "--tags");
+}
+
+sub check_hex_files {
+ my ($dep) = @_;
+ my $app = ".deps-update/$dep/src/$dep.app.src";
+ return if not -f $app;
+ my $content = slurp($app);
+ my @paths;
+ if ($content =~ /{\s*files\s*,\s*\[([^\]]+)\]/) {
+ my $list = $1;
+ push @paths, $1 while $list =~ /"([^"]*?)"/g;
+ } else {
+ @paths = (
+ "src", "c_src", "include", "rebar.config.script", "priv",
+ "rebar.config", "rebar.lock", "README*", "readme*", "LICENSE*",
+ "license*", "NOTICE");
+ }
+ local $CWD = ".deps-update/$dep";
+ my @interesting_files = map {File::Spec->canonpath($_)} glob("rebar.config* src/*.erl src/*.app.src c_src/*.c c_src/*.cpp \
+ c_src/*.h c_src/*.hpp include/*.hrl");
+
+ my @matching_files;
+ for my $path (@paths) {
+ if (-d $path) {
+ push @matching_files, map {File::Spec->canonpath($_)} glob("$path/*");
+ } else {
+ push @matching_files, map {File::Spec->canonpath($_)} glob($path);
+ }
+ }
+ my %diff;
+ @diff{ @interesting_files } = undef;
+ delete @diff{ @matching_files };
+ my @diff = keys %diff;
+ if (@diff) {
+ print color("red"), "Dependency ", color("bold red"), $dep, color("reset"), color("red"), " files section doesn't match: ",
+ join(" ", @diff), color("reset"), "\n";
+
+ }
+}
+
+update_deps_repos();
+
+MAIN:
+while (1) {
+ my $top_deps = top_deps();
+ my $git_info = deps_git_info();
+ print color("bold blue"), "Dependences with newer tags:\n", color("reset");
+ my $old_deps = 0;
+ for my $dep (sort keys %$top_deps) {
+ next unless $git_info->{$dep}->{last_tag} ne $top_deps->{$dep}->{commit};
+ say color("red"), "$dep", color("reset"), ": $top_deps->{$dep}->{commit} -> $git_info->{$dep}->{last_tag}";
+ $old_deps = 1;
+ }
+ say "(none)" if not $old_deps;
+ say "";
+
+ print color("bold blue"), "Dependences that have commits after last tags:\n", color("reset");
+ my $changed_deps = 0;
+ for my $dep (sort keys %$top_deps) {
+ next unless @{$git_info->{$dep}->{new_commits}};
+ say color("red"), "$dep", color("reset"), " ($top_deps->{$dep}->{commit}):";
+ say " $_" for @{$git_info->{$dep}->{new_commits}};
+ $changed_deps = 1;
+ }
+ say "(none)" if not $changed_deps;
+ say "";
+
+ for my $dep (sort keys %$top_deps) {
+ check_hex_files($dep);
+ }
+
+ my $cmd = show_commands($old_deps ? (U => "Update dependency") : (),
+ $changed_deps ? (T => "Tag new release") : (),
+ @operations ? (A => "Apply changes") : (),
+ R => "Refresh repositiories",
+ E => "Exit");
+ last if $cmd eq "E";
+
+ if ($cmd eq "U") {
+ while (1) {
+ my @deps_to_update;
+ my @od;
+ my $idx = 1;
+ for my $dep (sort keys %$top_deps) {
+ next unless $git_info->{$dep}->{last_tag} ne $top_deps->{$dep}->{commit};
+ $od[$idx] = $dep;
+ push @deps_to_update, $idx++, "Update $dep to $git_info->{$dep}->{last_tag}";
+ }
+ last if $idx == 1;
+ my $cmd = show_commands(@deps_to_update, E => "Exit");
+ last if $cmd eq "E";
+
+ my $dep = $od[$cmd];
+ schedule_operation("update", $dep, $git_info->{$dep}->{last_tag});
+
+ $top_deps = top_deps();
+ $git_info = deps_git_info();
+ }
+ }
+
+ if ($cmd eq "R") {
+ update_deps_repos(1);
+ }
+ if ($cmd eq "T") {
+ while (1) {
+ my @deps_to_tag;
+ my @od;
+ my $idx = 1;
+ my $count = 0;
+ for my $dep (sort keys %$top_deps) {
+ next unless @{$git_info->{$dep}->{new_commits}};
+ $count++;
+ }
+ for my $dep (sort keys %$top_deps) {
+ next unless @{$git_info->{$dep}->{new_commits}};
+ $od[$idx] = $dep;
+ my $id = $idx++;
+ $id = sprintf "%02d", $id if $count > 9;
+ push @deps_to_tag, $id, "Tag $dep with version $git_info->{$dep}->{new_tag}";
+ }
+ last if $idx == 1;
+ my $cmd = show_commands(@deps_to_tag, E => "Exit");
+ last if $cmd eq "E";
+
+ my $dep = $od[$cmd];
+ my $d = $git_info->{$dep};
+ schedule_operation("tupdate", $dep, $d->{new_tag});
+
+ $top_deps = top_deps();
+ $git_info = deps_git_info();
+ }
+ }
+
+ my $changelog_updated = 0;
+
+ if ($cmd eq "A") {
+ APPLY: {
+ $top_deps = top_deps();
+ $git_info = deps_git_info();
+ my $sub_deps = sub_deps();
+
+ for my $dep (keys %$top_deps) {
+ for my $sdep (keys %{$sub_deps->{$dep}}) {
+ next if not defined $top_deps->{$sdep} or
+ $sub_deps->{$dep}->{$sdep}->{commit} eq $top_deps->{$sdep}->{commit};
+ say "$dep $sdep ", $sub_deps->{$dep}->{$sdep}->{commit}, " <=> $sdep ",
+ $top_deps->{$sdep}->{commit};
+ schedule_operation("update", $dep, $git_info->{$dep}->{new_tag},
+ "Updating $sdep to version $top_deps->{$sdep}->{commit}.",
+ [ $sdep, $top_deps->{$sdep}->{commit} ]);
+ }
+ }
+
+ %info_updates = ();
+ %top_deps_updates = ();
+ %sub_deps_updates = ();
+
+ $top_deps = top_deps();
+ $git_info = deps_git_info();
+ $sub_deps = sub_deps();
+
+ print color("bold blue"), "List of operations:\n", color("reset");
+ for my $op (@operations) {
+ print color("red"), $op->{dep}, color("reset"),
+ " ($top_deps->{$op->{dep}}->{commit} -> $op->{version})";
+ if (@{$op->{operations}}) {
+ say ":";
+ say " $_->[0] -> $_->[1]" for @{$op->{operations}};
+ }
+ else {
+ say "";
+ }
+ }
+
+ say "";
+ my %to_tag;
+ if (not $changelog_updated) {
+ for my $op (@operations) {
+ if ($git_info->{$op->{dep}}->{last_tag} ne $op->{version}) {
+ $to_tag{$op->{dep}} = $op->{version};
+ }
+ }
+ }
+ my $cmd = show_commands(A => "Apply", (%to_tag ? (U => "Update Changelogs") : ()), E => "Exit");
+ if ($cmd eq "U") {
+ for my $dep (keys %to_tag) {
+ edit_changelog($dep, $to_tag{$dep});
+ }
+ redo APPLY;
+ }
+ elsif ($cmd eq "A") {
+ my %top_changes;
+ for my $op (@operations) {
+ update_changelog($op->{dep}, $op->{version}, @{$op->{reasons}})
+ if @{$op->{reasons}};
+ update_deps_versions(".deps-update/$op->{dep}/rebar.config", map {@{$_}[0,1] } @{$op->{operations}})
+ if @{$op->{operations}};
+ if ($git_info->{$op->{dep}}->{last_tag} ne $op->{version}) {
+ update_app_src($op->{dep}, $op->{version});
+ git_tag($op->{dep}, $op->{version}, "Release $op->{version}");
+ }
+
+ $top_changes{$op->{dep}} = $op->{version};
+ }
+ update_deps_versions("rebar.config", %top_changes);
+ for my $op (@operations) {
+ if ($git_info->{$op->{dep}}->{last_tag} ne $op->{version}) {
+ git_push($op->{dep});
+ }
+ }
+ last MAIN;
+ }
+ }
+ }
+}
diff --git a/tools/xml_compress_gen.erl b/tools/xml_compress_gen.erl
new file mode 100644
index 000000000..21b06a0bc
--- /dev/null
+++ b/tools/xml_compress_gen.erl
@@ -0,0 +1,417 @@
+%% File : xml_compress_gen.erl
+%% Author : Pawel Chmielowski
+%% Purpose :
+%% Created : 14 Sep 2018 Pawel Chmielowski
+%%
+%%
+%% ejabberd, Copyright (C) 2002-2019 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(xml_compress_gen).
+-author("pawel@process-one.net").
+
+-include("xmpp.hrl").
+
+%% API
+-export([archive_analyze/3, process_stats/1, gen_code/3]).
+
+-record(el_stats, {count = 0, empty_count = 0, only_text_count = 0, attrs = #{}, text_stats = #{}}).
+-record(attr_stats, {count = 0, vals = #{}}).
+
+archive_analyze(Host, Table, EHost) ->
+ case ejabberd_sql:sql_query(Host, [<<"select username, peer, kind, xml from ", Table/binary>>]) of
+ {selected, _, Res} ->
+ lists:foldl(
+ fun([U, P, K, X], Stats) ->
+ M = case K of
+ <<"groupchat">> ->
+ U;
+ _ ->
+ <<U/binary, "@", EHost/binary>>
+ end,
+ El = fxml_stream:parse_element(X),
+ analyze_element({El, <<"stream">>, <<"jabber:client">>, M, P}, Stats)
+ end, {0, #{}}, Res);
+ _ ->
+ none
+ end.
+
+encode_id(Num) when Num < 64 ->
+ iolist_to_binary(io_lib:format("~p:8", [Num])).
+
+gen_code(_File, _Rules, $<) ->
+ {error, <<"Invalid version">>};
+gen_code(File, Rules, Ver) when Ver < 64 ->
+ {Data, _} = lists:foldl(
+ fun({Ns, El, Attrs, Text}, {Acc, Id}) ->
+ NsC = case lists:keyfind(Ns, 1, Acc) of
+ false -> [];
+ {_, L} -> L
+ end,
+ {AttrsE, _} = lists:mapfoldl(
+ fun({AName, AVals}, Id2) ->
+ {AD, Id3} = lists:mapfoldl(
+ fun(AVal, Id3) ->
+ {{AVal, encode_id(Id3)}, Id3 + 1}
+ end, Id2, AVals),
+ {{AName, AD ++ [encode_id(Id3)]}, Id3 + 1}
+ end, 3, Attrs),
+ {TextE, Id5} = lists:mapfoldl(
+ fun(TextV, Id4) ->
+ {{TextV, encode_id(Id4)}, Id4 + 1}
+ end, Id + 1, Text),
+ {lists:keystore(Ns, 1, Acc, {Ns, NsC ++ [{El, encode_id(Id), AttrsE, TextE}]}), Id5}
+ end, {[], 5}, Rules),
+ {ok, Dev} = file:open(File, [write]),
+ Mod = filename:basename(File, ".erl"),
+ io:format(Dev, "-module(~s).~n-export([encode/3, decode/3]).~n~n", [Mod]),
+ RulesS = iolist_to_binary(io_lib:format("~p", [Rules])),
+ RulesS2 = binary:replace(RulesS, <<"\n">>, <<"\n% ">>, [global]),
+ io:format(Dev, "% This file was generated by xml_compress_gen~n%~n"
+ "% Rules used:~n%~n% ~s~n~n", [RulesS2]),
+ VerId = iolist_to_binary(io_lib:format("~p:8", [Ver])),
+ gen_encode(Dev, Data, VerId),
+ gen_decode(Dev, Data, VerId),
+ file:close(Dev),
+ Data.
+
+gen_decode(Dev, Data, VerId) ->
+ io:format(Dev, "decode(<<$<, _/binary>> = Data, _J1, _J2) ->~n"
+ " fxml_stream:parse_element(Data);~n"
+ "decode(<<~s, Rest/binary>>, J1, J2) ->~n"
+ " {El, _} = decode(Rest, <<\"jabber:client\">>, J1, J2),~n"
+ " El.~n~n", [VerId]),
+ io:format(Dev, "decode_string(Data) ->~n"
+ " case Data of~n"
+ " <<0:2, L:6, Str:L/binary, Rest/binary>> ->~n"
+ " {Str, Rest};~n"
+ " <<1:2, L1:6, 0:2, L2:6, Rest/binary>> ->~n"
+ " L = L2*64 + L1,~n"
+ " <<Str:L/binary, Rest2/binary>> = Rest,~n"
+ " {Str, Rest2};~n"
+ " <<1:2, L1:6, 1:2, L2:6, L3:8, Rest/binary>> ->~n"
+ " L = (L3*64 + L2)*64 + L1,~n"
+ " <<Str:L/binary, Rest2/binary>> = Rest,~n"
+ " {Str, Rest2}~n"
+ " end.~n~n", []),
+ io:format(Dev, "decode_child(<<1:8, Rest/binary>>, _PNs, _J1, _J2) ->~n"
+ " {Text, Rest2} = decode_string(Rest),~n"
+ " {{xmlcdata, Text}, Rest2};~n", []),
+ io:format(Dev, "decode_child(<<2:8, Rest/binary>>, PNs, J1, J2) ->~n"
+ " {Name, Rest2} = decode_string(Rest),~n"
+ " {Attrs, Rest3} = decode_attrs(Rest2),~n"
+ " {Children, Rest4} = decode_children(Rest3, PNs, J1, J2),~n"
+ " {{xmlel, Name, Attrs, Children}, Rest4};~n", []),
+ io:format(Dev, "decode_child(<<3:8, Rest/binary>>, PNs, J1, J2) ->~n"
+ " {Ns, Rest2} = decode_string(Rest),~n"
+ " {Name, Rest3} = decode_string(Rest2),~n"
+ " {Attrs, Rest4} = decode_attrs(Rest3),~n"
+ " {Children, Rest5} = decode_children(Rest4, Ns, J1, J2),~n"
+ " {{xmlel, Name, add_ns(PNs, Ns, Attrs), Children}, Rest5};~n", []),
+ io:format(Dev, "decode_child(<<4:8, Rest/binary>>, _PNs, _J1, _J2) ->~n"
+ " {stop, Rest};~n", []),
+ io:format(Dev, "decode_child(Other, PNs, J1, J2) ->~n"
+ " decode(Other, PNs, J1, J2).~n~n", []),
+ io:format(Dev, "decode_children(Data, PNs, J1, J2) ->~n"
+ " prefix_map(fun(Data2) -> decode(Data2, PNs, J1, J2) end, Data).~n~n", []),
+ io:format(Dev, "decode_attr(<<1:8, Rest/binary>>) ->~n"
+ " {Name, Rest2} = decode_string(Rest),~n"
+ " {Val, Rest3} = decode_string(Rest2),~n"
+ " {{Name, Val}, Rest3};~n", []),
+ io:format(Dev, "decode_attr(<<2:8, Rest/binary>>) ->~n"
+ " {stop, Rest}.~n~n", []),
+ io:format(Dev, "decode_attrs(Data) ->~n"
+ " prefix_map(fun decode_attr/1, Data).~n~n", []),
+ io:format(Dev, "prefix_map(F, Data) ->~n"
+ " prefix_map(F, Data, []).~n~n", []),
+ io:format(Dev, "prefix_map(F, Data, Acc) ->~n"
+ " case F(Data) of~n"
+ " {stop, Rest} ->~n"
+ " {lists:reverse(Acc), Rest};~n"
+ " {Val, Rest} ->~n"
+ " prefix_map(F, Rest, [Val | Acc])~n"
+ " end.~n~n", []),
+ io:format(Dev, "add_ns(Ns, Ns, Attrs) ->~n"
+ " Attrs;~n"
+ "add_ns(_, Ns, Attrs) ->~n"
+ " [{<<\"xmlns\">>, Ns} | Attrs].~n~n", []),
+ lists:foreach(
+ fun({Ns, Els}) ->
+ lists:foreach(
+ fun({Name, Id, Attrs, Text}) ->
+ io:format(Dev, "decode(<<~s, Rest/binary>>, PNs, J1, J2) ->~n"
+ " Ns = ~p,~n", [Id, Ns]),
+ case Attrs of
+ [] ->
+ io:format(Dev, " {Attrs, Rest2} = decode_attrs(Rest),~n", []);
+ _ ->
+ io:format(Dev, " {Attrs, Rest2} = prefix_map(fun~n", []),
+ lists:foreach(
+ fun({AName, AVals}) ->
+ lists:foreach(
+ fun({j1, AId}) ->
+ io:format(Dev, " (<<~s, Rest3/binary>>) ->~n"
+ " {{~p, J1}, Rest3};~n", [AId, AName]);
+ ({j2, AId}) ->
+ io:format(Dev, " (<<~s, Rest3/binary>>) ->~n"
+ " {{~p, J2}, Rest3};~n", [AId, AName]);
+ ({{j1}, AId}) ->
+ io:format(Dev, " (<<~s, Rest3/binary>>) ->~n"
+ " {AVal, Rest4} = decode_string(Rest3),~n"
+ " {{~p, <<J1/binary, AVal/binary>>}, Rest4};~n",
+ [AId, AName]);
+ ({{j2}, AId}) ->
+ io:format(Dev, " (<<~s, Rest3/binary>>) ->~n"
+ " {AVal, Rest4} = decode_string(Rest3),~n"
+ " {{~p, <<J2/binary, AVal/binary>>}, Rest4};~n",
+ [AId, AName]);
+ ({AVal, AId}) ->
+ io:format(Dev, " (<<~s, Rest3/binary>>) ->~n"
+ " {{~p, ~p}, Rest3};~n",
+ [AId, AName, AVal]);
+ (AId) ->
+ io:format(Dev, " (<<~s, Rest3/binary>>) ->~n"
+ " {AVal, Rest4} = decode_string(Rest3),~n"
+ " {{~p, AVal}, Rest4};~n",
+ [AId, AName])
+ end, AVals)
+ end, Attrs),
+ io:format(Dev, " (<<2:8, Rest3/binary>>) ->~n"
+ " {stop, Rest3};~n"
+ " (Data) ->~n"
+ " decode_attr(Data)~n"
+ " end, Rest),~n", [])
+ end,
+ case Text of
+ [] ->
+ io:format(Dev, " {Children, Rest6} = decode_children(Rest2, Ns, J1, J2),~n", []);
+ _ ->
+ io:format(Dev, " {Children, Rest6} = prefix_map(fun", []),
+ lists:foreach(
+ fun({TextS, TId}) ->
+ io:format(Dev, " (<<~s, Rest5/binary>>) ->~n"
+ " {{xmlcdata, ~p}, Rest5};~n",
+ [TId, TextS])
+ end, Text),
+
+ io:format(Dev, " (Other) ->~n"
+ " decode_child(Other, Ns, J1, J2)~n"
+ " end, Rest2),~n", [])
+ end,
+ io:format(Dev, " {{xmlel, ~p, add_ns(PNs, Ns, Attrs), Children}, Rest6};~n", [Name])
+ end, Els)
+ end, Data),
+ io:format(Dev, "decode(Other, PNs, J1, J2) ->~n"
+ " decode_child(Other, PNs, J1, J2).~n~n", []).
+
+
+gen_encode(Dev, Data, VerId) ->
+ io:format(Dev, "encode(El, J1, J2) ->~n"
+ " encode_child(El, <<\"jabber:client\">>,~n"
+ " J1, J2, byte_size(J1), byte_size(J2), <<~s>>).~n~n", [VerId]),
+ io:format(Dev, "encode_attr({<<\"xmlns\">>, _}, Acc) ->~n"
+ " Acc;~n"
+ "encode_attr({N, V}, Acc) ->~n"
+ " <<Acc/binary, 1:8, (encode_string(N))/binary,~n"
+ " (encode_string(V))/binary>>.~n~n", []),
+ io:format(Dev, "encode_attrs(Attrs, Acc) ->~n"
+ " lists:foldl(fun encode_attr/2, Acc, Attrs).~n~n", []),
+ io:format(Dev, "encode_el(PNs, Ns, Name, Attrs, Children, J1, J2, J1L, J2L, Pfx) ->~n"
+ " E1 = if~n"
+ " PNs == Ns -> encode_attrs(Attrs, <<Pfx/binary, 2:8, (encode_string(Name))/binary>>);~n"
+ " true -> encode_attrs(Attrs, <<Pfx/binary, 3:8, "
+ "(encode_string(Ns))/binary, (encode_string(Name))/binary>>)~n"
+ " end,~n"
+ " E2 = encode_children(Children, Ns, J1, J2, J1L, J2L, <<E1/binary, 2:8>>),~n"
+ " <<E2/binary, 4:8>>.~n~n", []),
+ io:format(Dev, "encode_child({xmlel, Name, Attrs, Children}, PNs, J1, J2, J1L, J2L, Pfx) ->~n"
+ " case lists:keyfind(<<\"xmlns\">>, 1, Attrs) of~n"
+ " false ->~n"
+ " encode(PNs, PNs, Name, Attrs, Children, J1, J2, J1L, J2L, Pfx);~n"
+ " {_, Ns} ->~n"
+ " encode(PNs, Ns, Name, Attrs, Children, J1, J2, J1L, J2L, Pfx)~n"
+ " end;~n"
+ "encode_child({xmlcdata, Data}, _PNs, _J1, _J2, _J1L, _J2L, Pfx) ->~n"
+ " <<Pfx/binary, 1:8, (encode_string(Data))/binary>>.~n~n", []),
+ io:format(Dev, "encode_children(Children, PNs, J1, J2, J1L, J2L, Pfx) ->~n"
+ " lists:foldl(~n"
+ " fun(Child, Acc) ->~n"
+ " encode_child(Child, PNs, J1, J2, J1L, J2L, Acc)~n"
+ " end, Pfx, Children).~n~n", []),
+ io:format(Dev, "encode_string(Data) ->~n"
+ " <<V1:4, V2:6, V3:6>> = <<(byte_size(Data)):16/unsigned-big-integer>>,~n"
+ " case {V1, V2, V3} of~n"
+ " {0, 0, V3} ->~n"
+ " <<V3:8, Data/binary>>;~n"
+ " {0, V2, V3} ->~n"
+ " <<(V3 bor 64):8, V2:8, Data/binary>>;~n"
+ " _ ->~n"
+ " <<(V3 bor 64):8, (V2 bor 64):8, V1:8, Data/binary>>~n"
+ " end.~n~n", []),
+ lists:foreach(
+ fun({Ns, Els}) ->
+ io:format(Dev, "encode(PNs, ~p = Ns, Name, Attrs, Children, J1, J2, J1L, J2L, Pfx) ->~n"
+ " case Name of~n", [Ns]),
+ lists:foreach(
+ fun({ElN, Id, Attrs, Text}) ->
+ io:format(Dev, " ~p ->~n", [ElN]),
+ case Attrs of
+ [] ->
+ io:format(Dev, " E = encode_attrs(Attrs, <<Pfx/binary, ~s>>),~n", [Id]);
+ _ ->
+ io:format(Dev, " E = lists:foldl(fun~n", []),
+ lists:foreach(
+ fun({AName, AVals}) ->
+ case AVals of
+ [AIdS] when is_binary(AIdS) ->
+ io:format(Dev, " ({~p, AVal}, Acc) ->~n"
+ " <<Acc/binary, ~s, (encode_string(AVal))/binary>>;~n",
+ [AName, AIdS]);
+ _ ->
+ io:format(Dev, " ({~p, AVal}, Acc) ->~n"
+ " case AVal of~n", [AName]),
+ lists:foreach(
+ fun({j1, AId}) ->
+ io:format(Dev, " J1 -> <<Acc/binary, ~s>>;~n",
+ [AId]);
+ ({j2, AId}) ->
+ io:format(Dev, " J2 -> <<Acc/binary, ~s>>;~n",
+ [AId]);
+ ({{j1}, AId}) ->
+ io:format(Dev, " <<J1:J1L/binary, Rest/binary>> -> "
+ "<<Acc/binary, ~s, (encode_string(Rest))/binary>>;~n",
+ [AId]);
+ ({{j2}, AId}) ->
+ io:format(Dev, " <<J2:J2L/binary, Rest/binary>> -> "
+ "<<Acc/binary, ~s, (encode_string(Rest))/binary>>;~n",
+ [AId]);
+ ({AVal, AId}) ->
+ io:format(Dev, " ~p -> <<Acc/binary, ~s>>;~n",
+ [AVal, AId]);
+ (AId) ->
+ io:format(Dev, " _ -> <<Acc/binary, ~s, "
+ "(encode_string(AVal))/binary>>~n",
+ [AId])
+ end, AVals),
+ io:format(Dev, " end;~n", [])
+ end
+ end, Attrs),
+ io:format(Dev, " (Attr, Acc) -> encode_attr(Attr, Acc)~n", []),
+ io:format(Dev, " end, <<Pfx/binary, ~s>>, Attrs),~n", [Id])
+ end,
+ case Text of
+ [] ->
+ io:format(Dev, " E2 = encode_children(Children, Ns, "
+ "J1, J2, J1L, J2L, <<E/binary, 2:8>>),~n", []);
+ _ ->
+ io:format(Dev, " E2 = lists:foldl(fun~n", []),
+ lists:foreach(
+ fun({TextV, TId}) ->
+ io:format(Dev, " ({xmlcdata, ~p}, Acc) -> <<Acc/binary, ~s>>;~n", [TextV, TId])
+ end, Text),
+ io:format(Dev, " (El, Acc) -> encode_child(El, Ns, J1, J2, J1L, J2L, Acc)~n", []),
+ io:format(Dev, " end, <<E/binary, 2:8>>, Children),~n", [])
+ end,
+ io:format(Dev, " <<E2/binary, 4:8>>;~n", [])
+ end, Els),
+ io:format(Dev, " _ -> encode_el(PNs, Ns, Name, Attrs, Children, "
+ "J1, J2, J1L, J2L, Pfx)~nend;~n", [])
+ end, Data),
+ io:format(Dev, "encode(PNs, Ns, Name, Attrs, Children, J1, J2, J1L, J2L, Pfx) ->~n"
+ " encode_el(PNs, Ns, Name, Attrs, Children, "
+ "J1, J2, J1L, J2L, Pfx).~n~n", []).
+
+process_stats({_Counts, Stats}) ->
+ SStats = lists:sort(
+ fun({_, #el_stats{count = C1}}, {_, #el_stats{count = C2}}) ->
+ C1 >= C2
+ end, maps:to_list(Stats)),
+ lists:map(
+ fun({Name, #el_stats{count = C, attrs = A, text_stats = T}}) ->
+ [Ns, El] = binary:split(Name, <<"<">>),
+ Attrs = lists:filtermap(
+ fun({AN, #attr_stats{count = AC, vals = AV}}) ->
+ if
+ AC*5 < C ->
+ false;
+ true ->
+ AVC = AC div min(maps:size(AV)*2, 10),
+ AVA = [N || {N, C2} <- maps:to_list(AV), C2 > AVC],
+ {true, {AN, AVA}}
+ end
+ end, maps:to_list(A)),
+ Text = [TE || {TE, TC} <- maps:to_list(T), TC > C/2],
+ {Ns, El, Attrs, Text}
+ end, SStats).
+
+analyze_elements(Elements, Stats, PName, PNS, J1, J2) ->
+ lists:foldl(fun analyze_element/2, Stats, lists:map(fun(V) -> {V, PName, PNS, J1, J2} end, Elements)).
+
+maps_update(Key, F, InitVal, Map) ->
+ case maps:is_key(Key, Map) of
+ true ->
+ maps:update_with(Key, F, Map);
+ _ ->
+ maps:put(Key, F(InitVal), Map)
+ end.
+
+analyze_element({{xmlcdata, Data}, PName, PNS, _J1, _J2}, {ElCount, Stats}) ->
+ Stats2 = maps_update(<<PNS/binary, "<", PName/binary>>,
+ fun(#el_stats{text_stats = TS} = E) ->
+ TS2 = maps_update(Data, fun(C) -> C + 1 end, 0, TS),
+ E#el_stats{text_stats = TS2}
+ end, #el_stats{}, Stats),
+ {ElCount, Stats2};
+analyze_element({#xmlel{name = Name, attrs = Attrs, children = Children}, _PName, PNS, J1, J2}, {ElCount, Stats}) ->
+ XMLNS = case lists:keyfind(<<"xmlns">>, 1, Attrs) of
+ {_, NS} ->
+ NS;
+ false ->
+ PNS
+ end,
+ NStats = maps_update(<<XMLNS/binary, "<", Name/binary>>,
+ fun(#el_stats{count = C, empty_count = EC, only_text_count = TC, attrs = A} = ES) ->
+ A2 = lists:foldl(
+ fun({<<"xmlns">>, _}, AMap) ->
+ AMap;
+ ({AName, AVal}, AMap) ->
+ J1S = size(J1),
+ J2S = size(J2),
+ AVal2 = case AVal of
+ J1 ->
+ j1;
+ J2 ->
+ j2;
+ <<J1:J1S/binary, _Rest/binary>> ->
+ {j1};
+ <<J2:J2S/binary, _Rest/binary>> ->
+ {j2};
+ Other ->
+ Other
+ end,
+ maps_update(AName, fun(#attr_stats{count = AC, vals = AV}) ->
+ AV2 = maps_update(AVal2, fun(C2) -> C2 + 1 end, 0, AV),
+ #attr_stats{count = AC + 1, vals = AV2}
+ end, #attr_stats{}, AMap)
+ end, A, Attrs),
+ ES#el_stats{count = C + 1,
+ empty_count = if Children == [] -> EC + 1; true ->
+ EC end,
+ only_text_count = case Children of [{xmlcdata, _}] -> TC + 1; _ -> TC end,
+ attrs = A2}
+ end, #el_stats{}, Stats),
+ analyze_elements(Children, {ElCount + 1, NStats}, Name, XMLNS, J1, J2).
diff --git a/tools/xmpp_codec.erl b/tools/xmpp_codec.erl
deleted file mode 100644
index ef1421962..000000000
--- a/tools/xmpp_codec.erl
+++ /dev/null
@@ -1,20275 +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}]}).
-
--export([pp/1, format_error/1, decode/1, decode/2,
- is_known_tag/1, encode/1, get_ns/1]).
-
-decode(_el) -> decode(_el, []).
-
-decode({xmlel, _name, _attrs, _} = _el, Opts) ->
- IgnoreEls = proplists:get_bool(ignore_els, Opts),
- case {_name, get_attr(<<"xmlns">>, _attrs)} of
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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:tmp">>} ->
- decode_mam_prefs(<<"urn:xmpp:mam:tmp">>, IgnoreEls,
- _el);
- {<<"always">>, <<"urn:xmpp:mam:tmp">>} ->
- decode_mam_always(<<"urn:xmpp:mam:tmp">>, IgnoreEls,
- _el);
- {<<"never">>, <<"urn:xmpp:mam:tmp">>} ->
- decode_mam_never(<<"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:1">>} ->
- decode_mam_result(<<"urn:xmpp:mam:1">>, 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);
- {<<"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:tmp">>} ->
- decode_mam_query(<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"after">>, <<"http://jabber.org/protocol/rsm">>} ->
- decode_rsm_after(<<"http://jabber.org/protocol/rsm">>,
- 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);
- {<<"reason">>,
- <<"http://jabber.org/protocol/muc#admin">>} ->
- decode_muc_admin_reason(<<"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);
- {<<"item">>,
- <<"http://jabber.org/protocol/muc#admin">>} ->
- decode_muc_admin_item(<<"http://jabber.org/protocol/muc#admin">>,
- IgnoreEls, _el);
- {<<"query">>,
- <<"http://jabber.org/protocol/muc#owner">>} ->
- decode_muc_owner(<<"http://jabber.org/protocol/muc#owner">>,
- IgnoreEls, _el);
- {<<"destroy">>,
- <<"http://jabber.org/protocol/muc#owner">>} ->
- decode_muc_owner_destroy(<<"http://jabber.org/protocol/muc#owner">>,
- IgnoreEls, _el);
- {<<"reason">>,
- <<"http://jabber.org/protocol/muc#owner">>} ->
- decode_muc_owner_reason(<<"http://jabber.org/protocol/muc#owner">>,
- IgnoreEls, _el);
- {<<"password">>,
- <<"http://jabber.org/protocol/muc#owner">>} ->
- decode_muc_owner_password(<<"http://jabber.org/protocol/muc#owner">>,
- 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);
- {<<"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);
- {<<"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);
- {<<"destroy">>,
- <<"http://jabber.org/protocol/muc#user">>} ->
- decode_muc_user_destroy(<<"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_user_reason(<<"http://jabber.org/protocol/muc#user">>,
- 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);
- {<<"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">>,
- <<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"header">>, <<"http://jabber.org/protocol/shim">>} ->
- decode_shim_header(<<"http://jabber.org/protocol/shim">>,
- IgnoreEls, _el);
- {<<"pubsub">>,
- <<"http://jabber.org/protocol/pubsub">>} ->
- decode_pubsub(<<"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);
- {<<"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);
- {<<"subscribe">>,
- <<"http://jabber.org/protocol/pubsub">>} ->
- decode_pubsub_subscribe(<<"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);
- {<<"event">>,
- <<"http://jabber.org/protocol/pubsub#event">>} ->
- decode_pubsub_event(<<"http://jabber.org/protocol/pubsub#event">>,
- IgnoreEls, _el);
- {<<"items">>,
- <<"http://jabber.org/protocol/pubsub#event">>} ->
- decode_pubsub_event_items(<<"http://jabber.org/protocol/pubsub#event">>,
- IgnoreEls, _el);
- {<<"item">>,
- <<"http://jabber.org/protocol/pubsub#event">>} ->
- decode_pubsub_event_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);
- {<<"items">>,
- <<"http://jabber.org/protocol/pubsub">>} ->
- decode_pubsub_items(<<"http://jabber.org/protocol/pubsub">>,
- IgnoreEls, _el);
- {<<"item">>, <<"http://jabber.org/protocol/pubsub">>} ->
- decode_pubsub_item(<<"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);
- {<<"x">>, <<"jabber:x:data">>} ->
- decode_xdata(<<"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);
- {<<"title">>, <<"jabber:x:data">>} ->
- decode_xdata_title(<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"vCard">>, <<"vcard-temp">>} ->
- decode_vcard(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"CLASS">>, <<"vcard-temp">>} ->
- decode_vcard_CLASS(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"CATEGORIES">>, <<"vcard-temp">>} ->
- decode_vcard_CATEGORIES(<<"vcard-temp">>, IgnoreEls,
- _el);
- {<<"KEY">>, <<"vcard-temp">>} ->
- decode_vcard_KEY(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"SOUND">>, <<"vcard-temp">>} ->
- decode_vcard_SOUND(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"ORG">>, <<"vcard-temp">>} ->
- decode_vcard_ORG(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"PHOTO">>, <<"vcard-temp">>} ->
- decode_vcard_PHOTO(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"LOGO">>, <<"vcard-temp">>} ->
- decode_vcard_LOGO(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"BINVAL">>, <<"vcard-temp">>} ->
- decode_vcard_BINVAL(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"GEO">>, <<"vcard-temp">>} ->
- decode_vcard_GEO(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"EMAIL">>, <<"vcard-temp">>} ->
- decode_vcard_EMAIL(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"TEL">>, <<"vcard-temp">>} ->
- decode_vcard_TEL(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"LABEL">>, <<"vcard-temp">>} ->
- decode_vcard_LABEL(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"ADR">>, <<"vcard-temp">>} ->
- decode_vcard_ADR(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"N">>, <<"vcard-temp">>} ->
- decode_vcard_N(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"CONFIDENTIAL">>, <<"vcard-temp">>} ->
- decode_vcard_CONFIDENTIAL(<<"vcard-temp">>, IgnoreEls,
- _el);
- {<<"PRIVATE">>, <<"vcard-temp">>} ->
- decode_vcard_PRIVATE(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"PUBLIC">>, <<"vcard-temp">>} ->
- decode_vcard_PUBLIC(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"EXTVAL">>, <<"vcard-temp">>} ->
- decode_vcard_EXTVAL(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"TYPE">>, <<"vcard-temp">>} ->
- decode_vcard_TYPE(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"DESC">>, <<"vcard-temp">>} ->
- decode_vcard_DESC(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"URL">>, <<"vcard-temp">>} ->
- decode_vcard_URL(<<"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);
- {<<"REV">>, <<"vcard-temp">>} ->
- decode_vcard_REV(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"PRODID">>, <<"vcard-temp">>} ->
- decode_vcard_PRODID(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"NOTE">>, <<"vcard-temp">>} ->
- decode_vcard_NOTE(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"KEYWORD">>, <<"vcard-temp">>} ->
- decode_vcard_KEYWORD(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"ROLE">>, <<"vcard-temp">>} ->
- decode_vcard_ROLE(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"TITLE">>, <<"vcard-temp">>} ->
- decode_vcard_TITLE(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"TZ">>, <<"vcard-temp">>} ->
- decode_vcard_TZ(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"MAILER">>, <<"vcard-temp">>} ->
- decode_vcard_MAILER(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"JABBERID">>, <<"vcard-temp">>} ->
- decode_vcard_JABBERID(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"BDAY">>, <<"vcard-temp">>} ->
- decode_vcard_BDAY(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"NICKNAME">>, <<"vcard-temp">>} ->
- decode_vcard_NICKNAME(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"FN">>, <<"vcard-temp">>} ->
- decode_vcard_FN(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"VERSION">>, <<"vcard-temp">>} ->
- decode_vcard_VERSION(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"CRED">>, <<"vcard-temp">>} ->
- decode_vcard_CRED(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"PHONETIC">>, <<"vcard-temp">>} ->
- decode_vcard_PHONETIC(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"ORGUNIT">>, <<"vcard-temp">>} ->
- decode_vcard_ORGUNIT(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"ORGNAME">>, <<"vcard-temp">>} ->
- decode_vcard_ORGNAME(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"LON">>, <<"vcard-temp">>} ->
- decode_vcard_LON(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"LAT">>, <<"vcard-temp">>} ->
- decode_vcard_LAT(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"USERID">>, <<"vcard-temp">>} ->
- decode_vcard_USERID(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"NUMBER">>, <<"vcard-temp">>} ->
- decode_vcard_NUMBER(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"LINE">>, <<"vcard-temp">>} ->
- decode_vcard_LINE(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"CTRY">>, <<"vcard-temp">>} ->
- decode_vcard_CTRY(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"PCODE">>, <<"vcard-temp">>} ->
- decode_vcard_PCODE(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"REGION">>, <<"vcard-temp">>} ->
- decode_vcard_REGION(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"LOCALITY">>, <<"vcard-temp">>} ->
- decode_vcard_LOCALITY(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"STREET">>, <<"vcard-temp">>} ->
- decode_vcard_STREET(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"EXTADD">>, <<"vcard-temp">>} ->
- decode_vcard_EXTADD(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"POBOX">>, <<"vcard-temp">>} ->
- decode_vcard_POBOX(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"SUFFIX">>, <<"vcard-temp">>} ->
- decode_vcard_SUFFIX(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"PREFIX">>, <<"vcard-temp">>} ->
- decode_vcard_PREFIX(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"MIDDLE">>, <<"vcard-temp">>} ->
- decode_vcard_MIDDLE(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"GIVEN">>, <<"vcard-temp">>} ->
- decode_vcard_GIVEN(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"FAMILY">>, <<"vcard-temp">>} ->
- decode_vcard_FAMILY(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"X400">>, <<"vcard-temp">>} ->
- decode_vcard_X400(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"INTERNET">>, <<"vcard-temp">>} ->
- decode_vcard_INTERNET(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"PREF">>, <<"vcard-temp">>} ->
- decode_vcard_PREF(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"INTL">>, <<"vcard-temp">>} ->
- decode_vcard_INTL(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"DOM">>, <<"vcard-temp">>} ->
- decode_vcard_DOM(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"PARCEL">>, <<"vcard-temp">>} ->
- decode_vcard_PARCEL(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"POSTAL">>, <<"vcard-temp">>} ->
- decode_vcard_POSTAL(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"PCS">>, <<"vcard-temp">>} ->
- decode_vcard_PCS(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"ISDN">>, <<"vcard-temp">>} ->
- decode_vcard_ISDN(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"MODEM">>, <<"vcard-temp">>} ->
- decode_vcard_MODEM(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"BBS">>, <<"vcard-temp">>} ->
- decode_vcard_BBS(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"VIDEO">>, <<"vcard-temp">>} ->
- decode_vcard_VIDEO(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"CELL">>, <<"vcard-temp">>} ->
- decode_vcard_CELL(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"MSG">>, <<"vcard-temp">>} ->
- decode_vcard_MSG(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"PAGER">>, <<"vcard-temp">>} ->
- decode_vcard_PAGER(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"FAX">>, <<"vcard-temp">>} ->
- decode_vcard_FAX(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"VOICE">>, <<"vcard-temp">>} ->
- decode_vcard_VOICE(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"WORK">>, <<"vcard-temp">>} ->
- decode_vcard_WORK(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"HOME">>, <<"vcard-temp">>} ->
- decode_vcard_HOME(<<"vcard-temp">>, IgnoreEls, _el);
- {<<"stream:error">>,
- <<"http://etherx.jabber.org/streams">>} ->
- decode_stream_error(<<"http://etherx.jabber.org/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-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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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-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-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-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);
- {<<"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-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);
- {<<"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-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);
- {<<"time">>, <<"urn:xmpp:time">>} ->
- decode_time(<<"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);
- {<<"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);
- {<<"query">>, <<"jabber:iq:register">>} ->
- decode_register(<<"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);
- {<<"misc">>, <<"jabber:iq:register">>} ->
- decode_register_misc(<<"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);
- {<<"phone">>, <<"jabber:iq:register">>} ->
- decode_register_phone(<<"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);
- {<<"city">>, <<"jabber:iq:register">>} ->
- decode_register_city(<<"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);
- {<<"last">>, <<"jabber:iq:register">>} ->
- decode_register_last(<<"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);
- {<<"password">>, <<"jabber:iq:register">>} ->
- decode_register_password(<<"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);
- {<<"instructions">>, <<"jabber:iq:register">>} ->
- decode_register_instructions(<<"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);
- {<<"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);
- {<<"ack">>, <<"p1:ack">>} ->
- decode_p1_ack(<<"p1:ack">>, IgnoreEls, _el);
- {<<"rebind">>, <<"p1:rebind">>} ->
- decode_p1_rebind(<<"p1:rebind">>, IgnoreEls, _el);
- {<<"push">>, <<"p1:push">>} ->
- decode_p1_push(<<"p1:push">>, IgnoreEls, _el);
- {<<"stream:features">>,
- <<"http://etherx.jabber.org/streams">>} ->
- decode_stream_features(<<"http://etherx.jabber.org/streams">>,
- 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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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-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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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-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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"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);
- {<<"priority">>, <<"jabber:client">>} ->
- decode_presence_priority(<<"jabber:client">>, IgnoreEls,
- _el);
- {<<"status">>, <<"jabber:client">>} ->
- decode_presence_status(<<"jabber:client">>, IgnoreEls,
- _el);
- {<<"show">>, <<"jabber:client">>} ->
- decode_presence_show(<<"jabber:client">>, IgnoreEls,
- _el);
- {<<"message">>, <<"jabber:client">>} ->
- decode_message(<<"jabber:client">>, IgnoreEls, _el);
- {<<"thread">>, <<"jabber:client">>} ->
- decode_message_thread(<<"jabber:client">>, IgnoreEls,
- _el);
- {<<"body">>, <<"jabber:client">>} ->
- decode_message_body(<<"jabber:client">>, IgnoreEls,
- _el);
- {<<"subject">>, <<"jabber:client">>} ->
- decode_message_subject(<<"jabber:client">>, IgnoreEls,
- _el);
- {<<"iq">>, <<"jabber:client">>} ->
- decode_iq(<<"jabber:client">>, 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);
- {<<"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);
- {<<"url">>, <<"storage:bookmarks">>} ->
- decode_bookmark_url(<<"storage:bookmarks">>, IgnoreEls,
- _el);
- {<<"conference">>, <<"storage:bookmarks">>} ->
- decode_bookmark_conference(<<"storage:bookmarks">>,
- IgnoreEls, _el);
- {<<"password">>, <<"storage:bookmarks">>} ->
- decode_conference_password(<<"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">>,
- <<"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);
- {<<"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);
- {<<"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);
- {<<"unblock">>, <<"urn:xmpp:blocking">>} ->
- decode_unblock(<<"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);
- {<<"query">>, <<"jabber:iq:privacy">>} ->
- decode_privacy(<<"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);
- {<<"list">>, <<"jabber:iq:privacy">>} ->
- decode_privacy_list(<<"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-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);
- {<<"message">>, <<"jabber:iq:privacy">>} ->
- decode_privacy_message(<<"jabber:iq:privacy">>,
- IgnoreEls, _el);
- {<<"query">>, <<"jabber:iq:roster">>} ->
- decode_roster(<<"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);
- {<<"query">>, <<"jabber:iq:version">>} ->
- decode_version(<<"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);
- {<<"name">>, <<"jabber:iq:version">>} ->
- decode_version_name(<<"jabber:iq:version">>, IgnoreEls,
- _el);
- {<<"query">>, <<"jabber:iq:last">>} ->
- decode_last(<<"jabber:iq:last">>, IgnoreEls, _el);
- {_name, _xmlns} ->
- erlang:error({xmpp_codec, {unknown_tag, _name, _xmlns}})
- end.
-
-is_known_tag({xmlel, _name, _attrs, _} = _el) ->
- case {_name, get_attr(<<"xmlns">>, _attrs)} of
- {<<"participant">>, <<"urn:xmpp:mix:0">>} -> true;
- {<<"leave">>, <<"urn:xmpp:mix:0">>} -> true;
- {<<"join">>, <<"urn:xmpp:mix:0">>} -> true;
- {<<"subscribe">>, <<"urn:xmpp:mix:0">>} -> true;
- {<<"offline">>,
- <<"http://jabber.org/protocol/offline">>} ->
- true;
- {<<"item">>,
- <<"http://jabber.org/protocol/offline">>} ->
- true;
- {<<"fetch">>,
- <<"http://jabber.org/protocol/offline">>} ->
- true;
- {<<"purge">>,
- <<"http://jabber.org/protocol/offline">>} ->
- true;
- {<<"failed">>, <<"urn:xmpp:sm:2">>} -> true;
- {<<"failed">>, <<"urn:xmpp:sm:3">>} -> true;
- {<<"a">>, <<"urn:xmpp:sm:2">>} -> true;
- {<<"a">>, <<"urn:xmpp:sm:3">>} -> true;
- {<<"r">>, <<"urn:xmpp:sm:2">>} -> true;
- {<<"r">>, <<"urn:xmpp:sm:3">>} -> true;
- {<<"resumed">>, <<"urn:xmpp:sm:2">>} -> true;
- {<<"resumed">>, <<"urn:xmpp:sm:3">>} -> true;
- {<<"resume">>, <<"urn:xmpp:sm:2">>} -> true;
- {<<"resume">>, <<"urn:xmpp:sm:3">>} -> true;
- {<<"enabled">>, <<"urn:xmpp:sm:2">>} -> true;
- {<<"enabled">>, <<"urn:xmpp:sm:3">>} -> true;
- {<<"enable">>, <<"urn:xmpp:sm:2">>} -> true;
- {<<"enable">>, <<"urn:xmpp:sm:3">>} -> true;
- {<<"sm">>, <<"urn:xmpp:sm:2">>} -> true;
- {<<"sm">>, <<"urn:xmpp:sm:3">>} -> true;
- {<<"inactive">>, <<"urn:xmpp:csi:0">>} -> true;
- {<<"active">>, <<"urn:xmpp:csi:0">>} -> true;
- {<<"csi">>, <<"urn:xmpp:csi:0">>} -> true;
- {<<"sent">>, <<"urn:xmpp:carbons:2">>} -> true;
- {<<"received">>, <<"urn:xmpp:carbons:2">>} -> true;
- {<<"private">>, <<"urn:xmpp:carbons:2">>} -> true;
- {<<"enable">>, <<"urn:xmpp:carbons:2">>} -> true;
- {<<"disable">>, <<"urn:xmpp:carbons:2">>} -> true;
- {<<"forwarded">>, <<"urn:xmpp:forward:0">>} -> true;
- {<<"fin">>, <<"urn:xmpp:mam:0">>} -> true;
- {<<"prefs">>, <<"urn:xmpp:mam:0">>} -> true;
- {<<"prefs">>, <<"urn:xmpp:mam:1">>} -> true;
- {<<"prefs">>, <<"urn:xmpp:mam:tmp">>} -> true;
- {<<"always">>, <<"urn:xmpp:mam:tmp">>} -> true;
- {<<"never">>, <<"urn:xmpp:mam:tmp">>} -> true;
- {<<"jid">>, <<"urn:xmpp:mam:tmp">>} -> true;
- {<<"result">>, <<"urn:xmpp:mam:0">>} -> true;
- {<<"result">>, <<"urn:xmpp:mam:1">>} -> true;
- {<<"result">>, <<"urn:xmpp:mam:tmp">>} -> true;
- {<<"archived">>, <<"urn:xmpp:mam:tmp">>} -> true;
- {<<"query">>, <<"urn:xmpp:mam:0">>} -> true;
- {<<"query">>, <<"urn:xmpp:mam:1">>} -> true;
- {<<"query">>, <<"urn:xmpp:mam:tmp">>} -> true;
- {<<"with">>, <<"urn:xmpp:mam:tmp">>} -> true;
- {<<"end">>, <<"urn:xmpp:mam:tmp">>} -> true;
- {<<"start">>, <<"urn:xmpp:mam:tmp">>} -> true;
- {<<"set">>, <<"http://jabber.org/protocol/rsm">>} ->
- true;
- {<<"first">>, <<"http://jabber.org/protocol/rsm">>} ->
- true;
- {<<"max">>, <<"http://jabber.org/protocol/rsm">>} ->
- true;
- {<<"index">>, <<"http://jabber.org/protocol/rsm">>} ->
- true;
- {<<"count">>, <<"http://jabber.org/protocol/rsm">>} ->
- true;
- {<<"last">>, <<"http://jabber.org/protocol/rsm">>} ->
- true;
- {<<"before">>, <<"http://jabber.org/protocol/rsm">>} ->
- true;
- {<<"after">>, <<"http://jabber.org/protocol/rsm">>} ->
- true;
- {<<"x">>, <<"http://jabber.org/protocol/muc">>} -> true;
- {<<"query">>,
- <<"http://jabber.org/protocol/muc#admin">>} ->
- true;
- {<<"reason">>,
- <<"http://jabber.org/protocol/muc#admin">>} ->
- true;
- {<<"continue">>,
- <<"http://jabber.org/protocol/muc#admin">>} ->
- true;
- {<<"actor">>,
- <<"http://jabber.org/protocol/muc#admin">>} ->
- true;
- {<<"item">>,
- <<"http://jabber.org/protocol/muc#admin">>} ->
- true;
- {<<"query">>,
- <<"http://jabber.org/protocol/muc#owner">>} ->
- true;
- {<<"destroy">>,
- <<"http://jabber.org/protocol/muc#owner">>} ->
- true;
- {<<"reason">>,
- <<"http://jabber.org/protocol/muc#owner">>} ->
- true;
- {<<"password">>,
- <<"http://jabber.org/protocol/muc#owner">>} ->
- true;
- {<<"x">>, <<"http://jabber.org/protocol/muc#user">>} ->
- true;
- {<<"item">>,
- <<"http://jabber.org/protocol/muc#user">>} ->
- true;
- {<<"status">>,
- <<"http://jabber.org/protocol/muc#user">>} ->
- true;
- {<<"continue">>,
- <<"http://jabber.org/protocol/muc#user">>} ->
- true;
- {<<"actor">>,
- <<"http://jabber.org/protocol/muc#user">>} ->
- true;
- {<<"invite">>,
- <<"http://jabber.org/protocol/muc#user">>} ->
- true;
- {<<"destroy">>,
- <<"http://jabber.org/protocol/muc#user">>} ->
- true;
- {<<"decline">>,
- <<"http://jabber.org/protocol/muc#user">>} ->
- true;
- {<<"reason">>,
- <<"http://jabber.org/protocol/muc#user">>} ->
- true;
- {<<"history">>, <<"http://jabber.org/protocol/muc">>} ->
- true;
- {<<"query">>,
- <<"http://jabber.org/protocol/bytestreams">>} ->
- true;
- {<<"activate">>,
- <<"http://jabber.org/protocol/bytestreams">>} ->
- true;
- {<<"streamhost-used">>,
- <<"http://jabber.org/protocol/bytestreams">>} ->
- true;
- {<<"streamhost">>,
- <<"http://jabber.org/protocol/bytestreams">>} ->
- true;
- {<<"delay">>, <<"urn:xmpp:delay">>} -> true;
- {<<"paused">>,
- <<"http://jabber.org/protocol/chatstates">>} ->
- true;
- {<<"inactive">>,
- <<"http://jabber.org/protocol/chatstates">>} ->
- true;
- {<<"gone">>,
- <<"http://jabber.org/protocol/chatstates">>} ->
- true;
- {<<"composing">>,
- <<"http://jabber.org/protocol/chatstates">>} ->
- true;
- {<<"active">>,
- <<"http://jabber.org/protocol/chatstates">>} ->
- true;
- {<<"headers">>,
- <<"http://jabber.org/protocol/shim">>} ->
- true;
- {<<"header">>, <<"http://jabber.org/protocol/shim">>} ->
- true;
- {<<"pubsub">>,
- <<"http://jabber.org/protocol/pubsub">>} ->
- true;
- {<<"retract">>,
- <<"http://jabber.org/protocol/pubsub">>} ->
- true;
- {<<"options">>,
- <<"http://jabber.org/protocol/pubsub">>} ->
- true;
- {<<"publish">>,
- <<"http://jabber.org/protocol/pubsub">>} ->
- true;
- {<<"unsubscribe">>,
- <<"http://jabber.org/protocol/pubsub">>} ->
- true;
- {<<"subscribe">>,
- <<"http://jabber.org/protocol/pubsub">>} ->
- true;
- {<<"affiliations">>,
- <<"http://jabber.org/protocol/pubsub">>} ->
- true;
- {<<"subscriptions">>,
- <<"http://jabber.org/protocol/pubsub">>} ->
- true;
- {<<"event">>,
- <<"http://jabber.org/protocol/pubsub#event">>} ->
- true;
- {<<"items">>,
- <<"http://jabber.org/protocol/pubsub#event">>} ->
- true;
- {<<"item">>,
- <<"http://jabber.org/protocol/pubsub#event">>} ->
- true;
- {<<"retract">>,
- <<"http://jabber.org/protocol/pubsub#event">>} ->
- true;
- {<<"items">>,
- <<"http://jabber.org/protocol/pubsub">>} ->
- true;
- {<<"item">>, <<"http://jabber.org/protocol/pubsub">>} ->
- true;
- {<<"affiliation">>,
- <<"http://jabber.org/protocol/pubsub">>} ->
- true;
- {<<"subscription">>,
- <<"http://jabber.org/protocol/pubsub">>} ->
- true;
- {<<"x">>, <<"jabber:x:data">>} -> true;
- {<<"item">>, <<"jabber:x:data">>} -> true;
- {<<"reported">>, <<"jabber:x:data">>} -> true;
- {<<"title">>, <<"jabber:x:data">>} -> true;
- {<<"instructions">>, <<"jabber:x:data">>} -> true;
- {<<"field">>, <<"jabber:x:data">>} -> true;
- {<<"option">>, <<"jabber:x:data">>} -> true;
- {<<"value">>, <<"jabber:x:data">>} -> true;
- {<<"desc">>, <<"jabber:x:data">>} -> true;
- {<<"required">>, <<"jabber:x:data">>} -> true;
- {<<"x">>, <<"vcard-temp:x:update">>} -> true;
- {<<"photo">>, <<"vcard-temp:x:update">>} -> true;
- {<<"vCard">>, <<"vcard-temp">>} -> true;
- {<<"CLASS">>, <<"vcard-temp">>} -> true;
- {<<"CATEGORIES">>, <<"vcard-temp">>} -> true;
- {<<"KEY">>, <<"vcard-temp">>} -> true;
- {<<"SOUND">>, <<"vcard-temp">>} -> true;
- {<<"ORG">>, <<"vcard-temp">>} -> true;
- {<<"PHOTO">>, <<"vcard-temp">>} -> true;
- {<<"LOGO">>, <<"vcard-temp">>} -> true;
- {<<"BINVAL">>, <<"vcard-temp">>} -> true;
- {<<"GEO">>, <<"vcard-temp">>} -> true;
- {<<"EMAIL">>, <<"vcard-temp">>} -> true;
- {<<"TEL">>, <<"vcard-temp">>} -> true;
- {<<"LABEL">>, <<"vcard-temp">>} -> true;
- {<<"ADR">>, <<"vcard-temp">>} -> true;
- {<<"N">>, <<"vcard-temp">>} -> true;
- {<<"CONFIDENTIAL">>, <<"vcard-temp">>} -> true;
- {<<"PRIVATE">>, <<"vcard-temp">>} -> true;
- {<<"PUBLIC">>, <<"vcard-temp">>} -> true;
- {<<"EXTVAL">>, <<"vcard-temp">>} -> true;
- {<<"TYPE">>, <<"vcard-temp">>} -> true;
- {<<"DESC">>, <<"vcard-temp">>} -> true;
- {<<"URL">>, <<"vcard-temp">>} -> true;
- {<<"UID">>, <<"vcard-temp">>} -> true;
- {<<"SORT-STRING">>, <<"vcard-temp">>} -> true;
- {<<"REV">>, <<"vcard-temp">>} -> true;
- {<<"PRODID">>, <<"vcard-temp">>} -> true;
- {<<"NOTE">>, <<"vcard-temp">>} -> true;
- {<<"KEYWORD">>, <<"vcard-temp">>} -> true;
- {<<"ROLE">>, <<"vcard-temp">>} -> true;
- {<<"TITLE">>, <<"vcard-temp">>} -> true;
- {<<"TZ">>, <<"vcard-temp">>} -> true;
- {<<"MAILER">>, <<"vcard-temp">>} -> true;
- {<<"JABBERID">>, <<"vcard-temp">>} -> true;
- {<<"BDAY">>, <<"vcard-temp">>} -> true;
- {<<"NICKNAME">>, <<"vcard-temp">>} -> true;
- {<<"FN">>, <<"vcard-temp">>} -> true;
- {<<"VERSION">>, <<"vcard-temp">>} -> true;
- {<<"CRED">>, <<"vcard-temp">>} -> true;
- {<<"PHONETIC">>, <<"vcard-temp">>} -> true;
- {<<"ORGUNIT">>, <<"vcard-temp">>} -> true;
- {<<"ORGNAME">>, <<"vcard-temp">>} -> true;
- {<<"LON">>, <<"vcard-temp">>} -> true;
- {<<"LAT">>, <<"vcard-temp">>} -> true;
- {<<"USERID">>, <<"vcard-temp">>} -> true;
- {<<"NUMBER">>, <<"vcard-temp">>} -> true;
- {<<"LINE">>, <<"vcard-temp">>} -> true;
- {<<"CTRY">>, <<"vcard-temp">>} -> true;
- {<<"PCODE">>, <<"vcard-temp">>} -> true;
- {<<"REGION">>, <<"vcard-temp">>} -> true;
- {<<"LOCALITY">>, <<"vcard-temp">>} -> true;
- {<<"STREET">>, <<"vcard-temp">>} -> true;
- {<<"EXTADD">>, <<"vcard-temp">>} -> true;
- {<<"POBOX">>, <<"vcard-temp">>} -> true;
- {<<"SUFFIX">>, <<"vcard-temp">>} -> true;
- {<<"PREFIX">>, <<"vcard-temp">>} -> true;
- {<<"MIDDLE">>, <<"vcard-temp">>} -> true;
- {<<"GIVEN">>, <<"vcard-temp">>} -> true;
- {<<"FAMILY">>, <<"vcard-temp">>} -> true;
- {<<"X400">>, <<"vcard-temp">>} -> true;
- {<<"INTERNET">>, <<"vcard-temp">>} -> true;
- {<<"PREF">>, <<"vcard-temp">>} -> true;
- {<<"INTL">>, <<"vcard-temp">>} -> true;
- {<<"DOM">>, <<"vcard-temp">>} -> true;
- {<<"PARCEL">>, <<"vcard-temp">>} -> true;
- {<<"POSTAL">>, <<"vcard-temp">>} -> true;
- {<<"PCS">>, <<"vcard-temp">>} -> true;
- {<<"ISDN">>, <<"vcard-temp">>} -> true;
- {<<"MODEM">>, <<"vcard-temp">>} -> true;
- {<<"BBS">>, <<"vcard-temp">>} -> true;
- {<<"VIDEO">>, <<"vcard-temp">>} -> true;
- {<<"CELL">>, <<"vcard-temp">>} -> true;
- {<<"MSG">>, <<"vcard-temp">>} -> true;
- {<<"PAGER">>, <<"vcard-temp">>} -> true;
- {<<"FAX">>, <<"vcard-temp">>} -> true;
- {<<"VOICE">>, <<"vcard-temp">>} -> true;
- {<<"WORK">>, <<"vcard-temp">>} -> true;
- {<<"HOME">>, <<"vcard-temp">>} -> true;
- {<<"stream:error">>,
- <<"http://etherx.jabber.org/streams">>} ->
- true;
- {<<"unsupported-version">>,
- <<"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;
- {<<"undefined-condition">>,
- <<"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;
- {<<"restricted-xml">>,
- <<"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;
- {<<"remote-connection-failed">>,
- <<"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-authorized">>,
- <<"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-id">>,
- <<"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;
- {<<"improper-addressing">>,
- <<"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;
- {<<"connection-timeout">>,
- <<"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-format">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>} ->
- true;
- {<<"text">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>} ->
- true;
- {<<"time">>, <<"urn:xmpp:time">>} -> true;
- {<<"tzo">>, <<"urn:xmpp:time">>} -> true;
- {<<"utc">>, <<"urn:xmpp:time">>} -> true;
- {<<"ping">>, <<"urn:xmpp:ping">>} -> true;
- {<<"session">>,
- <<"urn:ietf:params:xml:ns:xmpp-session">>} ->
- true;
- {<<"query">>, <<"jabber:iq:register">>} -> true;
- {<<"key">>, <<"jabber:iq:register">>} -> true;
- {<<"text">>, <<"jabber:iq:register">>} -> true;
- {<<"misc">>, <<"jabber:iq:register">>} -> true;
- {<<"date">>, <<"jabber:iq:register">>} -> true;
- {<<"url">>, <<"jabber:iq:register">>} -> true;
- {<<"phone">>, <<"jabber:iq:register">>} -> true;
- {<<"zip">>, <<"jabber:iq:register">>} -> true;
- {<<"state">>, <<"jabber:iq:register">>} -> true;
- {<<"city">>, <<"jabber:iq:register">>} -> true;
- {<<"address">>, <<"jabber:iq:register">>} -> true;
- {<<"email">>, <<"jabber:iq:register">>} -> true;
- {<<"last">>, <<"jabber:iq:register">>} -> true;
- {<<"first">>, <<"jabber:iq:register">>} -> true;
- {<<"name">>, <<"jabber:iq:register">>} -> true;
- {<<"password">>, <<"jabber:iq:register">>} -> true;
- {<<"nick">>, <<"jabber:iq:register">>} -> true;
- {<<"username">>, <<"jabber:iq:register">>} -> true;
- {<<"instructions">>, <<"jabber:iq:register">>} -> true;
- {<<"remove">>, <<"jabber:iq:register">>} -> true;
- {<<"registered">>, <<"jabber:iq:register">>} -> true;
- {<<"register">>,
- <<"http://jabber.org/features/iq-register">>} ->
- true;
- {<<"c">>, <<"http://jabber.org/protocol/caps">>} ->
- true;
- {<<"ack">>, <<"p1:ack">>} -> true;
- {<<"rebind">>, <<"p1:rebind">>} -> true;
- {<<"push">>, <<"p1:push">>} -> true;
- {<<"stream:features">>,
- <<"http://etherx.jabber.org/streams">>} ->
- true;
- {<<"compression">>,
- <<"http://jabber.org/features/compress">>} ->
- true;
- {<<"method">>,
- <<"http://jabber.org/features/compress">>} ->
- true;
- {<<"compressed">>,
- <<"http://jabber.org/protocol/compress">>} ->
- true;
- {<<"compress">>,
- <<"http://jabber.org/protocol/compress">>} ->
- true;
- {<<"method">>,
- <<"http://jabber.org/protocol/compress">>} ->
- true;
- {<<"failure">>,
- <<"http://jabber.org/protocol/compress">>} ->
- true;
- {<<"unsupported-method">>,
- <<"http://jabber.org/protocol/compress">>} ->
- true;
- {<<"processing-failed">>,
- <<"http://jabber.org/protocol/compress">>} ->
- true;
- {<<"setup-failed">>,
- <<"http://jabber.org/protocol/compress">>} ->
- true;
- {<<"failure">>,
- <<"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;
- {<<"required">>,
- <<"urn:ietf:params:xml:ns:xmpp-tls">>} ->
- true;
- {<<"mechanisms">>,
- <<"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;
- {<<"temporary-auth-failure">>,
- <<"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;
- {<<"malformed-request">>,
- <<"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;
- {<<"incorrect-encoding">>,
- <<"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;
- {<<"account-disabled">>,
- <<"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;
- {<<"success">>,
- <<"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;
- {<<"abort">>, <<"urn:ietf:params:xml:ns:xmpp-sasl">>} ->
- true;
- {<<"auth">>, <<"urn:ietf:params:xml:ns:xmpp-sasl">>} ->
- true;
- {<<"bind">>, <<"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;
- {<<"error">>, <<"jabber:client">>} -> true;
- {<<"text">>,
- <<"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;
- {<<"subscription-required">>,
- <<"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;
- {<<"remote-server-timeout">>,
- <<"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;
- {<<"redirect">>,
- <<"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;
- {<<"not-authorized">>,
- <<"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;
- {<<"jid-malformed">>,
- <<"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;
- {<<"gone">>,
- <<"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;
- {<<"conflict">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} ->
- true;
- {<<"bad-request">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>} ->
- true;
- {<<"presence">>, <<"jabber:client">>} -> true;
- {<<"priority">>, <<"jabber:client">>} -> true;
- {<<"status">>, <<"jabber:client">>} -> true;
- {<<"show">>, <<"jabber:client">>} -> true;
- {<<"message">>, <<"jabber:client">>} -> true;
- {<<"thread">>, <<"jabber:client">>} -> true;
- {<<"body">>, <<"jabber:client">>} -> true;
- {<<"subject">>, <<"jabber:client">>} -> true;
- {<<"iq">>, <<"jabber:client">>} -> true;
- {<<"query">>, <<"http://jabber.org/protocol/stats">>} ->
- true;
- {<<"stat">>, <<"http://jabber.org/protocol/stats">>} ->
- true;
- {<<"error">>, <<"http://jabber.org/protocol/stats">>} ->
- true;
- {<<"storage">>, <<"storage:bookmarks">>} -> true;
- {<<"url">>, <<"storage:bookmarks">>} -> true;
- {<<"conference">>, <<"storage:bookmarks">>} -> true;
- {<<"password">>, <<"storage:bookmarks">>} -> true;
- {<<"nick">>, <<"storage:bookmarks">>} -> true;
- {<<"query">>, <<"jabber:iq:private">>} -> true;
- {<<"query">>,
- <<"http://jabber.org/protocol/disco#items">>} ->
- true;
- {<<"item">>,
- <<"http://jabber.org/protocol/disco#items">>} ->
- true;
- {<<"query">>,
- <<"http://jabber.org/protocol/disco#info">>} ->
- true;
- {<<"feature">>,
- <<"http://jabber.org/protocol/disco#info">>} ->
- true;
- {<<"identity">>,
- <<"http://jabber.org/protocol/disco#info">>} ->
- true;
- {<<"blocklist">>, <<"urn:xmpp:blocking">>} -> true;
- {<<"unblock">>, <<"urn:xmpp:blocking">>} -> true;
- {<<"block">>, <<"urn:xmpp:blocking">>} -> true;
- {<<"item">>, <<"urn:xmpp:blocking">>} -> true;
- {<<"query">>, <<"jabber:iq:privacy">>} -> true;
- {<<"active">>, <<"jabber:iq:privacy">>} -> true;
- {<<"default">>, <<"jabber:iq:privacy">>} -> true;
- {<<"list">>, <<"jabber:iq:privacy">>} -> true;
- {<<"item">>, <<"jabber:iq:privacy">>} -> true;
- {<<"presence-out">>, <<"jabber:iq:privacy">>} -> true;
- {<<"presence-in">>, <<"jabber:iq:privacy">>} -> true;
- {<<"iq">>, <<"jabber:iq:privacy">>} -> true;
- {<<"message">>, <<"jabber:iq:privacy">>} -> true;
- {<<"query">>, <<"jabber:iq:roster">>} -> true;
- {<<"item">>, <<"jabber:iq:roster">>} -> true;
- {<<"group">>, <<"jabber:iq:roster">>} -> true;
- {<<"query">>, <<"jabber:iq:version">>} -> true;
- {<<"os">>, <<"jabber:iq:version">>} -> true;
- {<<"version">>, <<"jabber:iq:version">>} -> true;
- {<<"name">>, <<"jabber:iq:version">>} -> true;
- {<<"query">>, <<"jabber:iq:last">>} -> true;
- _ -> false
- end.
-
-encode({xmlel, _, _, _} = El) -> El;
-encode({last, _, _} = Query) ->
- encode_last(Query,
- [{<<"xmlns">>, <<"jabber:iq:last">>}]);
-encode({version, _, _, _} = Query) ->
- encode_version(Query,
- [{<<"xmlns">>, <<"jabber:iq:version">>}]);
-encode({roster_item, _, _, _, _, _} = Item) ->
- encode_roster_item(Item,
- [{<<"xmlns">>, <<"jabber:iq:roster">>}]);
-encode({roster, _, _} = Query) ->
- encode_roster(Query,
- [{<<"xmlns">>, <<"jabber:iq:roster">>}]);
-encode({privacy_item, _, _, _, _, _} = Item) ->
- encode_privacy_item(Item,
- [{<<"xmlns">>, <<"jabber:iq:privacy">>}]);
-encode({privacy_list, _, _} = List) ->
- encode_privacy_list(List,
- [{<<"xmlns">>, <<"jabber:iq:privacy">>}]);
-encode({privacy, _, _, _} = Query) ->
- encode_privacy(Query,
- [{<<"xmlns">>, <<"jabber:iq:privacy">>}]);
-encode({block, _} = Block) ->
- encode_block(Block,
- [{<<"xmlns">>, <<"urn:xmpp:blocking">>}]);
-encode({unblock, _} = Unblock) ->
- encode_unblock(Unblock,
- [{<<"xmlns">>, <<"urn:xmpp:blocking">>}]);
-encode({block_list} = Blocklist) ->
- encode_block_list(Blocklist,
- [{<<"xmlns">>, <<"urn:xmpp:blocking">>}]);
-encode({identity, _, _, _, _} = Identity) ->
- encode_disco_identity(Identity,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/disco#info">>}]);
-encode({disco_info, _, _, _, _} = Query) ->
- encode_disco_info(Query,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/disco#info">>}]);
-encode({disco_item, _, _, _} = Item) ->
- encode_disco_item(Item,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/disco#items">>}]);
-encode({disco_items, _, _} = Query) ->
- encode_disco_items(Query,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/disco#items">>}]);
-encode({private, _} = Query) ->
- encode_private(Query,
- [{<<"xmlns">>, <<"jabber:iq:private">>}]);
-encode({bookmark_conference, _, _, _, _, _} =
- Conference) ->
- encode_bookmark_conference(Conference,
- [{<<"xmlns">>, <<"storage:bookmarks">>}]);
-encode({bookmark_url, _, _} = Url) ->
- encode_bookmark_url(Url,
- [{<<"xmlns">>, <<"storage:bookmarks">>}]);
-encode({bookmark_storage, _, _} = Storage) ->
- encode_bookmarks_storage(Storage,
- [{<<"xmlns">>, <<"storage:bookmarks">>}]);
-encode({stat, _, _, _, _} = Stat) ->
- encode_stat(Stat,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/stats">>}]);
-encode({stats, _} = Query) ->
- encode_stats(Query,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/stats">>}]);
-encode({iq, _, _, _, _, _, _, _} = Iq) ->
- encode_iq(Iq, [{<<"xmlns">>, <<"jabber:client">>}]);
-encode({message, _, _, _, _, _, _, _, _, _, _} =
- Message) ->
- encode_message(Message,
- [{<<"xmlns">>, <<"jabber:client">>}]);
-encode({presence, _, _, _, _, _, _, _, _, _, _} =
- Presence) ->
- encode_presence(Presence,
- [{<<"xmlns">>, <<"jabber:client">>}]);
-encode({gone, _} = Gone) ->
- encode_error_gone(Gone,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}]);
-encode({redirect, _} = Redirect) ->
- encode_error_redirect(Redirect,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}]);
-encode({error, _, _, _, _} = Error) ->
- encode_error(Error,
- [{<<"xmlns">>, <<"jabber:client">>}]);
-encode({bind, _, _} = Bind) ->
- encode_bind(Bind,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-bind">>}]);
-encode({sasl_auth, _, _} = Auth) ->
- encode_sasl_auth(Auth,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-sasl">>}]);
-encode({sasl_abort} = Abort) ->
- encode_sasl_abort(Abort,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-sasl">>}]);
-encode({sasl_challenge, _} = Challenge) ->
- encode_sasl_challenge(Challenge,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-sasl">>}]);
-encode({sasl_response, _} = Response) ->
- encode_sasl_response(Response,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-sasl">>}]);
-encode({sasl_success, _} = Success) ->
- encode_sasl_success(Success,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-sasl">>}]);
-encode({sasl_failure, _, _} = Failure) ->
- encode_sasl_failure(Failure,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-sasl">>}]);
-encode({sasl_mechanisms, _} = Mechanisms) ->
- encode_sasl_mechanisms(Mechanisms,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-sasl">>}]);
-encode({starttls, _} = Starttls) ->
- encode_starttls(Starttls,
- [{<<"xmlns">>, <<"urn:ietf:params:xml:ns:xmpp-tls">>}]);
-encode({starttls_proceed} = Proceed) ->
- encode_starttls_proceed(Proceed,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-tls">>}]);
-encode({starttls_failure} = Failure) ->
- encode_starttls_failure(Failure,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-tls">>}]);
-encode({compress_failure, _} = Failure) ->
- encode_compress_failure(Failure,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/compress">>}]);
-encode({compress, _} = Compress) ->
- encode_compress(Compress,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/compress">>}]);
-encode({compressed} = Compressed) ->
- encode_compressed(Compressed,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/compress">>}]);
-encode({compression, _} = Compression) ->
- encode_compression(Compression,
- [{<<"xmlns">>,
- <<"http://jabber.org/features/compress">>}]);
-encode({stream_features, _} = Stream_features) ->
- encode_stream_features(Stream_features,
- [{<<"xmlns">>,
- <<"http://etherx.jabber.org/streams">>}]);
-encode({p1_push} = Push) ->
- encode_p1_push(Push, [{<<"xmlns">>, <<"p1:push">>}]);
-encode({p1_rebind} = Rebind) ->
- encode_p1_rebind(Rebind,
- [{<<"xmlns">>, <<"p1:rebind">>}]);
-encode({p1_ack} = Ack) ->
- encode_p1_ack(Ack, [{<<"xmlns">>, <<"p1:ack">>}]);
-encode({caps, _, _, _} = C) ->
- encode_caps(C,
- [{<<"xmlns">>, <<"http://jabber.org/protocol/caps">>}]);
-encode({feature_register} = Register) ->
- encode_feature_register(Register,
- [{<<"xmlns">>,
- <<"http://jabber.org/features/iq-register">>}]);
-encode({register, _, _, _, _, _, _, _, _, _, _, _, _, _,
- _, _, _, _, _, _, _, _} =
- Query) ->
- encode_register(Query,
- [{<<"xmlns">>, <<"jabber:iq:register">>}]);
-encode({session} = Session) ->
- encode_session(Session,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-session">>}]);
-encode({ping} = Ping) ->
- encode_ping(Ping, [{<<"xmlns">>, <<"urn:xmpp:ping">>}]);
-encode({time, _, _} = Time) ->
- encode_time(Time, [{<<"xmlns">>, <<"urn:xmpp:time">>}]);
-encode({text, _, _} = Text) ->
- encode_stream_error_text(Text, []);
-encode({'see-other-host', _} = See_other_host) ->
- encode_stream_error_see_other_host(See_other_host,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>}]);
-encode({stream_error, _, _} = Stream_error) ->
- encode_stream_error(Stream_error,
- [{<<"xmlns">>,
- <<"http://etherx.jabber.org/streams">>}]);
-encode({vcard_name, _, _, _, _, _} = N) ->
- encode_vcard_N(N, [{<<"xmlns">>, <<"vcard-temp">>}]);
-encode({vcard_adr, _, _, _, _, _, _, _, _, _, _, _, _,
- _, _} =
- Adr) ->
- encode_vcard_ADR(Adr,
- [{<<"xmlns">>, <<"vcard-temp">>}]);
-encode({vcard_label, _, _, _, _, _, _, _, _} = Label) ->
- encode_vcard_LABEL(Label,
- [{<<"xmlns">>, <<"vcard-temp">>}]);
-encode({vcard_tel, _, _, _, _, _, _, _, _, _, _, _, _,
- _, _} =
- Tel) ->
- encode_vcard_TEL(Tel,
- [{<<"xmlns">>, <<"vcard-temp">>}]);
-encode({vcard_email, _, _, _, _, _, _} = Email) ->
- encode_vcard_EMAIL(Email,
- [{<<"xmlns">>, <<"vcard-temp">>}]);
-encode({vcard_geo, _, _} = Geo) ->
- encode_vcard_GEO(Geo,
- [{<<"xmlns">>, <<"vcard-temp">>}]);
-encode({vcard_logo, _, _, _} = Logo) ->
- encode_vcard_LOGO(Logo,
- [{<<"xmlns">>, <<"vcard-temp">>}]);
-encode({vcard_photo, _, _, _} = Photo) ->
- encode_vcard_PHOTO(Photo,
- [{<<"xmlns">>, <<"vcard-temp">>}]);
-encode({vcard_org, _, _} = Org) ->
- encode_vcard_ORG(Org,
- [{<<"xmlns">>, <<"vcard-temp">>}]);
-encode({vcard_sound, _, _, _} = Sound) ->
- encode_vcard_SOUND(Sound,
- [{<<"xmlns">>, <<"vcard-temp">>}]);
-encode({vcard_key, _, _} = Key) ->
- encode_vcard_KEY(Key,
- [{<<"xmlns">>, <<"vcard-temp">>}]);
-encode({vcard, _, _, _, _, _, _, _, _, _, _, _, _, _, _,
- _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} =
- Vcard) ->
- encode_vcard(Vcard, [{<<"xmlns">>, <<"vcard-temp">>}]);
-encode({vcard_xupdate, _} = X) ->
- encode_vcard_xupdate(X,
- [{<<"xmlns">>, <<"vcard-temp:x:update">>}]);
-encode({xdata_field, _, _, _, _, _, _, _} = Field) ->
- encode_xdata_field(Field,
- [{<<"xmlns">>, <<"jabber:x:data">>}]);
-encode({xdata, _, _, _, _, _, _} = X) ->
- encode_xdata(X, [{<<"xmlns">>, <<"jabber:x:data">>}]);
-encode({pubsub_subscription, _, _, _, _} =
- Subscription) ->
- encode_pubsub_subscription(Subscription,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/pubsub">>}]);
-encode({pubsub_affiliation, _, _} = Affiliation) ->
- encode_pubsub_affiliation(Affiliation,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/pubsub">>}]);
-encode({pubsub_item, _, _} = Item) ->
- encode_pubsub_item(Item,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/pubsub">>}]);
-encode({pubsub_items, _, _, _, _} = Items) ->
- encode_pubsub_items(Items,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/pubsub">>}]);
-encode({pubsub_event_item, _, _, _, _} = Item) ->
- encode_pubsub_event_item(Item,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/pubsub#event">>}]);
-encode({pubsub_event_items, _, _, _} = Items) ->
- encode_pubsub_event_items(Items,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/pubsub#event">>}]);
-encode({pubsub_event, _} = Event) ->
- encode_pubsub_event(Event,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/pubsub#event">>}]);
-encode({pubsub_subscribe, _, _} = Subscribe) ->
- encode_pubsub_subscribe(Subscribe,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/pubsub">>}]);
-encode({pubsub_unsubscribe, _, _, _} = Unsubscribe) ->
- encode_pubsub_unsubscribe(Unsubscribe,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/pubsub">>}]);
-encode({pubsub_publish, _, _} = Publish) ->
- encode_pubsub_publish(Publish,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/pubsub">>}]);
-encode({pubsub_options, _, _, _, _} = Options) ->
- encode_pubsub_options(Options,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/pubsub">>}]);
-encode({pubsub_retract, _, _, _} = Retract) ->
- encode_pubsub_retract(Retract,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/pubsub">>}]);
-encode({pubsub, _, _, _, _, _, _, _, _} = Pubsub) ->
- encode_pubsub(Pubsub,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/pubsub">>}]);
-encode({shim, _} = Headers) ->
- encode_shim_headers(Headers,
- [{<<"xmlns">>, <<"http://jabber.org/protocol/shim">>}]);
-encode({chatstate, active} = Active) ->
- encode_chatstate_active(Active,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/chatstates">>}]);
-encode({chatstate, composing} = Composing) ->
- encode_chatstate_composing(Composing,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/chatstates">>}]);
-encode({chatstate, gone} = Gone) ->
- encode_chatstate_gone(Gone,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/chatstates">>}]);
-encode({chatstate, inactive} = Inactive) ->
- encode_chatstate_inactive(Inactive,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/chatstates">>}]);
-encode({chatstate, paused} = Paused) ->
- encode_chatstate_paused(Paused,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/chatstates">>}]);
-encode({delay, _, _} = Delay) ->
- encode_delay(Delay,
- [{<<"xmlns">>, <<"urn:xmpp:delay">>}]);
-encode({streamhost, _, _, _} = Streamhost) ->
- encode_bytestreams_streamhost(Streamhost,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/bytestreams">>}]);
-encode({bytestreams, _, _, _, _, _, _} = Query) ->
- encode_bytestreams(Query,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/bytestreams">>}]);
-encode({muc_history, _, _, _, _} = History) ->
- encode_muc_history(History,
- [{<<"xmlns">>, <<"http://jabber.org/protocol/muc">>}]);
-encode({muc_decline, _, _, _} = Decline) ->
- encode_muc_user_decline(Decline,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/muc#user">>}]);
-encode({muc_user_destroy, _, _} = Destroy) ->
- encode_muc_user_destroy(Destroy,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/muc#user">>}]);
-encode({muc_invite, _, _, _} = Invite) ->
- encode_muc_user_invite(Invite,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/muc#user">>}]);
-encode({muc_user, _, _, _, _, _, _} = X) ->
- encode_muc_user(X,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/muc#user">>}]);
-encode({muc_owner_destroy, _, _, _} = Destroy) ->
- encode_muc_owner_destroy(Destroy,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/muc#owner">>}]);
-encode({muc_owner, _, _} = Query) ->
- encode_muc_owner(Query,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/muc#owner">>}]);
-encode({muc_item, _, _, _, _, _, _, _} = Item) ->
- encode_muc_admin_item(Item, []);
-encode({muc_actor, _, _} = Actor) ->
- encode_muc_admin_actor(Actor, []);
-encode({muc_admin, _} = Query) ->
- encode_muc_admin(Query,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/muc#admin">>}]);
-encode({muc, _, _} = X) ->
- encode_muc(X,
- [{<<"xmlns">>, <<"http://jabber.org/protocol/muc">>}]);
-encode({rsm_first, _, _} = First) ->
- encode_rsm_first(First,
- [{<<"xmlns">>, <<"http://jabber.org/protocol/rsm">>}]);
-encode({rsm_set, _, _, _, _, _, _, _} = Set) ->
- encode_rsm_set(Set,
- [{<<"xmlns">>, <<"http://jabber.org/protocol/rsm">>}]);
-encode({mam_query, _, _, _, _, _, _, _} = Query) ->
- encode_mam_query(Query, []);
-encode({mam_archived, _, _} = Archived) ->
- encode_mam_archived(Archived,
- [{<<"xmlns">>, <<"urn:xmpp:mam:tmp">>}]);
-encode({mam_result, _, _, _, _} = Result) ->
- encode_mam_result(Result, []);
-encode({mam_prefs, _, _, _, _} = Prefs) ->
- encode_mam_prefs(Prefs, []);
-encode({mam_fin, _, _, _, _} = Fin) ->
- encode_mam_fin(Fin,
- [{<<"xmlns">>, <<"urn:xmpp:mam:0">>}]);
-encode({forwarded, _, _} = Forwarded) ->
- encode_forwarded(Forwarded,
- [{<<"xmlns">>, <<"urn:xmpp:forward:0">>}]);
-encode({carbons_disable} = Disable) ->
- encode_carbons_disable(Disable,
- [{<<"xmlns">>, <<"urn:xmpp:carbons:2">>}]);
-encode({carbons_enable} = Enable) ->
- encode_carbons_enable(Enable,
- [{<<"xmlns">>, <<"urn:xmpp:carbons:2">>}]);
-encode({carbons_private} = Private) ->
- encode_carbons_private(Private,
- [{<<"xmlns">>, <<"urn:xmpp:carbons:2">>}]);
-encode({carbons_received, _} = Received) ->
- encode_carbons_received(Received,
- [{<<"xmlns">>, <<"urn:xmpp:carbons:2">>}]);
-encode({carbons_sent, _} = Sent) ->
- encode_carbons_sent(Sent,
- [{<<"xmlns">>, <<"urn:xmpp:carbons:2">>}]);
-encode({feature_csi, _} = Csi) ->
- encode_feature_csi(Csi, []);
-encode({csi, active} = Active) ->
- encode_csi_active(Active,
- [{<<"xmlns">>, <<"urn:xmpp:csi:0">>}]);
-encode({csi, inactive} = Inactive) ->
- encode_csi_inactive(Inactive,
- [{<<"xmlns">>, <<"urn:xmpp:csi:0">>}]);
-encode({feature_sm, _} = Sm) ->
- encode_feature_sm(Sm, []);
-encode({sm_enable, _, _, _} = Enable) ->
- encode_sm_enable(Enable, []);
-encode({sm_enabled, _, _, _, _, _} = Enabled) ->
- encode_sm_enabled(Enabled, []);
-encode({sm_resume, _, _, _} = Resume) ->
- encode_sm_resume(Resume, []);
-encode({sm_resumed, _, _, _} = Resumed) ->
- encode_sm_resumed(Resumed, []);
-encode({sm_r, _} = R) -> encode_sm_r(R, []);
-encode({sm_a, _, _} = A) -> encode_sm_a(A, []);
-encode({sm_failed, _, _, _} = Failed) ->
- encode_sm_failed(Failed, []);
-encode({offline_item, _, _} = Item) ->
- encode_offline_item(Item,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/offline">>}]);
-encode({offline, _, _, _} = Offline) ->
- encode_offline(Offline,
- [{<<"xmlns">>,
- <<"http://jabber.org/protocol/offline">>}]);
-encode({mix_join, _, _} = Join) ->
- encode_mix_join(Join,
- [{<<"xmlns">>, <<"urn:xmpp:mix:0">>}]);
-encode({mix_leave} = Leave) ->
- encode_mix_leave(Leave,
- [{<<"xmlns">>, <<"urn:xmpp:mix:0">>}]);
-encode({mix_participant, _, _} = Participant) ->
- encode_mix_participant(Participant,
- [{<<"xmlns">>, <<"urn:xmpp:mix:0">>}]).
-
-get_ns({last, _, _}) -> <<"jabber:iq:last">>;
-get_ns({version, _, _, _}) -> <<"jabber:iq:version">>;
-get_ns({roster_item, _, _, _, _, _}) ->
- <<"jabber:iq:roster">>;
-get_ns({roster, _, _}) -> <<"jabber:iq:roster">>;
-get_ns({privacy_item, _, _, _, _, _}) ->
- <<"jabber:iq:privacy">>;
-get_ns({privacy_list, _, _}) -> <<"jabber:iq:privacy">>;
-get_ns({privacy, _, _, _}) -> <<"jabber:iq:privacy">>;
-get_ns({block, _}) -> <<"urn:xmpp:blocking">>;
-get_ns({unblock, _}) -> <<"urn:xmpp:blocking">>;
-get_ns({block_list}) -> <<"urn:xmpp:blocking">>;
-get_ns({identity, _, _, _, _}) ->
- <<"http://jabber.org/protocol/disco#info">>;
-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({private, _}) -> <<"jabber:iq:private">>;
-get_ns({bookmark_conference, _, _, _, _, _}) ->
- <<"storage:bookmarks">>;
-get_ns({bookmark_url, _, _}) -> <<"storage:bookmarks">>;
-get_ns({bookmark_storage, _, _}) ->
- <<"storage:bookmarks">>;
-get_ns({stat, _, _, _, _}) ->
- <<"http://jabber.org/protocol/stats">>;
-get_ns({stats, _}) ->
- <<"http://jabber.org/protocol/stats">>;
-get_ns({iq, _, _, _, _, _, _, _}) ->
- <<"jabber:client">>;
-get_ns({message, _, _, _, _, _, _, _, _, _, _}) ->
- <<"jabber:client">>;
-get_ns({presence, _, _, _, _, _, _, _, _, _, _}) ->
- <<"jabber:client">>;
-get_ns({gone, _}) ->
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>;
-get_ns({redirect, _}) ->
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>;
-get_ns({error, _, _, _, _}) -> <<"jabber:client">>;
-get_ns({bind, _, _}) ->
- <<"urn:ietf:params:xml:ns:xmpp-bind">>;
-get_ns({sasl_auth, _, _}) ->
- <<"urn:ietf:params:xml:ns:xmpp-sasl">>;
-get_ns({sasl_abort}) ->
- <<"urn:ietf:params:xml:ns:xmpp-sasl">>;
-get_ns({sasl_challenge, _}) ->
- <<"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({sasl_failure, _, _}) ->
- <<"urn:ietf:params:xml:ns:xmpp-sasl">>;
-get_ns({sasl_mechanisms, _}) ->
- <<"urn:ietf:params:xml:ns:xmpp-sasl">>;
-get_ns({starttls, _}) ->
- <<"urn:ietf:params:xml:ns:xmpp-tls">>;
-get_ns({starttls_proceed}) ->
- <<"urn:ietf:params:xml:ns:xmpp-tls">>;
-get_ns({starttls_failure}) ->
- <<"urn:ietf:params:xml:ns:xmpp-tls">>;
-get_ns({compress_failure, _}) ->
- <<"http://jabber.org/protocol/compress">>;
-get_ns({compress, _}) ->
- <<"http://jabber.org/protocol/compress">>;
-get_ns({compressed}) ->
- <<"http://jabber.org/protocol/compress">>;
-get_ns({compression, _}) ->
- <<"http://jabber.org/features/compress">>;
-get_ns({stream_features, _}) ->
- <<"http://etherx.jabber.org/streams">>;
-get_ns({p1_push}) -> <<"p1:push">>;
-get_ns({p1_rebind}) -> <<"p1:rebind">>;
-get_ns({p1_ack}) -> <<"p1:ack">>;
-get_ns({caps, _, _, _}) ->
- <<"http://jabber.org/protocol/caps">>;
-get_ns({feature_register}) ->
- <<"http://jabber.org/features/iq-register">>;
-get_ns({register, _, _, _, _, _, _, _, _, _, _, _, _, _,
- _, _, _, _, _, _, _, _}) ->
- <<"jabber:iq:register">>;
-get_ns({session}) ->
- <<"urn:ietf:params:xml:ns:xmpp-session">>;
-get_ns({ping}) -> <<"urn:xmpp:ping">>;
-get_ns({time, _, _}) -> <<"urn:xmpp:time">>;
-get_ns({'see-other-host', _}) ->
- <<"urn:ietf:params:xml:ns:xmpp-streams">>;
-get_ns({stream_error, _, _}) ->
- <<"http://etherx.jabber.org/streams">>;
-get_ns({vcard_name, _, _, _, _, _}) -> <<"vcard-temp">>;
-get_ns({vcard_adr, _, _, _, _, _, _, _, _, _, _, _, _,
- _, _}) ->
- <<"vcard-temp">>;
-get_ns({vcard_label, _, _, _, _, _, _, _, _}) ->
- <<"vcard-temp">>;
-get_ns({vcard_tel, _, _, _, _, _, _, _, _, _, _, _, _,
- _, _}) ->
- <<"vcard-temp">>;
-get_ns({vcard_email, _, _, _, _, _, _}) ->
- <<"vcard-temp">>;
-get_ns({vcard_geo, _, _}) -> <<"vcard-temp">>;
-get_ns({vcard_logo, _, _, _}) -> <<"vcard-temp">>;
-get_ns({vcard_photo, _, _, _}) -> <<"vcard-temp">>;
-get_ns({vcard_org, _, _}) -> <<"vcard-temp">>;
-get_ns({vcard_sound, _, _, _}) -> <<"vcard-temp">>;
-get_ns({vcard_key, _, _}) -> <<"vcard-temp">>;
-get_ns({vcard, _, _, _, _, _, _, _, _, _, _, _, _, _, _,
- _, _, _, _, _, _, _, _, _, _, _, _, _, _, _}) ->
- <<"vcard-temp">>;
-get_ns({vcard_xupdate, _}) -> <<"vcard-temp:x:update">>;
-get_ns({xdata_field, _, _, _, _, _, _, _}) ->
- <<"jabber:x:data">>;
-get_ns({xdata, _, _, _, _, _, _}) ->
- <<"jabber:x:data">>;
-get_ns({pubsub_subscription, _, _, _, _}) ->
- <<"http://jabber.org/protocol/pubsub">>;
-get_ns({pubsub_affiliation, _, _}) ->
- <<"http://jabber.org/protocol/pubsub">>;
-get_ns({pubsub_item, _, _}) ->
- <<"http://jabber.org/protocol/pubsub">>;
-get_ns({pubsub_items, _, _, _, _}) ->
- <<"http://jabber.org/protocol/pubsub">>;
-get_ns({pubsub_event_item, _, _, _, _}) ->
- <<"http://jabber.org/protocol/pubsub#event">>;
-get_ns({pubsub_event_items, _, _, _}) ->
- <<"http://jabber.org/protocol/pubsub#event">>;
-get_ns({pubsub_event, _}) ->
- <<"http://jabber.org/protocol/pubsub#event">>;
-get_ns({pubsub_subscribe, _, _}) ->
- <<"http://jabber.org/protocol/pubsub">>;
-get_ns({pubsub_unsubscribe, _, _, _}) ->
- <<"http://jabber.org/protocol/pubsub">>;
-get_ns({pubsub_publish, _, _}) ->
- <<"http://jabber.org/protocol/pubsub">>;
-get_ns({pubsub_options, _, _, _, _}) ->
- <<"http://jabber.org/protocol/pubsub">>;
-get_ns({pubsub_retract, _, _, _}) ->
- <<"http://jabber.org/protocol/pubsub">>;
-get_ns({pubsub, _, _, _, _, _, _, _, _}) ->
- <<"http://jabber.org/protocol/pubsub">>;
-get_ns({shim, _}) ->
- <<"http://jabber.org/protocol/shim">>;
-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({delay, _, _}) -> <<"urn:xmpp:delay">>;
-get_ns({streamhost, _, _, _}) ->
- <<"http://jabber.org/protocol/bytestreams">>;
-get_ns({bytestreams, _, _, _, _, _, _}) ->
- <<"http://jabber.org/protocol/bytestreams">>;
-get_ns({muc_history, _, _, _, _}) ->
- <<"http://jabber.org/protocol/muc">>;
-get_ns({muc_decline, _, _, _}) ->
- <<"http://jabber.org/protocol/muc#user">>;
-get_ns({muc_user_destroy, _, _}) ->
- <<"http://jabber.org/protocol/muc#user">>;
-get_ns({muc_invite, _, _, _}) ->
- <<"http://jabber.org/protocol/muc#user">>;
-get_ns({muc_user, _, _, _, _, _, _}) ->
- <<"http://jabber.org/protocol/muc#user">>;
-get_ns({muc_owner_destroy, _, _, _}) ->
- <<"http://jabber.org/protocol/muc#owner">>;
-get_ns({muc_owner, _, _}) ->
- <<"http://jabber.org/protocol/muc#owner">>;
-get_ns({muc_admin, _}) ->
- <<"http://jabber.org/protocol/muc#admin">>;
-get_ns({muc, _, _}) ->
- <<"http://jabber.org/protocol/muc">>;
-get_ns({rsm_first, _, _}) ->
- <<"http://jabber.org/protocol/rsm">>;
-get_ns({rsm_set, _, _, _, _, _, _, _}) ->
- <<"http://jabber.org/protocol/rsm">>;
-get_ns({mam_archived, _, _}) -> <<"urn:xmpp:mam:tmp">>;
-get_ns({mam_fin, _, _, _, _}) -> <<"urn:xmpp:mam:0">>;
-get_ns({forwarded, _, _}) -> <<"urn:xmpp:forward:0">>;
-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({feature_csi, _}) -> <<"urn:xmpp:csi:0">>;
-get_ns({csi, active}) -> <<"urn:xmpp:csi:0">>;
-get_ns({csi, inactive}) -> <<"urn:xmpp:csi:0">>;
-get_ns({offline_item, _, _}) ->
- <<"http://jabber.org/protocol/offline">>;
-get_ns({offline, _, _, _}) ->
- <<"http://jabber.org/protocol/offline">>;
-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(_) -> <<>>.
-
-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, "'">>.
-
-get_attr(Attr, Attrs) ->
- case lists:keyfind(Attr, 1, Attrs) of
- {_, Val} -> Val;
- false -> <<>>
- end.
-
-pp(Term) -> io_lib_pretty:print(Term, fun pp/2).
-
-pp(last, 2) -> [seconds, text];
-pp(version, 3) -> [name, ver, os];
-pp(roster_item, 5) ->
- [jid, name, groups, subscription, ask];
-pp(roster, 2) -> [items, ver];
-pp(privacy_item, 5) ->
- [order, action, type, value, kinds];
-pp(privacy_list, 2) -> [name, items];
-pp(privacy, 3) -> [lists, default, active];
-pp(block, 1) -> [items];
-pp(unblock, 1) -> [items];
-pp(block_list, 0) -> [];
-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, 2) -> [node, items];
-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, 4) -> [name, units, value, error];
-pp(stats, 1) -> [stat];
-pp(iq, 7) -> [id, type, lang, from, to, error, sub_els];
-pp(message, 10) ->
- [id, type, lang, from, to, subject, body, thread, error,
- sub_els];
-pp(presence, 10) ->
- [id, type, lang, from, to, show, status, priority,
- error, sub_els];
-pp(gone, 1) -> [uri];
-pp(redirect, 1) -> [uri];
-pp(error, 4) -> [type, by, reason, text];
-pp(bind, 2) -> [jid, 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, 3) -> [hash, node, ver];
-pp(feature_register, 0) -> [];
-pp(register, 21) ->
- [registered, remove, instructions, username, nick,
- password, name, first, last, email, address, city,
- state, zip, phone, url, date, misc, text, key, xdata];
-pp(session, 0) -> [];
-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, 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(vcard_xupdate, 1) -> [photo];
-pp(xdata_field, 7) ->
- [label, type, var, required, desc, values, options];
-pp(xdata, 6) ->
- [type, instructions, title, reported, items, fields];
-pp(pubsub_subscription, 4) -> [jid, node, subid, type];
-pp(pubsub_affiliation, 2) -> [node, type];
-pp(pubsub_item, 2) -> [id, xml_els];
-pp(pubsub_items, 4) -> [node, max_items, subid, items];
-pp(pubsub_event_item, 4) ->
- [id, node, publisher, xml_els];
-pp(pubsub_event_items, 3) -> [node, retract, items];
-pp(pubsub_event, 1) -> [items];
-pp(pubsub_subscribe, 2) -> [node, jid];
-pp(pubsub_unsubscribe, 3) -> [node, jid, subid];
-pp(pubsub_publish, 2) -> [node, items];
-pp(pubsub_options, 4) -> [node, jid, subid, xdata];
-pp(pubsub_retract, 3) -> [node, notify, items];
-pp(pubsub, 8) ->
- [subscriptions, affiliations, publish, subscribe,
- unsubscribe, options, items, retract];
-pp(shim, 1) -> [headers];
-pp(chatstate, 1) -> [type];
-pp(delay, 2) -> [stamp, from];
-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_user_destroy, 2) -> [reason, jid];
-pp(muc_invite, 3) -> [reason, from, to];
-pp(muc_user, 6) ->
- [decline, destroy, invites, items, status_codes,
- password];
-pp(muc_owner_destroy, 3) -> [jid, reason, password];
-pp(muc_owner, 2) -> [destroy, config];
-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(rsm_first, 2) -> [index, data];
-pp(rsm_set, 7) ->
- ['after', before, count, first, index, last, max];
-pp(mam_query, 7) ->
- [xmlns, id, start, 'end', with, 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, 4) -> [id, rsm, stable, complete];
-pp(forwarded, 2) -> [delay, sub_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(csi, 1) -> [type];
-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(_, _) -> no.
-
-enc_bool(false) -> <<"false">>;
-enc_bool(true) -> <<"true">>.
-
-dec_bool(<<"false">>) -> false;
-dec_bool(<<"0">>) -> false;
-dec_bool(<<"true">>) -> true;
-dec_bool(<<"1">>) -> true.
-
-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) -> jlib:now_to_utc_string(Val).
-
-dec_utc(Val) ->
- {_, _, _} = jlib:datetime_string_to_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 = jlib:binary_to_integer(H1),
- M = jlib:binary_to_integer(M1),
- if H >= -12, H =< 12, M >= 0, M < 60 -> {H, M} end.
-
-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},
- _xmlns_attrs) ->
- _els = [],
- _attrs = encode_mix_participant_attr_nick(Nick,
- encode_mix_participant_attr_jid(Jid,
- _xmlns_attrs)),
- {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) ->
- undefined;
-decode_mix_participant_attr_nick(__TopXMLNS, _val) ->
- _val.
-
-encode_mix_participant_attr_nick(undefined, _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}, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_mix_join_els(__TopXMLNS, __IgnoreEls, _els,
- [decode_mix_subscribe(__TopXMLNS, __IgnoreEls,
- _el)
- | Subscribe]);
- true ->
- 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},
- _xmlns_attrs) ->
- _els =
- lists:reverse('encode_mix_join_$subscribe'(Subscribe,
- [])),
- _attrs = encode_mix_join_attr_jid(Jid, _xmlns_attrs),
- {xmlel, <<"join">>, _attrs, _els}.
-
-'encode_mix_join_$subscribe'([], _acc) -> _acc;
-'encode_mix_join_$subscribe'([Subscribe | _els],
- _acc) ->
- 'encode_mix_join_$subscribe'(_els,
- [encode_mix_subscribe(Subscribe, []) | _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, _xmlns_attrs) ->
- _els = [],
- _attrs = encode_mix_subscribe_attr_node(Node,
- _xmlns_attrs),
- {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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_offline_els(__TopXMLNS, __IgnoreEls, _els, Items,
- decode_offline_purge(__TopXMLNS, __IgnoreEls,
- _el),
- Fetch);
- true ->
- decode_offline_els(__TopXMLNS, __IgnoreEls, _els, Items,
- Purge, Fetch)
- end;
-decode_offline_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"fetch">>, _attrs, _} = _el | _els], Items,
- Purge, Fetch) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_offline_els(__TopXMLNS, __IgnoreEls, _els, Items,
- Purge,
- decode_offline_fetch(__TopXMLNS, __IgnoreEls,
- _el));
- true ->
- decode_offline_els(__TopXMLNS, __IgnoreEls, _els, Items,
- Purge, Fetch)
- end;
-decode_offline_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"item">>, _attrs, _} = _el | _els], Items,
- Purge, Fetch) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_offline_els(__TopXMLNS, __IgnoreEls, _els,
- [decode_offline_item(__TopXMLNS, __IgnoreEls, _el)
- | Items],
- Purge, Fetch);
- true ->
- 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},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_offline_$items'(Items,
- 'encode_offline_$purge'(Purge,
- 'encode_offline_$fetch'(Fetch,
- [])))),
- _attrs = _xmlns_attrs,
- {xmlel, <<"offline">>, _attrs, _els}.
-
-'encode_offline_$items'([], _acc) -> _acc;
-'encode_offline_$items'([Items | _els], _acc) ->
- 'encode_offline_$items'(_els,
- [encode_offline_item(Items, []) | _acc]).
-
-'encode_offline_$purge'(false, _acc) -> _acc;
-'encode_offline_$purge'(Purge, _acc) ->
- [encode_offline_purge(Purge, []) | _acc].
-
-'encode_offline_$fetch'(false, _acc) -> _acc;
-'encode_offline_$fetch'(Fetch, _acc) ->
- [encode_offline_fetch(Fetch, []) | _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},
- _xmlns_attrs) ->
- _els = [],
- _attrs = encode_offline_item_attr_action(Action,
- encode_offline_item_attr_node(Node,
- _xmlns_attrs)),
- {xmlel, <<"item">>, _attrs, _els}.
-
-decode_offline_item_attr_node(__TopXMLNS, undefined) ->
- undefined;
-decode_offline_item_attr_node(__TopXMLNS, _val) -> _val.
-
-encode_offline_item_attr_node(undefined, _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, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"fetch">>, _attrs, _els}.
-
-decode_offline_purge(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"purge">>, _attrs, _els}) ->
- true.
-
-encode_offline_purge(true, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- decode_error_bad_request(_xmlns, __IgnoreEls,
- _el));
- true ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- Reason)
- end;
-decode_sm_failed_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"conflict">>, _attrs, _} = _el | _els],
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- decode_error_conflict(_xmlns, __IgnoreEls,
- _el));
- true ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- Reason)
- end;
-decode_sm_failed_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"feature-not-implemented">>, _attrs, _} = _el
- | _els],
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- decode_error_feature_not_implemented(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- Reason)
- end;
-decode_sm_failed_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"forbidden">>, _attrs, _} = _el | _els],
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- decode_error_forbidden(_xmlns, __IgnoreEls,
- _el));
- true ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- Reason)
- end;
-decode_sm_failed_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"gone">>, _attrs, _} = _el | _els],
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- decode_error_gone(_xmlns, __IgnoreEls, _el));
- true ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- Reason)
- end;
-decode_sm_failed_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"internal-server-error">>, _attrs, _} = _el
- | _els],
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- decode_error_internal_server_error(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- Reason)
- end;
-decode_sm_failed_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"item-not-found">>, _attrs, _} = _el | _els],
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- decode_error_item_not_found(_xmlns, __IgnoreEls,
- _el));
- true ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- Reason)
- end;
-decode_sm_failed_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"jid-malformed">>, _attrs, _} = _el | _els],
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- decode_error_jid_malformed(_xmlns, __IgnoreEls,
- _el));
- true ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- Reason)
- end;
-decode_sm_failed_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"not-acceptable">>, _attrs, _} = _el | _els],
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- decode_error_not_acceptable(_xmlns, __IgnoreEls,
- _el));
- true ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- Reason)
- end;
-decode_sm_failed_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"not-allowed">>, _attrs, _} = _el | _els],
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- decode_error_not_allowed(_xmlns, __IgnoreEls,
- _el));
- true ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- Reason)
- end;
-decode_sm_failed_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"not-authorized">>, _attrs, _} = _el | _els],
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- decode_error_not_authorized(_xmlns, __IgnoreEls,
- _el));
- true ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- Reason)
- end;
-decode_sm_failed_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"policy-violation">>, _attrs, _} = _el
- | _els],
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- decode_error_policy_violation(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- Reason)
- end;
-decode_sm_failed_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"recipient-unavailable">>, _attrs, _} = _el
- | _els],
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- decode_error_recipient_unavailable(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- Reason)
- end;
-decode_sm_failed_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"redirect">>, _attrs, _} = _el | _els],
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- decode_error_redirect(_xmlns, __IgnoreEls,
- _el));
- true ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- Reason)
- end;
-decode_sm_failed_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"registration-required">>, _attrs, _} = _el
- | _els],
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- decode_error_registration_required(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- Reason)
- end;
-decode_sm_failed_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"remote-server-not-found">>, _attrs, _} = _el
- | _els],
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- decode_error_remote_server_not_found(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- Reason)
- end;
-decode_sm_failed_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"remote-server-timeout">>, _attrs, _} = _el
- | _els],
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- decode_error_remote_server_timeout(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- Reason)
- end;
-decode_sm_failed_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"resource-constraint">>, _attrs, _} = _el
- | _els],
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- decode_error_resource_constraint(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- Reason)
- end;
-decode_sm_failed_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"service-unavailable">>, _attrs, _} = _el
- | _els],
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- decode_error_service_unavailable(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- Reason)
- end;
-decode_sm_failed_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"subscription-required">>, _attrs, _} = _el
- | _els],
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- decode_error_subscription_required(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- Reason)
- end;
-decode_sm_failed_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"undefined-condition">>, _attrs, _} = _el
- | _els],
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- decode_error_undefined_condition(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- Reason)
- end;
-decode_sm_failed_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"unexpected-request">>, _attrs, _} = _el
- | _els],
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_sm_failed_els(__TopXMLNS, __IgnoreEls, _els,
- decode_error_unexpected_request(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- 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},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_sm_failed_$reason'(Reason,
- [])),
- _attrs = encode_sm_failed_attr_xmlns(Xmlns,
- encode_sm_failed_attr_h(H,
- _xmlns_attrs)),
- {xmlel, <<"failed">>, _attrs, _els}.
-
-'encode_sm_failed_$reason'(undefined, _acc) -> _acc;
-'encode_sm_failed_$reason'('bad-request' = Reason,
- _acc) ->
- [encode_error_bad_request(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_sm_failed_$reason'(conflict = Reason, _acc) ->
- [encode_error_conflict(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_sm_failed_$reason'('feature-not-implemented' =
- Reason,
- _acc) ->
- [encode_error_feature_not_implemented(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_sm_failed_$reason'(forbidden = Reason, _acc) ->
- [encode_error_forbidden(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_sm_failed_$reason'({gone, _} = Reason, _acc) ->
- [encode_error_gone(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_sm_failed_$reason'('internal-server-error' =
- Reason,
- _acc) ->
- [encode_error_internal_server_error(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_sm_failed_$reason'('item-not-found' = Reason,
- _acc) ->
- [encode_error_item_not_found(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_sm_failed_$reason'('jid-malformed' = Reason,
- _acc) ->
- [encode_error_jid_malformed(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_sm_failed_$reason'('not-acceptable' = Reason,
- _acc) ->
- [encode_error_not_acceptable(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_sm_failed_$reason'('not-allowed' = Reason,
- _acc) ->
- [encode_error_not_allowed(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_sm_failed_$reason'('not-authorized' = Reason,
- _acc) ->
- [encode_error_not_authorized(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_sm_failed_$reason'('policy-violation' = Reason,
- _acc) ->
- [encode_error_policy_violation(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_sm_failed_$reason'('recipient-unavailable' =
- Reason,
- _acc) ->
- [encode_error_recipient_unavailable(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_sm_failed_$reason'({redirect, _} = Reason,
- _acc) ->
- [encode_error_redirect(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_sm_failed_$reason'('registration-required' =
- Reason,
- _acc) ->
- [encode_error_registration_required(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_sm_failed_$reason'('remote-server-not-found' =
- Reason,
- _acc) ->
- [encode_error_remote_server_not_found(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_sm_failed_$reason'('remote-server-timeout' =
- Reason,
- _acc) ->
- [encode_error_remote_server_timeout(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_sm_failed_$reason'('resource-constraint' =
- Reason,
- _acc) ->
- [encode_error_resource_constraint(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_sm_failed_$reason'('service-unavailable' =
- Reason,
- _acc) ->
- [encode_error_service_unavailable(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_sm_failed_$reason'('subscription-required' =
- Reason,
- _acc) ->
- [encode_error_subscription_required(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_sm_failed_$reason'('undefined-condition' =
- Reason,
- _acc) ->
- [encode_error_undefined_condition(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_sm_failed_$reason'('unexpected-request' =
- Reason,
- _acc) ->
- [encode_error_unexpected_request(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _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) ->
- undefined;
-decode_sm_failed_attr_xmlns(__TopXMLNS, _val) -> _val.
-
-encode_sm_failed_attr_xmlns(undefined, _acc) -> _acc;
-encode_sm_failed_attr_xmlns(_val, _acc) ->
- [{<<"xmlns">>, _val} | _acc].
-
-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}, _xmlns_attrs) ->
- _els = [],
- _attrs = encode_sm_a_attr_xmlns(Xmlns,
- encode_sm_a_attr_h(H, _xmlns_attrs)),
- {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) ->
- undefined;
-decode_sm_a_attr_xmlns(__TopXMLNS, _val) -> _val.
-
-encode_sm_a_attr_xmlns(undefined, _acc) -> _acc;
-encode_sm_a_attr_xmlns(_val, _acc) ->
- [{<<"xmlns">>, _val} | _acc].
-
-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}, _xmlns_attrs) ->
- _els = [],
- _attrs = encode_sm_r_attr_xmlns(Xmlns, _xmlns_attrs),
- {xmlel, <<"r">>, _attrs, _els}.
-
-decode_sm_r_attr_xmlns(__TopXMLNS, undefined) ->
- undefined;
-decode_sm_r_attr_xmlns(__TopXMLNS, _val) -> _val.
-
-encode_sm_r_attr_xmlns(undefined, _acc) -> _acc;
-encode_sm_r_attr_xmlns(_val, _acc) ->
- [{<<"xmlns">>, _val} | _acc].
-
-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},
- _xmlns_attrs) ->
- _els = [],
- _attrs = encode_sm_resumed_attr_previd(Previd,
- encode_sm_resumed_attr_xmlns(Xmlns,
- encode_sm_resumed_attr_h(H,
- _xmlns_attrs))),
- {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) ->
- undefined;
-decode_sm_resumed_attr_xmlns(__TopXMLNS, _val) -> _val.
-
-encode_sm_resumed_attr_xmlns(undefined, _acc) -> _acc;
-encode_sm_resumed_attr_xmlns(_val, _acc) ->
- [{<<"xmlns">>, _val} | _acc].
-
-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},
- _xmlns_attrs) ->
- _els = [],
- _attrs = encode_sm_resume_attr_previd(Previd,
- encode_sm_resume_attr_xmlns(Xmlns,
- encode_sm_resume_attr_h(H,
- _xmlns_attrs))),
- {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) ->
- undefined;
-decode_sm_resume_attr_xmlns(__TopXMLNS, _val) -> _val.
-
-encode_sm_resume_attr_xmlns(undefined, _acc) -> _acc;
-encode_sm_resume_attr_xmlns(_val, _acc) ->
- [{<<"xmlns">>, _val} | _acc].
-
-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},
- _xmlns_attrs) ->
- _els = [],
- _attrs = encode_sm_enabled_attr_resume(Resume,
- encode_sm_enabled_attr_max(Max,
- encode_sm_enabled_attr_xmlns(Xmlns,
- encode_sm_enabled_attr_location(Location,
- encode_sm_enabled_attr_id(Id,
- _xmlns_attrs))))),
- {xmlel, <<"enabled">>, _attrs, _els}.
-
-decode_sm_enabled_attr_id(__TopXMLNS, undefined) ->
- undefined;
-decode_sm_enabled_attr_id(__TopXMLNS, _val) -> _val.
-
-encode_sm_enabled_attr_id(undefined, _acc) -> _acc;
-encode_sm_enabled_attr_id(_val, _acc) ->
- [{<<"id">>, _val} | _acc].
-
-decode_sm_enabled_attr_location(__TopXMLNS,
- undefined) ->
- undefined;
-decode_sm_enabled_attr_location(__TopXMLNS, _val) ->
- _val.
-
-encode_sm_enabled_attr_location(undefined, _acc) ->
- _acc;
-encode_sm_enabled_attr_location(_val, _acc) ->
- [{<<"location">>, _val} | _acc].
-
-decode_sm_enabled_attr_xmlns(__TopXMLNS, undefined) ->
- undefined;
-decode_sm_enabled_attr_xmlns(__TopXMLNS, _val) -> _val.
-
-encode_sm_enabled_attr_xmlns(undefined, _acc) -> _acc;
-encode_sm_enabled_attr_xmlns(_val, _acc) ->
- [{<<"xmlns">>, _val} | _acc].
-
-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},
- _xmlns_attrs) ->
- _els = [],
- _attrs = encode_sm_enable_attr_resume(Resume,
- encode_sm_enable_attr_xmlns(Xmlns,
- encode_sm_enable_attr_max(Max,
- _xmlns_attrs))),
- {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) ->
- undefined;
-decode_sm_enable_attr_xmlns(__TopXMLNS, _val) -> _val.
-
-encode_sm_enable_attr_xmlns(undefined, _acc) -> _acc;
-encode_sm_enable_attr_xmlns(_val, _acc) ->
- [{<<"xmlns">>, _val} | _acc].
-
-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}, _xmlns_attrs) ->
- _els = [],
- _attrs = encode_feature_sm_attr_xmlns(Xmlns,
- _xmlns_attrs),
- {xmlel, <<"sm">>, _attrs, _els}.
-
-decode_feature_sm_attr_xmlns(__TopXMLNS, undefined) ->
- undefined;
-decode_feature_sm_attr_xmlns(__TopXMLNS, _val) -> _val.
-
-encode_feature_sm_attr_xmlns(undefined, _acc) -> _acc;
-encode_feature_sm_attr_xmlns(_val, _acc) ->
- [{<<"xmlns">>, _val} | _acc].
-
-decode_csi_inactive(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"inactive">>, _attrs, _els}) ->
- {csi, inactive}.
-
-encode_csi_inactive({csi, inactive}, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"inactive">>, _attrs, _els}.
-
-decode_csi_active(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"active">>, _attrs, _els}) ->
- {csi, active}.
-
-encode_csi_active({csi, active}, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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},
- _xmlns_attrs) ->
- _els = [],
- _attrs = encode_feature_csi_attr_xmlns(Xmlns,
- _xmlns_attrs),
- {xmlel, <<"csi">>, _attrs, _els}.
-
-decode_feature_csi_attr_xmlns(__TopXMLNS, undefined) ->
- undefined;
-decode_feature_csi_attr_xmlns(__TopXMLNS, _val) -> _val.
-
-encode_feature_csi_attr_xmlns(undefined, _acc) -> _acc;
-encode_feature_csi_attr_xmlns(_val, _acc) ->
- [{<<"xmlns">>, _val} | _acc].
-
-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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<"urn:xmpp:forward:0">> ->
- decode_carbons_sent_els(__TopXMLNS, __IgnoreEls, _els,
- {value,
- decode_forwarded(_xmlns, __IgnoreEls,
- _el)});
- true ->
- 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},
- _xmlns_attrs) ->
- _els =
- lists:reverse('encode_carbons_sent_$forwarded'(Forwarded,
- [])),
- _attrs = _xmlns_attrs,
- {xmlel, <<"sent">>, _attrs, _els}.
-
-'encode_carbons_sent_$forwarded'(Forwarded, _acc) ->
- [encode_forwarded(Forwarded,
- [{<<"xmlns">>, <<"urn:xmpp:forward:0">>}])
- | _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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<"urn:xmpp:forward:0">> ->
- decode_carbons_received_els(__TopXMLNS, __IgnoreEls,
- _els,
- {value,
- decode_forwarded(_xmlns, __IgnoreEls,
- _el)});
- true ->
- 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},
- _xmlns_attrs) ->
- _els =
- lists:reverse('encode_carbons_received_$forwarded'(Forwarded,
- [])),
- _attrs = _xmlns_attrs,
- {xmlel, <<"received">>, _attrs, _els}.
-
-'encode_carbons_received_$forwarded'(Forwarded, _acc) ->
- [encode_forwarded(Forwarded,
- [{<<"xmlns">>, <<"urn:xmpp:forward:0">>}])
- | _acc].
-
-decode_carbons_private(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"private">>, _attrs, _els}) ->
- {carbons_private}.
-
-encode_carbons_private({carbons_private},
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"private">>, _attrs, _els}.
-
-decode_carbons_enable(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"enable">>, _attrs, _els}) ->
- {carbons_enable}.
-
-encode_carbons_enable({carbons_enable}, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"enable">>, _attrs, _els}.
-
-decode_carbons_disable(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"disable">>, _attrs, _els}) ->
- {carbons_disable}.
-
-encode_carbons_disable({carbons_disable},
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"disable">>, _attrs, _els}.
-
-decode_forwarded(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"forwarded">>, _attrs, _els}) ->
- {Delay, __Els} = decode_forwarded_els(__TopXMLNS,
- __IgnoreEls, _els, undefined, []),
- {forwarded, Delay, __Els}.
-
-decode_forwarded_els(__TopXMLNS, __IgnoreEls, [], Delay,
- __Els) ->
- {Delay, lists:reverse(__Els)};
-decode_forwarded_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"delay">>, _attrs, _} = _el | _els], Delay,
- __Els) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<"urn:xmpp:delay">> ->
- decode_forwarded_els(__TopXMLNS, __IgnoreEls, _els,
- decode_delay(_xmlns, __IgnoreEls, _el), __Els);
- true ->
- decode_forwarded_els(__TopXMLNS, __IgnoreEls, _els,
- Delay, __Els)
- end;
-decode_forwarded_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, _, _, _} = _el | _els], Delay, __Els) ->
- if __IgnoreEls ->
- decode_forwarded_els(__TopXMLNS, __IgnoreEls, _els,
- Delay, [_el | __Els]);
- true ->
- case is_known_tag(_el) of
- true ->
- decode_forwarded_els(__TopXMLNS, __IgnoreEls, _els,
- Delay, [decode(_el) | __Els]);
- false ->
- decode_forwarded_els(__TopXMLNS, __IgnoreEls, _els,
- Delay, __Els)
- end
- end;
-decode_forwarded_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Delay, __Els) ->
- decode_forwarded_els(__TopXMLNS, __IgnoreEls, _els,
- Delay, __Els).
-
-encode_forwarded({forwarded, Delay, __Els},
- _xmlns_attrs) ->
- _els = [encode(_el) || _el <- __Els] ++
- lists:reverse('encode_forwarded_$delay'(Delay, [])),
- _attrs = _xmlns_attrs,
- {xmlel, <<"forwarded">>, _attrs, _els}.
-
-'encode_forwarded_$delay'(undefined, _acc) -> _acc;
-'encode_forwarded_$delay'(Delay, _acc) ->
- [encode_delay(Delay,
- [{<<"xmlns">>, <<"urn:xmpp:delay">>}])
- | _acc].
-
-decode_mam_fin(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"fin">>, _attrs, _els}) ->
- Rsm = decode_mam_fin_els(__TopXMLNS, __IgnoreEls, _els,
- undefined),
- {Id, Stable, Complete} =
- decode_mam_fin_attrs(__TopXMLNS, _attrs, undefined,
- undefined, undefined),
- {mam_fin, Id, Rsm, Stable, Complete}.
-
-decode_mam_fin_els(__TopXMLNS, __IgnoreEls, [], Rsm) ->
- Rsm;
-decode_mam_fin_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"set">>, _attrs, _} = _el | _els], Rsm) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<"http://jabber.org/protocol/rsm">> ->
- decode_mam_fin_els(__TopXMLNS, __IgnoreEls, _els,
- decode_rsm_set(_xmlns, __IgnoreEls, _el));
- true ->
- 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, Stable,
- Complete) ->
- decode_mam_fin_attrs(__TopXMLNS, _attrs, _val, Stable,
- Complete);
-decode_mam_fin_attrs(__TopXMLNS,
- [{<<"stable">>, _val} | _attrs], Id, _Stable,
- Complete) ->
- decode_mam_fin_attrs(__TopXMLNS, _attrs, Id, _val,
- Complete);
-decode_mam_fin_attrs(__TopXMLNS,
- [{<<"complete">>, _val} | _attrs], Id, Stable,
- _Complete) ->
- decode_mam_fin_attrs(__TopXMLNS, _attrs, Id, Stable,
- _val);
-decode_mam_fin_attrs(__TopXMLNS, [_ | _attrs], Id,
- Stable, Complete) ->
- decode_mam_fin_attrs(__TopXMLNS, _attrs, Id, Stable,
- Complete);
-decode_mam_fin_attrs(__TopXMLNS, [], Id, Stable,
- Complete) ->
- {decode_mam_fin_attr_queryid(__TopXMLNS, Id),
- decode_mam_fin_attr_stable(__TopXMLNS, Stable),
- decode_mam_fin_attr_complete(__TopXMLNS, Complete)}.
-
-encode_mam_fin({mam_fin, Id, Rsm, Stable, Complete},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_mam_fin_$rsm'(Rsm, [])),
- _attrs = encode_mam_fin_attr_complete(Complete,
- encode_mam_fin_attr_stable(Stable,
- encode_mam_fin_attr_queryid(Id,
- _xmlns_attrs))),
- {xmlel, <<"fin">>, _attrs, _els}.
-
-'encode_mam_fin_$rsm'(undefined, _acc) -> _acc;
-'encode_mam_fin_$rsm'(Rsm, _acc) ->
- [encode_rsm_set(Rsm,
- [{<<"xmlns">>, <<"http://jabber.org/protocol/rsm">>}])
- | _acc].
-
-decode_mam_fin_attr_queryid(__TopXMLNS, undefined) ->
- undefined;
-decode_mam_fin_attr_queryid(__TopXMLNS, _val) -> _val.
-
-encode_mam_fin_attr_queryid(undefined, _acc) -> _acc;
-encode_mam_fin_attr_queryid(_val, _acc) ->
- [{<<"queryid">>, _val} | _acc].
-
-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, [], []),
- {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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_mam_prefs_els(__TopXMLNS, __IgnoreEls, _els,
- Never,
- decode_mam_always(__TopXMLNS, __IgnoreEls,
- _el));
- true ->
- decode_mam_prefs_els(__TopXMLNS, __IgnoreEls, _els,
- Never, Always)
- end;
-decode_mam_prefs_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"never">>, _attrs, _} = _el | _els], Never,
- Always) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_mam_prefs_els(__TopXMLNS, __IgnoreEls, _els,
- decode_mam_never(__TopXMLNS, __IgnoreEls, _el),
- Always);
- true ->
- 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},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_mam_prefs_$never'(Never,
- 'encode_mam_prefs_$always'(Always,
- []))),
- _attrs = encode_mam_prefs_attr_xmlns(Xmlns,
- encode_mam_prefs_attr_default(Default,
- _xmlns_attrs)),
- {xmlel, <<"prefs">>, _attrs, _els}.
-
-'encode_mam_prefs_$never'([], _acc) -> _acc;
-'encode_mam_prefs_$never'(Never, _acc) ->
- [encode_mam_never(Never,
- [{<<"xmlns">>, <<"urn:xmpp:mam:tmp">>}])
- | _acc].
-
-'encode_mam_prefs_$always'([], _acc) -> _acc;
-'encode_mam_prefs_$always'(Always, _acc) ->
- [encode_mam_always(Always,
- [{<<"xmlns">>, <<"urn:xmpp:mam:tmp">>}])
- | _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) ->
- undefined;
-decode_mam_prefs_attr_xmlns(__TopXMLNS, _val) -> _val.
-
-encode_mam_prefs_attr_xmlns(undefined, _acc) -> _acc;
-encode_mam_prefs_attr_xmlns(_val, _acc) ->
- [{<<"xmlns">>, _val} | _acc].
-
-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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_mam_always_els(__TopXMLNS, __IgnoreEls, _els,
- case decode_mam_jid(__TopXMLNS, __IgnoreEls,
- _el)
- of
- [] -> Jids;
- _new_el -> [_new_el | Jids]
- end);
- true ->
- 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, _xmlns_attrs) ->
- _els = lists:reverse('encode_mam_always_$jids'(Jids,
- [])),
- _attrs = _xmlns_attrs,
- {xmlel, <<"always">>, _attrs, _els}.
-
-'encode_mam_always_$jids'([], _acc) -> _acc;
-'encode_mam_always_$jids'([Jids | _els], _acc) ->
- 'encode_mam_always_$jids'(_els,
- [encode_mam_jid(Jids, []) | _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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_mam_never_els(__TopXMLNS, __IgnoreEls, _els,
- case decode_mam_jid(__TopXMLNS, __IgnoreEls,
- _el)
- of
- [] -> Jids;
- _new_el -> [_new_el | Jids]
- end);
- true ->
- 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, _xmlns_attrs) ->
- _els = lists:reverse('encode_mam_never_$jids'(Jids,
- [])),
- _attrs = _xmlns_attrs,
- {xmlel, <<"never">>, _attrs, _els}.
-
-'encode_mam_never_$jids'([], _acc) -> _acc;
-'encode_mam_never_$jids'([Jids | _els], _acc) ->
- 'encode_mam_never_$jids'(_els,
- [encode_mam_jid(Jids, []) | _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,
- <<Cdata/binary, _data/binary>>);
-decode_mam_jid_els(__TopXMLNS, __IgnoreEls, [_ | _els],
- Cdata) ->
- decode_mam_jid_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_mam_jid(Cdata, _xmlns_attrs) ->
- _els = encode_mam_jid_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {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) of
- true ->
- decode_mam_result_els(__TopXMLNS, __IgnoreEls, _els,
- [decode(_el) | __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},
- _xmlns_attrs) ->
- _els = [encode(_el) || _el <- __Els],
- _attrs = encode_mam_result_attr_id(Id,
- encode_mam_result_attr_xmlns(Xmlns,
- encode_mam_result_attr_queryid(Queryid,
- _xmlns_attrs))),
- {xmlel, <<"result">>, _attrs, _els}.
-
-decode_mam_result_attr_queryid(__TopXMLNS, undefined) ->
- undefined;
-decode_mam_result_attr_queryid(__TopXMLNS, _val) ->
- _val.
-
-encode_mam_result_attr_queryid(undefined, _acc) -> _acc;
-encode_mam_result_attr_queryid(_val, _acc) ->
- [{<<"queryid">>, _val} | _acc].
-
-decode_mam_result_attr_xmlns(__TopXMLNS, undefined) ->
- undefined;
-decode_mam_result_attr_xmlns(__TopXMLNS, _val) -> _val.
-
-encode_mam_result_attr_xmlns(undefined, _acc) -> _acc;
-encode_mam_result_attr_xmlns(_val, _acc) ->
- [{<<"xmlns">>, _val} | _acc].
-
-decode_mam_result_attr_id(__TopXMLNS, undefined) ->
- undefined;
-decode_mam_result_attr_id(__TopXMLNS, _val) -> _val.
-
-encode_mam_result_attr_id(undefined, _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},
- _xmlns_attrs) ->
- _els = [],
- _attrs = encode_mam_archived_attr_by(By,
- encode_mam_archived_attr_id(Id,
- _xmlns_attrs)),
- {xmlel, <<"archived">>, _attrs, _els}.
-
-decode_mam_archived_attr_id(__TopXMLNS, undefined) ->
- undefined;
-decode_mam_archived_attr_id(__TopXMLNS, _val) -> _val.
-
-encode_mam_archived_attr_id(undefined, _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, End, Start, With, Rsm} =
- decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els,
- undefined, undefined, undefined, undefined,
- undefined),
- {Id, Xmlns} = decode_mam_query_attrs(__TopXMLNS, _attrs,
- undefined, undefined),
- {mam_query, Xmlns, Id, Start, End, With, Rsm, Xdata}.
-
-decode_mam_query_els(__TopXMLNS, __IgnoreEls, [], Xdata,
- End, Start, With, Rsm) ->
- {Xdata, End, Start, With, Rsm};
-decode_mam_query_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"start">>, _attrs, _} = _el | _els], Xdata,
- End, Start, With, Rsm) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els,
- Xdata, End,
- decode_mam_start(__TopXMLNS, __IgnoreEls, _el),
- With, Rsm);
- true ->
- decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els,
- Xdata, End, Start, With, Rsm)
- end;
-decode_mam_query_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"end">>, _attrs, _} = _el | _els], Xdata,
- End, Start, With, Rsm) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els,
- Xdata,
- decode_mam_end(__TopXMLNS, __IgnoreEls, _el),
- Start, With, Rsm);
- true ->
- decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els,
- Xdata, End, Start, With, Rsm)
- end;
-decode_mam_query_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"with">>, _attrs, _} = _el | _els], Xdata,
- End, Start, With, Rsm) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els,
- Xdata, End, Start,
- decode_mam_with(__TopXMLNS, __IgnoreEls, _el),
- Rsm);
- true ->
- decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els,
- Xdata, End, Start, With, Rsm)
- end;
-decode_mam_query_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"set">>, _attrs, _} = _el | _els], Xdata,
- End, Start, With, Rsm) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<"http://jabber.org/protocol/rsm">> ->
- decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els,
- Xdata, End, Start, With,
- decode_rsm_set(_xmlns, __IgnoreEls, _el));
- true ->
- decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els,
- Xdata, End, Start, With, Rsm)
- end;
-decode_mam_query_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"x">>, _attrs, _} = _el | _els], Xdata, End,
- Start, With, Rsm) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<"jabber:x:data">> ->
- decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els,
- decode_xdata(_xmlns, __IgnoreEls, _el), End,
- Start, With, Rsm);
- true ->
- decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els,
- Xdata, End, Start, With, Rsm)
- end;
-decode_mam_query_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Xdata, End, Start, With, Rsm) ->
- decode_mam_query_els(__TopXMLNS, __IgnoreEls, _els,
- Xdata, 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, Rsm, Xdata},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_mam_query_$xdata'(Xdata,
- 'encode_mam_query_$end'(End,
- 'encode_mam_query_$start'(Start,
- 'encode_mam_query_$with'(With,
- 'encode_mam_query_$rsm'(Rsm,
- [])))))),
- _attrs = encode_mam_query_attr_xmlns(Xmlns,
- encode_mam_query_attr_queryid(Id,
- _xmlns_attrs)),
- {xmlel, <<"query">>, _attrs, _els}.
-
-'encode_mam_query_$xdata'(undefined, _acc) -> _acc;
-'encode_mam_query_$xdata'(Xdata, _acc) ->
- [encode_xdata(Xdata,
- [{<<"xmlns">>, <<"jabber:x:data">>}])
- | _acc].
-
-'encode_mam_query_$end'(undefined, _acc) -> _acc;
-'encode_mam_query_$end'(End, _acc) ->
- [encode_mam_end(End,
- [{<<"xmlns">>, <<"urn:xmpp:mam:tmp">>}])
- | _acc].
-
-'encode_mam_query_$start'(undefined, _acc) -> _acc;
-'encode_mam_query_$start'(Start, _acc) ->
- [encode_mam_start(Start,
- [{<<"xmlns">>, <<"urn:xmpp:mam:tmp">>}])
- | _acc].
-
-'encode_mam_query_$with'(undefined, _acc) -> _acc;
-'encode_mam_query_$with'(With, _acc) ->
- [encode_mam_with(With,
- [{<<"xmlns">>, <<"urn:xmpp:mam:tmp">>}])
- | _acc].
-
-'encode_mam_query_$rsm'(undefined, _acc) -> _acc;
-'encode_mam_query_$rsm'(Rsm, _acc) ->
- [encode_rsm_set(Rsm,
- [{<<"xmlns">>, <<"http://jabber.org/protocol/rsm">>}])
- | _acc].
-
-decode_mam_query_attr_queryid(__TopXMLNS, undefined) ->
- undefined;
-decode_mam_query_attr_queryid(__TopXMLNS, _val) -> _val.
-
-encode_mam_query_attr_queryid(undefined, _acc) -> _acc;
-encode_mam_query_attr_queryid(_val, _acc) ->
- [{<<"queryid">>, _val} | _acc].
-
-decode_mam_query_attr_xmlns(__TopXMLNS, undefined) ->
- undefined;
-decode_mam_query_attr_xmlns(__TopXMLNS, _val) -> _val.
-
-encode_mam_query_attr_xmlns(undefined, _acc) -> _acc;
-encode_mam_query_attr_xmlns(_val, _acc) ->
- [{<<"xmlns">>, _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,
- <<Cdata/binary, _data/binary>>);
-decode_mam_with_els(__TopXMLNS, __IgnoreEls, [_ | _els],
- Cdata) ->
- decode_mam_with_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_mam_with(Cdata, _xmlns_attrs) ->
- _els = encode_mam_with_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {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,
- <<Cdata/binary, _data/binary>>);
-decode_mam_end_els(__TopXMLNS, __IgnoreEls, [_ | _els],
- Cdata) ->
- decode_mam_end_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_mam_end(Cdata, _xmlns_attrs) ->
- _els = encode_mam_end_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {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,
- <<Cdata/binary, _data/binary>>);
-decode_mam_start_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_mam_start_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_mam_start(Cdata, _xmlns_attrs) ->
- _els = encode_mam_start_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els,
- decode_rsm_after(__TopXMLNS, __IgnoreEls, _el),
- Last, First, Count, Before, Max, Index);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After,
- Last, First, Count,
- decode_rsm_before(__TopXMLNS, __IgnoreEls, _el),
- Max, Index);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After,
- Last, First,
- decode_rsm_count(__TopXMLNS, __IgnoreEls, _el),
- Before, Max, Index);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After,
- Last,
- decode_rsm_first(__TopXMLNS, __IgnoreEls, _el),
- Count, Before, Max, Index);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After,
- Last, First, Count, Before, Max,
- decode_rsm_index(__TopXMLNS, __IgnoreEls, _el));
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After,
- decode_rsm_last(__TopXMLNS, __IgnoreEls, _el),
- First, Count, Before, Max, Index);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_rsm_set_els(__TopXMLNS, __IgnoreEls, _els, After,
- Last, First, Count, Before,
- decode_rsm_max(__TopXMLNS, __IgnoreEls, _el),
- Index);
- true ->
- 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},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_rsm_set_$after'(After,
- 'encode_rsm_set_$last'(Last,
- 'encode_rsm_set_$first'(First,
- 'encode_rsm_set_$count'(Count,
- 'encode_rsm_set_$before'(Before,
- 'encode_rsm_set_$max'(Max,
- 'encode_rsm_set_$index'(Index,
- [])))))))),
- _attrs = _xmlns_attrs,
- {xmlel, <<"set">>, _attrs, _els}.
-
-'encode_rsm_set_$after'(undefined, _acc) -> _acc;
-'encode_rsm_set_$after'(After, _acc) ->
- [encode_rsm_after(After, []) | _acc].
-
-'encode_rsm_set_$last'(undefined, _acc) -> _acc;
-'encode_rsm_set_$last'(Last, _acc) ->
- [encode_rsm_last(Last, []) | _acc].
-
-'encode_rsm_set_$first'(undefined, _acc) -> _acc;
-'encode_rsm_set_$first'(First, _acc) ->
- [encode_rsm_first(First, []) | _acc].
-
-'encode_rsm_set_$count'(undefined, _acc) -> _acc;
-'encode_rsm_set_$count'(Count, _acc) ->
- [encode_rsm_count(Count, []) | _acc].
-
-'encode_rsm_set_$before'(undefined, _acc) -> _acc;
-'encode_rsm_set_$before'(Before, _acc) ->
- [encode_rsm_before(Before, []) | _acc].
-
-'encode_rsm_set_$max'(undefined, _acc) -> _acc;
-'encode_rsm_set_$max'(Max, _acc) ->
- [encode_rsm_max(Max, []) | _acc].
-
-'encode_rsm_set_$index'(undefined, _acc) -> _acc;
-'encode_rsm_set_$index'(Index, _acc) ->
- [encode_rsm_index(Index, []) | _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,
- <<Data/binary, _data/binary>>);
-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},
- _xmlns_attrs) ->
- _els = encode_rsm_first_cdata(Data, []),
- _attrs = encode_rsm_first_attr_index(Index,
- _xmlns_attrs),
- {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, <<>>) -> undefined;
-decode_rsm_first_cdata(__TopXMLNS, _val) -> _val.
-
-encode_rsm_first_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_rsm_max_els(__TopXMLNS, __IgnoreEls, [_ | _els],
- Cdata) ->
- decode_rsm_max_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_rsm_max(Cdata, _xmlns_attrs) ->
- _els = encode_rsm_max_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {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,
- <<Cdata/binary, _data/binary>>);
-decode_rsm_index_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_rsm_index_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_rsm_index(Cdata, _xmlns_attrs) ->
- _els = encode_rsm_index_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {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,
- <<Cdata/binary, _data/binary>>);
-decode_rsm_count_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_rsm_count_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_rsm_count(Cdata, _xmlns_attrs) ->
- _els = encode_rsm_count_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {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,
- <<Cdata/binary, _data/binary>>);
-decode_rsm_last_els(__TopXMLNS, __IgnoreEls, [_ | _els],
- Cdata) ->
- decode_rsm_last_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_rsm_last(Cdata, _xmlns_attrs) ->
- _els = encode_rsm_last_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"last">>, _attrs, _els}.
-
-decode_rsm_last_cdata(__TopXMLNS, <<>>) -> undefined;
-decode_rsm_last_cdata(__TopXMLNS, _val) -> _val.
-
-encode_rsm_last_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_rsm_before_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_rsm_before_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_rsm_before(Cdata, _xmlns_attrs) ->
- _els = encode_rsm_before_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"before">>, _attrs, _els}.
-
-decode_rsm_before_cdata(__TopXMLNS, <<>>) -> none;
-decode_rsm_before_cdata(__TopXMLNS, _val) -> _val.
-
-encode_rsm_before_cdata(none, _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,
- <<Cdata/binary, _data/binary>>);
-decode_rsm_after_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_rsm_after_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_rsm_after(Cdata, _xmlns_attrs) ->
- _els = encode_rsm_after_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"after">>, _attrs, _els}.
-
-decode_rsm_after_cdata(__TopXMLNS, <<>>) -> undefined;
-decode_rsm_after_cdata(__TopXMLNS, _val) -> _val.
-
-encode_rsm_after_cdata(undefined, _acc) -> _acc;
-encode_rsm_after_cdata(_val, _acc) ->
- [{xmlcdata, _val} | _acc].
-
-decode_muc(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"x">>, _attrs, _els}) ->
- History = decode_muc_els(__TopXMLNS, __IgnoreEls, _els,
- undefined),
- Password = decode_muc_attrs(__TopXMLNS, _attrs,
- undefined),
- {muc, History, Password}.
-
-decode_muc_els(__TopXMLNS, __IgnoreEls, [], History) ->
- History;
-decode_muc_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"history">>, _attrs, _} = _el | _els],
- History) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_muc_els(__TopXMLNS, __IgnoreEls, _els,
- decode_muc_history(__TopXMLNS, __IgnoreEls, _el));
- true ->
- decode_muc_els(__TopXMLNS, __IgnoreEls, _els, History)
- end;
-decode_muc_els(__TopXMLNS, __IgnoreEls, [_ | _els],
- History) ->
- decode_muc_els(__TopXMLNS, __IgnoreEls, _els, History).
-
-decode_muc_attrs(__TopXMLNS,
- [{<<"password">>, _val} | _attrs], _Password) ->
- decode_muc_attrs(__TopXMLNS, _attrs, _val);
-decode_muc_attrs(__TopXMLNS, [_ | _attrs], Password) ->
- decode_muc_attrs(__TopXMLNS, _attrs, Password);
-decode_muc_attrs(__TopXMLNS, [], Password) ->
- decode_muc_attr_password(__TopXMLNS, Password).
-
-encode_muc({muc, History, Password}, _xmlns_attrs) ->
- _els = lists:reverse('encode_muc_$history'(History,
- [])),
- _attrs = encode_muc_attr_password(Password,
- _xmlns_attrs),
- {xmlel, <<"x">>, _attrs, _els}.
-
-'encode_muc_$history'(undefined, _acc) -> _acc;
-'encode_muc_$history'(History, _acc) ->
- [encode_muc_history(History, []) | _acc].
-
-decode_muc_attr_password(__TopXMLNS, undefined) ->
- undefined;
-decode_muc_attr_password(__TopXMLNS, _val) -> _val.
-
-encode_muc_attr_password(undefined, _acc) -> _acc;
-encode_muc_attr_password(_val, _acc) ->
- [{<<"password">>, _val} | _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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_muc_admin_els(__TopXMLNS, __IgnoreEls, _els,
- [decode_muc_admin_item(__TopXMLNS, __IgnoreEls,
- _el)
- | Items]);
- true ->
- 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}, _xmlns_attrs) ->
- _els = lists:reverse('encode_muc_admin_$items'(Items,
- [])),
- _attrs = _xmlns_attrs,
- {xmlel, <<"query">>, _attrs, _els}.
-
-'encode_muc_admin_$items'([], _acc) -> _acc;
-'encode_muc_admin_$items'([Items | _els], _acc) ->
- 'encode_muc_admin_$items'(_els,
- [encode_muc_admin_item(Items, []) | _acc]).
-
-decode_muc_admin_reason(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"reason">>, _attrs, _els}) ->
- Cdata = decode_muc_admin_reason_els(__TopXMLNS,
- __IgnoreEls, _els, <<>>),
- Cdata.
-
-decode_muc_admin_reason_els(__TopXMLNS, __IgnoreEls, [],
- Cdata) ->
- decode_muc_admin_reason_cdata(__TopXMLNS, Cdata);
-decode_muc_admin_reason_els(__TopXMLNS, __IgnoreEls,
- [{xmlcdata, _data} | _els], Cdata) ->
- decode_muc_admin_reason_els(__TopXMLNS, __IgnoreEls,
- _els, <<Cdata/binary, _data/binary>>);
-decode_muc_admin_reason_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_muc_admin_reason_els(__TopXMLNS, __IgnoreEls,
- _els, Cdata).
-
-encode_muc_admin_reason(Cdata, _xmlns_attrs) ->
- _els = encode_muc_admin_reason_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"reason">>, _attrs, _els}.
-
-decode_muc_admin_reason_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_muc_admin_reason_cdata(__TopXMLNS, _val) -> _val.
-
-encode_muc_admin_reason_cdata(undefined, _acc) -> _acc;
-encode_muc_admin_reason_cdata(_val, _acc) ->
- [{xmlcdata, _val} | _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, _xmlns_attrs) ->
- _els = [],
- _attrs = encode_muc_admin_continue_attr_thread(Thread,
- _xmlns_attrs),
- {xmlel, <<"continue">>, _attrs, _els}.
-
-decode_muc_admin_continue_attr_thread(__TopXMLNS,
- undefined) ->
- undefined;
-decode_muc_admin_continue_attr_thread(__TopXMLNS,
- _val) ->
- _val.
-
-encode_muc_admin_continue_attr_thread(undefined,
- _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},
- _xmlns_attrs) ->
- _els = [],
- _attrs = encode_muc_admin_actor_attr_nick(Nick,
- encode_muc_admin_actor_attr_jid(Jid,
- _xmlns_attrs)),
- {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) ->
- undefined;
-decode_muc_admin_actor_attr_nick(__TopXMLNS, _val) ->
- _val.
-
-encode_muc_admin_actor_attr_nick(undefined, _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, 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_muc_admin_item_els(__TopXMLNS, __IgnoreEls, _els,
- decode_muc_admin_actor(__TopXMLNS,
- __IgnoreEls, _el),
- Continue, Reason);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_muc_admin_item_els(__TopXMLNS, __IgnoreEls, _els,
- Actor,
- decode_muc_admin_continue(__TopXMLNS,
- __IgnoreEls,
- _el),
- Reason);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_muc_admin_item_els(__TopXMLNS, __IgnoreEls, _els,
- Actor, Continue,
- decode_muc_admin_reason(__TopXMLNS,
- __IgnoreEls, _el));
- true ->
- 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},
- _xmlns_attrs) ->
- _els =
- lists:reverse('encode_muc_admin_item_$actor'(Actor,
- 'encode_muc_admin_item_$continue'(Continue,
- 'encode_muc_admin_item_$reason'(Reason,
- [])))),
- _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,
- _xmlns_attrs)))),
- {xmlel, <<"item">>, _attrs, _els}.
-
-'encode_muc_admin_item_$actor'(undefined, _acc) -> _acc;
-'encode_muc_admin_item_$actor'(Actor, _acc) ->
- [encode_muc_admin_actor(Actor, []) | _acc].
-
-'encode_muc_admin_item_$continue'(undefined, _acc) ->
- _acc;
-'encode_muc_admin_item_$continue'(Continue, _acc) ->
- [encode_muc_admin_continue(Continue, []) | _acc].
-
-'encode_muc_admin_item_$reason'(undefined, _acc) ->
- _acc;
-'encode_muc_admin_item_$reason'(Reason, _acc) ->
- [encode_muc_admin_reason(Reason, []) | _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) ->
- undefined;
-decode_muc_admin_item_attr_nick(__TopXMLNS, _val) ->
- _val.
-
-encode_muc_admin_item_attr_nick(undefined, _acc) ->
- _acc;
-encode_muc_admin_item_attr_nick(_val, _acc) ->
- [{<<"nick">>, _val} | _acc].
-
-decode_muc_owner(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"query">>, _attrs, _els}) ->
- {Config, Destroy} = decode_muc_owner_els(__TopXMLNS,
- __IgnoreEls, _els, undefined,
- undefined),
- {muc_owner, Destroy, Config}.
-
-decode_muc_owner_els(__TopXMLNS, __IgnoreEls, [],
- Config, Destroy) ->
- {Config, Destroy};
-decode_muc_owner_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"destroy">>, _attrs, _} = _el | _els],
- Config, Destroy) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_muc_owner_els(__TopXMLNS, __IgnoreEls, _els,
- Config,
- decode_muc_owner_destroy(__TopXMLNS,
- __IgnoreEls, _el));
- true ->
- decode_muc_owner_els(__TopXMLNS, __IgnoreEls, _els,
- Config, Destroy)
- end;
-decode_muc_owner_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"x">>, _attrs, _} = _el | _els], Config,
- Destroy) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<"jabber:x:data">> ->
- decode_muc_owner_els(__TopXMLNS, __IgnoreEls, _els,
- decode_xdata(_xmlns, __IgnoreEls, _el),
- Destroy);
- true ->
- decode_muc_owner_els(__TopXMLNS, __IgnoreEls, _els,
- Config, Destroy)
- end;
-decode_muc_owner_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Config, Destroy) ->
- decode_muc_owner_els(__TopXMLNS, __IgnoreEls, _els,
- Config, Destroy).
-
-encode_muc_owner({muc_owner, Destroy, Config},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_muc_owner_$config'(Config,
- 'encode_muc_owner_$destroy'(Destroy,
- []))),
- _attrs = _xmlns_attrs,
- {xmlel, <<"query">>, _attrs, _els}.
-
-'encode_muc_owner_$config'(undefined, _acc) -> _acc;
-'encode_muc_owner_$config'(Config, _acc) ->
- [encode_xdata(Config,
- [{<<"xmlns">>, <<"jabber:x:data">>}])
- | _acc].
-
-'encode_muc_owner_$destroy'(undefined, _acc) -> _acc;
-'encode_muc_owner_$destroy'(Destroy, _acc) ->
- [encode_muc_owner_destroy(Destroy, []) | _acc].
-
-decode_muc_owner_destroy(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"destroy">>, _attrs, _els}) ->
- {Password, Reason} =
- decode_muc_owner_destroy_els(__TopXMLNS, __IgnoreEls,
- _els, undefined, undefined),
- Jid = decode_muc_owner_destroy_attrs(__TopXMLNS, _attrs,
- undefined),
- {muc_owner_destroy, Jid, Reason, Password}.
-
-decode_muc_owner_destroy_els(__TopXMLNS, __IgnoreEls,
- [], Password, Reason) ->
- {Password, Reason};
-decode_muc_owner_destroy_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"password">>, _attrs, _} = _el | _els],
- Password, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_muc_owner_destroy_els(__TopXMLNS, __IgnoreEls,
- _els,
- decode_muc_owner_password(__TopXMLNS,
- __IgnoreEls,
- _el),
- Reason);
- true ->
- decode_muc_owner_destroy_els(__TopXMLNS, __IgnoreEls,
- _els, Password, Reason)
- end;
-decode_muc_owner_destroy_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"reason">>, _attrs, _} = _el | _els],
- Password, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_muc_owner_destroy_els(__TopXMLNS, __IgnoreEls,
- _els, Password,
- decode_muc_owner_reason(__TopXMLNS,
- __IgnoreEls,
- _el));
- true ->
- decode_muc_owner_destroy_els(__TopXMLNS, __IgnoreEls,
- _els, Password, Reason)
- end;
-decode_muc_owner_destroy_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Password, Reason) ->
- decode_muc_owner_destroy_els(__TopXMLNS, __IgnoreEls,
- _els, Password, Reason).
-
-decode_muc_owner_destroy_attrs(__TopXMLNS,
- [{<<"jid">>, _val} | _attrs], _Jid) ->
- decode_muc_owner_destroy_attrs(__TopXMLNS, _attrs,
- _val);
-decode_muc_owner_destroy_attrs(__TopXMLNS, [_ | _attrs],
- Jid) ->
- decode_muc_owner_destroy_attrs(__TopXMLNS, _attrs, Jid);
-decode_muc_owner_destroy_attrs(__TopXMLNS, [], Jid) ->
- decode_muc_owner_destroy_attr_jid(__TopXMLNS, Jid).
-
-encode_muc_owner_destroy({muc_owner_destroy, Jid,
- Reason, Password},
- _xmlns_attrs) ->
- _els =
- lists:reverse('encode_muc_owner_destroy_$password'(Password,
- 'encode_muc_owner_destroy_$reason'(Reason,
- []))),
- _attrs = encode_muc_owner_destroy_attr_jid(Jid,
- _xmlns_attrs),
- {xmlel, <<"destroy">>, _attrs, _els}.
-
-'encode_muc_owner_destroy_$password'(undefined, _acc) ->
- _acc;
-'encode_muc_owner_destroy_$password'(Password, _acc) ->
- [encode_muc_owner_password(Password, []) | _acc].
-
-'encode_muc_owner_destroy_$reason'(undefined, _acc) ->
- _acc;
-'encode_muc_owner_destroy_$reason'(Reason, _acc) ->
- [encode_muc_owner_reason(Reason, []) | _acc].
-
-decode_muc_owner_destroy_attr_jid(__TopXMLNS,
- undefined) ->
- undefined;
-decode_muc_owner_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_owner_destroy_attr_jid(undefined, _acc) ->
- _acc;
-encode_muc_owner_destroy_attr_jid(_val, _acc) ->
- [{<<"jid">>, enc_jid(_val)} | _acc].
-
-decode_muc_owner_reason(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"reason">>, _attrs, _els}) ->
- Cdata = decode_muc_owner_reason_els(__TopXMLNS,
- __IgnoreEls, _els, <<>>),
- Cdata.
-
-decode_muc_owner_reason_els(__TopXMLNS, __IgnoreEls, [],
- Cdata) ->
- decode_muc_owner_reason_cdata(__TopXMLNS, Cdata);
-decode_muc_owner_reason_els(__TopXMLNS, __IgnoreEls,
- [{xmlcdata, _data} | _els], Cdata) ->
- decode_muc_owner_reason_els(__TopXMLNS, __IgnoreEls,
- _els, <<Cdata/binary, _data/binary>>);
-decode_muc_owner_reason_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_muc_owner_reason_els(__TopXMLNS, __IgnoreEls,
- _els, Cdata).
-
-encode_muc_owner_reason(Cdata, _xmlns_attrs) ->
- _els = encode_muc_owner_reason_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"reason">>, _attrs, _els}.
-
-decode_muc_owner_reason_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_muc_owner_reason_cdata(__TopXMLNS, _val) -> _val.
-
-encode_muc_owner_reason_cdata(undefined, _acc) -> _acc;
-encode_muc_owner_reason_cdata(_val, _acc) ->
- [{xmlcdata, _val} | _acc].
-
-decode_muc_owner_password(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"password">>, _attrs, _els}) ->
- Cdata = decode_muc_owner_password_els(__TopXMLNS,
- __IgnoreEls, _els, <<>>),
- Cdata.
-
-decode_muc_owner_password_els(__TopXMLNS, __IgnoreEls,
- [], Cdata) ->
- decode_muc_owner_password_cdata(__TopXMLNS, Cdata);
-decode_muc_owner_password_els(__TopXMLNS, __IgnoreEls,
- [{xmlcdata, _data} | _els], Cdata) ->
- decode_muc_owner_password_els(__TopXMLNS, __IgnoreEls,
- _els, <<Cdata/binary, _data/binary>>);
-decode_muc_owner_password_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_muc_owner_password_els(__TopXMLNS, __IgnoreEls,
- _els, Cdata).
-
-encode_muc_owner_password(Cdata, _xmlns_attrs) ->
- _els = encode_muc_owner_password_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"password">>, _attrs, _els}.
-
-decode_muc_owner_password_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_muc_owner_password_cdata(__TopXMLNS, _val) ->
- _val.
-
-encode_muc_owner_password_cdata(undefined, _acc) ->
- _acc;
-encode_muc_owner_password_cdata(_val, _acc) ->
- [{xmlcdata, _val} | _acc].
-
-decode_muc_user(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"x">>, _attrs, _els}) ->
- {Status_codes, Items, Invites, Decline, Destroy} =
- decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els, [],
- [], [], undefined, undefined),
- Password = decode_muc_user_attrs(__TopXMLNS, _attrs,
- undefined),
- {muc_user, Decline, Destroy, Invites, Items,
- Status_codes, Password}.
-
-decode_muc_user_els(__TopXMLNS, __IgnoreEls, [],
- Status_codes, Items, Invites, Decline, Destroy) ->
- {lists:reverse(Status_codes), lists:reverse(Items),
- lists:reverse(Invites), Decline, Destroy};
-decode_muc_user_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"decline">>, _attrs, _} = _el | _els],
- Status_codes, Items, Invites, Decline, Destroy) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els,
- Status_codes, Items, Invites,
- decode_muc_user_decline(__TopXMLNS, __IgnoreEls,
- _el),
- Destroy);
- true ->
- decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els,
- Status_codes, Items, Invites, Decline, Destroy)
- end;
-decode_muc_user_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"destroy">>, _attrs, _} = _el | _els],
- Status_codes, Items, Invites, Decline, Destroy) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els,
- Status_codes, Items, Invites, Decline,
- decode_muc_user_destroy(__TopXMLNS, __IgnoreEls,
- _el));
- true ->
- decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els,
- Status_codes, Items, Invites, Decline, Destroy)
- end;
-decode_muc_user_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"invite">>, _attrs, _} = _el | _els],
- Status_codes, Items, Invites, Decline, Destroy) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els,
- Status_codes, Items,
- [decode_muc_user_invite(__TopXMLNS, __IgnoreEls,
- _el)
- | Invites],
- Decline, Destroy);
- true ->
- decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els,
- Status_codes, Items, Invites, Decline, Destroy)
- end;
-decode_muc_user_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"item">>, _attrs, _} = _el | _els],
- Status_codes, Items, Invites, Decline, Destroy) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els,
- Status_codes,
- [decode_muc_user_item(__TopXMLNS, __IgnoreEls,
- _el)
- | Items],
- Invites, Decline, Destroy);
- true ->
- decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els,
- Status_codes, Items, Invites, Decline, Destroy)
- end;
-decode_muc_user_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"status">>, _attrs, _} = _el | _els],
- Status_codes, Items, Invites, Decline, Destroy) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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, Decline, Destroy);
- true ->
- decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els,
- Status_codes, Items, Invites, Decline, Destroy)
- end;
-decode_muc_user_els(__TopXMLNS, __IgnoreEls, [_ | _els],
- Status_codes, Items, Invites, Decline, Destroy) ->
- decode_muc_user_els(__TopXMLNS, __IgnoreEls, _els,
- Status_codes, Items, Invites, Decline, Destroy).
-
-decode_muc_user_attrs(__TopXMLNS,
- [{<<"password">>, _val} | _attrs], _Password) ->
- decode_muc_user_attrs(__TopXMLNS, _attrs, _val);
-decode_muc_user_attrs(__TopXMLNS, [_ | _attrs],
- Password) ->
- decode_muc_user_attrs(__TopXMLNS, _attrs, Password);
-decode_muc_user_attrs(__TopXMLNS, [], Password) ->
- decode_muc_user_attr_password(__TopXMLNS, Password).
-
-encode_muc_user({muc_user, Decline, Destroy, Invites,
- Items, Status_codes, Password},
- _xmlns_attrs) ->
- _els =
- lists:reverse('encode_muc_user_$status_codes'(Status_codes,
- 'encode_muc_user_$items'(Items,
- 'encode_muc_user_$invites'(Invites,
- 'encode_muc_user_$decline'(Decline,
- 'encode_muc_user_$destroy'(Destroy,
- [])))))),
- _attrs = encode_muc_user_attr_password(Password,
- _xmlns_attrs),
- {xmlel, <<"x">>, _attrs, _els}.
-
-'encode_muc_user_$status_codes'([], _acc) -> _acc;
-'encode_muc_user_$status_codes'([Status_codes | _els],
- _acc) ->
- 'encode_muc_user_$status_codes'(_els,
- [encode_muc_user_status(Status_codes, [])
- | _acc]).
-
-'encode_muc_user_$items'([], _acc) -> _acc;
-'encode_muc_user_$items'([Items | _els], _acc) ->
- 'encode_muc_user_$items'(_els,
- [encode_muc_user_item(Items, []) | _acc]).
-
-'encode_muc_user_$invites'([], _acc) -> _acc;
-'encode_muc_user_$invites'([Invites | _els], _acc) ->
- 'encode_muc_user_$invites'(_els,
- [encode_muc_user_invite(Invites, []) | _acc]).
-
-'encode_muc_user_$decline'(undefined, _acc) -> _acc;
-'encode_muc_user_$decline'(Decline, _acc) ->
- [encode_muc_user_decline(Decline, []) | _acc].
-
-'encode_muc_user_$destroy'(undefined, _acc) -> _acc;
-'encode_muc_user_$destroy'(Destroy, _acc) ->
- [encode_muc_user_destroy(Destroy, []) | _acc].
-
-decode_muc_user_attr_password(__TopXMLNS, undefined) ->
- undefined;
-decode_muc_user_attr_password(__TopXMLNS, _val) -> _val.
-
-encode_muc_user_attr_password(undefined, _acc) -> _acc;
-encode_muc_user_attr_password(_val, _acc) ->
- [{<<"password">>, _val} | _acc].
-
-decode_muc_user_item(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"item">>, _attrs, _els}) ->
- {Actor, Continue, Reason} =
- decode_muc_user_item_els(__TopXMLNS, __IgnoreEls, _els,
- undefined, 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_muc_user_item_els(__TopXMLNS, __IgnoreEls, _els,
- decode_muc_user_actor(__TopXMLNS,
- __IgnoreEls, _el),
- Continue, Reason);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_muc_user_item_els(__TopXMLNS, __IgnoreEls, _els,
- Actor,
- decode_muc_user_continue(__TopXMLNS,
- __IgnoreEls, _el),
- Reason);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_muc_user_item_els(__TopXMLNS, __IgnoreEls, _els,
- Actor, Continue,
- decode_muc_user_reason(__TopXMLNS,
- __IgnoreEls, _el));
- true ->
- 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},
- _xmlns_attrs) ->
- _els =
- lists:reverse('encode_muc_user_item_$actor'(Actor,
- 'encode_muc_user_item_$continue'(Continue,
- 'encode_muc_user_item_$reason'(Reason,
- [])))),
- _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,
- _xmlns_attrs)))),
- {xmlel, <<"item">>, _attrs, _els}.
-
-'encode_muc_user_item_$actor'(undefined, _acc) -> _acc;
-'encode_muc_user_item_$actor'(Actor, _acc) ->
- [encode_muc_user_actor(Actor, []) | _acc].
-
-'encode_muc_user_item_$continue'(undefined, _acc) ->
- _acc;
-'encode_muc_user_item_$continue'(Continue, _acc) ->
- [encode_muc_user_continue(Continue, []) | _acc].
-
-'encode_muc_user_item_$reason'(undefined, _acc) -> _acc;
-'encode_muc_user_item_$reason'(Reason, _acc) ->
- [encode_muc_user_reason(Reason, []) | _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) ->
- undefined;
-decode_muc_user_item_attr_nick(__TopXMLNS, _val) ->
- _val.
-
-encode_muc_user_item_attr_nick(undefined, _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, _xmlns_attrs) ->
- _els = [],
- _attrs = encode_muc_user_status_attr_code(Code,
- _xmlns_attrs),
- {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, _xmlns_attrs) ->
- _els = [],
- _attrs = encode_muc_user_continue_attr_thread(Thread,
- _xmlns_attrs),
- {xmlel, <<"continue">>, _attrs, _els}.
-
-decode_muc_user_continue_attr_thread(__TopXMLNS,
- undefined) ->
- undefined;
-decode_muc_user_continue_attr_thread(__TopXMLNS,
- _val) ->
- _val.
-
-encode_muc_user_continue_attr_thread(undefined, _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},
- _xmlns_attrs) ->
- _els = [],
- _attrs = encode_muc_user_actor_attr_nick(Nick,
- encode_muc_user_actor_attr_jid(Jid,
- _xmlns_attrs)),
- {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) ->
- undefined;
-decode_muc_user_actor_attr_nick(__TopXMLNS, _val) ->
- _val.
-
-encode_muc_user_actor_attr_nick(undefined, _acc) ->
- _acc;
-encode_muc_user_actor_attr_nick(_val, _acc) ->
- [{<<"nick">>, _val} | _acc].
-
-decode_muc_user_invite(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"invite">>, _attrs, _els}) ->
- 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}.
-
-decode_muc_user_invite_els(__TopXMLNS, __IgnoreEls, [],
- Reason) ->
- Reason;
-decode_muc_user_invite_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"reason">>, _attrs, _} = _el | _els],
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_muc_user_invite_els(__TopXMLNS, __IgnoreEls,
- _els,
- decode_muc_user_reason(__TopXMLNS,
- __IgnoreEls, _el));
- true ->
- decode_muc_user_invite_els(__TopXMLNS, __IgnoreEls,
- _els, Reason)
- end;
-decode_muc_user_invite_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Reason) ->
- decode_muc_user_invite_els(__TopXMLNS, __IgnoreEls,
- _els, 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},
- _xmlns_attrs) ->
- _els =
- lists:reverse('encode_muc_user_invite_$reason'(Reason,
- [])),
- _attrs = encode_muc_user_invite_attr_from(From,
- encode_muc_user_invite_attr_to(To,
- _xmlns_attrs)),
- {xmlel, <<"invite">>, _attrs, _els}.
-
-'encode_muc_user_invite_$reason'(undefined, _acc) ->
- _acc;
-'encode_muc_user_invite_$reason'(Reason, _acc) ->
- [encode_muc_user_reason(Reason, []) | _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_user_destroy(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"destroy">>, _attrs, _els}) ->
- Reason = decode_muc_user_destroy_els(__TopXMLNS,
- __IgnoreEls, _els, undefined),
- Jid = decode_muc_user_destroy_attrs(__TopXMLNS, _attrs,
- undefined),
- {muc_user_destroy, Reason, Jid}.
-
-decode_muc_user_destroy_els(__TopXMLNS, __IgnoreEls, [],
- Reason) ->
- Reason;
-decode_muc_user_destroy_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"reason">>, _attrs, _} = _el | _els],
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_muc_user_destroy_els(__TopXMLNS, __IgnoreEls,
- _els,
- decode_muc_user_reason(__TopXMLNS,
- __IgnoreEls,
- _el));
- true ->
- decode_muc_user_destroy_els(__TopXMLNS, __IgnoreEls,
- _els, Reason)
- end;
-decode_muc_user_destroy_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Reason) ->
- decode_muc_user_destroy_els(__TopXMLNS, __IgnoreEls,
- _els, Reason).
-
-decode_muc_user_destroy_attrs(__TopXMLNS,
- [{<<"jid">>, _val} | _attrs], _Jid) ->
- decode_muc_user_destroy_attrs(__TopXMLNS, _attrs, _val);
-decode_muc_user_destroy_attrs(__TopXMLNS, [_ | _attrs],
- Jid) ->
- decode_muc_user_destroy_attrs(__TopXMLNS, _attrs, Jid);
-decode_muc_user_destroy_attrs(__TopXMLNS, [], Jid) ->
- decode_muc_user_destroy_attr_jid(__TopXMLNS, Jid).
-
-encode_muc_user_destroy({muc_user_destroy, Reason, Jid},
- _xmlns_attrs) ->
- _els =
- lists:reverse('encode_muc_user_destroy_$reason'(Reason,
- [])),
- _attrs = encode_muc_user_destroy_attr_jid(Jid,
- _xmlns_attrs),
- {xmlel, <<"destroy">>, _attrs, _els}.
-
-'encode_muc_user_destroy_$reason'(undefined, _acc) ->
- _acc;
-'encode_muc_user_destroy_$reason'(Reason, _acc) ->
- [encode_muc_user_reason(Reason, []) | _acc].
-
-decode_muc_user_destroy_attr_jid(__TopXMLNS,
- undefined) ->
- undefined;
-decode_muc_user_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_user_destroy_attr_jid(undefined, _acc) ->
- _acc;
-encode_muc_user_destroy_attr_jid(_val, _acc) ->
- [{<<"jid">>, enc_jid(_val)} | _acc].
-
-decode_muc_user_decline(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"decline">>, _attrs, _els}) ->
- Reason = decode_muc_user_decline_els(__TopXMLNS,
- __IgnoreEls, _els, undefined),
- {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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_muc_user_decline_els(__TopXMLNS, __IgnoreEls,
- _els,
- decode_muc_user_reason(__TopXMLNS,
- __IgnoreEls,
- _el));
- true ->
- 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},
- _xmlns_attrs) ->
- _els =
- lists:reverse('encode_muc_user_decline_$reason'(Reason,
- [])),
- _attrs = encode_muc_user_decline_attr_from(From,
- encode_muc_user_decline_attr_to(To,
- _xmlns_attrs)),
- {xmlel, <<"decline">>, _attrs, _els}.
-
-'encode_muc_user_decline_$reason'(undefined, _acc) ->
- _acc;
-'encode_muc_user_decline_$reason'(Reason, _acc) ->
- [encode_muc_user_reason(Reason, []) | _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_user_reason(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"reason">>, _attrs, _els}) ->
- Cdata = decode_muc_user_reason_els(__TopXMLNS,
- __IgnoreEls, _els, <<>>),
- Cdata.
-
-decode_muc_user_reason_els(__TopXMLNS, __IgnoreEls, [],
- Cdata) ->
- decode_muc_user_reason_cdata(__TopXMLNS, Cdata);
-decode_muc_user_reason_els(__TopXMLNS, __IgnoreEls,
- [{xmlcdata, _data} | _els], Cdata) ->
- decode_muc_user_reason_els(__TopXMLNS, __IgnoreEls,
- _els, <<Cdata/binary, _data/binary>>);
-decode_muc_user_reason_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_muc_user_reason_els(__TopXMLNS, __IgnoreEls,
- _els, Cdata).
-
-encode_muc_user_reason(Cdata, _xmlns_attrs) ->
- _els = encode_muc_user_reason_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"reason">>, _attrs, _els}.
-
-decode_muc_user_reason_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_muc_user_reason_cdata(__TopXMLNS, _val) -> _val.
-
-encode_muc_user_reason_cdata(undefined, _acc) -> _acc;
-encode_muc_user_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},
- _xmlns_attrs) ->
- _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,
- _xmlns_attrs)))),
- {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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_bytestreams_els(__TopXMLNS, __IgnoreEls, _els,
- [decode_bytestreams_streamhost(__TopXMLNS,
- __IgnoreEls,
- _el)
- | Hosts],
- Used, Activate);
- true ->
- decode_bytestreams_els(__TopXMLNS, __IgnoreEls, _els,
- Hosts, Used, Activate)
- end;
-decode_bytestreams_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"streamhost-used">>, _attrs, _} = _el
- | _els],
- Hosts, Used, Activate) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_bytestreams_els(__TopXMLNS, __IgnoreEls, _els,
- Hosts,
- decode_bytestreams_streamhost_used(__TopXMLNS,
- __IgnoreEls,
- _el),
- Activate);
- true ->
- decode_bytestreams_els(__TopXMLNS, __IgnoreEls, _els,
- Hosts, Used, Activate)
- end;
-decode_bytestreams_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"activate">>, _attrs, _} = _el | _els],
- Hosts, Used, Activate) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_bytestreams_els(__TopXMLNS, __IgnoreEls, _els,
- Hosts, Used,
- decode_bytestreams_activate(__TopXMLNS,
- __IgnoreEls,
- _el));
- true ->
- 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},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_bytestreams_$hosts'(Hosts,
- 'encode_bytestreams_$used'(Used,
- 'encode_bytestreams_$activate'(Activate,
- [])))),
- _attrs = encode_bytestreams_attr_mode(Mode,
- encode_bytestreams_attr_sid(Sid,
- encode_bytestreams_attr_dstaddr(Dstaddr,
- _xmlns_attrs))),
- {xmlel, <<"query">>, _attrs, _els}.
-
-'encode_bytestreams_$hosts'([], _acc) -> _acc;
-'encode_bytestreams_$hosts'([Hosts | _els], _acc) ->
- 'encode_bytestreams_$hosts'(_els,
- [encode_bytestreams_streamhost(Hosts, [])
- | _acc]).
-
-'encode_bytestreams_$used'(undefined, _acc) -> _acc;
-'encode_bytestreams_$used'(Used, _acc) ->
- [encode_bytestreams_streamhost_used(Used, []) | _acc].
-
-'encode_bytestreams_$activate'(undefined, _acc) -> _acc;
-'encode_bytestreams_$activate'(Activate, _acc) ->
- [encode_bytestreams_activate(Activate, []) | _acc].
-
-decode_bytestreams_attr_dstaddr(__TopXMLNS,
- undefined) ->
- undefined;
-decode_bytestreams_attr_dstaddr(__TopXMLNS, _val) ->
- _val.
-
-encode_bytestreams_attr_dstaddr(undefined, _acc) ->
- _acc;
-encode_bytestreams_attr_dstaddr(_val, _acc) ->
- [{<<"dstaddr">>, _val} | _acc].
-
-decode_bytestreams_attr_sid(__TopXMLNS, undefined) ->
- undefined;
-decode_bytestreams_attr_sid(__TopXMLNS, _val) -> _val.
-
-encode_bytestreams_attr_sid(undefined, _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, <<Cdata/binary, _data/binary>>);
-decode_bytestreams_activate_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_bytestreams_activate_els(__TopXMLNS, __IgnoreEls,
- _els, Cdata).
-
-encode_bytestreams_activate(Cdata, _xmlns_attrs) ->
- _els = encode_bytestreams_activate_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {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, _xmlns_attrs) ->
- _els = [],
- _attrs =
- encode_bytestreams_streamhost_used_attr_jid(Jid,
- _xmlns_attrs),
- {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},
- _xmlns_attrs) ->
- _els = [],
- _attrs = encode_bytestreams_streamhost_attr_port(Port,
- encode_bytestreams_streamhost_attr_host(Host,
- encode_bytestreams_streamhost_attr_jid(Jid,
- _xmlns_attrs))),
- {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}) ->
- {Stamp, From} = decode_delay_attrs(__TopXMLNS, _attrs,
- undefined, undefined),
- {delay, Stamp, From}.
-
-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}, _xmlns_attrs) ->
- _els = [],
- _attrs = encode_delay_attr_from(From,
- encode_delay_attr_stamp(Stamp,
- _xmlns_attrs)),
- {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_chatstate_paused(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"paused">>, _attrs, _els}) ->
- {chatstate, paused}.
-
-encode_chatstate_paused({chatstate, paused},
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"paused">>, _attrs, _els}.
-
-decode_chatstate_inactive(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"inactive">>, _attrs, _els}) ->
- {chatstate, inactive}.
-
-encode_chatstate_inactive({chatstate, inactive},
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"inactive">>, _attrs, _els}.
-
-decode_chatstate_gone(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"gone">>, _attrs, _els}) ->
- {chatstate, gone}.
-
-encode_chatstate_gone({chatstate, gone},
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"gone">>, _attrs, _els}.
-
-decode_chatstate_composing(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"composing">>, _attrs, _els}) ->
- {chatstate, composing}.
-
-encode_chatstate_composing({chatstate, composing},
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"composing">>, _attrs, _els}.
-
-decode_chatstate_active(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"active">>, _attrs, _els}) ->
- {chatstate, active}.
-
-encode_chatstate_active({chatstate, active},
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_shim_headers_els(__TopXMLNS, __IgnoreEls, _els,
- [decode_shim_header(__TopXMLNS, __IgnoreEls,
- _el)
- | Headers]);
- true ->
- 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}, _xmlns_attrs) ->
- _els =
- lists:reverse('encode_shim_headers_$headers'(Headers,
- [])),
- _attrs = _xmlns_attrs,
- {xmlel, <<"headers">>, _attrs, _els}.
-
-'encode_shim_headers_$headers'([], _acc) -> _acc;
-'encode_shim_headers_$headers'([Headers | _els],
- _acc) ->
- 'encode_shim_headers_$headers'(_els,
- [encode_shim_header(Headers, []) | _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,
- <<Cdata/binary, _data/binary>>);
-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}, _xmlns_attrs) ->
- _els = encode_shim_header_cdata(Cdata, []),
- _attrs = encode_shim_header_attr_name(Name,
- _xmlns_attrs),
- {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, <<>>) -> undefined;
-decode_shim_header_cdata(__TopXMLNS, _val) -> _val.
-
-encode_shim_header_cdata(undefined, _acc) -> _acc;
-encode_shim_header_cdata(_val, _acc) ->
- [{xmlcdata, _val} | _acc].
-
-decode_pubsub(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"pubsub">>, _attrs, _els}) ->
- {Items, Options, Affiliations, Subscriptions, Retract,
- Unsubscribe, Subscribe, Publish} =
- decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els,
- undefined, undefined, undefined, undefined, undefined,
- undefined, undefined, undefined),
- {pubsub, Subscriptions, Affiliations, Publish,
- Subscribe, Unsubscribe, Options, Items, Retract}.
-
-decode_pubsub_els(__TopXMLNS, __IgnoreEls, [], Items,
- Options, Affiliations, Subscriptions, Retract,
- Unsubscribe, Subscribe, Publish) ->
- {Items, Options, Affiliations, Subscriptions, Retract,
- Unsubscribe, Subscribe, Publish};
-decode_pubsub_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"subscriptions">>, _attrs, _} = _el | _els],
- Items, Options, Affiliations, Subscriptions, Retract,
- Unsubscribe, Subscribe, Publish) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, Items,
- Options, Affiliations,
- decode_pubsub_subscriptions(__TopXMLNS,
- __IgnoreEls, _el),
- Retract, Unsubscribe, Subscribe, Publish);
- true ->
- decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, Items,
- Options, Affiliations, Subscriptions, Retract,
- Unsubscribe, Subscribe, Publish)
- end;
-decode_pubsub_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"affiliations">>, _attrs, _} = _el | _els],
- Items, Options, Affiliations, Subscriptions, Retract,
- Unsubscribe, Subscribe, Publish) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, Items,
- Options,
- decode_pubsub_affiliations(__TopXMLNS, __IgnoreEls,
- _el),
- Subscriptions, Retract, Unsubscribe, Subscribe,
- Publish);
- true ->
- decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, Items,
- Options, Affiliations, Subscriptions, Retract,
- Unsubscribe, Subscribe, Publish)
- end;
-decode_pubsub_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"subscribe">>, _attrs, _} = _el | _els],
- Items, Options, Affiliations, Subscriptions, Retract,
- Unsubscribe, Subscribe, Publish) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, Items,
- Options, Affiliations, Subscriptions, Retract,
- Unsubscribe,
- decode_pubsub_subscribe(__TopXMLNS, __IgnoreEls,
- _el),
- Publish);
- true ->
- decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, Items,
- Options, Affiliations, Subscriptions, Retract,
- Unsubscribe, Subscribe, Publish)
- end;
-decode_pubsub_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"unsubscribe">>, _attrs, _} = _el | _els],
- Items, Options, Affiliations, Subscriptions, Retract,
- Unsubscribe, Subscribe, Publish) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, Items,
- Options, Affiliations, Subscriptions, Retract,
- decode_pubsub_unsubscribe(__TopXMLNS, __IgnoreEls,
- _el),
- Subscribe, Publish);
- true ->
- decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, Items,
- Options, Affiliations, Subscriptions, Retract,
- Unsubscribe, Subscribe, Publish)
- end;
-decode_pubsub_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"options">>, _attrs, _} = _el | _els], Items,
- Options, Affiliations, Subscriptions, Retract,
- Unsubscribe, Subscribe, Publish) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, Items,
- decode_pubsub_options(__TopXMLNS, __IgnoreEls,
- _el),
- Affiliations, Subscriptions, Retract, Unsubscribe,
- Subscribe, Publish);
- true ->
- decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, Items,
- Options, Affiliations, Subscriptions, Retract,
- Unsubscribe, Subscribe, Publish)
- end;
-decode_pubsub_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"items">>, _attrs, _} = _el | _els], Items,
- Options, Affiliations, Subscriptions, Retract,
- Unsubscribe, Subscribe, Publish) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els,
- decode_pubsub_items(__TopXMLNS, __IgnoreEls, _el),
- Options, Affiliations, Subscriptions, Retract,
- Unsubscribe, Subscribe, Publish);
- true ->
- decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, Items,
- Options, Affiliations, Subscriptions, Retract,
- Unsubscribe, Subscribe, Publish)
- end;
-decode_pubsub_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"retract">>, _attrs, _} = _el | _els], Items,
- Options, Affiliations, Subscriptions, Retract,
- Unsubscribe, Subscribe, Publish) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, Items,
- Options, Affiliations, Subscriptions,
- decode_pubsub_retract(__TopXMLNS, __IgnoreEls,
- _el),
- Unsubscribe, Subscribe, Publish);
- true ->
- decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, Items,
- Options, Affiliations, Subscriptions, Retract,
- Unsubscribe, Subscribe, Publish)
- end;
-decode_pubsub_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"publish">>, _attrs, _} = _el | _els], Items,
- Options, Affiliations, Subscriptions, Retract,
- Unsubscribe, Subscribe, Publish) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, Items,
- Options, Affiliations, Subscriptions, Retract,
- Unsubscribe, Subscribe,
- decode_pubsub_publish(__TopXMLNS, __IgnoreEls,
- _el));
- true ->
- decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, Items,
- Options, Affiliations, Subscriptions, Retract,
- Unsubscribe, Subscribe, Publish)
- end;
-decode_pubsub_els(__TopXMLNS, __IgnoreEls, [_ | _els],
- Items, Options, Affiliations, Subscriptions, Retract,
- Unsubscribe, Subscribe, Publish) ->
- decode_pubsub_els(__TopXMLNS, __IgnoreEls, _els, Items,
- Options, Affiliations, Subscriptions, Retract,
- Unsubscribe, Subscribe, Publish).
-
-encode_pubsub({pubsub, Subscriptions, Affiliations,
- Publish, Subscribe, Unsubscribe, Options, Items,
- Retract},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_pubsub_$items'(Items,
- 'encode_pubsub_$options'(Options,
- 'encode_pubsub_$affiliations'(Affiliations,
- 'encode_pubsub_$subscriptions'(Subscriptions,
- 'encode_pubsub_$retract'(Retract,
- 'encode_pubsub_$unsubscribe'(Unsubscribe,
- 'encode_pubsub_$subscribe'(Subscribe,
- 'encode_pubsub_$publish'(Publish,
- []))))))))),
- _attrs = _xmlns_attrs,
- {xmlel, <<"pubsub">>, _attrs, _els}.
-
-'encode_pubsub_$items'(undefined, _acc) -> _acc;
-'encode_pubsub_$items'(Items, _acc) ->
- [encode_pubsub_items(Items, []) | _acc].
-
-'encode_pubsub_$options'(undefined, _acc) -> _acc;
-'encode_pubsub_$options'(Options, _acc) ->
- [encode_pubsub_options(Options, []) | _acc].
-
-'encode_pubsub_$affiliations'(undefined, _acc) -> _acc;
-'encode_pubsub_$affiliations'(Affiliations, _acc) ->
- [encode_pubsub_affiliations(Affiliations, []) | _acc].
-
-'encode_pubsub_$subscriptions'(undefined, _acc) -> _acc;
-'encode_pubsub_$subscriptions'(Subscriptions, _acc) ->
- [encode_pubsub_subscriptions(Subscriptions, []) | _acc].
-
-'encode_pubsub_$retract'(undefined, _acc) -> _acc;
-'encode_pubsub_$retract'(Retract, _acc) ->
- [encode_pubsub_retract(Retract, []) | _acc].
-
-'encode_pubsub_$unsubscribe'(undefined, _acc) -> _acc;
-'encode_pubsub_$unsubscribe'(Unsubscribe, _acc) ->
- [encode_pubsub_unsubscribe(Unsubscribe, []) | _acc].
-
-'encode_pubsub_$subscribe'(undefined, _acc) -> _acc;
-'encode_pubsub_$subscribe'(Subscribe, _acc) ->
- [encode_pubsub_subscribe(Subscribe, []) | _acc].
-
-'encode_pubsub_$publish'(undefined, _acc) -> _acc;
-'encode_pubsub_$publish'(Publish, _acc) ->
- [encode_pubsub_publish(Publish, []) | _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),
- {pubsub_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_pubsub_retract_els(__TopXMLNS, __IgnoreEls, _els,
- [decode_pubsub_item(__TopXMLNS,
- __IgnoreEls, _el)
- | Items]);
- true ->
- 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({pubsub_retract, Node, Notify,
- Items},
- _xmlns_attrs) ->
- _els =
- lists:reverse('encode_pubsub_retract_$items'(Items,
- [])),
- _attrs = encode_pubsub_retract_attr_notify(Notify,
- encode_pubsub_retract_attr_node(Node,
- _xmlns_attrs)),
- {xmlel, <<"retract">>, _attrs, _els}.
-
-'encode_pubsub_retract_$items'([], _acc) -> _acc;
-'encode_pubsub_retract_$items'([Items | _els], _acc) ->
- 'encode_pubsub_retract_$items'(_els,
- [encode_pubsub_item(Items, []) | _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),
- {pubsub_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<"jabber:x:data">> ->
- decode_pubsub_options_els(__TopXMLNS, __IgnoreEls, _els,
- decode_xdata(_xmlns, __IgnoreEls, _el));
- true ->
- 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({pubsub_options, Node, Jid, Subid,
- Xdata},
- _xmlns_attrs) ->
- _els =
- lists:reverse('encode_pubsub_options_$xdata'(Xdata,
- [])),
- _attrs = encode_pubsub_options_attr_jid(Jid,
- encode_pubsub_options_attr_subid(Subid,
- encode_pubsub_options_attr_node(Node,
- _xmlns_attrs))),
- {xmlel, <<"options">>, _attrs, _els}.
-
-'encode_pubsub_options_$xdata'(undefined, _acc) -> _acc;
-'encode_pubsub_options_$xdata'(Xdata, _acc) ->
- [encode_xdata(Xdata,
- [{<<"xmlns">>, <<"jabber:x:data">>}])
- | _acc].
-
-decode_pubsub_options_attr_node(__TopXMLNS,
- undefined) ->
- undefined;
-decode_pubsub_options_attr_node(__TopXMLNS, _val) ->
- _val.
-
-encode_pubsub_options_attr_node(undefined, _acc) ->
- _acc;
-encode_pubsub_options_attr_node(_val, _acc) ->
- [{<<"node">>, _val} | _acc].
-
-decode_pubsub_options_attr_subid(__TopXMLNS,
- undefined) ->
- undefined;
-decode_pubsub_options_attr_subid(__TopXMLNS, _val) ->
- _val.
-
-encode_pubsub_options_attr_subid(undefined, _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),
- {pubsub_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_pubsub_publish_els(__TopXMLNS, __IgnoreEls, _els,
- [decode_pubsub_item(__TopXMLNS,
- __IgnoreEls, _el)
- | Items]);
- true ->
- 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({pubsub_publish, Node, Items},
- _xmlns_attrs) ->
- _els =
- lists:reverse('encode_pubsub_publish_$items'(Items,
- [])),
- _attrs = encode_pubsub_publish_attr_node(Node,
- _xmlns_attrs),
- {xmlel, <<"publish">>, _attrs, _els}.
-
-'encode_pubsub_publish_$items'([], _acc) -> _acc;
-'encode_pubsub_publish_$items'([Items | _els], _acc) ->
- 'encode_pubsub_publish_$items'(_els,
- [encode_pubsub_item(Items, []) | _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),
- {pubsub_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({pubsub_unsubscribe, Node,
- Jid, Subid},
- _xmlns_attrs) ->
- _els = [],
- _attrs = encode_pubsub_unsubscribe_attr_jid(Jid,
- encode_pubsub_unsubscribe_attr_subid(Subid,
- encode_pubsub_unsubscribe_attr_node(Node,
- _xmlns_attrs))),
- {xmlel, <<"unsubscribe">>, _attrs, _els}.
-
-decode_pubsub_unsubscribe_attr_node(__TopXMLNS,
- undefined) ->
- undefined;
-decode_pubsub_unsubscribe_attr_node(__TopXMLNS, _val) ->
- _val.
-
-encode_pubsub_unsubscribe_attr_node(undefined, _acc) ->
- _acc;
-encode_pubsub_unsubscribe_attr_node(_val, _acc) ->
- [{<<"node">>, _val} | _acc].
-
-decode_pubsub_unsubscribe_attr_subid(__TopXMLNS,
- undefined) ->
- undefined;
-decode_pubsub_unsubscribe_attr_subid(__TopXMLNS,
- _val) ->
- _val.
-
-encode_pubsub_unsubscribe_attr_subid(undefined, _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),
- {pubsub_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({pubsub_subscribe, Node, Jid},
- _xmlns_attrs) ->
- _els = [],
- _attrs = encode_pubsub_subscribe_attr_jid(Jid,
- encode_pubsub_subscribe_attr_node(Node,
- _xmlns_attrs)),
- {xmlel, <<"subscribe">>, _attrs, _els}.
-
-decode_pubsub_subscribe_attr_node(__TopXMLNS,
- undefined) ->
- undefined;
-decode_pubsub_subscribe_attr_node(__TopXMLNS, _val) ->
- _val.
-
-encode_pubsub_subscribe_attr_node(undefined, _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_affiliations(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"affiliations">>, _attrs, _els}) ->
- Affiliations =
- decode_pubsub_affiliations_els(__TopXMLNS, __IgnoreEls,
- _els, []),
- Affiliations.
-
-decode_pubsub_affiliations_els(__TopXMLNS, __IgnoreEls,
- [], Affiliations) ->
- lists:reverse(Affiliations);
-decode_pubsub_affiliations_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"affiliation">>, _attrs, _} = _el
- | _els],
- Affiliations) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_pubsub_affiliations_els(__TopXMLNS, __IgnoreEls,
- _els,
- [decode_pubsub_affiliation(__TopXMLNS,
- __IgnoreEls,
- _el)
- | Affiliations]);
- true ->
- 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).
-
-encode_pubsub_affiliations(Affiliations,
- _xmlns_attrs) ->
- _els =
- lists:reverse('encode_pubsub_affiliations_$affiliations'(Affiliations,
- [])),
- _attrs = _xmlns_attrs,
- {xmlel, <<"affiliations">>, _attrs, _els}.
-
-'encode_pubsub_affiliations_$affiliations'([], _acc) ->
- _acc;
-'encode_pubsub_affiliations_$affiliations'([Affiliations
- | _els],
- _acc) ->
- 'encode_pubsub_affiliations_$affiliations'(_els,
- [encode_pubsub_affiliation(Affiliations,
- [])
- | _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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_pubsub_subscriptions_els(__TopXMLNS, __IgnoreEls,
- _els,
- [decode_pubsub_subscription(__TopXMLNS,
- __IgnoreEls,
- _el)
- | Subscriptions]);
- true ->
- 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},
- _xmlns_attrs) ->
- _els =
- lists:reverse('encode_pubsub_subscriptions_$subscriptions'(Subscriptions,
- [])),
- _attrs = encode_pubsub_subscriptions_attr_node(Node,
- _xmlns_attrs),
- {xmlel, <<"subscriptions">>, _attrs, _els}.
-
-'encode_pubsub_subscriptions_$subscriptions'([],
- _acc) ->
- _acc;
-'encode_pubsub_subscriptions_$subscriptions'([Subscriptions
- | _els],
- _acc) ->
- 'encode_pubsub_subscriptions_$subscriptions'(_els,
- [encode_pubsub_subscription(Subscriptions,
- [])
- | _acc]).
-
-decode_pubsub_subscriptions_attr_node(__TopXMLNS,
- undefined) ->
- none;
-decode_pubsub_subscriptions_attr_node(__TopXMLNS,
- _val) ->
- _val.
-
-encode_pubsub_subscriptions_attr_node(none, _acc) ->
- _acc;
-encode_pubsub_subscriptions_attr_node(_val, _acc) ->
- [{<<"node">>, _val} | _acc].
-
-decode_pubsub_event(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"event">>, _attrs, _els}) ->
- Items = decode_pubsub_event_els(__TopXMLNS, __IgnoreEls,
- _els, []),
- {pubsub_event, Items}.
-
-decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, [],
- Items) ->
- lists:reverse(Items);
-decode_pubsub_event_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"items">>, _attrs, _} = _el | _els],
- Items) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els,
- [decode_pubsub_event_items(__TopXMLNS,
- __IgnoreEls, _el)
- | Items]);
- true ->
- decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els,
- Items)
- end;
-decode_pubsub_event_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Items) ->
- decode_pubsub_event_els(__TopXMLNS, __IgnoreEls, _els,
- Items).
-
-encode_pubsub_event({pubsub_event, Items},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_pubsub_event_$items'(Items,
- [])),
- _attrs = _xmlns_attrs,
- {xmlel, <<"event">>, _attrs, _els}.
-
-'encode_pubsub_event_$items'([], _acc) -> _acc;
-'encode_pubsub_event_$items'([Items | _els], _acc) ->
- 'encode_pubsub_event_$items'(_els,
- [encode_pubsub_event_items(Items, []) | _acc]).
-
-decode_pubsub_event_items(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"items">>, _attrs, _els}) ->
- {Items, Retract} =
- decode_pubsub_event_items_els(__TopXMLNS, __IgnoreEls,
- _els, [], []),
- Node = decode_pubsub_event_items_attrs(__TopXMLNS,
- _attrs, undefined),
- {pubsub_event_items, Node, Retract, Items}.
-
-decode_pubsub_event_items_els(__TopXMLNS, __IgnoreEls,
- [], Items, Retract) ->
- {lists:reverse(Items), lists:reverse(Retract)};
-decode_pubsub_event_items_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"retract">>, _attrs, _} = _el | _els],
- Items, Retract) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_pubsub_event_items_els(__TopXMLNS, __IgnoreEls,
- _els, Items,
- [decode_pubsub_event_retract(__TopXMLNS,
- __IgnoreEls,
- _el)
- | Retract]);
- true ->
- decode_pubsub_event_items_els(__TopXMLNS, __IgnoreEls,
- _els, Items, Retract)
- end;
-decode_pubsub_event_items_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"item">>, _attrs, _} = _el | _els],
- Items, Retract) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_pubsub_event_items_els(__TopXMLNS, __IgnoreEls,
- _els,
- [decode_pubsub_event_item(__TopXMLNS,
- __IgnoreEls,
- _el)
- | Items],
- Retract);
- true ->
- decode_pubsub_event_items_els(__TopXMLNS, __IgnoreEls,
- _els, Items, Retract)
- end;
-decode_pubsub_event_items_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Items, Retract) ->
- decode_pubsub_event_items_els(__TopXMLNS, __IgnoreEls,
- _els, Items, Retract).
-
-decode_pubsub_event_items_attrs(__TopXMLNS,
- [{<<"node">>, _val} | _attrs], _Node) ->
- decode_pubsub_event_items_attrs(__TopXMLNS, _attrs,
- _val);
-decode_pubsub_event_items_attrs(__TopXMLNS,
- [_ | _attrs], Node) ->
- decode_pubsub_event_items_attrs(__TopXMLNS, _attrs,
- Node);
-decode_pubsub_event_items_attrs(__TopXMLNS, [], Node) ->
- decode_pubsub_event_items_attr_node(__TopXMLNS, Node).
-
-encode_pubsub_event_items({pubsub_event_items, Node,
- Retract, Items},
- _xmlns_attrs) ->
- _els =
- lists:reverse('encode_pubsub_event_items_$items'(Items,
- 'encode_pubsub_event_items_$retract'(Retract,
- []))),
- _attrs = encode_pubsub_event_items_attr_node(Node,
- _xmlns_attrs),
- {xmlel, <<"items">>, _attrs, _els}.
-
-'encode_pubsub_event_items_$items'([], _acc) -> _acc;
-'encode_pubsub_event_items_$items'([Items | _els],
- _acc) ->
- 'encode_pubsub_event_items_$items'(_els,
- [encode_pubsub_event_item(Items, [])
- | _acc]).
-
-'encode_pubsub_event_items_$retract'([], _acc) -> _acc;
-'encode_pubsub_event_items_$retract'([Retract | _els],
- _acc) ->
- 'encode_pubsub_event_items_$retract'(_els,
- [encode_pubsub_event_retract(Retract,
- [])
- | _acc]).
-
-decode_pubsub_event_items_attr_node(__TopXMLNS,
- undefined) ->
- erlang:error({xmpp_codec,
- {missing_attr, <<"node">>, <<"items">>, __TopXMLNS}});
-decode_pubsub_event_items_attr_node(__TopXMLNS, _val) ->
- _val.
-
-encode_pubsub_event_items_attr_node(_val, _acc) ->
- [{<<"node">>, _val} | _acc].
-
-decode_pubsub_event_item(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"item">>, _attrs, _els}) ->
- __Xmls = decode_pubsub_event_item_els(__TopXMLNS,
- __IgnoreEls, _els, []),
- {Id, Node, Publisher} =
- decode_pubsub_event_item_attrs(__TopXMLNS, _attrs,
- undefined, undefined, undefined),
- {pubsub_event_item, Id, Node, Publisher, __Xmls}.
-
-decode_pubsub_event_item_els(__TopXMLNS, __IgnoreEls,
- [], __Xmls) ->
- lists:reverse(__Xmls);
-decode_pubsub_event_item_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, _, _, _} = _el | _els], __Xmls) ->
- decode_pubsub_event_item_els(__TopXMLNS, __IgnoreEls,
- _els, [_el | __Xmls]);
-decode_pubsub_event_item_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], __Xmls) ->
- decode_pubsub_event_item_els(__TopXMLNS, __IgnoreEls,
- _els, __Xmls).
-
-decode_pubsub_event_item_attrs(__TopXMLNS,
- [{<<"id">>, _val} | _attrs], _Id, Node,
- Publisher) ->
- decode_pubsub_event_item_attrs(__TopXMLNS, _attrs, _val,
- Node, Publisher);
-decode_pubsub_event_item_attrs(__TopXMLNS,
- [{<<"node">>, _val} | _attrs], Id, _Node,
- Publisher) ->
- decode_pubsub_event_item_attrs(__TopXMLNS, _attrs, Id,
- _val, Publisher);
-decode_pubsub_event_item_attrs(__TopXMLNS,
- [{<<"publisher">>, _val} | _attrs], Id, Node,
- _Publisher) ->
- decode_pubsub_event_item_attrs(__TopXMLNS, _attrs, Id,
- Node, _val);
-decode_pubsub_event_item_attrs(__TopXMLNS, [_ | _attrs],
- Id, Node, Publisher) ->
- decode_pubsub_event_item_attrs(__TopXMLNS, _attrs, Id,
- Node, Publisher);
-decode_pubsub_event_item_attrs(__TopXMLNS, [], Id, Node,
- Publisher) ->
- {decode_pubsub_event_item_attr_id(__TopXMLNS, Id),
- decode_pubsub_event_item_attr_node(__TopXMLNS, Node),
- decode_pubsub_event_item_attr_publisher(__TopXMLNS,
- Publisher)}.
-
-encode_pubsub_event_item({pubsub_event_item, Id, Node,
- Publisher, __Xmls},
- _xmlns_attrs) ->
- _els = __Xmls,
- _attrs =
- encode_pubsub_event_item_attr_publisher(Publisher,
- encode_pubsub_event_item_attr_node(Node,
- encode_pubsub_event_item_attr_id(Id,
- _xmlns_attrs))),
- {xmlel, <<"item">>, _attrs, _els}.
-
-decode_pubsub_event_item_attr_id(__TopXMLNS,
- undefined) ->
- undefined;
-decode_pubsub_event_item_attr_id(__TopXMLNS, _val) ->
- _val.
-
-encode_pubsub_event_item_attr_id(undefined, _acc) ->
- _acc;
-encode_pubsub_event_item_attr_id(_val, _acc) ->
- [{<<"id">>, _val} | _acc].
-
-decode_pubsub_event_item_attr_node(__TopXMLNS,
- undefined) ->
- undefined;
-decode_pubsub_event_item_attr_node(__TopXMLNS, _val) ->
- _val.
-
-encode_pubsub_event_item_attr_node(undefined, _acc) ->
- _acc;
-encode_pubsub_event_item_attr_node(_val, _acc) ->
- [{<<"node">>, _val} | _acc].
-
-decode_pubsub_event_item_attr_publisher(__TopXMLNS,
- undefined) ->
- undefined;
-decode_pubsub_event_item_attr_publisher(__TopXMLNS,
- _val) ->
- _val.
-
-encode_pubsub_event_item_attr_publisher(undefined,
- _acc) ->
- _acc;
-encode_pubsub_event_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, _xmlns_attrs) ->
- _els = [],
- _attrs = encode_pubsub_event_retract_attr_id(Id,
- _xmlns_attrs),
- {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_items(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"items">>, _attrs, _els}) ->
- Items = decode_pubsub_items_els(__TopXMLNS, __IgnoreEls,
- _els, []),
- {Max_items, Node, Subid} =
- decode_pubsub_items_attrs(__TopXMLNS, _attrs, undefined,
- undefined, undefined),
- {pubsub_items, Node, Max_items, Subid, Items}.
-
-decode_pubsub_items_els(__TopXMLNS, __IgnoreEls, [],
- Items) ->
- lists:reverse(Items);
-decode_pubsub_items_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"item">>, _attrs, _} = _el | _els], Items) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_pubsub_items_els(__TopXMLNS, __IgnoreEls, _els,
- [decode_pubsub_item(__TopXMLNS, __IgnoreEls,
- _el)
- | Items]);
- true ->
- decode_pubsub_items_els(__TopXMLNS, __IgnoreEls, _els,
- Items)
- end;
-decode_pubsub_items_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Items) ->
- decode_pubsub_items_els(__TopXMLNS, __IgnoreEls, _els,
- Items).
-
-decode_pubsub_items_attrs(__TopXMLNS,
- [{<<"max_items">>, _val} | _attrs], _Max_items, Node,
- Subid) ->
- decode_pubsub_items_attrs(__TopXMLNS, _attrs, _val,
- Node, Subid);
-decode_pubsub_items_attrs(__TopXMLNS,
- [{<<"node">>, _val} | _attrs], Max_items, _Node,
- Subid) ->
- decode_pubsub_items_attrs(__TopXMLNS, _attrs, Max_items,
- _val, Subid);
-decode_pubsub_items_attrs(__TopXMLNS,
- [{<<"subid">>, _val} | _attrs], Max_items, Node,
- _Subid) ->
- decode_pubsub_items_attrs(__TopXMLNS, _attrs, Max_items,
- Node, _val);
-decode_pubsub_items_attrs(__TopXMLNS, [_ | _attrs],
- Max_items, Node, Subid) ->
- decode_pubsub_items_attrs(__TopXMLNS, _attrs, Max_items,
- Node, Subid);
-decode_pubsub_items_attrs(__TopXMLNS, [], Max_items,
- Node, Subid) ->
- {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({pubsub_items, Node, Max_items,
- Subid, Items},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_pubsub_items_$items'(Items,
- [])),
- _attrs = encode_pubsub_items_attr_subid(Subid,
- encode_pubsub_items_attr_node(Node,
- encode_pubsub_items_attr_max_items(Max_items,
- _xmlns_attrs))),
- {xmlel, <<"items">>, _attrs, _els}.
-
-'encode_pubsub_items_$items'([], _acc) -> _acc;
-'encode_pubsub_items_$items'([Items | _els], _acc) ->
- 'encode_pubsub_items_$items'(_els,
- [encode_pubsub_item(Items, []) | _acc]).
-
-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) ->
- undefined;
-decode_pubsub_items_attr_subid(__TopXMLNS, _val) ->
- _val.
-
-encode_pubsub_items_attr_subid(undefined, _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 = decode_pubsub_item_attrs(__TopXMLNS, _attrs,
- undefined),
- {pubsub_item, Id, __Xmls}.
-
-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) ->
- decode_pubsub_item_attrs(__TopXMLNS, _attrs, _val);
-decode_pubsub_item_attrs(__TopXMLNS, [_ | _attrs],
- Id) ->
- decode_pubsub_item_attrs(__TopXMLNS, _attrs, Id);
-decode_pubsub_item_attrs(__TopXMLNS, [], Id) ->
- decode_pubsub_item_attr_id(__TopXMLNS, Id).
-
-encode_pubsub_item({pubsub_item, Id, __Xmls},
- _xmlns_attrs) ->
- _els = __Xmls,
- _attrs = encode_pubsub_item_attr_id(Id, _xmlns_attrs),
- {xmlel, <<"item">>, _attrs, _els}.
-
-decode_pubsub_item_attr_id(__TopXMLNS, undefined) ->
- undefined;
-decode_pubsub_item_attr_id(__TopXMLNS, _val) -> _val.
-
-encode_pubsub_item_attr_id(undefined, _acc) -> _acc;
-encode_pubsub_item_attr_id(_val, _acc) ->
- [{<<"id">>, _val} | _acc].
-
-decode_pubsub_affiliation(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"affiliation">>, _attrs, _els}) ->
- {Node, Type} =
- decode_pubsub_affiliation_attrs(__TopXMLNS, _attrs,
- undefined, undefined),
- {pubsub_affiliation, Node, Type}.
-
-decode_pubsub_affiliation_attrs(__TopXMLNS,
- [{<<"node">>, _val} | _attrs], _Node, Type) ->
- decode_pubsub_affiliation_attrs(__TopXMLNS, _attrs,
- _val, Type);
-decode_pubsub_affiliation_attrs(__TopXMLNS,
- [{<<"affiliation">>, _val} | _attrs], Node,
- _Type) ->
- decode_pubsub_affiliation_attrs(__TopXMLNS, _attrs,
- Node, _val);
-decode_pubsub_affiliation_attrs(__TopXMLNS,
- [_ | _attrs], Node, Type) ->
- decode_pubsub_affiliation_attrs(__TopXMLNS, _attrs,
- Node, Type);
-decode_pubsub_affiliation_attrs(__TopXMLNS, [], Node,
- Type) ->
- {decode_pubsub_affiliation_attr_node(__TopXMLNS, Node),
- decode_pubsub_affiliation_attr_affiliation(__TopXMLNS,
- Type)}.
-
-encode_pubsub_affiliation({pubsub_affiliation, Node,
- Type},
- _xmlns_attrs) ->
- _els = [],
- _attrs =
- encode_pubsub_affiliation_attr_affiliation(Type,
- encode_pubsub_affiliation_attr_node(Node,
- _xmlns_attrs)),
- {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_affiliation(__TopXMLNS,
- undefined) ->
- erlang:error({xmpp_codec,
- {missing_attr, <<"affiliation">>, <<"affiliation">>,
- __TopXMLNS}});
-decode_pubsub_affiliation_attr_affiliation(__TopXMLNS,
- _val) ->
- case catch dec_enum(_val,
- [member, none, outcast, owner, publisher,
- 'publish-only'])
- of
- {'EXIT', _} ->
- erlang:error({xmpp_codec,
- {bad_attr_value, <<"affiliation">>, <<"affiliation">>,
- __TopXMLNS}});
- _res -> _res
- end.
-
-encode_pubsub_affiliation_attr_affiliation(_val,
- _acc) ->
- [{<<"affiliation">>, enc_enum(_val)} | _acc].
-
-decode_pubsub_subscription(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"subscription">>, _attrs, _els}) ->
- {Jid, Node, Subid, Type} =
- decode_pubsub_subscription_attrs(__TopXMLNS, _attrs,
- undefined, undefined, undefined,
- undefined),
- {pubsub_subscription, Jid, Node, Subid, Type}.
-
-decode_pubsub_subscription_attrs(__TopXMLNS,
- [{<<"jid">>, _val} | _attrs], _Jid, Node,
- Subid, Type) ->
- decode_pubsub_subscription_attrs(__TopXMLNS, _attrs,
- _val, Node, Subid, Type);
-decode_pubsub_subscription_attrs(__TopXMLNS,
- [{<<"node">>, _val} | _attrs], Jid, _Node,
- Subid, Type) ->
- decode_pubsub_subscription_attrs(__TopXMLNS, _attrs,
- Jid, _val, Subid, Type);
-decode_pubsub_subscription_attrs(__TopXMLNS,
- [{<<"subid">>, _val} | _attrs], Jid, Node,
- _Subid, Type) ->
- decode_pubsub_subscription_attrs(__TopXMLNS, _attrs,
- Jid, Node, _val, Type);
-decode_pubsub_subscription_attrs(__TopXMLNS,
- [{<<"subscription">>, _val} | _attrs], Jid,
- Node, Subid, _Type) ->
- decode_pubsub_subscription_attrs(__TopXMLNS, _attrs,
- Jid, Node, Subid, _val);
-decode_pubsub_subscription_attrs(__TopXMLNS,
- [_ | _attrs], Jid, Node, Subid, Type) ->
- decode_pubsub_subscription_attrs(__TopXMLNS, _attrs,
- Jid, Node, Subid, Type);
-decode_pubsub_subscription_attrs(__TopXMLNS, [], Jid,
- Node, Subid, Type) ->
- {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)}.
-
-encode_pubsub_subscription({pubsub_subscription, Jid,
- Node, Subid, Type},
- _xmlns_attrs) ->
- _els = [],
- _attrs =
- encode_pubsub_subscription_attr_subscription(Type,
- encode_pubsub_subscription_attr_subid(Subid,
- encode_pubsub_subscription_attr_node(Node,
- encode_pubsub_subscription_attr_jid(Jid,
- _xmlns_attrs)))),
- {xmlel, <<"subscription">>, _attrs, _els}.
-
-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) ->
- undefined;
-decode_pubsub_subscription_attr_node(__TopXMLNS,
- _val) ->
- _val.
-
-encode_pubsub_subscription_attr_node(undefined, _acc) ->
- _acc;
-encode_pubsub_subscription_attr_node(_val, _acc) ->
- [{<<"node">>, _val} | _acc].
-
-decode_pubsub_subscription_attr_subid(__TopXMLNS,
- undefined) ->
- undefined;
-decode_pubsub_subscription_attr_subid(__TopXMLNS,
- _val) ->
- _val.
-
-encode_pubsub_subscription_attr_subid(undefined,
- _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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_xdata_els(__TopXMLNS, __IgnoreEls, _els, Fields,
- Items,
- case decode_xdata_instructions(__TopXMLNS,
- __IgnoreEls, _el)
- of
- undefined -> Instructions;
- _new_el -> [_new_el | Instructions]
- end,
- Reported, Title);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_xdata_els(__TopXMLNS, __IgnoreEls, _els, Fields,
- Items, Instructions, Reported,
- decode_xdata_title(__TopXMLNS, __IgnoreEls, _el));
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_xdata_els(__TopXMLNS, __IgnoreEls, _els, Fields,
- Items, Instructions,
- decode_xdata_reported(__TopXMLNS, __IgnoreEls, _el),
- Title);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_xdata_els(__TopXMLNS, __IgnoreEls, _els, Fields,
- [decode_xdata_item(__TopXMLNS, __IgnoreEls, _el)
- | Items],
- Instructions, Reported, Title);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_xdata_els(__TopXMLNS, __IgnoreEls, _els,
- [decode_xdata_field(__TopXMLNS, __IgnoreEls, _el)
- | Fields],
- Items, Instructions, Reported, Title);
- true ->
- 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},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_xdata_$fields'(Fields,
- 'encode_xdata_$items'(Items,
- 'encode_xdata_$instructions'(Instructions,
- 'encode_xdata_$reported'(Reported,
- 'encode_xdata_$title'(Title,
- [])))))),
- _attrs = encode_xdata_attr_type(Type, _xmlns_attrs),
- {xmlel, <<"x">>, _attrs, _els}.
-
-'encode_xdata_$fields'([], _acc) -> _acc;
-'encode_xdata_$fields'([Fields | _els], _acc) ->
- 'encode_xdata_$fields'(_els,
- [encode_xdata_field(Fields, []) | _acc]).
-
-'encode_xdata_$items'([], _acc) -> _acc;
-'encode_xdata_$items'([Items | _els], _acc) ->
- 'encode_xdata_$items'(_els,
- [encode_xdata_item(Items, []) | _acc]).
-
-'encode_xdata_$instructions'([], _acc) -> _acc;
-'encode_xdata_$instructions'([Instructions | _els],
- _acc) ->
- 'encode_xdata_$instructions'(_els,
- [encode_xdata_instructions(Instructions, [])
- | _acc]).
-
-'encode_xdata_$reported'(undefined, _acc) -> _acc;
-'encode_xdata_$reported'(Reported, _acc) ->
- [encode_xdata_reported(Reported, []) | _acc].
-
-'encode_xdata_$title'(undefined, _acc) -> _acc;
-'encode_xdata_$title'(Title, _acc) ->
- [encode_xdata_title(Title, []) | _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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_xdata_item_els(__TopXMLNS, __IgnoreEls, _els,
- [decode_xdata_field(__TopXMLNS, __IgnoreEls,
- _el)
- | Fields]);
- true ->
- 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, _xmlns_attrs) ->
- _els = lists:reverse('encode_xdata_item_$fields'(Fields,
- [])),
- _attrs = _xmlns_attrs,
- {xmlel, <<"item">>, _attrs, _els}.
-
-'encode_xdata_item_$fields'([], _acc) -> _acc;
-'encode_xdata_item_$fields'([Fields | _els], _acc) ->
- 'encode_xdata_item_$fields'(_els,
- [encode_xdata_field(Fields, []) | _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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_xdata_reported_els(__TopXMLNS, __IgnoreEls, _els,
- [decode_xdata_field(__TopXMLNS,
- __IgnoreEls, _el)
- | Fields]);
- true ->
- 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, _xmlns_attrs) ->
- _els =
- lists:reverse('encode_xdata_reported_$fields'(Fields,
- [])),
- _attrs = _xmlns_attrs,
- {xmlel, <<"reported">>, _attrs, _els}.
-
-'encode_xdata_reported_$fields'([], _acc) -> _acc;
-'encode_xdata_reported_$fields'([Fields | _els],
- _acc) ->
- 'encode_xdata_reported_$fields'(_els,
- [encode_xdata_field(Fields, []) | _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,
- <<Cdata/binary, _data/binary>>);
-decode_xdata_title_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_xdata_title_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_xdata_title(Cdata, _xmlns_attrs) ->
- _els = encode_xdata_title_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"title">>, _attrs, _els}.
-
-decode_xdata_title_cdata(__TopXMLNS, <<>>) -> undefined;
-decode_xdata_title_cdata(__TopXMLNS, _val) -> _val.
-
-encode_xdata_title_cdata(undefined, _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, <<Cdata/binary, _data/binary>>);
-decode_xdata_instructions_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_xdata_instructions_els(__TopXMLNS, __IgnoreEls,
- _els, Cdata).
-
-encode_xdata_instructions(Cdata, _xmlns_attrs) ->
- _els = encode_xdata_instructions_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"instructions">>, _attrs, _els}.
-
-decode_xdata_instructions_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_xdata_instructions_cdata(__TopXMLNS, _val) ->
- _val.
-
-encode_xdata_instructions_cdata(undefined, _acc) ->
- _acc;
-encode_xdata_instructions_cdata(_val, _acc) ->
- [{xmlcdata, _val} | _acc].
-
-decode_xdata_field(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"field">>, _attrs, _els}) ->
- {Options, Values, Desc, Required} =
- decode_xdata_field_els(__TopXMLNS, __IgnoreEls, _els,
- [], [], undefined, false),
- {Label, Type, Var} =
- decode_xdata_field_attrs(__TopXMLNS, _attrs, undefined,
- undefined, undefined),
- {xdata_field, Label, Type, Var, Required, Desc, Values,
- Options}.
-
-decode_xdata_field_els(__TopXMLNS, __IgnoreEls, [],
- Options, Values, Desc, Required) ->
- {lists:reverse(Options), lists:reverse(Values), Desc,
- Required};
-decode_xdata_field_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"required">>, _attrs, _} = _el | _els],
- Options, Values, Desc, Required) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_xdata_field_els(__TopXMLNS, __IgnoreEls, _els,
- Options, Values, Desc,
- decode_xdata_field_required(__TopXMLNS,
- __IgnoreEls,
- _el));
- true ->
- decode_xdata_field_els(__TopXMLNS, __IgnoreEls, _els,
- Options, Values, Desc, Required)
- end;
-decode_xdata_field_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"desc">>, _attrs, _} = _el | _els], Options,
- Values, Desc, Required) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_xdata_field_els(__TopXMLNS, __IgnoreEls, _els,
- Options, Values,
- decode_xdata_field_desc(__TopXMLNS,
- __IgnoreEls, _el),
- Required);
- true ->
- decode_xdata_field_els(__TopXMLNS, __IgnoreEls, _els,
- Options, Values, Desc, Required)
- end;
-decode_xdata_field_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"value">>, _attrs, _} = _el | _els], Options,
- Values, Desc, Required) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_xdata_field_els(__TopXMLNS, __IgnoreEls, _els,
- Options,
- case decode_xdata_field_value(__TopXMLNS,
- __IgnoreEls,
- _el)
- of
- undefined -> Values;
- _new_el -> [_new_el | Values]
- end,
- Desc, Required);
- true ->
- decode_xdata_field_els(__TopXMLNS, __IgnoreEls, _els,
- Options, Values, Desc, Required)
- end;
-decode_xdata_field_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"option">>, _attrs, _} = _el | _els],
- Options, Values, Desc, Required) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_xdata_field_els(__TopXMLNS, __IgnoreEls, _els,
- case decode_xdata_field_option(__TopXMLNS,
- __IgnoreEls,
- _el)
- of
- undefined -> Options;
- _new_el -> [_new_el | Options]
- end,
- Values, Desc, Required);
- true ->
- decode_xdata_field_els(__TopXMLNS, __IgnoreEls, _els,
- Options, Values, Desc, Required)
- end;
-decode_xdata_field_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Options, Values, Desc, Required) ->
- decode_xdata_field_els(__TopXMLNS, __IgnoreEls, _els,
- Options, Values, Desc, Required).
-
-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},
- _xmlns_attrs) ->
- _els =
- lists:reverse('encode_xdata_field_$options'(Options,
- 'encode_xdata_field_$values'(Values,
- 'encode_xdata_field_$desc'(Desc,
- 'encode_xdata_field_$required'(Required,
- []))))),
- _attrs = encode_xdata_field_attr_var(Var,
- encode_xdata_field_attr_type(Type,
- encode_xdata_field_attr_label(Label,
- _xmlns_attrs))),
- {xmlel, <<"field">>, _attrs, _els}.
-
-'encode_xdata_field_$options'([], _acc) -> _acc;
-'encode_xdata_field_$options'([Options | _els], _acc) ->
- 'encode_xdata_field_$options'(_els,
- [encode_xdata_field_option(Options, [])
- | _acc]).
-
-'encode_xdata_field_$values'([], _acc) -> _acc;
-'encode_xdata_field_$values'([Values | _els], _acc) ->
- 'encode_xdata_field_$values'(_els,
- [encode_xdata_field_value(Values, []) | _acc]).
-
-'encode_xdata_field_$desc'(undefined, _acc) -> _acc;
-'encode_xdata_field_$desc'(Desc, _acc) ->
- [encode_xdata_field_desc(Desc, []) | _acc].
-
-'encode_xdata_field_$required'(false, _acc) -> _acc;
-'encode_xdata_field_$required'(Required, _acc) ->
- [encode_xdata_field_required(Required, []) | _acc].
-
-decode_xdata_field_attr_label(__TopXMLNS, undefined) ->
- undefined;
-decode_xdata_field_attr_label(__TopXMLNS, _val) -> _val.
-
-encode_xdata_field_attr_label(undefined, _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) ->
- undefined;
-decode_xdata_field_attr_var(__TopXMLNS, _val) -> _val.
-
-encode_xdata_field_attr_var(undefined, _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),
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_xdata_field_option_els(__TopXMLNS, __IgnoreEls,
- _els,
- {value,
- decode_xdata_field_value(__TopXMLNS,
- __IgnoreEls,
- _el)});
- true ->
- 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).
-
-encode_xdata_field_option(Value, _xmlns_attrs) ->
- _els =
- lists:reverse('encode_xdata_field_option_$value'(Value,
- [])),
- _attrs = _xmlns_attrs,
- {xmlel, <<"option">>, _attrs, _els}.
-
-'encode_xdata_field_option_$value'(Value, _acc) ->
- [encode_xdata_field_value(Value, []) | _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, <<Cdata/binary, _data/binary>>);
-decode_xdata_field_value_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_xdata_field_value_els(__TopXMLNS, __IgnoreEls,
- _els, Cdata).
-
-encode_xdata_field_value(Cdata, _xmlns_attrs) ->
- _els = encode_xdata_field_value_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"value">>, _attrs, _els}.
-
-decode_xdata_field_value_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_xdata_field_value_cdata(__TopXMLNS, _val) ->
- _val.
-
-encode_xdata_field_value_cdata(undefined, _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, <<Cdata/binary, _data/binary>>);
-decode_xdata_field_desc_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_xdata_field_desc_els(__TopXMLNS, __IgnoreEls,
- _els, Cdata).
-
-encode_xdata_field_desc(Cdata, _xmlns_attrs) ->
- _els = encode_xdata_field_desc_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"desc">>, _attrs, _els}.
-
-decode_xdata_field_desc_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_xdata_field_desc_cdata(__TopXMLNS, _val) -> _val.
-
-encode_xdata_field_desc_cdata(undefined, _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, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"required">>, _attrs, _els}.
-
-decode_vcard_xupdate(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"x">>, _attrs, _els}) ->
- Photo = decode_vcard_xupdate_els(__TopXMLNS,
- __IgnoreEls, _els, undefined),
- {vcard_xupdate, Photo}.
-
-decode_vcard_xupdate_els(__TopXMLNS, __IgnoreEls, [],
- Photo) ->
- Photo;
-decode_vcard_xupdate_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"photo">>, _attrs, _} = _el | _els],
- Photo) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_xupdate_els(__TopXMLNS, __IgnoreEls, _els,
- decode_vcard_xupdate_photo(__TopXMLNS,
- __IgnoreEls,
- _el));
- true ->
- decode_vcard_xupdate_els(__TopXMLNS, __IgnoreEls, _els,
- Photo)
- end;
-decode_vcard_xupdate_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Photo) ->
- decode_vcard_xupdate_els(__TopXMLNS, __IgnoreEls, _els,
- Photo).
-
-encode_vcard_xupdate({vcard_xupdate, Photo},
- _xmlns_attrs) ->
- _els =
- lists:reverse('encode_vcard_xupdate_$photo'(Photo, [])),
- _attrs = _xmlns_attrs,
- {xmlel, <<"x">>, _attrs, _els}.
-
-'encode_vcard_xupdate_$photo'(undefined, _acc) -> _acc;
-'encode_vcard_xupdate_$photo'(Photo, _acc) ->
- [encode_vcard_xupdate_photo(Photo, []) | _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, <<Cdata/binary, _data/binary>>);
-decode_vcard_xupdate_photo_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_xupdate_photo_els(__TopXMLNS, __IgnoreEls,
- _els, Cdata).
-
-encode_vcard_xupdate_photo(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_xupdate_photo_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"photo">>, _attrs, _els}.
-
-decode_vcard_xupdate_photo_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_vcard_xupdate_photo_cdata(__TopXMLNS, _val) ->
- _val.
-
-encode_vcard_xupdate_photo_cdata(undefined, _acc) ->
- _acc;
-encode_vcard_xupdate_photo_cdata(_val, _acc) ->
- [{xmlcdata, _val} | _acc].
-
-decode_vcard(__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_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, 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_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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));
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_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);
- true ->
- decode_vcard_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_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_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({vcard, 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},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_vcard_$mailer'(Mailer,
- 'encode_vcard_$adr'(Adr,
- 'encode_vcard_$class'(Class,
- 'encode_vcard_$categories'(Categories,
- 'encode_vcard_$desc'(Desc,
- 'encode_vcard_$uid'(Uid,
- 'encode_vcard_$prodid'(Prodid,
- 'encode_vcard_$jabberid'(Jabberid,
- 'encode_vcard_$sound'(Sound,
- 'encode_vcard_$note'(Note,
- 'encode_vcard_$role'(Role,
- 'encode_vcard_$title'(Title,
- 'encode_vcard_$nickname'(Nickname,
- 'encode_vcard_$rev'(Rev,
- 'encode_vcard_$sort_string'(Sort_string,
- 'encode_vcard_$org'(Org,
- 'encode_vcard_$bday'(Bday,
- 'encode_vcard_$key'(Key,
- 'encode_vcard_$tz'(Tz,
- 'encode_vcard_$url'(Url,
- 'encode_vcard_$email'(Email,
- 'encode_vcard_$tel'(Tel,
- 'encode_vcard_$label'(Label,
- 'encode_vcard_$fn'(Fn,
- 'encode_vcard_$version'(Version,
- 'encode_vcard_$n'(N,
- 'encode_vcard_$photo'(Photo,
- 'encode_vcard_$logo'(Logo,
- 'encode_vcard_$geo'(Geo,
- [])))))))))))))))))))))))))))))),
- _attrs = _xmlns_attrs,
- {xmlel, <<"vCard">>, _attrs, _els}.
-
-'encode_vcard_$mailer'(undefined, _acc) -> _acc;
-'encode_vcard_$mailer'(Mailer, _acc) ->
- [encode_vcard_MAILER(Mailer, []) | _acc].
-
-'encode_vcard_$adr'([], _acc) -> _acc;
-'encode_vcard_$adr'([Adr | _els], _acc) ->
- 'encode_vcard_$adr'(_els,
- [encode_vcard_ADR(Adr, []) | _acc]).
-
-'encode_vcard_$class'(undefined, _acc) -> _acc;
-'encode_vcard_$class'(Class, _acc) ->
- [encode_vcard_CLASS(Class, []) | _acc].
-
-'encode_vcard_$categories'([], _acc) -> _acc;
-'encode_vcard_$categories'(Categories, _acc) ->
- [encode_vcard_CATEGORIES(Categories, []) | _acc].
-
-'encode_vcard_$desc'(undefined, _acc) -> _acc;
-'encode_vcard_$desc'(Desc, _acc) ->
- [encode_vcard_DESC(Desc, []) | _acc].
-
-'encode_vcard_$uid'(undefined, _acc) -> _acc;
-'encode_vcard_$uid'(Uid, _acc) ->
- [encode_vcard_UID(Uid, []) | _acc].
-
-'encode_vcard_$prodid'(undefined, _acc) -> _acc;
-'encode_vcard_$prodid'(Prodid, _acc) ->
- [encode_vcard_PRODID(Prodid, []) | _acc].
-
-'encode_vcard_$jabberid'(undefined, _acc) -> _acc;
-'encode_vcard_$jabberid'(Jabberid, _acc) ->
- [encode_vcard_JABBERID(Jabberid, []) | _acc].
-
-'encode_vcard_$sound'(undefined, _acc) -> _acc;
-'encode_vcard_$sound'(Sound, _acc) ->
- [encode_vcard_SOUND(Sound, []) | _acc].
-
-'encode_vcard_$note'(undefined, _acc) -> _acc;
-'encode_vcard_$note'(Note, _acc) ->
- [encode_vcard_NOTE(Note, []) | _acc].
-
-'encode_vcard_$role'(undefined, _acc) -> _acc;
-'encode_vcard_$role'(Role, _acc) ->
- [encode_vcard_ROLE(Role, []) | _acc].
-
-'encode_vcard_$title'(undefined, _acc) -> _acc;
-'encode_vcard_$title'(Title, _acc) ->
- [encode_vcard_TITLE(Title, []) | _acc].
-
-'encode_vcard_$nickname'(undefined, _acc) -> _acc;
-'encode_vcard_$nickname'(Nickname, _acc) ->
- [encode_vcard_NICKNAME(Nickname, []) | _acc].
-
-'encode_vcard_$rev'(undefined, _acc) -> _acc;
-'encode_vcard_$rev'(Rev, _acc) ->
- [encode_vcard_REV(Rev, []) | _acc].
-
-'encode_vcard_$sort_string'(undefined, _acc) -> _acc;
-'encode_vcard_$sort_string'(Sort_string, _acc) ->
- [encode_vcard_SORT_STRING(Sort_string, []) | _acc].
-
-'encode_vcard_$org'(undefined, _acc) -> _acc;
-'encode_vcard_$org'(Org, _acc) ->
- [encode_vcard_ORG(Org, []) | _acc].
-
-'encode_vcard_$bday'(undefined, _acc) -> _acc;
-'encode_vcard_$bday'(Bday, _acc) ->
- [encode_vcard_BDAY(Bday, []) | _acc].
-
-'encode_vcard_$key'(undefined, _acc) -> _acc;
-'encode_vcard_$key'(Key, _acc) ->
- [encode_vcard_KEY(Key, []) | _acc].
-
-'encode_vcard_$tz'(undefined, _acc) -> _acc;
-'encode_vcard_$tz'(Tz, _acc) ->
- [encode_vcard_TZ(Tz, []) | _acc].
-
-'encode_vcard_$url'(undefined, _acc) -> _acc;
-'encode_vcard_$url'(Url, _acc) ->
- [encode_vcard_URL(Url, []) | _acc].
-
-'encode_vcard_$email'([], _acc) -> _acc;
-'encode_vcard_$email'([Email | _els], _acc) ->
- 'encode_vcard_$email'(_els,
- [encode_vcard_EMAIL(Email, []) | _acc]).
-
-'encode_vcard_$tel'([], _acc) -> _acc;
-'encode_vcard_$tel'([Tel | _els], _acc) ->
- 'encode_vcard_$tel'(_els,
- [encode_vcard_TEL(Tel, []) | _acc]).
-
-'encode_vcard_$label'([], _acc) -> _acc;
-'encode_vcard_$label'([Label | _els], _acc) ->
- 'encode_vcard_$label'(_els,
- [encode_vcard_LABEL(Label, []) | _acc]).
-
-'encode_vcard_$fn'(undefined, _acc) -> _acc;
-'encode_vcard_$fn'(Fn, _acc) ->
- [encode_vcard_FN(Fn, []) | _acc].
-
-'encode_vcard_$version'(undefined, _acc) -> _acc;
-'encode_vcard_$version'(Version, _acc) ->
- [encode_vcard_VERSION(Version, []) | _acc].
-
-'encode_vcard_$n'(undefined, _acc) -> _acc;
-'encode_vcard_$n'(N, _acc) ->
- [encode_vcard_N(N, []) | _acc].
-
-'encode_vcard_$photo'(undefined, _acc) -> _acc;
-'encode_vcard_$photo'(Photo, _acc) ->
- [encode_vcard_PHOTO(Photo, []) | _acc].
-
-'encode_vcard_$logo'(undefined, _acc) -> _acc;
-'encode_vcard_$logo'(Logo, _acc) ->
- [encode_vcard_LOGO(Logo, []) | _acc].
-
-'encode_vcard_$geo'(undefined, _acc) -> _acc;
-'encode_vcard_$geo'(Geo, _acc) ->
- [encode_vcard_GEO(Geo, []) | _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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_CLASS_els(__TopXMLNS, __IgnoreEls, _els,
- decode_vcard_PUBLIC(__TopXMLNS, __IgnoreEls,
- _el));
- true ->
- decode_vcard_CLASS_els(__TopXMLNS, __IgnoreEls, _els,
- Class)
- end;
-decode_vcard_CLASS_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"PRIVATE">>, _attrs, _} = _el | _els],
- Class) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_CLASS_els(__TopXMLNS, __IgnoreEls, _els,
- decode_vcard_PRIVATE(__TopXMLNS, __IgnoreEls,
- _el));
- true ->
- decode_vcard_CLASS_els(__TopXMLNS, __IgnoreEls, _els,
- Class)
- end;
-decode_vcard_CLASS_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"CONFIDENTIAL">>, _attrs, _} = _el | _els],
- Class) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_CLASS_els(__TopXMLNS, __IgnoreEls, _els,
- decode_vcard_CONFIDENTIAL(__TopXMLNS,
- __IgnoreEls, _el));
- true ->
- 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, _xmlns_attrs) ->
- _els = lists:reverse('encode_vcard_CLASS_$class'(Class,
- [])),
- _attrs = _xmlns_attrs,
- {xmlel, <<"CLASS">>, _attrs, _els}.
-
-'encode_vcard_CLASS_$class'(undefined, _acc) -> _acc;
-'encode_vcard_CLASS_$class'(public = Class, _acc) ->
- [encode_vcard_PUBLIC(Class, []) | _acc];
-'encode_vcard_CLASS_$class'(private = Class, _acc) ->
- [encode_vcard_PRIVATE(Class, []) | _acc];
-'encode_vcard_CLASS_$class'(confidential = Class,
- _acc) ->
- [encode_vcard_CONFIDENTIAL(Class, []) | _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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_CATEGORIES_els(__TopXMLNS, __IgnoreEls,
- _els,
- case decode_vcard_KEYWORD(__TopXMLNS,
- __IgnoreEls,
- _el)
- of
- undefined -> Keywords;
- _new_el -> [_new_el | Keywords]
- end);
- true ->
- 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, _xmlns_attrs) ->
- _els =
- lists:reverse('encode_vcard_CATEGORIES_$keywords'(Keywords,
- [])),
- _attrs = _xmlns_attrs,
- {xmlel, <<"CATEGORIES">>, _attrs, _els}.
-
-'encode_vcard_CATEGORIES_$keywords'([], _acc) -> _acc;
-'encode_vcard_CATEGORIES_$keywords'([Keywords | _els],
- _acc) ->
- 'encode_vcard_CATEGORIES_$keywords'(_els,
- [encode_vcard_KEYWORD(Keywords, [])
- | _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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_KEY_els(__TopXMLNS, __IgnoreEls, _els,
- Cred,
- decode_vcard_TYPE(__TopXMLNS, __IgnoreEls,
- _el));
- true ->
- decode_vcard_KEY_els(__TopXMLNS, __IgnoreEls, _els,
- Cred, Type)
- end;
-decode_vcard_KEY_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"CRED">>, _attrs, _} = _el | _els], Cred,
- Type) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_KEY_els(__TopXMLNS, __IgnoreEls, _els,
- decode_vcard_CRED(__TopXMLNS, __IgnoreEls, _el),
- Type);
- true ->
- 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},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_vcard_KEY_$cred'(Cred,
- 'encode_vcard_KEY_$type'(Type,
- []))),
- _attrs = _xmlns_attrs,
- {xmlel, <<"KEY">>, _attrs, _els}.
-
-'encode_vcard_KEY_$cred'(undefined, _acc) -> _acc;
-'encode_vcard_KEY_$cred'(Cred, _acc) ->
- [encode_vcard_CRED(Cred, []) | _acc].
-
-'encode_vcard_KEY_$type'(undefined, _acc) -> _acc;
-'encode_vcard_KEY_$type'(Type, _acc) ->
- [encode_vcard_TYPE(Type, []) | _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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_SOUND_els(__TopXMLNS, __IgnoreEls, _els,
- Phonetic, Extval,
- decode_vcard_BINVAL(__TopXMLNS, __IgnoreEls,
- _el));
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_SOUND_els(__TopXMLNS, __IgnoreEls, _els,
- Phonetic,
- decode_vcard_EXTVAL(__TopXMLNS, __IgnoreEls,
- _el),
- Binval);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_SOUND_els(__TopXMLNS, __IgnoreEls, _els,
- decode_vcard_PHONETIC(__TopXMLNS, __IgnoreEls,
- _el),
- Extval, Binval);
- true ->
- 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},
- _xmlns_attrs) ->
- _els =
- lists:reverse('encode_vcard_SOUND_$phonetic'(Phonetic,
- 'encode_vcard_SOUND_$extval'(Extval,
- 'encode_vcard_SOUND_$binval'(Binval,
- [])))),
- _attrs = _xmlns_attrs,
- {xmlel, <<"SOUND">>, _attrs, _els}.
-
-'encode_vcard_SOUND_$phonetic'(undefined, _acc) -> _acc;
-'encode_vcard_SOUND_$phonetic'(Phonetic, _acc) ->
- [encode_vcard_PHONETIC(Phonetic, []) | _acc].
-
-'encode_vcard_SOUND_$extval'(undefined, _acc) -> _acc;
-'encode_vcard_SOUND_$extval'(Extval, _acc) ->
- [encode_vcard_EXTVAL(Extval, []) | _acc].
-
-'encode_vcard_SOUND_$binval'(undefined, _acc) -> _acc;
-'encode_vcard_SOUND_$binval'(Binval, _acc) ->
- [encode_vcard_BINVAL(Binval, []) | _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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_ORG_els(__TopXMLNS, __IgnoreEls, _els,
- Units,
- decode_vcard_ORGNAME(__TopXMLNS, __IgnoreEls,
- _el));
- true ->
- decode_vcard_ORG_els(__TopXMLNS, __IgnoreEls, _els,
- Units, Name)
- end;
-decode_vcard_ORG_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"ORGUNIT">>, _attrs, _} = _el | _els], Units,
- Name) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_ORG_els(__TopXMLNS, __IgnoreEls, _els,
- case decode_vcard_ORGUNIT(__TopXMLNS,
- __IgnoreEls, _el)
- of
- undefined -> Units;
- _new_el -> [_new_el | Units]
- end,
- Name);
- true ->
- 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},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_vcard_ORG_$units'(Units,
- 'encode_vcard_ORG_$name'(Name,
- []))),
- _attrs = _xmlns_attrs,
- {xmlel, <<"ORG">>, _attrs, _els}.
-
-'encode_vcard_ORG_$units'([], _acc) -> _acc;
-'encode_vcard_ORG_$units'([Units | _els], _acc) ->
- 'encode_vcard_ORG_$units'(_els,
- [encode_vcard_ORGUNIT(Units, []) | _acc]).
-
-'encode_vcard_ORG_$name'(undefined, _acc) -> _acc;
-'encode_vcard_ORG_$name'(Name, _acc) ->
- [encode_vcard_ORGNAME(Name, []) | _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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_PHOTO_els(__TopXMLNS, __IgnoreEls, _els,
- decode_vcard_TYPE(__TopXMLNS, __IgnoreEls,
- _el),
- Extval, Binval);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_PHOTO_els(__TopXMLNS, __IgnoreEls, _els,
- Type, Extval,
- decode_vcard_BINVAL(__TopXMLNS, __IgnoreEls,
- _el));
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_PHOTO_els(__TopXMLNS, __IgnoreEls, _els,
- Type,
- decode_vcard_EXTVAL(__TopXMLNS, __IgnoreEls,
- _el),
- Binval);
- true ->
- 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},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_vcard_PHOTO_$type'(Type,
- 'encode_vcard_PHOTO_$extval'(Extval,
- 'encode_vcard_PHOTO_$binval'(Binval,
- [])))),
- _attrs = _xmlns_attrs,
- {xmlel, <<"PHOTO">>, _attrs, _els}.
-
-'encode_vcard_PHOTO_$type'(undefined, _acc) -> _acc;
-'encode_vcard_PHOTO_$type'(Type, _acc) ->
- [encode_vcard_TYPE(Type, []) | _acc].
-
-'encode_vcard_PHOTO_$extval'(undefined, _acc) -> _acc;
-'encode_vcard_PHOTO_$extval'(Extval, _acc) ->
- [encode_vcard_EXTVAL(Extval, []) | _acc].
-
-'encode_vcard_PHOTO_$binval'(undefined, _acc) -> _acc;
-'encode_vcard_PHOTO_$binval'(Binval, _acc) ->
- [encode_vcard_BINVAL(Binval, []) | _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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_LOGO_els(__TopXMLNS, __IgnoreEls, _els,
- decode_vcard_TYPE(__TopXMLNS, __IgnoreEls,
- _el),
- Extval, Binval);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_LOGO_els(__TopXMLNS, __IgnoreEls, _els,
- Type, Extval,
- decode_vcard_BINVAL(__TopXMLNS, __IgnoreEls,
- _el));
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_LOGO_els(__TopXMLNS, __IgnoreEls, _els,
- Type,
- decode_vcard_EXTVAL(__TopXMLNS, __IgnoreEls,
- _el),
- Binval);
- true ->
- 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},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_vcard_LOGO_$type'(Type,
- 'encode_vcard_LOGO_$extval'(Extval,
- 'encode_vcard_LOGO_$binval'(Binval,
- [])))),
- _attrs = _xmlns_attrs,
- {xmlel, <<"LOGO">>, _attrs, _els}.
-
-'encode_vcard_LOGO_$type'(undefined, _acc) -> _acc;
-'encode_vcard_LOGO_$type'(Type, _acc) ->
- [encode_vcard_TYPE(Type, []) | _acc].
-
-'encode_vcard_LOGO_$extval'(undefined, _acc) -> _acc;
-'encode_vcard_LOGO_$extval'(Extval, _acc) ->
- [encode_vcard_EXTVAL(Extval, []) | _acc].
-
-'encode_vcard_LOGO_$binval'(undefined, _acc) -> _acc;
-'encode_vcard_LOGO_$binval'(Binval, _acc) ->
- [encode_vcard_BINVAL(Binval, []) | _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_BINVAL_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_BINVAL_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_BINVAL(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_BINVAL_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"BINVAL">>, _attrs, _els}.
-
-decode_vcard_BINVAL_cdata(__TopXMLNS, <<>>) ->
- undefined;
-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(undefined, _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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_GEO_els(__TopXMLNS, __IgnoreEls, _els,
- decode_vcard_LAT(__TopXMLNS, __IgnoreEls, _el),
- Lon);
- true ->
- decode_vcard_GEO_els(__TopXMLNS, __IgnoreEls, _els, Lat,
- Lon)
- end;
-decode_vcard_GEO_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"LON">>, _attrs, _} = _el | _els], Lat,
- Lon) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_GEO_els(__TopXMLNS, __IgnoreEls, _els, Lat,
- decode_vcard_LON(__TopXMLNS, __IgnoreEls, _el));
- true ->
- 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}, _xmlns_attrs) ->
- _els = lists:reverse('encode_vcard_GEO_$lat'(Lat,
- 'encode_vcard_GEO_$lon'(Lon,
- []))),
- _attrs = _xmlns_attrs,
- {xmlel, <<"GEO">>, _attrs, _els}.
-
-'encode_vcard_GEO_$lat'(undefined, _acc) -> _acc;
-'encode_vcard_GEO_$lat'(Lat, _acc) ->
- [encode_vcard_LAT(Lat, []) | _acc].
-
-'encode_vcard_GEO_$lon'(undefined, _acc) -> _acc;
-'encode_vcard_GEO_$lon'(Lon, _acc) ->
- [encode_vcard_LON(Lon, []) | _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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, _els,
- X400, Userid, Internet,
- decode_vcard_HOME(__TopXMLNS, __IgnoreEls,
- _el),
- Pref, Work);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, _els,
- X400, Userid, Internet, Home, Pref,
- decode_vcard_WORK(__TopXMLNS, __IgnoreEls,
- _el));
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, _els,
- X400, Userid,
- decode_vcard_INTERNET(__TopXMLNS, __IgnoreEls,
- _el),
- Home, Pref, Work);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, _els,
- X400, Userid, Internet, Home,
- decode_vcard_PREF(__TopXMLNS, __IgnoreEls,
- _el),
- Work);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, _els,
- decode_vcard_X400(__TopXMLNS, __IgnoreEls,
- _el),
- Userid, Internet, Home, Pref, Work);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_EMAIL_els(__TopXMLNS, __IgnoreEls, _els,
- X400,
- decode_vcard_USERID(__TopXMLNS, __IgnoreEls,
- _el),
- Internet, Home, Pref, Work);
- true ->
- 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},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_vcard_EMAIL_$x400'(X400,
- 'encode_vcard_EMAIL_$userid'(Userid,
- 'encode_vcard_EMAIL_$internet'(Internet,
- 'encode_vcard_EMAIL_$home'(Home,
- 'encode_vcard_EMAIL_$pref'(Pref,
- 'encode_vcard_EMAIL_$work'(Work,
- []))))))),
- _attrs = _xmlns_attrs,
- {xmlel, <<"EMAIL">>, _attrs, _els}.
-
-'encode_vcard_EMAIL_$x400'(false, _acc) -> _acc;
-'encode_vcard_EMAIL_$x400'(X400, _acc) ->
- [encode_vcard_X400(X400, []) | _acc].
-
-'encode_vcard_EMAIL_$userid'(undefined, _acc) -> _acc;
-'encode_vcard_EMAIL_$userid'(Userid, _acc) ->
- [encode_vcard_USERID(Userid, []) | _acc].
-
-'encode_vcard_EMAIL_$internet'(false, _acc) -> _acc;
-'encode_vcard_EMAIL_$internet'(Internet, _acc) ->
- [encode_vcard_INTERNET(Internet, []) | _acc].
-
-'encode_vcard_EMAIL_$home'(false, _acc) -> _acc;
-'encode_vcard_EMAIL_$home'(Home, _acc) ->
- [encode_vcard_HOME(Home, []) | _acc].
-
-'encode_vcard_EMAIL_$pref'(false, _acc) -> _acc;
-'encode_vcard_EMAIL_$pref'(Pref, _acc) ->
- [encode_vcard_PREF(Pref, []) | _acc].
-
-'encode_vcard_EMAIL_$work'(false, _acc) -> _acc;
-'encode_vcard_EMAIL_$work'(Work, _acc) ->
- [encode_vcard_WORK(Work, []) | _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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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));
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- true ->
- 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},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_vcard_TEL_$number'(Number,
- 'encode_vcard_TEL_$pager'(Pager,
- 'encode_vcard_TEL_$pcs'(Pcs,
- 'encode_vcard_TEL_$bbs'(Bbs,
- 'encode_vcard_TEL_$voice'(Voice,
- 'encode_vcard_TEL_$home'(Home,
- 'encode_vcard_TEL_$pref'(Pref,
- 'encode_vcard_TEL_$msg'(Msg,
- 'encode_vcard_TEL_$fax'(Fax,
- 'encode_vcard_TEL_$work'(Work,
- 'encode_vcard_TEL_$cell'(Cell,
- 'encode_vcard_TEL_$modem'(Modem,
- 'encode_vcard_TEL_$isdn'(Isdn,
- 'encode_vcard_TEL_$video'(Video,
- []))))))))))))))),
- _attrs = _xmlns_attrs,
- {xmlel, <<"TEL">>, _attrs, _els}.
-
-'encode_vcard_TEL_$number'(undefined, _acc) -> _acc;
-'encode_vcard_TEL_$number'(Number, _acc) ->
- [encode_vcard_NUMBER(Number, []) | _acc].
-
-'encode_vcard_TEL_$pager'(false, _acc) -> _acc;
-'encode_vcard_TEL_$pager'(Pager, _acc) ->
- [encode_vcard_PAGER(Pager, []) | _acc].
-
-'encode_vcard_TEL_$pcs'(false, _acc) -> _acc;
-'encode_vcard_TEL_$pcs'(Pcs, _acc) ->
- [encode_vcard_PCS(Pcs, []) | _acc].
-
-'encode_vcard_TEL_$bbs'(false, _acc) -> _acc;
-'encode_vcard_TEL_$bbs'(Bbs, _acc) ->
- [encode_vcard_BBS(Bbs, []) | _acc].
-
-'encode_vcard_TEL_$voice'(false, _acc) -> _acc;
-'encode_vcard_TEL_$voice'(Voice, _acc) ->
- [encode_vcard_VOICE(Voice, []) | _acc].
-
-'encode_vcard_TEL_$home'(false, _acc) -> _acc;
-'encode_vcard_TEL_$home'(Home, _acc) ->
- [encode_vcard_HOME(Home, []) | _acc].
-
-'encode_vcard_TEL_$pref'(false, _acc) -> _acc;
-'encode_vcard_TEL_$pref'(Pref, _acc) ->
- [encode_vcard_PREF(Pref, []) | _acc].
-
-'encode_vcard_TEL_$msg'(false, _acc) -> _acc;
-'encode_vcard_TEL_$msg'(Msg, _acc) ->
- [encode_vcard_MSG(Msg, []) | _acc].
-
-'encode_vcard_TEL_$fax'(false, _acc) -> _acc;
-'encode_vcard_TEL_$fax'(Fax, _acc) ->
- [encode_vcard_FAX(Fax, []) | _acc].
-
-'encode_vcard_TEL_$work'(false, _acc) -> _acc;
-'encode_vcard_TEL_$work'(Work, _acc) ->
- [encode_vcard_WORK(Work, []) | _acc].
-
-'encode_vcard_TEL_$cell'(false, _acc) -> _acc;
-'encode_vcard_TEL_$cell'(Cell, _acc) ->
- [encode_vcard_CELL(Cell, []) | _acc].
-
-'encode_vcard_TEL_$modem'(false, _acc) -> _acc;
-'encode_vcard_TEL_$modem'(Modem, _acc) ->
- [encode_vcard_MODEM(Modem, []) | _acc].
-
-'encode_vcard_TEL_$isdn'(false, _acc) -> _acc;
-'encode_vcard_TEL_$isdn'(Isdn, _acc) ->
- [encode_vcard_ISDN(Isdn, []) | _acc].
-
-'encode_vcard_TEL_$video'(false, _acc) -> _acc;
-'encode_vcard_TEL_$video'(Video, _acc) ->
- [encode_vcard_VIDEO(Video, []) | _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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els,
- Line,
- decode_vcard_HOME(__TopXMLNS, __IgnoreEls,
- _el),
- Pref, Work, Intl, Parcel, Postal, Dom);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els,
- Line, Home, Pref,
- decode_vcard_WORK(__TopXMLNS, __IgnoreEls,
- _el),
- Intl, Parcel, Postal, Dom);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els,
- Line, Home, Pref, Work, Intl, Parcel,
- decode_vcard_POSTAL(__TopXMLNS, __IgnoreEls,
- _el),
- Dom);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els,
- Line, Home, Pref, Work, Intl,
- decode_vcard_PARCEL(__TopXMLNS, __IgnoreEls,
- _el),
- Postal, Dom);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els,
- Line, Home, Pref, Work, Intl, Parcel, Postal,
- decode_vcard_DOM(__TopXMLNS, __IgnoreEls,
- _el));
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els,
- Line, Home, Pref, Work,
- decode_vcard_INTL(__TopXMLNS, __IgnoreEls,
- _el),
- Parcel, Postal, Dom);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els,
- Line, Home,
- decode_vcard_PREF(__TopXMLNS, __IgnoreEls,
- _el),
- Work, Intl, Parcel, Postal, Dom);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_LABEL_els(__TopXMLNS, __IgnoreEls, _els,
- case decode_vcard_LINE(__TopXMLNS,
- __IgnoreEls, _el)
- of
- undefined -> Line;
- _new_el -> [_new_el | Line]
- end,
- Home, Pref, Work, Intl, Parcel, Postal, Dom);
- true ->
- 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},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_vcard_LABEL_$line'(Line,
- 'encode_vcard_LABEL_$home'(Home,
- 'encode_vcard_LABEL_$pref'(Pref,
- 'encode_vcard_LABEL_$work'(Work,
- 'encode_vcard_LABEL_$intl'(Intl,
- 'encode_vcard_LABEL_$parcel'(Parcel,
- 'encode_vcard_LABEL_$postal'(Postal,
- 'encode_vcard_LABEL_$dom'(Dom,
- []))))))))),
- _attrs = _xmlns_attrs,
- {xmlel, <<"LABEL">>, _attrs, _els}.
-
-'encode_vcard_LABEL_$line'([], _acc) -> _acc;
-'encode_vcard_LABEL_$line'([Line | _els], _acc) ->
- 'encode_vcard_LABEL_$line'(_els,
- [encode_vcard_LINE(Line, []) | _acc]).
-
-'encode_vcard_LABEL_$home'(false, _acc) -> _acc;
-'encode_vcard_LABEL_$home'(Home, _acc) ->
- [encode_vcard_HOME(Home, []) | _acc].
-
-'encode_vcard_LABEL_$pref'(false, _acc) -> _acc;
-'encode_vcard_LABEL_$pref'(Pref, _acc) ->
- [encode_vcard_PREF(Pref, []) | _acc].
-
-'encode_vcard_LABEL_$work'(false, _acc) -> _acc;
-'encode_vcard_LABEL_$work'(Work, _acc) ->
- [encode_vcard_WORK(Work, []) | _acc].
-
-'encode_vcard_LABEL_$intl'(false, _acc) -> _acc;
-'encode_vcard_LABEL_$intl'(Intl, _acc) ->
- [encode_vcard_INTL(Intl, []) | _acc].
-
-'encode_vcard_LABEL_$parcel'(false, _acc) -> _acc;
-'encode_vcard_LABEL_$parcel'(Parcel, _acc) ->
- [encode_vcard_PARCEL(Parcel, []) | _acc].
-
-'encode_vcard_LABEL_$postal'(false, _acc) -> _acc;
-'encode_vcard_LABEL_$postal'(Postal, _acc) ->
- [encode_vcard_POSTAL(Postal, []) | _acc].
-
-'encode_vcard_LABEL_$dom'(false, _acc) -> _acc;
-'encode_vcard_LABEL_$dom'(Dom, _acc) ->
- [encode_vcard_DOM(Dom, []) | _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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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));
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- true ->
- 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},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_vcard_ADR_$street'(Street,
- 'encode_vcard_ADR_$extadd'(Extadd,
- 'encode_vcard_ADR_$pcode'(Pcode,
- 'encode_vcard_ADR_$home'(Home,
- 'encode_vcard_ADR_$pref'(Pref,
- 'encode_vcard_ADR_$pobox'(Pobox,
- 'encode_vcard_ADR_$ctry'(Ctry,
- 'encode_vcard_ADR_$locality'(Locality,
- 'encode_vcard_ADR_$work'(Work,
- 'encode_vcard_ADR_$intl'(Intl,
- 'encode_vcard_ADR_$parcel'(Parcel,
- 'encode_vcard_ADR_$postal'(Postal,
- 'encode_vcard_ADR_$dom'(Dom,
- 'encode_vcard_ADR_$region'(Region,
- []))))))))))))))),
- _attrs = _xmlns_attrs,
- {xmlel, <<"ADR">>, _attrs, _els}.
-
-'encode_vcard_ADR_$street'(undefined, _acc) -> _acc;
-'encode_vcard_ADR_$street'(Street, _acc) ->
- [encode_vcard_STREET(Street, []) | _acc].
-
-'encode_vcard_ADR_$extadd'(undefined, _acc) -> _acc;
-'encode_vcard_ADR_$extadd'(Extadd, _acc) ->
- [encode_vcard_EXTADD(Extadd, []) | _acc].
-
-'encode_vcard_ADR_$pcode'(undefined, _acc) -> _acc;
-'encode_vcard_ADR_$pcode'(Pcode, _acc) ->
- [encode_vcard_PCODE(Pcode, []) | _acc].
-
-'encode_vcard_ADR_$home'(false, _acc) -> _acc;
-'encode_vcard_ADR_$home'(Home, _acc) ->
- [encode_vcard_HOME(Home, []) | _acc].
-
-'encode_vcard_ADR_$pref'(false, _acc) -> _acc;
-'encode_vcard_ADR_$pref'(Pref, _acc) ->
- [encode_vcard_PREF(Pref, []) | _acc].
-
-'encode_vcard_ADR_$pobox'(undefined, _acc) -> _acc;
-'encode_vcard_ADR_$pobox'(Pobox, _acc) ->
- [encode_vcard_POBOX(Pobox, []) | _acc].
-
-'encode_vcard_ADR_$ctry'(undefined, _acc) -> _acc;
-'encode_vcard_ADR_$ctry'(Ctry, _acc) ->
- [encode_vcard_CTRY(Ctry, []) | _acc].
-
-'encode_vcard_ADR_$locality'(undefined, _acc) -> _acc;
-'encode_vcard_ADR_$locality'(Locality, _acc) ->
- [encode_vcard_LOCALITY(Locality, []) | _acc].
-
-'encode_vcard_ADR_$work'(false, _acc) -> _acc;
-'encode_vcard_ADR_$work'(Work, _acc) ->
- [encode_vcard_WORK(Work, []) | _acc].
-
-'encode_vcard_ADR_$intl'(false, _acc) -> _acc;
-'encode_vcard_ADR_$intl'(Intl, _acc) ->
- [encode_vcard_INTL(Intl, []) | _acc].
-
-'encode_vcard_ADR_$parcel'(false, _acc) -> _acc;
-'encode_vcard_ADR_$parcel'(Parcel, _acc) ->
- [encode_vcard_PARCEL(Parcel, []) | _acc].
-
-'encode_vcard_ADR_$postal'(false, _acc) -> _acc;
-'encode_vcard_ADR_$postal'(Postal, _acc) ->
- [encode_vcard_POSTAL(Postal, []) | _acc].
-
-'encode_vcard_ADR_$dom'(false, _acc) -> _acc;
-'encode_vcard_ADR_$dom'(Dom, _acc) ->
- [encode_vcard_DOM(Dom, []) | _acc].
-
-'encode_vcard_ADR_$region'(undefined, _acc) -> _acc;
-'encode_vcard_ADR_$region'(Region, _acc) ->
- [encode_vcard_REGION(Region, []) | _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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_N_els(__TopXMLNS, __IgnoreEls, _els,
- Middle, Suffix, Prefix,
- decode_vcard_FAMILY(__TopXMLNS, __IgnoreEls, _el),
- Given);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_N_els(__TopXMLNS, __IgnoreEls, _els,
- Middle, Suffix, Prefix, Family,
- decode_vcard_GIVEN(__TopXMLNS, __IgnoreEls, _el));
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_N_els(__TopXMLNS, __IgnoreEls, _els,
- decode_vcard_MIDDLE(__TopXMLNS, __IgnoreEls, _el),
- Suffix, Prefix, Family, Given);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_N_els(__TopXMLNS, __IgnoreEls, _els,
- Middle, Suffix,
- decode_vcard_PREFIX(__TopXMLNS, __IgnoreEls, _el),
- Family, Given);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_vcard_N_els(__TopXMLNS, __IgnoreEls, _els,
- Middle,
- decode_vcard_SUFFIX(__TopXMLNS, __IgnoreEls, _el),
- Prefix, Family, Given);
- true ->
- 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},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_vcard_N_$middle'(Middle,
- 'encode_vcard_N_$suffix'(Suffix,
- 'encode_vcard_N_$prefix'(Prefix,
- 'encode_vcard_N_$family'(Family,
- 'encode_vcard_N_$given'(Given,
- [])))))),
- _attrs = _xmlns_attrs,
- {xmlel, <<"N">>, _attrs, _els}.
-
-'encode_vcard_N_$middle'(undefined, _acc) -> _acc;
-'encode_vcard_N_$middle'(Middle, _acc) ->
- [encode_vcard_MIDDLE(Middle, []) | _acc].
-
-'encode_vcard_N_$suffix'(undefined, _acc) -> _acc;
-'encode_vcard_N_$suffix'(Suffix, _acc) ->
- [encode_vcard_SUFFIX(Suffix, []) | _acc].
-
-'encode_vcard_N_$prefix'(undefined, _acc) -> _acc;
-'encode_vcard_N_$prefix'(Prefix, _acc) ->
- [encode_vcard_PREFIX(Prefix, []) | _acc].
-
-'encode_vcard_N_$family'(undefined, _acc) -> _acc;
-'encode_vcard_N_$family'(Family, _acc) ->
- [encode_vcard_FAMILY(Family, []) | _acc].
-
-'encode_vcard_N_$given'(undefined, _acc) -> _acc;
-'encode_vcard_N_$given'(Given, _acc) ->
- [encode_vcard_GIVEN(Given, []) | _acc].
-
-decode_vcard_CONFIDENTIAL(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"CONFIDENTIAL">>, _attrs, _els}) ->
- confidential.
-
-encode_vcard_CONFIDENTIAL(confidential, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"CONFIDENTIAL">>, _attrs, _els}.
-
-decode_vcard_PRIVATE(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"PRIVATE">>, _attrs, _els}) ->
- private.
-
-encode_vcard_PRIVATE(private, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"PRIVATE">>, _attrs, _els}.
-
-decode_vcard_PUBLIC(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"PUBLIC">>, _attrs, _els}) ->
- public.
-
-encode_vcard_PUBLIC(public, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_EXTVAL_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_EXTVAL_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_EXTVAL(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_EXTVAL_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"EXTVAL">>, _attrs, _els}.
-
-decode_vcard_EXTVAL_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_vcard_EXTVAL_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_EXTVAL_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_TYPE_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_TYPE_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_TYPE(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_TYPE_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"TYPE">>, _attrs, _els}.
-
-decode_vcard_TYPE_cdata(__TopXMLNS, <<>>) -> undefined;
-decode_vcard_TYPE_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_TYPE_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_DESC_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_DESC_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_DESC(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_DESC_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"DESC">>, _attrs, _els}.
-
-decode_vcard_DESC_cdata(__TopXMLNS, <<>>) -> undefined;
-decode_vcard_DESC_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_DESC_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_URL_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_URL_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_URL(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_URL_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"URL">>, _attrs, _els}.
-
-decode_vcard_URL_cdata(__TopXMLNS, <<>>) -> undefined;
-decode_vcard_URL_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_URL_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_UID_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_UID_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_UID(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_UID_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"UID">>, _attrs, _els}.
-
-decode_vcard_UID_cdata(__TopXMLNS, <<>>) -> undefined;
-decode_vcard_UID_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_UID_cdata(undefined, _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, <<Cdata/binary, _data/binary>>);
-decode_vcard_SORT_STRING_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_SORT_STRING_els(__TopXMLNS, __IgnoreEls,
- _els, Cdata).
-
-encode_vcard_SORT_STRING(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_SORT_STRING_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"SORT-STRING">>, _attrs, _els}.
-
-decode_vcard_SORT_STRING_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_vcard_SORT_STRING_cdata(__TopXMLNS, _val) ->
- _val.
-
-encode_vcard_SORT_STRING_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_REV_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_REV_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_REV(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_REV_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"REV">>, _attrs, _els}.
-
-decode_vcard_REV_cdata(__TopXMLNS, <<>>) -> undefined;
-decode_vcard_REV_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_REV_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_PRODID_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_PRODID_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_PRODID(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_PRODID_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"PRODID">>, _attrs, _els}.
-
-decode_vcard_PRODID_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_vcard_PRODID_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_PRODID_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_NOTE_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_NOTE_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_NOTE(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_NOTE_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"NOTE">>, _attrs, _els}.
-
-decode_vcard_NOTE_cdata(__TopXMLNS, <<>>) -> undefined;
-decode_vcard_NOTE_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_NOTE_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_KEYWORD_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_KEYWORD_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_KEYWORD(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_KEYWORD_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"KEYWORD">>, _attrs, _els}.
-
-decode_vcard_KEYWORD_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_vcard_KEYWORD_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_KEYWORD_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_ROLE_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_ROLE_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_ROLE(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_ROLE_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"ROLE">>, _attrs, _els}.
-
-decode_vcard_ROLE_cdata(__TopXMLNS, <<>>) -> undefined;
-decode_vcard_ROLE_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_ROLE_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_TITLE_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_TITLE_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_TITLE(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_TITLE_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"TITLE">>, _attrs, _els}.
-
-decode_vcard_TITLE_cdata(__TopXMLNS, <<>>) -> undefined;
-decode_vcard_TITLE_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_TITLE_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_TZ_els(__TopXMLNS, __IgnoreEls, [_ | _els],
- Cdata) ->
- decode_vcard_TZ_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_TZ(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_TZ_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"TZ">>, _attrs, _els}.
-
-decode_vcard_TZ_cdata(__TopXMLNS, <<>>) -> undefined;
-decode_vcard_TZ_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_TZ_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_MAILER_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_MAILER_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_MAILER(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_MAILER_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"MAILER">>, _attrs, _els}.
-
-decode_vcard_MAILER_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_vcard_MAILER_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_MAILER_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_JABBERID_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_JABBERID_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_JABBERID(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_JABBERID_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"JABBERID">>, _attrs, _els}.
-
-decode_vcard_JABBERID_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_vcard_JABBERID_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_JABBERID_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_BDAY_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_BDAY_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_BDAY(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_BDAY_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"BDAY">>, _attrs, _els}.
-
-decode_vcard_BDAY_cdata(__TopXMLNS, <<>>) -> undefined;
-decode_vcard_BDAY_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_BDAY_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_NICKNAME_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_NICKNAME_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_NICKNAME(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_NICKNAME_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"NICKNAME">>, _attrs, _els}.
-
-decode_vcard_NICKNAME_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_vcard_NICKNAME_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_NICKNAME_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_FN_els(__TopXMLNS, __IgnoreEls, [_ | _els],
- Cdata) ->
- decode_vcard_FN_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_FN(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_FN_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"FN">>, _attrs, _els}.
-
-decode_vcard_FN_cdata(__TopXMLNS, <<>>) -> undefined;
-decode_vcard_FN_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_FN_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_VERSION_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_VERSION_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_VERSION(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_VERSION_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"VERSION">>, _attrs, _els}.
-
-decode_vcard_VERSION_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_vcard_VERSION_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_VERSION_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_CRED_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_CRED_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_CRED(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_CRED_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"CRED">>, _attrs, _els}.
-
-decode_vcard_CRED_cdata(__TopXMLNS, <<>>) -> undefined;
-decode_vcard_CRED_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_CRED_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_PHONETIC_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_PHONETIC_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_PHONETIC(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_PHONETIC_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"PHONETIC">>, _attrs, _els}.
-
-decode_vcard_PHONETIC_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_vcard_PHONETIC_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_PHONETIC_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_ORGUNIT_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_ORGUNIT_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_ORGUNIT(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_ORGUNIT_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"ORGUNIT">>, _attrs, _els}.
-
-decode_vcard_ORGUNIT_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_vcard_ORGUNIT_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_ORGUNIT_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_ORGNAME_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_ORGNAME_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_ORGNAME(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_ORGNAME_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"ORGNAME">>, _attrs, _els}.
-
-decode_vcard_ORGNAME_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_vcard_ORGNAME_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_ORGNAME_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_LON_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_LON_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_LON(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_LON_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"LON">>, _attrs, _els}.
-
-decode_vcard_LON_cdata(__TopXMLNS, <<>>) -> undefined;
-decode_vcard_LON_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_LON_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_LAT_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_LAT_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_LAT(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_LAT_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"LAT">>, _attrs, _els}.
-
-decode_vcard_LAT_cdata(__TopXMLNS, <<>>) -> undefined;
-decode_vcard_LAT_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_LAT_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_USERID_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_USERID_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_USERID(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_USERID_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"USERID">>, _attrs, _els}.
-
-decode_vcard_USERID_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_vcard_USERID_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_USERID_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_NUMBER_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_NUMBER_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_NUMBER(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_NUMBER_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"NUMBER">>, _attrs, _els}.
-
-decode_vcard_NUMBER_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_vcard_NUMBER_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_NUMBER_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_LINE_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_LINE_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_LINE(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_LINE_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"LINE">>, _attrs, _els}.
-
-decode_vcard_LINE_cdata(__TopXMLNS, <<>>) -> undefined;
-decode_vcard_LINE_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_LINE_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_CTRY_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_CTRY_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_CTRY(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_CTRY_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"CTRY">>, _attrs, _els}.
-
-decode_vcard_CTRY_cdata(__TopXMLNS, <<>>) -> undefined;
-decode_vcard_CTRY_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_CTRY_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_PCODE_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_PCODE_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_PCODE(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_PCODE_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"PCODE">>, _attrs, _els}.
-
-decode_vcard_PCODE_cdata(__TopXMLNS, <<>>) -> undefined;
-decode_vcard_PCODE_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_PCODE_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_REGION_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_REGION_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_REGION(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_REGION_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"REGION">>, _attrs, _els}.
-
-decode_vcard_REGION_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_vcard_REGION_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_REGION_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_LOCALITY_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_LOCALITY_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_LOCALITY(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_LOCALITY_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"LOCALITY">>, _attrs, _els}.
-
-decode_vcard_LOCALITY_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_vcard_LOCALITY_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_LOCALITY_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_STREET_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_STREET_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_STREET(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_STREET_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"STREET">>, _attrs, _els}.
-
-decode_vcard_STREET_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_vcard_STREET_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_STREET_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_EXTADD_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_EXTADD_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_EXTADD(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_EXTADD_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"EXTADD">>, _attrs, _els}.
-
-decode_vcard_EXTADD_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_vcard_EXTADD_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_EXTADD_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_POBOX_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_POBOX_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_POBOX(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_POBOX_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"POBOX">>, _attrs, _els}.
-
-decode_vcard_POBOX_cdata(__TopXMLNS, <<>>) -> undefined;
-decode_vcard_POBOX_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_POBOX_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_SUFFIX_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_SUFFIX_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_SUFFIX(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_SUFFIX_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"SUFFIX">>, _attrs, _els}.
-
-decode_vcard_SUFFIX_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_vcard_SUFFIX_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_SUFFIX_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_PREFIX_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_PREFIX_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_PREFIX(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_PREFIX_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"PREFIX">>, _attrs, _els}.
-
-decode_vcard_PREFIX_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_vcard_PREFIX_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_PREFIX_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_MIDDLE_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_MIDDLE_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_MIDDLE(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_MIDDLE_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"MIDDLE">>, _attrs, _els}.
-
-decode_vcard_MIDDLE_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_vcard_MIDDLE_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_MIDDLE_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_GIVEN_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_GIVEN_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_GIVEN(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_GIVEN_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"GIVEN">>, _attrs, _els}.
-
-decode_vcard_GIVEN_cdata(__TopXMLNS, <<>>) -> undefined;
-decode_vcard_GIVEN_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_GIVEN_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_vcard_FAMILY_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_vcard_FAMILY_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_vcard_FAMILY(Cdata, _xmlns_attrs) ->
- _els = encode_vcard_FAMILY_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"FAMILY">>, _attrs, _els}.
-
-decode_vcard_FAMILY_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_vcard_FAMILY_cdata(__TopXMLNS, _val) -> _val.
-
-encode_vcard_FAMILY_cdata(undefined, _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, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"X400">>, _attrs, _els}.
-
-decode_vcard_INTERNET(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"INTERNET">>, _attrs, _els}) ->
- true.
-
-encode_vcard_INTERNET(true, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"INTERNET">>, _attrs, _els}.
-
-decode_vcard_PREF(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"PREF">>, _attrs, _els}) ->
- true.
-
-encode_vcard_PREF(true, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"PREF">>, _attrs, _els}.
-
-decode_vcard_INTL(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"INTL">>, _attrs, _els}) ->
- true.
-
-encode_vcard_INTL(true, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"INTL">>, _attrs, _els}.
-
-decode_vcard_DOM(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"DOM">>, _attrs, _els}) ->
- true.
-
-encode_vcard_DOM(true, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"DOM">>, _attrs, _els}.
-
-decode_vcard_PARCEL(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"PARCEL">>, _attrs, _els}) ->
- true.
-
-encode_vcard_PARCEL(true, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"PARCEL">>, _attrs, _els}.
-
-decode_vcard_POSTAL(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"POSTAL">>, _attrs, _els}) ->
- true.
-
-encode_vcard_POSTAL(true, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"POSTAL">>, _attrs, _els}.
-
-decode_vcard_PCS(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"PCS">>, _attrs, _els}) ->
- true.
-
-encode_vcard_PCS(true, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"PCS">>, _attrs, _els}.
-
-decode_vcard_ISDN(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"ISDN">>, _attrs, _els}) ->
- true.
-
-encode_vcard_ISDN(true, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"ISDN">>, _attrs, _els}.
-
-decode_vcard_MODEM(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"MODEM">>, _attrs, _els}) ->
- true.
-
-encode_vcard_MODEM(true, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"MODEM">>, _attrs, _els}.
-
-decode_vcard_BBS(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"BBS">>, _attrs, _els}) ->
- true.
-
-encode_vcard_BBS(true, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"BBS">>, _attrs, _els}.
-
-decode_vcard_VIDEO(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"VIDEO">>, _attrs, _els}) ->
- true.
-
-encode_vcard_VIDEO(true, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"VIDEO">>, _attrs, _els}.
-
-decode_vcard_CELL(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"CELL">>, _attrs, _els}) ->
- true.
-
-encode_vcard_CELL(true, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"CELL">>, _attrs, _els}.
-
-decode_vcard_MSG(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"MSG">>, _attrs, _els}) ->
- true.
-
-encode_vcard_MSG(true, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"MSG">>, _attrs, _els}.
-
-decode_vcard_PAGER(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"PAGER">>, _attrs, _els}) ->
- true.
-
-encode_vcard_PAGER(true, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"PAGER">>, _attrs, _els}.
-
-decode_vcard_FAX(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"FAX">>, _attrs, _els}) ->
- true.
-
-encode_vcard_FAX(true, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"FAX">>, _attrs, _els}.
-
-decode_vcard_VOICE(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"VOICE">>, _attrs, _els}) ->
- true.
-
-encode_vcard_VOICE(true, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"VOICE">>, _attrs, _els}.
-
-decode_vcard_WORK(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"WORK">>, _attrs, _els}) ->
- true.
-
-encode_vcard_WORK(true, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"WORK">>, _attrs, _els}.
-
-decode_vcard_HOME(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"HOME">>, _attrs, _els}) ->
- true.
-
-encode_vcard_HOME(true, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-streams">> ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- decode_stream_error_text(_xmlns, __IgnoreEls,
- _el),
- Reason);
- true ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_stream_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"bad-format">>, _attrs, _} = _el | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-streams">> ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_stream_error_bad_format(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-streams">> ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_stream_error_bad_namespace_prefix(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_stream_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"conflict">>, _attrs, _} = _el | _els], Text,
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-streams">> ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_stream_error_conflict(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_stream_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"connection-timeout">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-streams">> ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_stream_error_connection_timeout(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_stream_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"host-gone">>, _attrs, _} = _el | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-streams">> ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_stream_error_host_gone(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_stream_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"host-unknown">>, _attrs, _} = _el | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-streams">> ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_stream_error_host_unknown(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_stream_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"improper-addressing">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-streams">> ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_stream_error_improper_addressing(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-streams">> ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_stream_error_internal_server_error(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_stream_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"invalid-from">>, _attrs, _} = _el | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-streams">> ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_stream_error_invalid_from(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_stream_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"invalid-id">>, _attrs, _} = _el | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-streams">> ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_stream_error_invalid_id(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_stream_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"invalid-namespace">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-streams">> ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_stream_error_invalid_namespace(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_stream_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"invalid-xml">>, _attrs, _} = _el | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-streams">> ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_stream_error_invalid_xml(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_stream_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"not-authorized">>, _attrs, _} = _el | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-streams">> ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_stream_error_not_authorized(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-streams">> ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_stream_error_not_well_formed(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_stream_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"policy-violation">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-streams">> ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_stream_error_policy_violation(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-streams">> ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_stream_error_remote_connection_failed(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_stream_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"reset">>, _attrs, _} = _el | _els], Text,
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-streams">> ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_stream_error_reset(_xmlns,
- __IgnoreEls, _el));
- true ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_stream_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"resource-constraint">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-streams">> ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_stream_error_resource_constraint(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_stream_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"restricted-xml">>, _attrs, _} = _el | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-streams">> ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_stream_error_restricted_xml(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-streams">> ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_stream_error_see_other_host(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_stream_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"system-shutdown">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-streams">> ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_stream_error_system_shutdown(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_stream_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"undefined-condition">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-streams">> ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_stream_error_undefined_condition(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_stream_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"unsupported-encoding">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-streams">> ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_stream_error_unsupported_encoding(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-streams">> ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_stream_error_unsupported_stanza_type(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_stream_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"unsupported-version">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-streams">> ->
- decode_stream_error_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_stream_error_unsupported_version(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- 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},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_stream_error_$text'(Text,
- 'encode_stream_error_$reason'(Reason,
- []))),
- _attrs = _xmlns_attrs,
- {xmlel, <<"stream:error">>, _attrs, _els}.
-
-'encode_stream_error_$text'(undefined, _acc) -> _acc;
-'encode_stream_error_$text'(Text, _acc) ->
- [encode_stream_error_text(Text,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>}])
- | _acc].
-
-'encode_stream_error_$reason'(undefined, _acc) -> _acc;
-'encode_stream_error_$reason'('bad-format' = Reason,
- _acc) ->
- [encode_stream_error_bad_format(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>}])
- | _acc];
-'encode_stream_error_$reason'('bad-namespace-prefix' =
- Reason,
- _acc) ->
- [encode_stream_error_bad_namespace_prefix(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>}])
- | _acc];
-'encode_stream_error_$reason'(conflict = Reason,
- _acc) ->
- [encode_stream_error_conflict(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>}])
- | _acc];
-'encode_stream_error_$reason'('connection-timeout' =
- Reason,
- _acc) ->
- [encode_stream_error_connection_timeout(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>}])
- | _acc];
-'encode_stream_error_$reason'('host-gone' = Reason,
- _acc) ->
- [encode_stream_error_host_gone(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>}])
- | _acc];
-'encode_stream_error_$reason'('host-unknown' = Reason,
- _acc) ->
- [encode_stream_error_host_unknown(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>}])
- | _acc];
-'encode_stream_error_$reason'('improper-addressing' =
- Reason,
- _acc) ->
- [encode_stream_error_improper_addressing(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>}])
- | _acc];
-'encode_stream_error_$reason'('internal-server-error' =
- Reason,
- _acc) ->
- [encode_stream_error_internal_server_error(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>}])
- | _acc];
-'encode_stream_error_$reason'('invalid-from' = Reason,
- _acc) ->
- [encode_stream_error_invalid_from(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>}])
- | _acc];
-'encode_stream_error_$reason'('invalid-id' = Reason,
- _acc) ->
- [encode_stream_error_invalid_id(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>}])
- | _acc];
-'encode_stream_error_$reason'('invalid-namespace' =
- Reason,
- _acc) ->
- [encode_stream_error_invalid_namespace(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>}])
- | _acc];
-'encode_stream_error_$reason'('invalid-xml' = Reason,
- _acc) ->
- [encode_stream_error_invalid_xml(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>}])
- | _acc];
-'encode_stream_error_$reason'('not-authorized' = Reason,
- _acc) ->
- [encode_stream_error_not_authorized(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>}])
- | _acc];
-'encode_stream_error_$reason'('not-well-formed' =
- Reason,
- _acc) ->
- [encode_stream_error_not_well_formed(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>}])
- | _acc];
-'encode_stream_error_$reason'('policy-violation' =
- Reason,
- _acc) ->
- [encode_stream_error_policy_violation(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>}])
- | _acc];
-'encode_stream_error_$reason'('remote-connection-failed' =
- Reason,
- _acc) ->
- [encode_stream_error_remote_connection_failed(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>}])
- | _acc];
-'encode_stream_error_$reason'(reset = Reason, _acc) ->
- [encode_stream_error_reset(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>}])
- | _acc];
-'encode_stream_error_$reason'('resource-constraint' =
- Reason,
- _acc) ->
- [encode_stream_error_resource_constraint(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>}])
- | _acc];
-'encode_stream_error_$reason'('restricted-xml' = Reason,
- _acc) ->
- [encode_stream_error_restricted_xml(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>}])
- | _acc];
-'encode_stream_error_$reason'({'see-other-host', _} =
- Reason,
- _acc) ->
- [encode_stream_error_see_other_host(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>}])
- | _acc];
-'encode_stream_error_$reason'('system-shutdown' =
- Reason,
- _acc) ->
- [encode_stream_error_system_shutdown(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>}])
- | _acc];
-'encode_stream_error_$reason'('undefined-condition' =
- Reason,
- _acc) ->
- [encode_stream_error_undefined_condition(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>}])
- | _acc];
-'encode_stream_error_$reason'('unsupported-encoding' =
- Reason,
- _acc) ->
- [encode_stream_error_unsupported_encoding(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>}])
- | _acc];
-'encode_stream_error_$reason'('unsupported-stanza-type' =
- Reason,
- _acc) ->
- [encode_stream_error_unsupported_stanza_type(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>}])
- | _acc];
-'encode_stream_error_$reason'('unsupported-version' =
- Reason,
- _acc) ->
- [encode_stream_error_unsupported_version(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-streams">>}])
- | _acc].
-
-decode_stream_error_unsupported_version(__TopXMLNS,
- __IgnoreEls,
- {xmlel, <<"unsupported-version">>,
- _attrs, _els}) ->
- 'unsupported-version'.
-
-encode_stream_error_unsupported_version('unsupported-version',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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,
- <<Host/binary, _data/binary>>);
-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},
- _xmlns_attrs) ->
- _els = encode_stream_error_see_other_host_cdata(Host,
- []),
- _attrs = _xmlns_attrs,
- {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) ->
- _val.
-
-encode_stream_error_see_other_host_cdata(_val, _acc) ->
- [{xmlcdata, _val} | _acc].
-
-decode_stream_error_restricted_xml(__TopXMLNS,
- __IgnoreEls,
- {xmlel, <<"restricted-xml">>, _attrs,
- _els}) ->
- 'restricted-xml'.
-
-encode_stream_error_restricted_xml('restricted-xml',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"resource-constraint">>, _attrs, _els}.
-
-decode_stream_error_reset(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"reset">>, _attrs, _els}) ->
- reset.
-
-encode_stream_error_reset(reset, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"connection-timeout">>, _attrs, _els}.
-
-decode_stream_error_conflict(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"conflict">>, _attrs, _els}) ->
- conflict.
-
-encode_stream_error_conflict(conflict, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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, <<Data/binary, _data/binary>>);
-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},
- _xmlns_attrs) ->
- _els = encode_stream_error_text_cdata(Data, []),
- _attrs = 'encode_stream_error_text_attr_xml:lang'(Lang,
- _xmlns_attrs),
- {xmlel, <<"text">>, _attrs, _els}.
-
-'decode_stream_error_text_attr_xml:lang'(__TopXMLNS,
- undefined) ->
- undefined;
-'decode_stream_error_text_attr_xml:lang'(__TopXMLNS,
- _val) ->
- _val.
-
-'encode_stream_error_text_attr_xml:lang'(undefined,
- _acc) ->
- _acc;
-'encode_stream_error_text_attr_xml:lang'(_val, _acc) ->
- [{<<"xml:lang">>, _val} | _acc].
-
-decode_stream_error_text_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_stream_error_text_cdata(__TopXMLNS, _val) ->
- _val.
-
-encode_stream_error_text_cdata(undefined, _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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_time_els(__TopXMLNS, __IgnoreEls, _els, Utc,
- decode_time_tzo(__TopXMLNS, __IgnoreEls, _el));
- true ->
- decode_time_els(__TopXMLNS, __IgnoreEls, _els, Utc, Tzo)
- end;
-decode_time_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"utc">>, _attrs, _} = _el | _els], Utc,
- Tzo) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_time_els(__TopXMLNS, __IgnoreEls, _els,
- decode_time_utc(__TopXMLNS, __IgnoreEls, _el), Tzo);
- true ->
- 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}, _xmlns_attrs) ->
- _els = lists:reverse('encode_time_$utc'(Utc,
- 'encode_time_$tzo'(Tzo, []))),
- _attrs = _xmlns_attrs,
- {xmlel, <<"time">>, _attrs, _els}.
-
-'encode_time_$utc'(undefined, _acc) -> _acc;
-'encode_time_$utc'(Utc, _acc) ->
- [encode_time_utc(Utc, []) | _acc].
-
-'encode_time_$tzo'(undefined, _acc) -> _acc;
-'encode_time_$tzo'(Tzo, _acc) ->
- [encode_time_tzo(Tzo, []) | _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,
- <<Cdata/binary, _data/binary>>);
-decode_time_tzo_els(__TopXMLNS, __IgnoreEls, [_ | _els],
- Cdata) ->
- decode_time_tzo_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_time_tzo(Cdata, _xmlns_attrs) ->
- _els = encode_time_tzo_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {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,
- <<Cdata/binary, _data/binary>>);
-decode_time_utc_els(__TopXMLNS, __IgnoreEls, [_ | _els],
- Cdata) ->
- decode_time_utc_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_time_utc(Cdata, _xmlns_attrs) ->
- _els = encode_time_utc_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {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}, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"ping">>, _attrs, _els}.
-
-decode_session(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"session">>, _attrs, _els}) ->
- {session}.
-
-encode_session({session}, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"session">>, _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} =
- 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}.
-
-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) ->
- {Zip, Xdata, Misc, Address, Instructions, Text, Last,
- First, Password, Registered, Date, Phone, State, Name,
- Username, Remove, Key, City, Nick, Url, Email};
-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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<"jabber:x:data">> ->
- decode_register_els(__TopXMLNS, __IgnoreEls, _els, Zip,
- decode_xdata(_xmlns, __IgnoreEls, _el), Misc,
- Address, Instructions, Text, Last, First,
- Password, Registered, Date, Phone, State, Name,
- Username, Remove, Key, City, Nick, Url, Email);
- 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)
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- 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)
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- 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)
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- 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)
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- 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)
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- 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)
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- 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)
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- 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)
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- 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)
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- 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)
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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));
- 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)
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- 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)
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- 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)
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- 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)
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- 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)
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- 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)
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- 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)
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- 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)
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- 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)
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- 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)
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- 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);
- 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)
- 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) ->
- 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).
-
-encode_register({register, Registered, Remove,
- Instructions, Username, Nick, Password, Name, First,
- Last, Email, Address, City, State, Zip, Phone, Url,
- Date, Misc, Text, Key, Xdata},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_register_$zip'(Zip,
- 'encode_register_$xdata'(Xdata,
- 'encode_register_$misc'(Misc,
- 'encode_register_$address'(Address,
- 'encode_register_$instructions'(Instructions,
- 'encode_register_$text'(Text,
- 'encode_register_$last'(Last,
- 'encode_register_$first'(First,
- 'encode_register_$password'(Password,
- 'encode_register_$registered'(Registered,
- 'encode_register_$date'(Date,
- 'encode_register_$phone'(Phone,
- 'encode_register_$state'(State,
- 'encode_register_$name'(Name,
- 'encode_register_$username'(Username,
- 'encode_register_$remove'(Remove,
- 'encode_register_$key'(Key,
- 'encode_register_$city'(City,
- 'encode_register_$nick'(Nick,
- 'encode_register_$url'(Url,
- 'encode_register_$email'(Email,
- [])))))))))))))))))))))),
- _attrs = _xmlns_attrs,
- {xmlel, <<"query">>, _attrs, _els}.
-
-'encode_register_$zip'(undefined, _acc) -> _acc;
-'encode_register_$zip'(Zip, _acc) ->
- [encode_register_zip(Zip, []) | _acc].
-
-'encode_register_$xdata'(undefined, _acc) -> _acc;
-'encode_register_$xdata'(Xdata, _acc) ->
- [encode_xdata(Xdata,
- [{<<"xmlns">>, <<"jabber:x:data">>}])
- | _acc].
-
-'encode_register_$misc'(undefined, _acc) -> _acc;
-'encode_register_$misc'(Misc, _acc) ->
- [encode_register_misc(Misc, []) | _acc].
-
-'encode_register_$address'(undefined, _acc) -> _acc;
-'encode_register_$address'(Address, _acc) ->
- [encode_register_address(Address, []) | _acc].
-
-'encode_register_$instructions'(undefined, _acc) ->
- _acc;
-'encode_register_$instructions'(Instructions, _acc) ->
- [encode_register_instructions(Instructions, []) | _acc].
-
-'encode_register_$text'(undefined, _acc) -> _acc;
-'encode_register_$text'(Text, _acc) ->
- [encode_register_text(Text, []) | _acc].
-
-'encode_register_$last'(undefined, _acc) -> _acc;
-'encode_register_$last'(Last, _acc) ->
- [encode_register_last(Last, []) | _acc].
-
-'encode_register_$first'(undefined, _acc) -> _acc;
-'encode_register_$first'(First, _acc) ->
- [encode_register_first(First, []) | _acc].
-
-'encode_register_$password'(undefined, _acc) -> _acc;
-'encode_register_$password'(Password, _acc) ->
- [encode_register_password(Password, []) | _acc].
-
-'encode_register_$registered'(false, _acc) -> _acc;
-'encode_register_$registered'(Registered, _acc) ->
- [encode_register_registered(Registered, []) | _acc].
-
-'encode_register_$date'(undefined, _acc) -> _acc;
-'encode_register_$date'(Date, _acc) ->
- [encode_register_date(Date, []) | _acc].
-
-'encode_register_$phone'(undefined, _acc) -> _acc;
-'encode_register_$phone'(Phone, _acc) ->
- [encode_register_phone(Phone, []) | _acc].
-
-'encode_register_$state'(undefined, _acc) -> _acc;
-'encode_register_$state'(State, _acc) ->
- [encode_register_state(State, []) | _acc].
-
-'encode_register_$name'(undefined, _acc) -> _acc;
-'encode_register_$name'(Name, _acc) ->
- [encode_register_name(Name, []) | _acc].
-
-'encode_register_$username'(undefined, _acc) -> _acc;
-'encode_register_$username'(Username, _acc) ->
- [encode_register_username(Username, []) | _acc].
-
-'encode_register_$remove'(false, _acc) -> _acc;
-'encode_register_$remove'(Remove, _acc) ->
- [encode_register_remove(Remove, []) | _acc].
-
-'encode_register_$key'(undefined, _acc) -> _acc;
-'encode_register_$key'(Key, _acc) ->
- [encode_register_key(Key, []) | _acc].
-
-'encode_register_$city'(undefined, _acc) -> _acc;
-'encode_register_$city'(City, _acc) ->
- [encode_register_city(City, []) | _acc].
-
-'encode_register_$nick'(undefined, _acc) -> _acc;
-'encode_register_$nick'(Nick, _acc) ->
- [encode_register_nick(Nick, []) | _acc].
-
-'encode_register_$url'(undefined, _acc) -> _acc;
-'encode_register_$url'(Url, _acc) ->
- [encode_register_url(Url, []) | _acc].
-
-'encode_register_$email'(undefined, _acc) -> _acc;
-'encode_register_$email'(Email, _acc) ->
- [encode_register_email(Email, []) | _acc].
-
-decode_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,
- <<Cdata/binary, _data/binary>>);
-decode_register_key_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_register_key_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_register_key(Cdata, _xmlns_attrs) ->
- _els = encode_register_key_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"key">>, _attrs, _els}.
-
-decode_register_key_cdata(__TopXMLNS, <<>>) -> none;
-decode_register_key_cdata(__TopXMLNS, _val) -> _val.
-
-encode_register_key_cdata(none, _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,
- <<Cdata/binary, _data/binary>>);
-decode_register_text_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_register_text_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_register_text(Cdata, _xmlns_attrs) ->
- _els = encode_register_text_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"text">>, _attrs, _els}.
-
-decode_register_text_cdata(__TopXMLNS, <<>>) -> none;
-decode_register_text_cdata(__TopXMLNS, _val) -> _val.
-
-encode_register_text_cdata(none, _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,
- <<Cdata/binary, _data/binary>>);
-decode_register_misc_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_register_misc_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_register_misc(Cdata, _xmlns_attrs) ->
- _els = encode_register_misc_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"misc">>, _attrs, _els}.
-
-decode_register_misc_cdata(__TopXMLNS, <<>>) -> none;
-decode_register_misc_cdata(__TopXMLNS, _val) -> _val.
-
-encode_register_misc_cdata(none, _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,
- <<Cdata/binary, _data/binary>>);
-decode_register_date_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_register_date_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_register_date(Cdata, _xmlns_attrs) ->
- _els = encode_register_date_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"date">>, _attrs, _els}.
-
-decode_register_date_cdata(__TopXMLNS, <<>>) -> none;
-decode_register_date_cdata(__TopXMLNS, _val) -> _val.
-
-encode_register_date_cdata(none, _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,
- <<Cdata/binary, _data/binary>>);
-decode_register_url_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_register_url_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_register_url(Cdata, _xmlns_attrs) ->
- _els = encode_register_url_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"url">>, _attrs, _els}.
-
-decode_register_url_cdata(__TopXMLNS, <<>>) -> none;
-decode_register_url_cdata(__TopXMLNS, _val) -> _val.
-
-encode_register_url_cdata(none, _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,
- <<Cdata/binary, _data/binary>>);
-decode_register_phone_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_register_phone_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_register_phone(Cdata, _xmlns_attrs) ->
- _els = encode_register_phone_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"phone">>, _attrs, _els}.
-
-decode_register_phone_cdata(__TopXMLNS, <<>>) -> none;
-decode_register_phone_cdata(__TopXMLNS, _val) -> _val.
-
-encode_register_phone_cdata(none, _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,
- <<Cdata/binary, _data/binary>>);
-decode_register_zip_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_register_zip_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_register_zip(Cdata, _xmlns_attrs) ->
- _els = encode_register_zip_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"zip">>, _attrs, _els}.
-
-decode_register_zip_cdata(__TopXMLNS, <<>>) -> none;
-decode_register_zip_cdata(__TopXMLNS, _val) -> _val.
-
-encode_register_zip_cdata(none, _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,
- <<Cdata/binary, _data/binary>>);
-decode_register_state_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_register_state_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_register_state(Cdata, _xmlns_attrs) ->
- _els = encode_register_state_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"state">>, _attrs, _els}.
-
-decode_register_state_cdata(__TopXMLNS, <<>>) -> none;
-decode_register_state_cdata(__TopXMLNS, _val) -> _val.
-
-encode_register_state_cdata(none, _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,
- <<Cdata/binary, _data/binary>>);
-decode_register_city_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_register_city_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_register_city(Cdata, _xmlns_attrs) ->
- _els = encode_register_city_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"city">>, _attrs, _els}.
-
-decode_register_city_cdata(__TopXMLNS, <<>>) -> none;
-decode_register_city_cdata(__TopXMLNS, _val) -> _val.
-
-encode_register_city_cdata(none, _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, <<Cdata/binary, _data/binary>>);
-decode_register_address_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_register_address_els(__TopXMLNS, __IgnoreEls,
- _els, Cdata).
-
-encode_register_address(Cdata, _xmlns_attrs) ->
- _els = encode_register_address_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"address">>, _attrs, _els}.
-
-decode_register_address_cdata(__TopXMLNS, <<>>) -> none;
-decode_register_address_cdata(__TopXMLNS, _val) -> _val.
-
-encode_register_address_cdata(none, _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,
- <<Cdata/binary, _data/binary>>);
-decode_register_email_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_register_email_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_register_email(Cdata, _xmlns_attrs) ->
- _els = encode_register_email_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"email">>, _attrs, _els}.
-
-decode_register_email_cdata(__TopXMLNS, <<>>) -> none;
-decode_register_email_cdata(__TopXMLNS, _val) -> _val.
-
-encode_register_email_cdata(none, _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,
- <<Cdata/binary, _data/binary>>);
-decode_register_last_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_register_last_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_register_last(Cdata, _xmlns_attrs) ->
- _els = encode_register_last_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"last">>, _attrs, _els}.
-
-decode_register_last_cdata(__TopXMLNS, <<>>) -> none;
-decode_register_last_cdata(__TopXMLNS, _val) -> _val.
-
-encode_register_last_cdata(none, _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,
- <<Cdata/binary, _data/binary>>);
-decode_register_first_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_register_first_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_register_first(Cdata, _xmlns_attrs) ->
- _els = encode_register_first_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"first">>, _attrs, _els}.
-
-decode_register_first_cdata(__TopXMLNS, <<>>) -> none;
-decode_register_first_cdata(__TopXMLNS, _val) -> _val.
-
-encode_register_first_cdata(none, _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,
- <<Cdata/binary, _data/binary>>);
-decode_register_name_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_register_name_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_register_name(Cdata, _xmlns_attrs) ->
- _els = encode_register_name_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"name">>, _attrs, _els}.
-
-decode_register_name_cdata(__TopXMLNS, <<>>) -> none;
-decode_register_name_cdata(__TopXMLNS, _val) -> _val.
-
-encode_register_name_cdata(none, _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, <<Cdata/binary, _data/binary>>);
-decode_register_password_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_register_password_els(__TopXMLNS, __IgnoreEls,
- _els, Cdata).
-
-encode_register_password(Cdata, _xmlns_attrs) ->
- _els = encode_register_password_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"password">>, _attrs, _els}.
-
-decode_register_password_cdata(__TopXMLNS, <<>>) ->
- none;
-decode_register_password_cdata(__TopXMLNS, _val) ->
- _val.
-
-encode_register_password_cdata(none, _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,
- <<Cdata/binary, _data/binary>>);
-decode_register_nick_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_register_nick_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_register_nick(Cdata, _xmlns_attrs) ->
- _els = encode_register_nick_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"nick">>, _attrs, _els}.
-
-decode_register_nick_cdata(__TopXMLNS, <<>>) -> none;
-decode_register_nick_cdata(__TopXMLNS, _val) -> _val.
-
-encode_register_nick_cdata(none, _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, <<Cdata/binary, _data/binary>>);
-decode_register_username_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_register_username_els(__TopXMLNS, __IgnoreEls,
- _els, Cdata).
-
-encode_register_username(Cdata, _xmlns_attrs) ->
- _els = encode_register_username_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"username">>, _attrs, _els}.
-
-decode_register_username_cdata(__TopXMLNS, <<>>) ->
- none;
-decode_register_username_cdata(__TopXMLNS, _val) ->
- _val.
-
-encode_register_username_cdata(none, _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,
- <<Cdata/binary, _data/binary>>);
-decode_register_instructions_els(__TopXMLNS,
- __IgnoreEls, [_ | _els], Cdata) ->
- decode_register_instructions_els(__TopXMLNS,
- __IgnoreEls, _els, Cdata).
-
-encode_register_instructions(Cdata, _xmlns_attrs) ->
- _els = encode_register_instructions_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"instructions">>, _attrs, _els}.
-
-decode_register_instructions_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_register_instructions_cdata(__TopXMLNS, _val) ->
- _val.
-
-encode_register_instructions_cdata(undefined, _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, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"remove">>, _attrs, _els}.
-
-decode_register_registered(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"registered">>, _attrs, _els}) ->
- true.
-
-encode_register_registered(true, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"registered">>, _attrs, _els}.
-
-decode_feature_register(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"register">>, _attrs, _els}) ->
- {feature_register}.
-
-encode_feature_register({feature_register},
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"register">>, _attrs, _els}.
-
-decode_caps(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"c">>, _attrs, _els}) ->
- {Hash, Node, Ver} = decode_caps_attrs(__TopXMLNS,
- _attrs, undefined, undefined,
- undefined),
- {caps, Hash, Node, Ver}.
-
-decode_caps_attrs(__TopXMLNS,
- [{<<"hash">>, _val} | _attrs], _Hash, Node, Ver) ->
- decode_caps_attrs(__TopXMLNS, _attrs, _val, Node, Ver);
-decode_caps_attrs(__TopXMLNS,
- [{<<"node">>, _val} | _attrs], Hash, _Node, Ver) ->
- decode_caps_attrs(__TopXMLNS, _attrs, Hash, _val, Ver);
-decode_caps_attrs(__TopXMLNS,
- [{<<"ver">>, _val} | _attrs], Hash, Node, _Ver) ->
- decode_caps_attrs(__TopXMLNS, _attrs, Hash, Node, _val);
-decode_caps_attrs(__TopXMLNS, [_ | _attrs], Hash, Node,
- Ver) ->
- decode_caps_attrs(__TopXMLNS, _attrs, Hash, Node, Ver);
-decode_caps_attrs(__TopXMLNS, [], Hash, Node, Ver) ->
- {decode_caps_attr_hash(__TopXMLNS, Hash),
- decode_caps_attr_node(__TopXMLNS, Node),
- decode_caps_attr_ver(__TopXMLNS, Ver)}.
-
-encode_caps({caps, Hash, Node, Ver}, _xmlns_attrs) ->
- _els = [],
- _attrs = encode_caps_attr_ver(Ver,
- encode_caps_attr_node(Node,
- encode_caps_attr_hash(Hash,
- _xmlns_attrs))),
- {xmlel, <<"c">>, _attrs, _els}.
-
-decode_caps_attr_hash(__TopXMLNS, undefined) ->
- undefined;
-decode_caps_attr_hash(__TopXMLNS, _val) -> _val.
-
-encode_caps_attr_hash(undefined, _acc) -> _acc;
-encode_caps_attr_hash(_val, _acc) ->
- [{<<"hash">>, _val} | _acc].
-
-decode_caps_attr_node(__TopXMLNS, undefined) ->
- undefined;
-decode_caps_attr_node(__TopXMLNS, _val) -> _val.
-
-encode_caps_attr_node(undefined, _acc) -> _acc;
-encode_caps_attr_node(_val, _acc) ->
- [{<<"node">>, _val} | _acc].
-
-decode_caps_attr_ver(__TopXMLNS, undefined) ->
- undefined;
-decode_caps_attr_ver(__TopXMLNS, _val) ->
- case catch base64:decode(_val) of
- {'EXIT', _} ->
- erlang:error({xmpp_codec,
- {bad_attr_value, <<"ver">>, <<"c">>, __TopXMLNS}});
- _res -> _res
- end.
-
-encode_caps_attr_ver(undefined, _acc) -> _acc;
-encode_caps_attr_ver(_val, _acc) ->
- [{<<"ver">>, base64:encode(_val)} | _acc].
-
-decode_p1_ack(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"ack">>, _attrs, _els}) ->
- {p1_ack}.
-
-encode_p1_ack({p1_ack}, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"ack">>, _attrs, _els}.
-
-decode_p1_rebind(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"rebind">>, _attrs, _els}) ->
- {p1_rebind}.
-
-encode_p1_rebind({p1_rebind}, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"rebind">>, _attrs, _els}.
-
-decode_p1_push(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"push">>, _attrs, _els}) ->
- {p1_push}.
-
-encode_p1_push({p1_push}, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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) of
- true ->
- decode_stream_features_els(__TopXMLNS, __IgnoreEls,
- _els, [decode(_el) | __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},
- _xmlns_attrs) ->
- _els = [encode(_el) || _el <- __Els],
- _attrs = _xmlns_attrs,
- {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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_compression_els(__TopXMLNS, __IgnoreEls, _els,
- case decode_compression_method(__TopXMLNS,
- __IgnoreEls,
- _el)
- of
- undefined -> Methods;
- _new_el -> [_new_el | Methods]
- end);
- true ->
- 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},
- _xmlns_attrs) ->
- _els =
- lists:reverse('encode_compression_$methods'(Methods,
- [])),
- _attrs = _xmlns_attrs,
- {xmlel, <<"compression">>, _attrs, _els}.
-
-'encode_compression_$methods'([], _acc) -> _acc;
-'encode_compression_$methods'([Methods | _els], _acc) ->
- 'encode_compression_$methods'(_els,
- [encode_compression_method(Methods, [])
- | _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, <<Cdata/binary, _data/binary>>);
-decode_compression_method_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_compression_method_els(__TopXMLNS, __IgnoreEls,
- _els, Cdata).
-
-encode_compression_method(Cdata, _xmlns_attrs) ->
- _els = encode_compression_method_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"method">>, _attrs, _els}.
-
-decode_compression_method_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_compression_method_cdata(__TopXMLNS, _val) ->
- _val.
-
-encode_compression_method_cdata(undefined, _acc) ->
- _acc;
-encode_compression_method_cdata(_val, _acc) ->
- [{xmlcdata, _val} | _acc].
-
-decode_compressed(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"compressed">>, _attrs, _els}) ->
- {compressed}.
-
-encode_compressed({compressed}, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_compress_els(__TopXMLNS, __IgnoreEls, _els,
- case decode_compress_method(__TopXMLNS,
- __IgnoreEls, _el)
- of
- undefined -> Methods;
- _new_el -> [_new_el | Methods]
- end);
- true ->
- 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}, _xmlns_attrs) ->
- _els = lists:reverse('encode_compress_$methods'(Methods,
- [])),
- _attrs = _xmlns_attrs,
- {xmlel, <<"compress">>, _attrs, _els}.
-
-'encode_compress_$methods'([], _acc) -> _acc;
-'encode_compress_$methods'([Methods | _els], _acc) ->
- 'encode_compress_$methods'(_els,
- [encode_compress_method(Methods, []) | _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, <<Cdata/binary, _data/binary>>);
-decode_compress_method_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_compress_method_els(__TopXMLNS, __IgnoreEls,
- _els, Cdata).
-
-encode_compress_method(Cdata, _xmlns_attrs) ->
- _els = encode_compress_method_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"method">>, _attrs, _els}.
-
-decode_compress_method_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_compress_method_cdata(__TopXMLNS, _val) -> _val.
-
-encode_compress_method_cdata(undefined, _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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_compress_failure_els(__TopXMLNS, __IgnoreEls,
- _els,
- decode_compress_failure_setup_failed(__TopXMLNS,
- __IgnoreEls,
- _el));
- true ->
- decode_compress_failure_els(__TopXMLNS, __IgnoreEls,
- _els, Reason)
- end;
-decode_compress_failure_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"processing-failed">>, _attrs, _} = _el
- | _els],
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_compress_failure_els(__TopXMLNS, __IgnoreEls,
- _els,
- decode_compress_failure_processing_failed(__TopXMLNS,
- __IgnoreEls,
- _el));
- true ->
- decode_compress_failure_els(__TopXMLNS, __IgnoreEls,
- _els, Reason)
- end;
-decode_compress_failure_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"unsupported-method">>, _attrs, _} = _el
- | _els],
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_compress_failure_els(__TopXMLNS, __IgnoreEls,
- _els,
- decode_compress_failure_unsupported_method(__TopXMLNS,
- __IgnoreEls,
- _el));
- true ->
- 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},
- _xmlns_attrs) ->
- _els =
- lists:reverse('encode_compress_failure_$reason'(Reason,
- [])),
- _attrs = _xmlns_attrs,
- {xmlel, <<"failure">>, _attrs, _els}.
-
-'encode_compress_failure_$reason'(undefined, _acc) ->
- _acc;
-'encode_compress_failure_$reason'('setup-failed' =
- Reason,
- _acc) ->
- [encode_compress_failure_setup_failed(Reason, [])
- | _acc];
-'encode_compress_failure_$reason'('processing-failed' =
- Reason,
- _acc) ->
- [encode_compress_failure_processing_failed(Reason, [])
- | _acc];
-'encode_compress_failure_$reason'('unsupported-method' =
- Reason,
- _acc) ->
- [encode_compress_failure_unsupported_method(Reason, [])
- | _acc].
-
-decode_compress_failure_unsupported_method(__TopXMLNS,
- __IgnoreEls,
- {xmlel, <<"unsupported-method">>,
- _attrs, _els}) ->
- 'unsupported-method'.
-
-encode_compress_failure_unsupported_method('unsupported-method',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"setup-failed">>, _attrs, _els}.
-
-decode_starttls_failure(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"failure">>, _attrs, _els}) ->
- {starttls_failure}.
-
-encode_starttls_failure({starttls_failure},
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"failure">>, _attrs, _els}.
-
-decode_starttls_proceed(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"proceed">>, _attrs, _els}) ->
- {starttls_proceed}.
-
-encode_starttls_proceed({starttls_proceed},
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_starttls_els(__TopXMLNS, __IgnoreEls, _els,
- decode_starttls_required(__TopXMLNS, __IgnoreEls,
- _el));
- true ->
- 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}, _xmlns_attrs) ->
- _els =
- lists:reverse('encode_starttls_$required'(Required,
- [])),
- _attrs = _xmlns_attrs,
- {xmlel, <<"starttls">>, _attrs, _els}.
-
-'encode_starttls_$required'(false, _acc) -> _acc;
-'encode_starttls_$required'(Required, _acc) ->
- [encode_starttls_required(Required, []) | _acc].
-
-decode_starttls_required(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"required">>, _attrs, _els}) ->
- true.
-
-encode_starttls_required(true, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_sasl_mechanisms_els(__TopXMLNS, __IgnoreEls,
- _els,
- case decode_sasl_mechanism(__TopXMLNS,
- __IgnoreEls,
- _el)
- of
- undefined -> List;
- _new_el -> [_new_el | List]
- end);
- true ->
- 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},
- _xmlns_attrs) ->
- _els =
- lists:reverse('encode_sasl_mechanisms_$list'(List, [])),
- _attrs = _xmlns_attrs,
- {xmlel, <<"mechanisms">>, _attrs, _els}.
-
-'encode_sasl_mechanisms_$list'([], _acc) -> _acc;
-'encode_sasl_mechanisms_$list'([List | _els], _acc) ->
- 'encode_sasl_mechanisms_$list'(_els,
- [encode_sasl_mechanism(List, []) | _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,
- <<Cdata/binary, _data/binary>>);
-decode_sasl_mechanism_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_sasl_mechanism_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_sasl_mechanism(Cdata, _xmlns_attrs) ->
- _els = encode_sasl_mechanism_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"mechanism">>, _attrs, _els}.
-
-decode_sasl_mechanism_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_sasl_mechanism_cdata(__TopXMLNS, _val) -> _val.
-
-encode_sasl_mechanism_cdata(undefined, _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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els,
- [decode_sasl_failure_text(__TopXMLNS,
- __IgnoreEls, _el)
- | Text],
- Reason);
- true ->
- decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_sasl_failure_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"aborted">>, _attrs, _} = _el | _els], Text,
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_sasl_failure_aborted(__TopXMLNS,
- __IgnoreEls,
- _el));
- true ->
- decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_sasl_failure_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"account-disabled">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_sasl_failure_account_disabled(__TopXMLNS,
- __IgnoreEls,
- _el));
- true ->
- decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_sasl_failure_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"credentials-expired">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_sasl_failure_credentials_expired(__TopXMLNS,
- __IgnoreEls,
- _el));
- true ->
- decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_sasl_failure_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"encryption-required">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_sasl_failure_encryption_required(__TopXMLNS,
- __IgnoreEls,
- _el));
- true ->
- decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_sasl_failure_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"incorrect-encoding">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_sasl_failure_incorrect_encoding(__TopXMLNS,
- __IgnoreEls,
- _el));
- true ->
- decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_sasl_failure_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"invalid-authzid">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_sasl_failure_invalid_authzid(__TopXMLNS,
- __IgnoreEls,
- _el));
- true ->
- decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_sasl_failure_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"invalid-mechanism">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_sasl_failure_invalid_mechanism(__TopXMLNS,
- __IgnoreEls,
- _el));
- true ->
- decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_sasl_failure_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"malformed-request">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_sasl_failure_malformed_request(__TopXMLNS,
- __IgnoreEls,
- _el));
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_sasl_failure_mechanism_too_weak(__TopXMLNS,
- __IgnoreEls,
- _el));
- true ->
- decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els,
- Text, Reason)
- end;
-decode_sasl_failure_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"not-authorized">>, _attrs, _} = _el | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_sasl_failure_not_authorized(__TopXMLNS,
- __IgnoreEls,
- _el));
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_sasl_failure_els(__TopXMLNS, __IgnoreEls, _els,
- Text,
- decode_sasl_failure_temporary_auth_failure(__TopXMLNS,
- __IgnoreEls,
- _el));
- true ->
- 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},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_sasl_failure_$text'(Text,
- 'encode_sasl_failure_$reason'(Reason,
- []))),
- _attrs = _xmlns_attrs,
- {xmlel, <<"failure">>, _attrs, _els}.
-
-'encode_sasl_failure_$text'([], _acc) -> _acc;
-'encode_sasl_failure_$text'([Text | _els], _acc) ->
- 'encode_sasl_failure_$text'(_els,
- [encode_sasl_failure_text(Text, []) | _acc]).
-
-'encode_sasl_failure_$reason'(undefined, _acc) -> _acc;
-'encode_sasl_failure_$reason'(aborted = Reason, _acc) ->
- [encode_sasl_failure_aborted(Reason, []) | _acc];
-'encode_sasl_failure_$reason'('account-disabled' =
- Reason,
- _acc) ->
- [encode_sasl_failure_account_disabled(Reason, [])
- | _acc];
-'encode_sasl_failure_$reason'('credentials-expired' =
- Reason,
- _acc) ->
- [encode_sasl_failure_credentials_expired(Reason, [])
- | _acc];
-'encode_sasl_failure_$reason'('encryption-required' =
- Reason,
- _acc) ->
- [encode_sasl_failure_encryption_required(Reason, [])
- | _acc];
-'encode_sasl_failure_$reason'('incorrect-encoding' =
- Reason,
- _acc) ->
- [encode_sasl_failure_incorrect_encoding(Reason, [])
- | _acc];
-'encode_sasl_failure_$reason'('invalid-authzid' =
- Reason,
- _acc) ->
- [encode_sasl_failure_invalid_authzid(Reason, [])
- | _acc];
-'encode_sasl_failure_$reason'('invalid-mechanism' =
- Reason,
- _acc) ->
- [encode_sasl_failure_invalid_mechanism(Reason, [])
- | _acc];
-'encode_sasl_failure_$reason'('malformed-request' =
- Reason,
- _acc) ->
- [encode_sasl_failure_malformed_request(Reason, [])
- | _acc];
-'encode_sasl_failure_$reason'('mechanism-too-weak' =
- Reason,
- _acc) ->
- [encode_sasl_failure_mechanism_too_weak(Reason, [])
- | _acc];
-'encode_sasl_failure_$reason'('not-authorized' = Reason,
- _acc) ->
- [encode_sasl_failure_not_authorized(Reason, []) | _acc];
-'encode_sasl_failure_$reason'('temporary-auth-failure' =
- Reason,
- _acc) ->
- [encode_sasl_failure_temporary_auth_failure(Reason, [])
- | _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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"temporary-auth-failure">>, _attrs, _els}.
-
-decode_sasl_failure_not_authorized(__TopXMLNS,
- __IgnoreEls,
- {xmlel, <<"not-authorized">>, _attrs,
- _els}) ->
- 'not-authorized'.
-
-encode_sasl_failure_not_authorized('not-authorized',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"account-disabled">>, _attrs, _els}.
-
-decode_sasl_failure_aborted(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"aborted">>, _attrs, _els}) ->
- aborted.
-
-encode_sasl_failure_aborted(aborted, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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, <<Data/binary, _data/binary>>);
-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},
- _xmlns_attrs) ->
- _els = encode_sasl_failure_text_cdata(Data, []),
- _attrs = 'encode_sasl_failure_text_attr_xml:lang'(Lang,
- _xmlns_attrs),
- {xmlel, <<"text">>, _attrs, _els}.
-
-'decode_sasl_failure_text_attr_xml:lang'(__TopXMLNS,
- undefined) ->
- undefined;
-'decode_sasl_failure_text_attr_xml:lang'(__TopXMLNS,
- _val) ->
- _val.
-
-'encode_sasl_failure_text_attr_xml:lang'(undefined,
- _acc) ->
- _acc;
-'encode_sasl_failure_text_attr_xml:lang'(_val, _acc) ->
- [{<<"xml:lang">>, _val} | _acc].
-
-decode_sasl_failure_text_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_sasl_failure_text_cdata(__TopXMLNS, _val) ->
- _val.
-
-encode_sasl_failure_text_cdata(undefined, _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,
- <<Text/binary, _data/binary>>);
-decode_sasl_success_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Text) ->
- decode_sasl_success_els(__TopXMLNS, __IgnoreEls, _els,
- Text).
-
-encode_sasl_success({sasl_success, Text},
- _xmlns_attrs) ->
- _els = encode_sasl_success_cdata(Text, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"success">>, _attrs, _els}.
-
-decode_sasl_success_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_sasl_success_cdata(__TopXMLNS, _val) ->
- case catch base64:decode(_val) of
- {'EXIT', _} ->
- erlang:error({xmpp_codec,
- {bad_cdata_value, <<>>, <<"success">>, __TopXMLNS}});
- _res -> _res
- end.
-
-encode_sasl_success_cdata(undefined, _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,
- <<Text/binary, _data/binary>>);
-decode_sasl_response_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Text) ->
- decode_sasl_response_els(__TopXMLNS, __IgnoreEls, _els,
- Text).
-
-encode_sasl_response({sasl_response, Text},
- _xmlns_attrs) ->
- _els = encode_sasl_response_cdata(Text, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"response">>, _attrs, _els}.
-
-decode_sasl_response_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_sasl_response_cdata(__TopXMLNS, _val) ->
- case catch base64:decode(_val) of
- {'EXIT', _} ->
- erlang:error({xmpp_codec,
- {bad_cdata_value, <<>>, <<"response">>, __TopXMLNS}});
- _res -> _res
- end.
-
-encode_sasl_response_cdata(undefined, _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,
- <<Text/binary, _data/binary>>);
-decode_sasl_challenge_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Text) ->
- decode_sasl_challenge_els(__TopXMLNS, __IgnoreEls, _els,
- Text).
-
-encode_sasl_challenge({sasl_challenge, Text},
- _xmlns_attrs) ->
- _els = encode_sasl_challenge_cdata(Text, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"challenge">>, _attrs, _els}.
-
-decode_sasl_challenge_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_sasl_challenge_cdata(__TopXMLNS, _val) ->
- case catch base64:decode(_val) of
- {'EXIT', _} ->
- erlang:error({xmpp_codec,
- {bad_cdata_value, <<>>, <<"challenge">>, __TopXMLNS}});
- _res -> _res
- end.
-
-encode_sasl_challenge_cdata(undefined, _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}, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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,
- <<Text/binary, _data/binary>>);
-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},
- _xmlns_attrs) ->
- _els = encode_sasl_auth_cdata(Text, []),
- _attrs = encode_sasl_auth_attr_mechanism(Mechanism,
- _xmlns_attrs),
- {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, <<>>) -> undefined;
-decode_sasl_auth_cdata(__TopXMLNS, _val) ->
- case catch base64:decode(_val) of
- {'EXIT', _} ->
- erlang:error({xmpp_codec,
- {bad_cdata_value, <<>>, <<"auth">>, __TopXMLNS}});
- _res -> _res
- end.
-
-encode_sasl_auth_cdata(undefined, _acc) -> _acc;
-encode_sasl_auth_cdata(_val, _acc) ->
- [{xmlcdata, base64:encode(_val)} | _acc].
-
-decode_bind(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"bind">>, _attrs, _els}) ->
- {Jid, Resource} = decode_bind_els(__TopXMLNS,
- __IgnoreEls, _els, undefined, 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_bind_els(__TopXMLNS, __IgnoreEls, _els,
- decode_bind_jid(__TopXMLNS, __IgnoreEls, _el),
- Resource);
- true ->
- decode_bind_els(__TopXMLNS, __IgnoreEls, _els, Jid,
- Resource)
- end;
-decode_bind_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"resource">>, _attrs, _} = _el | _els], Jid,
- Resource) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_bind_els(__TopXMLNS, __IgnoreEls, _els, Jid,
- decode_bind_resource(__TopXMLNS, __IgnoreEls, _el));
- true ->
- 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}, _xmlns_attrs) ->
- _els = lists:reverse('encode_bind_$jid'(Jid,
- 'encode_bind_$resource'(Resource,
- []))),
- _attrs = _xmlns_attrs,
- {xmlel, <<"bind">>, _attrs, _els}.
-
-'encode_bind_$jid'(undefined, _acc) -> _acc;
-'encode_bind_$jid'(Jid, _acc) ->
- [encode_bind_jid(Jid, []) | _acc].
-
-'encode_bind_$resource'(undefined, _acc) -> _acc;
-'encode_bind_$resource'(Resource, _acc) ->
- [encode_bind_resource(Resource, []) | _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,
- <<Cdata/binary, _data/binary>>);
-decode_bind_resource_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_bind_resource_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_bind_resource(Cdata, _xmlns_attrs) ->
- _els = encode_bind_resource_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"resource">>, _attrs, _els}.
-
-decode_bind_resource_cdata(__TopXMLNS, <<>>) ->
- undefined;
-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(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_bind_jid_els(__TopXMLNS, __IgnoreEls, [_ | _els],
- Cdata) ->
- decode_bind_jid_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_bind_jid(Cdata, _xmlns_attrs) ->
- _els = encode_bind_jid_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {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} = decode_error_els(__TopXMLNS,
- __IgnoreEls, _els, undefined, undefined),
- {Type, By} = decode_error_attrs(__TopXMLNS, _attrs,
- undefined, undefined),
- {error, Type, By, Reason, Text}.
-
-decode_error_els(__TopXMLNS, __IgnoreEls, [], Text,
- Reason) ->
- {Text, Reason};
-decode_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"text">>, _attrs, _} = _el | _els], Text,
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els,
- decode_error_text(_xmlns, __IgnoreEls, _el),
- Reason);
- true ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- Reason)
- end;
-decode_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"bad-request">>, _attrs, _} = _el | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- decode_error_bad_request(_xmlns, __IgnoreEls, _el));
- true ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- Reason)
- end;
-decode_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"conflict">>, _attrs, _} = _el | _els], Text,
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- decode_error_conflict(_xmlns, __IgnoreEls, _el));
- true ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- Reason)
- end;
-decode_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"feature-not-implemented">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- decode_error_feature_not_implemented(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- Reason)
- end;
-decode_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"forbidden">>, _attrs, _} = _el | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- decode_error_forbidden(_xmlns, __IgnoreEls, _el));
- true ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- Reason)
- end;
-decode_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"gone">>, _attrs, _} = _el | _els], Text,
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- decode_error_gone(_xmlns, __IgnoreEls, _el));
- true ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- Reason)
- end;
-decode_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"internal-server-error">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- decode_error_internal_server_error(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- Reason)
- end;
-decode_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"item-not-found">>, _attrs, _} = _el | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- decode_error_item_not_found(_xmlns, __IgnoreEls,
- _el));
- true ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- Reason)
- end;
-decode_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"jid-malformed">>, _attrs, _} = _el | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- decode_error_jid_malformed(_xmlns, __IgnoreEls,
- _el));
- true ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- Reason)
- end;
-decode_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"not-acceptable">>, _attrs, _} = _el | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- decode_error_not_acceptable(_xmlns, __IgnoreEls,
- _el));
- true ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- Reason)
- end;
-decode_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"not-allowed">>, _attrs, _} = _el | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- decode_error_not_allowed(_xmlns, __IgnoreEls, _el));
- true ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- Reason)
- end;
-decode_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"not-authorized">>, _attrs, _} = _el | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- decode_error_not_authorized(_xmlns, __IgnoreEls,
- _el));
- true ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- Reason)
- end;
-decode_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"policy-violation">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- decode_error_policy_violation(_xmlns, __IgnoreEls,
- _el));
- true ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- Reason)
- end;
-decode_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"recipient-unavailable">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- decode_error_recipient_unavailable(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- Reason)
- end;
-decode_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"redirect">>, _attrs, _} = _el | _els], Text,
- Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- decode_error_redirect(_xmlns, __IgnoreEls, _el));
- true ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- Reason)
- end;
-decode_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"registration-required">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- decode_error_registration_required(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- Reason)
- end;
-decode_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"remote-server-not-found">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- decode_error_remote_server_not_found(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- Reason)
- end;
-decode_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"remote-server-timeout">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- decode_error_remote_server_timeout(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- Reason)
- end;
-decode_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"resource-constraint">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- decode_error_resource_constraint(_xmlns,
- __IgnoreEls, _el));
- true ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- Reason)
- end;
-decode_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"service-unavailable">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- decode_error_service_unavailable(_xmlns,
- __IgnoreEls, _el));
- true ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- Reason)
- end;
-decode_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"subscription-required">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- decode_error_subscription_required(_xmlns,
- __IgnoreEls,
- _el));
- true ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- Reason)
- end;
-decode_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"undefined-condition">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- decode_error_undefined_condition(_xmlns,
- __IgnoreEls, _el));
- true ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- Reason)
- end;
-decode_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"unexpected-request">>, _attrs, _} = _el
- | _els],
- Text, Reason) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns ==
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">> ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- decode_error_unexpected_request(_xmlns, __IgnoreEls,
- _el));
- true ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- Reason)
- end;
-decode_error_els(__TopXMLNS, __IgnoreEls, [_ | _els],
- Text, Reason) ->
- decode_error_els(__TopXMLNS, __IgnoreEls, _els, Text,
- Reason).
-
-decode_error_attrs(__TopXMLNS,
- [{<<"type">>, _val} | _attrs], _Type, By) ->
- decode_error_attrs(__TopXMLNS, _attrs, _val, By);
-decode_error_attrs(__TopXMLNS,
- [{<<"by">>, _val} | _attrs], Type, _By) ->
- decode_error_attrs(__TopXMLNS, _attrs, Type, _val);
-decode_error_attrs(__TopXMLNS, [_ | _attrs], Type,
- By) ->
- decode_error_attrs(__TopXMLNS, _attrs, Type, By);
-decode_error_attrs(__TopXMLNS, [], Type, By) ->
- {decode_error_attr_type(__TopXMLNS, Type),
- decode_error_attr_by(__TopXMLNS, By)}.
-
-encode_error({error, Type, By, Reason, Text},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_error_$text'(Text,
- 'encode_error_$reason'(Reason,
- []))),
- _attrs = encode_error_attr_by(By,
- encode_error_attr_type(Type, _xmlns_attrs)),
- {xmlel, <<"error">>, _attrs, _els}.
-
-'encode_error_$text'(undefined, _acc) -> _acc;
-'encode_error_$text'(Text, _acc) ->
- [encode_error_text(Text,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc].
-
-'encode_error_$reason'(undefined, _acc) -> _acc;
-'encode_error_$reason'('bad-request' = Reason, _acc) ->
- [encode_error_bad_request(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_error_$reason'(conflict = Reason, _acc) ->
- [encode_error_conflict(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_error_$reason'('feature-not-implemented' =
- Reason,
- _acc) ->
- [encode_error_feature_not_implemented(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_error_$reason'(forbidden = Reason, _acc) ->
- [encode_error_forbidden(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_error_$reason'({gone, _} = Reason, _acc) ->
- [encode_error_gone(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_error_$reason'('internal-server-error' = Reason,
- _acc) ->
- [encode_error_internal_server_error(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_error_$reason'('item-not-found' = Reason,
- _acc) ->
- [encode_error_item_not_found(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_error_$reason'('jid-malformed' = Reason,
- _acc) ->
- [encode_error_jid_malformed(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_error_$reason'('not-acceptable' = Reason,
- _acc) ->
- [encode_error_not_acceptable(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_error_$reason'('not-allowed' = Reason, _acc) ->
- [encode_error_not_allowed(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_error_$reason'('not-authorized' = Reason,
- _acc) ->
- [encode_error_not_authorized(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_error_$reason'('policy-violation' = Reason,
- _acc) ->
- [encode_error_policy_violation(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_error_$reason'('recipient-unavailable' = Reason,
- _acc) ->
- [encode_error_recipient_unavailable(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_error_$reason'({redirect, _} = Reason, _acc) ->
- [encode_error_redirect(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_error_$reason'('registration-required' = Reason,
- _acc) ->
- [encode_error_registration_required(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_error_$reason'('remote-server-not-found' =
- Reason,
- _acc) ->
- [encode_error_remote_server_not_found(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_error_$reason'('remote-server-timeout' = Reason,
- _acc) ->
- [encode_error_remote_server_timeout(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_error_$reason'('resource-constraint' = Reason,
- _acc) ->
- [encode_error_resource_constraint(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_error_$reason'('service-unavailable' = Reason,
- _acc) ->
- [encode_error_service_unavailable(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_error_$reason'('subscription-required' = Reason,
- _acc) ->
- [encode_error_subscription_required(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_error_$reason'('undefined-condition' = Reason,
- _acc) ->
- [encode_error_undefined_condition(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _acc];
-'encode_error_$reason'('unexpected-request' = Reason,
- _acc) ->
- [encode_error_unexpected_request(Reason,
- [{<<"xmlns">>,
- <<"urn:ietf:params:xml:ns:xmpp-stanzas">>}])
- | _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_by(__TopXMLNS, undefined) ->
- undefined;
-decode_error_attr_by(__TopXMLNS, _val) -> _val.
-
-encode_error_attr_by(undefined, _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,
- <<Data/binary, _data/binary>>);
-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}, _xmlns_attrs) ->
- _els = encode_error_text_cdata(Data, []),
- _attrs = 'encode_error_text_attr_xml:lang'(Lang,
- _xmlns_attrs),
- {xmlel, <<"text">>, _attrs, _els}.
-
-'decode_error_text_attr_xml:lang'(__TopXMLNS,
- undefined) ->
- undefined;
-'decode_error_text_attr_xml:lang'(__TopXMLNS, _val) ->
- _val.
-
-'encode_error_text_attr_xml:lang'(undefined, _acc) ->
- _acc;
-'encode_error_text_attr_xml:lang'(_val, _acc) ->
- [{<<"xml:lang">>, _val} | _acc].
-
-decode_error_text_cdata(__TopXMLNS, <<>>) -> undefined;
-decode_error_text_cdata(__TopXMLNS, _val) -> _val.
-
-encode_error_text_cdata(undefined, _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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"unexpected-request">>, _attrs, _els}.
-
-decode_error_undefined_condition(__TopXMLNS,
- __IgnoreEls,
- {xmlel, <<"undefined-condition">>, _attrs,
- _els}) ->
- 'undefined-condition'.
-
-encode_error_undefined_condition('undefined-condition',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"undefined-condition">>, _attrs, _els}.
-
-decode_error_subscription_required(__TopXMLNS,
- __IgnoreEls,
- {xmlel, <<"subscription-required">>, _attrs,
- _els}) ->
- 'subscription-required'.
-
-encode_error_subscription_required('subscription-required',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"subscription-required">>, _attrs, _els}.
-
-decode_error_service_unavailable(__TopXMLNS,
- __IgnoreEls,
- {xmlel, <<"service-unavailable">>, _attrs,
- _els}) ->
- 'service-unavailable'.
-
-encode_error_service_unavailable('service-unavailable',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"service-unavailable">>, _attrs, _els}.
-
-decode_error_resource_constraint(__TopXMLNS,
- __IgnoreEls,
- {xmlel, <<"resource-constraint">>, _attrs,
- _els}) ->
- 'resource-constraint'.
-
-encode_error_resource_constraint('resource-constraint',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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,
- <<Uri/binary, _data/binary>>);
-decode_error_redirect_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Uri) ->
- decode_error_redirect_els(__TopXMLNS, __IgnoreEls, _els,
- Uri).
-
-encode_error_redirect({redirect, Uri}, _xmlns_attrs) ->
- _els = encode_error_redirect_cdata(Uri, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"redirect">>, _attrs, _els}.
-
-decode_error_redirect_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_error_redirect_cdata(__TopXMLNS, _val) -> _val.
-
-encode_error_redirect_cdata(undefined, _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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"recipient-unavailable">>, _attrs, _els}.
-
-decode_error_policy_violation(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"policy-violation">>, _attrs, _els}) ->
- 'policy-violation'.
-
-encode_error_policy_violation('policy-violation',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"policy-violation">>, _attrs, _els}.
-
-decode_error_not_authorized(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"not-authorized">>, _attrs, _els}) ->
- 'not-authorized'.
-
-encode_error_not_authorized('not-authorized',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"not-authorized">>, _attrs, _els}.
-
-decode_error_not_allowed(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"not-allowed">>, _attrs, _els}) ->
- 'not-allowed'.
-
-encode_error_not_allowed('not-allowed', _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"not-allowed">>, _attrs, _els}.
-
-decode_error_not_acceptable(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"not-acceptable">>, _attrs, _els}) ->
- 'not-acceptable'.
-
-encode_error_not_acceptable('not-acceptable',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"not-acceptable">>, _attrs, _els}.
-
-decode_error_jid_malformed(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"jid-malformed">>, _attrs, _els}) ->
- 'jid-malformed'.
-
-encode_error_jid_malformed('jid-malformed',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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,
- <<Uri/binary, _data/binary>>);
-decode_error_gone_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Uri) ->
- decode_error_gone_els(__TopXMLNS, __IgnoreEls, _els,
- Uri).
-
-encode_error_gone({gone, Uri}, _xmlns_attrs) ->
- _els = encode_error_gone_cdata(Uri, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"gone">>, _attrs, _els}.
-
-decode_error_gone_cdata(__TopXMLNS, <<>>) -> undefined;
-decode_error_gone_cdata(__TopXMLNS, _val) -> _val.
-
-encode_error_gone_cdata(undefined, _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, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {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',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"feature-not-implemented">>, _attrs, _els}.
-
-decode_error_conflict(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"conflict">>, _attrs, _els}) ->
- conflict.
-
-encode_error_conflict(conflict, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"conflict">>, _attrs, _els}.
-
-decode_error_bad_request(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"bad-request">>, _attrs, _els}) ->
- 'bad-request'.
-
-encode_error_bad_request('bad-request', _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"bad-request">>, _attrs, _els}.
-
-decode_presence(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"presence">>, _attrs, _els}) ->
- {Error, Status, Show, Priority, __Els} =
- decode_presence_els(__TopXMLNS, __IgnoreEls, _els,
- undefined, [], 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, Error, __Els}.
-
-decode_presence_els(__TopXMLNS, __IgnoreEls, [], Error,
- Status, Show, Priority, __Els) ->
- {Error, lists:reverse(Status), Show, Priority,
- lists:reverse(__Els)};
-decode_presence_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"error">>, _attrs, _} = _el | _els], Error,
- Status, Show, Priority, __Els) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_presence_els(__TopXMLNS, __IgnoreEls, _els,
- decode_error(__TopXMLNS, __IgnoreEls, _el),
- Status, Show, Priority, __Els);
- true ->
- decode_presence_els(__TopXMLNS, __IgnoreEls, _els,
- Error, Status, Show, Priority, __Els)
- end;
-decode_presence_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"show">>, _attrs, _} = _el | _els], Error,
- Status, Show, Priority, __Els) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_presence_els(__TopXMLNS, __IgnoreEls, _els,
- Error, Status,
- decode_presence_show(__TopXMLNS, __IgnoreEls,
- _el),
- Priority, __Els);
- true ->
- decode_presence_els(__TopXMLNS, __IgnoreEls, _els,
- Error, Status, Show, Priority, __Els)
- end;
-decode_presence_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"status">>, _attrs, _} = _el | _els], Error,
- Status, Show, Priority, __Els) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_presence_els(__TopXMLNS, __IgnoreEls, _els,
- Error,
- [decode_presence_status(__TopXMLNS, __IgnoreEls,
- _el)
- | Status],
- Show, Priority, __Els);
- true ->
- decode_presence_els(__TopXMLNS, __IgnoreEls, _els,
- Error, Status, Show, Priority, __Els)
- end;
-decode_presence_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"priority">>, _attrs, _} = _el | _els],
- Error, Status, Show, Priority, __Els) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_presence_els(__TopXMLNS, __IgnoreEls, _els,
- Error, Status, Show,
- decode_presence_priority(__TopXMLNS, __IgnoreEls,
- _el),
- __Els);
- true ->
- decode_presence_els(__TopXMLNS, __IgnoreEls, _els,
- Error, Status, Show, Priority, __Els)
- end;
-decode_presence_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, _, _, _} = _el | _els], Error, Status, Show,
- Priority, __Els) ->
- if __IgnoreEls ->
- decode_presence_els(__TopXMLNS, __IgnoreEls, _els,
- Error, Status, Show, Priority, [_el | __Els]);
- true ->
- case is_known_tag(_el) of
- true ->
- decode_presence_els(__TopXMLNS, __IgnoreEls, _els,
- Error, Status, Show, Priority,
- [decode(_el) | __Els]);
- false ->
- decode_presence_els(__TopXMLNS, __IgnoreEls, _els,
- Error, Status, Show, Priority, __Els)
- end
- end;
-decode_presence_els(__TopXMLNS, __IgnoreEls, [_ | _els],
- Error, Status, Show, Priority, __Els) ->
- decode_presence_els(__TopXMLNS, __IgnoreEls, _els,
- Error, 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, Error, __Els},
- _xmlns_attrs) ->
- _els = [encode(_el) || _el <- __Els] ++
- lists:reverse('encode_presence_$error'(Error,
- 'encode_presence_$status'(Status,
- 'encode_presence_$show'(Show,
- 'encode_presence_$priority'(Priority,
- []))))),
- _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,
- _xmlns_attrs))))),
- {xmlel, <<"presence">>, _attrs, _els}.
-
-'encode_presence_$error'(undefined, _acc) -> _acc;
-'encode_presence_$error'(Error, _acc) ->
- [encode_error(Error, []) | _acc].
-
-'encode_presence_$status'([], _acc) -> _acc;
-'encode_presence_$status'([Status | _els], _acc) ->
- 'encode_presence_$status'(_els,
- [encode_presence_status(Status, []) | _acc]).
-
-'encode_presence_$show'(undefined, _acc) -> _acc;
-'encode_presence_$show'(Show, _acc) ->
- [encode_presence_show(Show, []) | _acc].
-
-'encode_presence_$priority'(undefined, _acc) -> _acc;
-'encode_presence_$priority'(Priority, _acc) ->
- [encode_presence_priority(Priority, []) | _acc].
-
-decode_presence_attr_id(__TopXMLNS, undefined) ->
- undefined;
-decode_presence_attr_id(__TopXMLNS, _val) -> _val.
-
-encode_presence_attr_id(undefined, _acc) -> _acc;
-encode_presence_attr_id(_val, _acc) ->
- [{<<"id">>, _val} | _acc].
-
-decode_presence_attr_type(__TopXMLNS, undefined) ->
- undefined;
-decode_presence_attr_type(__TopXMLNS, _val) ->
- case catch dec_enum(_val,
- [unavailable, subscribe, subscribed, unsubscribe,
- unsubscribed, probe, error])
- of
- {'EXIT', _} ->
- erlang:error({xmpp_codec,
- {bad_attr_value, <<"type">>, <<"presence">>,
- __TopXMLNS}});
- _res -> _res
- end.
-
-encode_presence_attr_type(undefined, _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) ->
- undefined;
-'decode_presence_attr_xml:lang'(__TopXMLNS, _val) ->
- _val.
-
-'encode_presence_attr_xml:lang'(undefined, _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, <<Cdata/binary, _data/binary>>);
-decode_presence_priority_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_presence_priority_els(__TopXMLNS, __IgnoreEls,
- _els, Cdata).
-
-encode_presence_priority(Cdata, _xmlns_attrs) ->
- _els = encode_presence_priority_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {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, <<Data/binary, _data/binary>>);
-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},
- _xmlns_attrs) ->
- _els = encode_presence_status_cdata(Data, []),
- _attrs = 'encode_presence_status_attr_xml:lang'(Lang,
- _xmlns_attrs),
- {xmlel, <<"status">>, _attrs, _els}.
-
-'decode_presence_status_attr_xml:lang'(__TopXMLNS,
- undefined) ->
- undefined;
-'decode_presence_status_attr_xml:lang'(__TopXMLNS,
- _val) ->
- _val.
-
-'encode_presence_status_attr_xml:lang'(undefined,
- _acc) ->
- _acc;
-'encode_presence_status_attr_xml:lang'(_val, _acc) ->
- [{<<"xml:lang">>, _val} | _acc].
-
-decode_presence_status_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_presence_status_cdata(__TopXMLNS, _val) -> _val.
-
-encode_presence_status_cdata(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_presence_show_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_presence_show_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_presence_show(Cdata, _xmlns_attrs) ->
- _els = encode_presence_show_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {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}) ->
- {Error, Thread, Subject, Body, __Els} =
- decode_message_els(__TopXMLNS, __IgnoreEls, _els,
- undefined, 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, Error, __Els}.
-
-decode_message_els(__TopXMLNS, __IgnoreEls, [], Error,
- Thread, Subject, Body, __Els) ->
- {Error, Thread, lists:reverse(Subject),
- lists:reverse(Body), lists:reverse(__Els)};
-decode_message_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"error">>, _attrs, _} = _el | _els], Error,
- Thread, Subject, Body, __Els) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_message_els(__TopXMLNS, __IgnoreEls, _els,
- decode_error(__TopXMLNS, __IgnoreEls, _el),
- Thread, Subject, Body, __Els);
- true ->
- decode_message_els(__TopXMLNS, __IgnoreEls, _els, Error,
- Thread, Subject, Body, __Els)
- end;
-decode_message_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"subject">>, _attrs, _} = _el | _els], Error,
- Thread, Subject, Body, __Els) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_message_els(__TopXMLNS, __IgnoreEls, _els, Error,
- Thread,
- [decode_message_subject(__TopXMLNS, __IgnoreEls,
- _el)
- | Subject],
- Body, __Els);
- true ->
- decode_message_els(__TopXMLNS, __IgnoreEls, _els, Error,
- Thread, Subject, Body, __Els)
- end;
-decode_message_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"thread">>, _attrs, _} = _el | _els], Error,
- Thread, Subject, Body, __Els) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_message_els(__TopXMLNS, __IgnoreEls, _els, Error,
- decode_message_thread(__TopXMLNS, __IgnoreEls,
- _el),
- Subject, Body, __Els);
- true ->
- decode_message_els(__TopXMLNS, __IgnoreEls, _els, Error,
- Thread, Subject, Body, __Els)
- end;
-decode_message_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"body">>, _attrs, _} = _el | _els], Error,
- Thread, Subject, Body, __Els) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_message_els(__TopXMLNS, __IgnoreEls, _els, Error,
- Thread, Subject,
- [decode_message_body(__TopXMLNS, __IgnoreEls, _el)
- | Body],
- __Els);
- true ->
- decode_message_els(__TopXMLNS, __IgnoreEls, _els, Error,
- Thread, Subject, Body, __Els)
- end;
-decode_message_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, _, _, _} = _el | _els], Error, Thread, Subject,
- Body, __Els) ->
- if __IgnoreEls ->
- decode_message_els(__TopXMLNS, __IgnoreEls, _els, Error,
- Thread, Subject, Body, [_el | __Els]);
- true ->
- case is_known_tag(_el) of
- true ->
- decode_message_els(__TopXMLNS, __IgnoreEls, _els, Error,
- Thread, Subject, Body,
- [decode(_el) | __Els]);
- false ->
- decode_message_els(__TopXMLNS, __IgnoreEls, _els, Error,
- Thread, Subject, Body, __Els)
- end
- end;
-decode_message_els(__TopXMLNS, __IgnoreEls, [_ | _els],
- Error, Thread, Subject, Body, __Els) ->
- decode_message_els(__TopXMLNS, __IgnoreEls, _els, Error,
- 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, Error, __Els},
- _xmlns_attrs) ->
- _els = [encode(_el) || _el <- __Els] ++
- lists:reverse('encode_message_$error'(Error,
- 'encode_message_$thread'(Thread,
- 'encode_message_$subject'(Subject,
- 'encode_message_$body'(Body,
- []))))),
- _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,
- _xmlns_attrs))))),
- {xmlel, <<"message">>, _attrs, _els}.
-
-'encode_message_$error'(undefined, _acc) -> _acc;
-'encode_message_$error'(Error, _acc) ->
- [encode_error(Error, []) | _acc].
-
-'encode_message_$thread'(undefined, _acc) -> _acc;
-'encode_message_$thread'(Thread, _acc) ->
- [encode_message_thread(Thread, []) | _acc].
-
-'encode_message_$subject'([], _acc) -> _acc;
-'encode_message_$subject'([Subject | _els], _acc) ->
- 'encode_message_$subject'(_els,
- [encode_message_subject(Subject, []) | _acc]).
-
-'encode_message_$body'([], _acc) -> _acc;
-'encode_message_$body'([Body | _els], _acc) ->
- 'encode_message_$body'(_els,
- [encode_message_body(Body, []) | _acc]).
-
-decode_message_attr_id(__TopXMLNS, undefined) ->
- undefined;
-decode_message_attr_id(__TopXMLNS, _val) -> _val.
-
-encode_message_attr_id(undefined, _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) ->
- undefined;
-'decode_message_attr_xml:lang'(__TopXMLNS, _val) ->
- _val.
-
-'encode_message_attr_xml:lang'(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_message_thread_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_message_thread_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_message_thread(Cdata, _xmlns_attrs) ->
- _els = encode_message_thread_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"thread">>, _attrs, _els}.
-
-decode_message_thread_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_message_thread_cdata(__TopXMLNS, _val) -> _val.
-
-encode_message_thread_cdata(undefined, _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,
- <<Data/binary, _data/binary>>);
-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}, _xmlns_attrs) ->
- _els = encode_message_body_cdata(Data, []),
- _attrs = 'encode_message_body_attr_xml:lang'(Lang,
- _xmlns_attrs),
- {xmlel, <<"body">>, _attrs, _els}.
-
-'decode_message_body_attr_xml:lang'(__TopXMLNS,
- undefined) ->
- undefined;
-'decode_message_body_attr_xml:lang'(__TopXMLNS, _val) ->
- _val.
-
-'encode_message_body_attr_xml:lang'(undefined, _acc) ->
- _acc;
-'encode_message_body_attr_xml:lang'(_val, _acc) ->
- [{<<"xml:lang">>, _val} | _acc].
-
-decode_message_body_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_message_body_cdata(__TopXMLNS, _val) -> _val.
-
-encode_message_body_cdata(undefined, _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, <<Data/binary, _data/binary>>);
-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},
- _xmlns_attrs) ->
- _els = encode_message_subject_cdata(Data, []),
- _attrs = 'encode_message_subject_attr_xml:lang'(Lang,
- _xmlns_attrs),
- {xmlel, <<"subject">>, _attrs, _els}.
-
-'decode_message_subject_attr_xml:lang'(__TopXMLNS,
- undefined) ->
- undefined;
-'decode_message_subject_attr_xml:lang'(__TopXMLNS,
- _val) ->
- _val.
-
-'encode_message_subject_attr_xml:lang'(undefined,
- _acc) ->
- _acc;
-'encode_message_subject_attr_xml:lang'(_val, _acc) ->
- [{<<"xml:lang">>, _val} | _acc].
-
-decode_message_subject_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_message_subject_cdata(__TopXMLNS, _val) -> _val.
-
-encode_message_subject_cdata(undefined, _acc) -> _acc;
-encode_message_subject_cdata(_val, _acc) ->
- [{xmlcdata, _val} | _acc].
-
-decode_iq(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"iq">>, _attrs, _els}) ->
- {Error, __Els} = decode_iq_els(__TopXMLNS, __IgnoreEls,
- _els, undefined, []),
- {Id, Type, From, To, Lang} = decode_iq_attrs(__TopXMLNS,
- _attrs, undefined, undefined,
- undefined, undefined,
- undefined),
- {iq, Id, Type, Lang, From, To, Error, __Els}.
-
-decode_iq_els(__TopXMLNS, __IgnoreEls, [], Error,
- __Els) ->
- {Error, lists:reverse(__Els)};
-decode_iq_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"error">>, _attrs, _} = _el | _els], Error,
- __Els) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_iq_els(__TopXMLNS, __IgnoreEls, _els,
- decode_error(__TopXMLNS, __IgnoreEls, _el), __Els);
- true ->
- decode_iq_els(__TopXMLNS, __IgnoreEls, _els, Error,
- __Els)
- end;
-decode_iq_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, _, _, _} = _el | _els], Error, __Els) ->
- if __IgnoreEls ->
- decode_iq_els(__TopXMLNS, __IgnoreEls, _els, Error,
- [_el | __Els]);
- true ->
- case is_known_tag(_el) of
- true ->
- decode_iq_els(__TopXMLNS, __IgnoreEls, _els, Error,
- [decode(_el) | __Els]);
- false ->
- decode_iq_els(__TopXMLNS, __IgnoreEls, _els, Error,
- __Els)
- end
- end;
-decode_iq_els(__TopXMLNS, __IgnoreEls, [_ | _els],
- Error, __Els) ->
- decode_iq_els(__TopXMLNS, __IgnoreEls, _els, Error,
- __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, Error, __Els},
- _xmlns_attrs) ->
- _els = [encode(_el) || _el <- __Els] ++
- lists:reverse('encode_iq_$error'(Error, [])),
- _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,
- _xmlns_attrs))))),
- {xmlel, <<"iq">>, _attrs, _els}.
-
-'encode_iq_$error'(undefined, _acc) -> _acc;
-'encode_iq_$error'(Error, _acc) ->
- [encode_error(Error, []) | _acc].
-
-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) ->
- undefined;
-'decode_iq_attr_xml:lang'(__TopXMLNS, _val) -> _val.
-
-'encode_iq_attr_xml:lang'(undefined, _acc) -> _acc;
-'encode_iq_attr_xml:lang'(_val, _acc) ->
- [{<<"xml:lang">>, _val} | _acc].
-
-decode_stats(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"query">>, _attrs, _els}) ->
- Stat = decode_stats_els(__TopXMLNS, __IgnoreEls, _els,
- []),
- {stats, Stat}.
-
-decode_stats_els(__TopXMLNS, __IgnoreEls, [], Stat) ->
- lists:reverse(Stat);
-decode_stats_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"stat">>, _attrs, _} = _el | _els], Stat) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_stats_els(__TopXMLNS, __IgnoreEls, _els,
- [decode_stat(__TopXMLNS, __IgnoreEls, _el) | Stat]);
- true ->
- decode_stats_els(__TopXMLNS, __IgnoreEls, _els, Stat)
- end;
-decode_stats_els(__TopXMLNS, __IgnoreEls, [_ | _els],
- Stat) ->
- decode_stats_els(__TopXMLNS, __IgnoreEls, _els, Stat).
-
-encode_stats({stats, Stat}, _xmlns_attrs) ->
- _els = lists:reverse('encode_stats_$stat'(Stat, [])),
- _attrs = _xmlns_attrs,
- {xmlel, <<"query">>, _attrs, _els}.
-
-'encode_stats_$stat'([], _acc) -> _acc;
-'encode_stats_$stat'([Stat | _els], _acc) ->
- 'encode_stats_$stat'(_els,
- [encode_stat(Stat, []) | _acc]).
-
-decode_stat(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"stat">>, _attrs, _els}) ->
- Error = decode_stat_els(__TopXMLNS, __IgnoreEls, _els,
- []),
- {Name, Units, Value} = decode_stat_attrs(__TopXMLNS,
- _attrs, undefined, undefined,
- undefined),
- {stat, Name, Units, Value, Error}.
-
-decode_stat_els(__TopXMLNS, __IgnoreEls, [], Error) ->
- lists:reverse(Error);
-decode_stat_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"error">>, _attrs, _} = _el | _els],
- Error) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_stat_els(__TopXMLNS, __IgnoreEls, _els,
- [decode_stat_error(__TopXMLNS, __IgnoreEls, _el)
- | Error]);
- true ->
- 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},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_stat_$error'(Error, [])),
- _attrs = encode_stat_attr_value(Value,
- encode_stat_attr_units(Units,
- encode_stat_attr_name(Name,
- _xmlns_attrs))),
- {xmlel, <<"stat">>, _attrs, _els}.
-
-'encode_stat_$error'([], _acc) -> _acc;
-'encode_stat_$error'([Error | _els], _acc) ->
- 'encode_stat_$error'(_els,
- [encode_stat_error(Error, []) | _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) ->
- undefined;
-decode_stat_attr_units(__TopXMLNS, _val) -> _val.
-
-encode_stat_attr_units(undefined, _acc) -> _acc;
-encode_stat_attr_units(_val, _acc) ->
- [{<<"units">>, _val} | _acc].
-
-decode_stat_attr_value(__TopXMLNS, undefined) ->
- undefined;
-decode_stat_attr_value(__TopXMLNS, _val) -> _val.
-
-encode_stat_attr_value(undefined, _acc) -> _acc;
-encode_stat_attr_value(_val, _acc) ->
- [{<<"value">>, _val} | _acc].
-
-decode_stat_error(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"error">>, _attrs, _els}) ->
- Cdata = decode_stat_error_els(__TopXMLNS, __IgnoreEls,
- _els, <<>>),
- Code = decode_stat_error_attrs(__TopXMLNS, _attrs,
- undefined),
- {Code, Cdata}.
-
-decode_stat_error_els(__TopXMLNS, __IgnoreEls, [],
- Cdata) ->
- decode_stat_error_cdata(__TopXMLNS, Cdata);
-decode_stat_error_els(__TopXMLNS, __IgnoreEls,
- [{xmlcdata, _data} | _els], Cdata) ->
- decode_stat_error_els(__TopXMLNS, __IgnoreEls, _els,
- <<Cdata/binary, _data/binary>>);
-decode_stat_error_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_stat_error_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-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({Code, Cdata}, _xmlns_attrs) ->
- _els = encode_stat_error_cdata(Cdata, []),
- _attrs = encode_stat_error_attr_code(Code,
- _xmlns_attrs),
- {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, <<>>) -> undefined;
-decode_stat_error_cdata(__TopXMLNS, _val) -> _val.
-
-encode_stat_error_cdata(undefined, _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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_bookmarks_storage_els(__TopXMLNS, __IgnoreEls,
- _els,
- [decode_bookmark_conference(__TopXMLNS,
- __IgnoreEls,
- _el)
- | Conference],
- Url);
- true ->
- decode_bookmarks_storage_els(__TopXMLNS, __IgnoreEls,
- _els, Conference, Url)
- end;
-decode_bookmarks_storage_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"url">>, _attrs, _} = _el | _els],
- Conference, Url) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_bookmarks_storage_els(__TopXMLNS, __IgnoreEls,
- _els, Conference,
- [decode_bookmark_url(__TopXMLNS,
- __IgnoreEls, _el)
- | Url]);
- true ->
- 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},
- _xmlns_attrs) ->
- _els =
- lists:reverse('encode_bookmarks_storage_$conference'(Conference,
- 'encode_bookmarks_storage_$url'(Url,
- []))),
- _attrs = _xmlns_attrs,
- {xmlel, <<"storage">>, _attrs, _els}.
-
-'encode_bookmarks_storage_$conference'([], _acc) ->
- _acc;
-'encode_bookmarks_storage_$conference'([Conference
- | _els],
- _acc) ->
- 'encode_bookmarks_storage_$conference'(_els,
- [encode_bookmark_conference(Conference,
- [])
- | _acc]).
-
-'encode_bookmarks_storage_$url'([], _acc) -> _acc;
-'encode_bookmarks_storage_$url'([Url | _els], _acc) ->
- 'encode_bookmarks_storage_$url'(_els,
- [encode_bookmark_url(Url, []) | _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},
- _xmlns_attrs) ->
- _els = [],
- _attrs = encode_bookmark_url_attr_url(Url,
- encode_bookmark_url_attr_name(Name,
- _xmlns_attrs)),
- {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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_bookmark_conference_els(__TopXMLNS, __IgnoreEls,
- _els, Password,
- decode_conference_nick(__TopXMLNS,
- __IgnoreEls,
- _el));
- true ->
- decode_bookmark_conference_els(__TopXMLNS, __IgnoreEls,
- _els, Password, Nick)
- end;
-decode_bookmark_conference_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"password">>, _attrs, _} = _el
- | _els],
- Password, Nick) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_bookmark_conference_els(__TopXMLNS, __IgnoreEls,
- _els,
- decode_conference_password(__TopXMLNS,
- __IgnoreEls,
- _el),
- Nick);
- true ->
- 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},
- _xmlns_attrs) ->
- _els =
- lists:reverse('encode_bookmark_conference_$password'(Password,
- 'encode_bookmark_conference_$nick'(Nick,
- []))),
- _attrs =
- encode_bookmark_conference_attr_autojoin(Autojoin,
- encode_bookmark_conference_attr_jid(Jid,
- encode_bookmark_conference_attr_name(Name,
- _xmlns_attrs))),
- {xmlel, <<"conference">>, _attrs, _els}.
-
-'encode_bookmark_conference_$password'(undefined,
- _acc) ->
- _acc;
-'encode_bookmark_conference_$password'(Password,
- _acc) ->
- [encode_conference_password(Password, []) | _acc].
-
-'encode_bookmark_conference_$nick'(undefined, _acc) ->
- _acc;
-'encode_bookmark_conference_$nick'(Nick, _acc) ->
- [encode_conference_nick(Nick, []) | _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, <<Cdata/binary, _data/binary>>);
-decode_conference_password_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_conference_password_els(__TopXMLNS, __IgnoreEls,
- _els, Cdata).
-
-encode_conference_password(Cdata, _xmlns_attrs) ->
- _els = encode_conference_password_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"password">>, _attrs, _els}.
-
-decode_conference_password_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_conference_password_cdata(__TopXMLNS, _val) ->
- _val.
-
-encode_conference_password_cdata(undefined, _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, <<Cdata/binary, _data/binary>>);
-decode_conference_nick_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_conference_nick_els(__TopXMLNS, __IgnoreEls,
- _els, Cdata).
-
-encode_conference_nick(Cdata, _xmlns_attrs) ->
- _els = encode_conference_nick_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {xmlel, <<"nick">>, _attrs, _els}.
-
-decode_conference_nick_cdata(__TopXMLNS, <<>>) ->
- undefined;
-decode_conference_nick_cdata(__TopXMLNS, _val) -> _val.
-
-encode_conference_nick_cdata(undefined, _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}, _xmlns_attrs) ->
- _els = __Xmls,
- _attrs = _xmlns_attrs,
- {xmlel, <<"query">>, _attrs, _els}.
-
-decode_disco_items(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"query">>, _attrs, _els}) ->
- Items = decode_disco_items_els(__TopXMLNS, __IgnoreEls,
- _els, []),
- Node = decode_disco_items_attrs(__TopXMLNS, _attrs,
- undefined),
- {disco_items, Node, Items}.
-
-decode_disco_items_els(__TopXMLNS, __IgnoreEls, [],
- Items) ->
- lists:reverse(Items);
-decode_disco_items_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"item">>, _attrs, _} = _el | _els], Items) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_disco_items_els(__TopXMLNS, __IgnoreEls, _els,
- [decode_disco_item(__TopXMLNS, __IgnoreEls,
- _el)
- | Items]);
- true ->
- decode_disco_items_els(__TopXMLNS, __IgnoreEls, _els,
- Items)
- end;
-decode_disco_items_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Items) ->
- decode_disco_items_els(__TopXMLNS, __IgnoreEls, _els,
- Items).
-
-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},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_disco_items_$items'(Items,
- [])),
- _attrs = encode_disco_items_attr_node(Node,
- _xmlns_attrs),
- {xmlel, <<"query">>, _attrs, _els}.
-
-'encode_disco_items_$items'([], _acc) -> _acc;
-'encode_disco_items_$items'([Items | _els], _acc) ->
- 'encode_disco_items_$items'(_els,
- [encode_disco_item(Items, []) | _acc]).
-
-decode_disco_items_attr_node(__TopXMLNS, undefined) ->
- undefined;
-decode_disco_items_attr_node(__TopXMLNS, _val) -> _val.
-
-encode_disco_items_attr_node(undefined, _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},
- _xmlns_attrs) ->
- _els = [],
- _attrs = encode_disco_item_attr_node(Node,
- encode_disco_item_attr_name(Name,
- encode_disco_item_attr_jid(Jid,
- _xmlns_attrs))),
- {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) ->
- undefined;
-decode_disco_item_attr_name(__TopXMLNS, _val) -> _val.
-
-encode_disco_item_attr_name(undefined, _acc) -> _acc;
-encode_disco_item_attr_name(_val, _acc) ->
- [{<<"name">>, _val} | _acc].
-
-decode_disco_item_attr_node(__TopXMLNS, undefined) ->
- undefined;
-decode_disco_item_attr_node(__TopXMLNS, _val) -> _val.
-
-encode_disco_item_attr_node(undefined, _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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_disco_info_els(__TopXMLNS, __IgnoreEls, _els,
- Xdata, Features,
- [decode_disco_identity(__TopXMLNS, __IgnoreEls,
- _el)
- | Identities]);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_disco_info_els(__TopXMLNS, __IgnoreEls, _els,
- Xdata,
- [decode_disco_feature(__TopXMLNS, __IgnoreEls,
- _el)
- | Features],
- Identities);
- true ->
- 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<"jabber:x:data">> ->
- decode_disco_info_els(__TopXMLNS, __IgnoreEls, _els,
- [decode_xdata(_xmlns, __IgnoreEls, _el)
- | Xdata],
- Features, Identities);
- true ->
- 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},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_disco_info_$xdata'(Xdata,
- 'encode_disco_info_$features'(Features,
- 'encode_disco_info_$identities'(Identities,
- [])))),
- _attrs = encode_disco_info_attr_node(Node,
- _xmlns_attrs),
- {xmlel, <<"query">>, _attrs, _els}.
-
-'encode_disco_info_$xdata'([], _acc) -> _acc;
-'encode_disco_info_$xdata'([Xdata | _els], _acc) ->
- 'encode_disco_info_$xdata'(_els,
- [encode_xdata(Xdata,
- [{<<"xmlns">>,
- <<"jabber:x:data">>}])
- | _acc]).
-
-'encode_disco_info_$features'([], _acc) -> _acc;
-'encode_disco_info_$features'([Features | _els],
- _acc) ->
- 'encode_disco_info_$features'(_els,
- [encode_disco_feature(Features, []) | _acc]).
-
-'encode_disco_info_$identities'([], _acc) -> _acc;
-'encode_disco_info_$identities'([Identities | _els],
- _acc) ->
- 'encode_disco_info_$identities'(_els,
- [encode_disco_identity(Identities, [])
- | _acc]).
-
-decode_disco_info_attr_node(__TopXMLNS, undefined) ->
- undefined;
-decode_disco_info_attr_node(__TopXMLNS, _val) -> _val.
-
-encode_disco_info_attr_node(undefined, _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, _xmlns_attrs) ->
- _els = [],
- _attrs = encode_disco_feature_attr_var(Var,
- _xmlns_attrs),
- {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},
- _xmlns_attrs) ->
- _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,
- _xmlns_attrs)))),
- {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) ->
- undefined;
-'decode_disco_identity_attr_xml:lang'(__TopXMLNS,
- _val) ->
- _val.
-
-'encode_disco_identity_attr_xml:lang'(undefined,
- _acc) ->
- _acc;
-'encode_disco_identity_attr_xml:lang'(_val, _acc) ->
- [{<<"xml:lang">>, _val} | _acc].
-
-decode_disco_identity_attr_name(__TopXMLNS,
- undefined) ->
- undefined;
-decode_disco_identity_attr_name(__TopXMLNS, _val) ->
- _val.
-
-encode_disco_identity_attr_name(undefined, _acc) ->
- _acc;
-encode_disco_identity_attr_name(_val, _acc) ->
- [{<<"name">>, _val} | _acc].
-
-decode_block_list(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"blocklist">>, _attrs, _els}) ->
- {block_list}.
-
-encode_block_list({block_list}, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"blocklist">>, _attrs, _els}.
-
-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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_unblock_els(__TopXMLNS, __IgnoreEls, _els,
- case decode_block_item(__TopXMLNS, __IgnoreEls,
- _el)
- of
- undefined -> Items;
- _new_el -> [_new_el | Items]
- end);
- true ->
- 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}, _xmlns_attrs) ->
- _els = lists:reverse('encode_unblock_$items'(Items,
- [])),
- _attrs = _xmlns_attrs,
- {xmlel, <<"unblock">>, _attrs, _els}.
-
-'encode_unblock_$items'([], _acc) -> _acc;
-'encode_unblock_$items'([Items | _els], _acc) ->
- 'encode_unblock_$items'(_els,
- [encode_block_item(Items, []) | _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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_block_els(__TopXMLNS, __IgnoreEls, _els,
- case decode_block_item(__TopXMLNS, __IgnoreEls, _el)
- of
- undefined -> Items;
- _new_el -> [_new_el | Items]
- end);
- true ->
- 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}, _xmlns_attrs) ->
- _els = lists:reverse('encode_block_$items'(Items, [])),
- _attrs = _xmlns_attrs,
- {xmlel, <<"block">>, _attrs, _els}.
-
-'encode_block_$items'([], _acc) -> _acc;
-'encode_block_$items'([Items | _els], _acc) ->
- 'encode_block_$items'(_els,
- [encode_block_item(Items, []) | _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, _xmlns_attrs) ->
- _els = [],
- _attrs = encode_block_item_attr_jid(Jid, _xmlns_attrs),
- {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, 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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_privacy_els(__TopXMLNS, __IgnoreEls, _els,
- [decode_privacy_list(__TopXMLNS, __IgnoreEls, _el)
- | Lists],
- Default, Active);
- true ->
- decode_privacy_els(__TopXMLNS, __IgnoreEls, _els, Lists,
- Default, Active)
- end;
-decode_privacy_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"default">>, _attrs, _} = _el | _els], Lists,
- Default, Active) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_privacy_els(__TopXMLNS, __IgnoreEls, _els, Lists,
- decode_privacy_default_list(__TopXMLNS,
- __IgnoreEls, _el),
- Active);
- true ->
- decode_privacy_els(__TopXMLNS, __IgnoreEls, _els, Lists,
- Default, Active)
- end;
-decode_privacy_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"active">>, _attrs, _} = _el | _els], Lists,
- Default, Active) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_privacy_els(__TopXMLNS, __IgnoreEls, _els, Lists,
- Default,
- decode_privacy_active_list(__TopXMLNS,
- __IgnoreEls, _el));
- true ->
- 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, Lists, Default, Active},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_privacy_$lists'(Lists,
- 'encode_privacy_$default'(Default,
- 'encode_privacy_$active'(Active,
- [])))),
- _attrs = _xmlns_attrs,
- {xmlel, <<"query">>, _attrs, _els}.
-
-'encode_privacy_$lists'([], _acc) -> _acc;
-'encode_privacy_$lists'([Lists | _els], _acc) ->
- 'encode_privacy_$lists'(_els,
- [encode_privacy_list(Lists, []) | _acc]).
-
-'encode_privacy_$default'(undefined, _acc) -> _acc;
-'encode_privacy_$default'(Default, _acc) ->
- [encode_privacy_default_list(Default, []) | _acc].
-
-'encode_privacy_$active'(undefined, _acc) -> _acc;
-'encode_privacy_$active'(Active, _acc) ->
- [encode_privacy_active_list(Active, []) | _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, _xmlns_attrs) ->
- _els = [],
- _attrs = encode_privacy_active_list_attr_name(Name,
- _xmlns_attrs),
- {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, _xmlns_attrs) ->
- _els = [],
- _attrs = encode_privacy_default_list_attr_name(Name,
- _xmlns_attrs),
- {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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_privacy_list_els(__TopXMLNS, __IgnoreEls, _els,
- [decode_privacy_item(__TopXMLNS, __IgnoreEls,
- _el)
- | Items]);
- true ->
- 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},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_privacy_list_$items'(Items,
- [])),
- _attrs = encode_privacy_list_attr_name(Name,
- _xmlns_attrs),
- {xmlel, <<"list">>, _attrs, _els}.
-
-'encode_privacy_list_$items'([], _acc) -> _acc;
-'encode_privacy_list_$items'([Items | _els], _acc) ->
- 'encode_privacy_list_$items'(_els,
- [encode_privacy_item(Items, []) | _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}) ->
- Kinds = decode_privacy_item_els(__TopXMLNS, __IgnoreEls,
- _els, []),
- {Action, Order, Type, Value} =
- decode_privacy_item_attrs(__TopXMLNS, _attrs, undefined,
- undefined, undefined, undefined),
- {privacy_item, Order, Action, Type, Value, Kinds}.
-
-decode_privacy_item_els(__TopXMLNS, __IgnoreEls, [],
- Kinds) ->
- lists:reverse(Kinds);
-decode_privacy_item_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"message">>, _attrs, _} = _el | _els],
- Kinds) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_privacy_item_els(__TopXMLNS, __IgnoreEls, _els,
- Kinds);
- true ->
- decode_privacy_item_els(__TopXMLNS, __IgnoreEls, _els,
- Kinds)
- end;
-decode_privacy_item_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"iq">>, _attrs, _} = _el | _els], Kinds) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_privacy_item_els(__TopXMLNS, __IgnoreEls, _els,
- Kinds);
- true ->
- decode_privacy_item_els(__TopXMLNS, __IgnoreEls, _els,
- Kinds)
- end;
-decode_privacy_item_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"presence-in">>, _attrs, _} = _el | _els],
- Kinds) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_privacy_item_els(__TopXMLNS, __IgnoreEls, _els,
- Kinds);
- true ->
- decode_privacy_item_els(__TopXMLNS, __IgnoreEls, _els,
- Kinds)
- end;
-decode_privacy_item_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"presence-out">>, _attrs, _} = _el | _els],
- Kinds) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_privacy_item_els(__TopXMLNS, __IgnoreEls, _els,
- Kinds);
- true ->
- decode_privacy_item_els(__TopXMLNS, __IgnoreEls, _els,
- Kinds)
- end;
-decode_privacy_item_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Kinds) ->
- decode_privacy_item_els(__TopXMLNS, __IgnoreEls, _els,
- Kinds).
-
-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, Kinds},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_privacy_item_$kinds'(Kinds,
- [])),
- _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,
- _xmlns_attrs)))),
- {xmlel, <<"item">>, _attrs, _els}.
-
-'encode_privacy_item_$kinds'([], _acc) -> _acc;
-'encode_privacy_item_$kinds'([message = Kinds | _els],
- _acc) ->
- 'encode_privacy_item_$kinds'(_els,
- [encode_privacy_message(Kinds, []) | _acc]);
-'encode_privacy_item_$kinds'([iq = Kinds | _els],
- _acc) ->
- 'encode_privacy_item_$kinds'(_els,
- [encode_privacy_iq(Kinds, []) | _acc]);
-'encode_privacy_item_$kinds'(['presence-in' = Kinds
- | _els],
- _acc) ->
- 'encode_privacy_item_$kinds'(_els,
- [encode_privacy_presence_in(Kinds, [])
- | _acc]);
-'encode_privacy_item_$kinds'(['presence-out' = Kinds
- | _els],
- _acc) ->
- 'encode_privacy_item_$kinds'(_els,
- [encode_privacy_presence_out(Kinds, [])
- | _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) ->
- undefined;
-decode_privacy_item_attr_value(__TopXMLNS, _val) ->
- _val.
-
-encode_privacy_item_attr_value(undefined, _acc) -> _acc;
-encode_privacy_item_attr_value(_val, _acc) ->
- [{<<"value">>, _val} | _acc].
-
-decode_privacy_presence_out(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"presence-out">>, _attrs, _els}) ->
- 'presence-out'.
-
-encode_privacy_presence_out('presence-out',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"presence-out">>, _attrs, _els}.
-
-decode_privacy_presence_in(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"presence-in">>, _attrs, _els}) ->
- 'presence-in'.
-
-encode_privacy_presence_in('presence-in',
- _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"presence-in">>, _attrs, _els}.
-
-decode_privacy_iq(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"iq">>, _attrs, _els}) ->
- iq.
-
-encode_privacy_iq(iq, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"iq">>, _attrs, _els}.
-
-decode_privacy_message(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"message">>, _attrs, _els}) ->
- message.
-
-encode_privacy_message(message, _xmlns_attrs) ->
- _els = [],
- _attrs = _xmlns_attrs,
- {xmlel, <<"message">>, _attrs, _els}.
-
-decode_roster(__TopXMLNS, __IgnoreEls,
- {xmlel, <<"query">>, _attrs, _els}) ->
- Items = decode_roster_els(__TopXMLNS, __IgnoreEls, _els,
- []),
- Ver = decode_roster_attrs(__TopXMLNS, _attrs,
- undefined),
- {roster, Items, Ver}.
-
-decode_roster_els(__TopXMLNS, __IgnoreEls, [], Items) ->
- lists:reverse(Items);
-decode_roster_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"item">>, _attrs, _} = _el | _els], Items) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_roster_els(__TopXMLNS, __IgnoreEls, _els,
- [decode_roster_item(__TopXMLNS, __IgnoreEls, _el)
- | Items]);
- true ->
- decode_roster_els(__TopXMLNS, __IgnoreEls, _els, Items)
- end;
-decode_roster_els(__TopXMLNS, __IgnoreEls, [_ | _els],
- Items) ->
- decode_roster_els(__TopXMLNS, __IgnoreEls, _els, Items).
-
-decode_roster_attrs(__TopXMLNS,
- [{<<"ver">>, _val} | _attrs], _Ver) ->
- decode_roster_attrs(__TopXMLNS, _attrs, _val);
-decode_roster_attrs(__TopXMLNS, [_ | _attrs], Ver) ->
- decode_roster_attrs(__TopXMLNS, _attrs, Ver);
-decode_roster_attrs(__TopXMLNS, [], Ver) ->
- decode_roster_attr_ver(__TopXMLNS, Ver).
-
-encode_roster({roster, Items, Ver}, _xmlns_attrs) ->
- _els = lists:reverse('encode_roster_$items'(Items, [])),
- _attrs = encode_roster_attr_ver(Ver, _xmlns_attrs),
- {xmlel, <<"query">>, _attrs, _els}.
-
-'encode_roster_$items'([], _acc) -> _acc;
-'encode_roster_$items'([Items | _els], _acc) ->
- 'encode_roster_$items'(_els,
- [encode_roster_item(Items, []) | _acc]).
-
-decode_roster_attr_ver(__TopXMLNS, undefined) ->
- undefined;
-decode_roster_attr_ver(__TopXMLNS, _val) -> _val.
-
-encode_roster_attr_ver(undefined, _acc) -> _acc;
-encode_roster_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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_roster_item_els(__TopXMLNS, __IgnoreEls, _els,
- [decode_roster_group(__TopXMLNS, __IgnoreEls,
- _el)
- | Groups]);
- true ->
- 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},
- _xmlns_attrs) ->
- _els =
- lists:reverse('encode_roster_item_$groups'(Groups, [])),
- _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,
- _xmlns_attrs)))),
- {xmlel, <<"item">>, _attrs, _els}.
-
-'encode_roster_item_$groups'([], _acc) -> _acc;
-'encode_roster_item_$groups'([Groups | _els], _acc) ->
- 'encode_roster_item_$groups'(_els,
- [encode_roster_group(Groups, []) | _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) ->
- undefined;
-decode_roster_item_attr_name(__TopXMLNS, _val) -> _val.
-
-encode_roster_item_attr_name(undefined, _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,
- <<Cdata/binary, _data/binary>>);
-decode_roster_group_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_roster_group_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_roster_group(Cdata, _xmlns_attrs) ->
- _els = encode_roster_group_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {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) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_version_els(__TopXMLNS, __IgnoreEls, _els, Ver,
- Os,
- decode_version_name(__TopXMLNS, __IgnoreEls,
- _el));
- true ->
- decode_version_els(__TopXMLNS, __IgnoreEls, _els, Ver,
- Os, Name)
- end;
-decode_version_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"version">>, _attrs, _} = _el | _els], Ver,
- Os, Name) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_version_els(__TopXMLNS, __IgnoreEls, _els,
- decode_version_ver(__TopXMLNS, __IgnoreEls, _el),
- Os, Name);
- true ->
- decode_version_els(__TopXMLNS, __IgnoreEls, _els, Ver,
- Os, Name)
- end;
-decode_version_els(__TopXMLNS, __IgnoreEls,
- [{xmlel, <<"os">>, _attrs, _} = _el | _els], Ver, Os,
- Name) ->
- _xmlns = get_attr(<<"xmlns">>, _attrs),
- if _xmlns == <<>>; _xmlns == __TopXMLNS ->
- decode_version_els(__TopXMLNS, __IgnoreEls, _els, Ver,
- decode_version_os(__TopXMLNS, __IgnoreEls, _el),
- Name);
- true ->
- 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},
- _xmlns_attrs) ->
- _els = lists:reverse('encode_version_$ver'(Ver,
- 'encode_version_$os'(Os,
- 'encode_version_$name'(Name,
- [])))),
- _attrs = _xmlns_attrs,
- {xmlel, <<"query">>, _attrs, _els}.
-
-'encode_version_$ver'(undefined, _acc) -> _acc;
-'encode_version_$ver'(Ver, _acc) ->
- [encode_version_ver(Ver, []) | _acc].
-
-'encode_version_$os'(undefined, _acc) -> _acc;
-'encode_version_$os'(Os, _acc) ->
- [encode_version_os(Os, []) | _acc].
-
-'encode_version_$name'(undefined, _acc) -> _acc;
-'encode_version_$name'(Name, _acc) ->
- [encode_version_name(Name, []) | _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,
- <<Cdata/binary, _data/binary>>);
-decode_version_os_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_version_os_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_version_os(Cdata, _xmlns_attrs) ->
- _els = encode_version_os_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {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,
- <<Cdata/binary, _data/binary>>);
-decode_version_ver_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_version_ver_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_version_ver(Cdata, _xmlns_attrs) ->
- _els = encode_version_ver_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {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,
- <<Cdata/binary, _data/binary>>);
-decode_version_name_els(__TopXMLNS, __IgnoreEls,
- [_ | _els], Cdata) ->
- decode_version_name_els(__TopXMLNS, __IgnoreEls, _els,
- Cdata).
-
-encode_version_name(Cdata, _xmlns_attrs) ->
- _els = encode_version_name_cdata(Cdata, []),
- _attrs = _xmlns_attrs,
- {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}) ->
- Text = decode_last_els(__TopXMLNS, __IgnoreEls, _els,
- <<>>),
- Seconds = decode_last_attrs(__TopXMLNS, _attrs,
- undefined),
- {last, Seconds, Text}.
-
-decode_last_els(__TopXMLNS, __IgnoreEls, [], Text) ->
- decode_last_cdata(__TopXMLNS, Text);
-decode_last_els(__TopXMLNS, __IgnoreEls,
- [{xmlcdata, _data} | _els], Text) ->
- decode_last_els(__TopXMLNS, __IgnoreEls, _els,
- <<Text/binary, _data/binary>>);
-decode_last_els(__TopXMLNS, __IgnoreEls, [_ | _els],
- Text) ->
- decode_last_els(__TopXMLNS, __IgnoreEls, _els, Text).
-
-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, Text}, _xmlns_attrs) ->
- _els = encode_last_cdata(Text, []),
- _attrs = encode_last_attr_seconds(Seconds,
- _xmlns_attrs),
- {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, <<>>) -> undefined;
-decode_last_cdata(__TopXMLNS, _val) -> _val.
-
-encode_last_cdata(undefined, _acc) -> _acc;
-encode_last_cdata(_val, _acc) ->
- [{xmlcdata, _val} | _acc].
diff --git a/tools/xmpp_codec.hrl b/tools/xmpp_codec.hrl
deleted file mode 100644
index 6d4b750b6..000000000
--- a/tools/xmpp_codec.hrl
+++ /dev/null
@@ -1,537 +0,0 @@
-%% Created automatically by XML generator (fxml_gen.erl)
-%% Source: xmpp_codec.spec
-
--record(chatstate, {type :: active | composing | gone | inactive | paused}).
-
--record(csi, {type :: active | inactive}).
-
--record(feature_register, {}).
-
--record(sasl_success, {text :: any()}).
-
--record(mam_result, {xmlns :: binary(),
- queryid :: binary(),
- id :: binary(),
- sub_els = [] :: [any()]}).
-
--record(rsm_first, {index :: non_neg_integer(),
- data :: binary()}).
-
--record(text, {lang :: binary(),
- data :: binary()}).
-
--record(streamhost, {jid :: any(),
- host :: binary(),
- port = 1080 :: non_neg_integer()}).
-
--record(sm_resume, {h :: non_neg_integer(),
- previd :: binary(),
- xmlns :: binary()}).
-
--record(carbons_enable, {}).
-
--record(carbons_private, {}).
-
--record(pubsub_unsubscribe, {node :: binary(),
- jid :: any(),
- subid :: binary()}).
-
--record(mix_leave, {}).
-
--record(ping, {}).
-
--record(delay, {stamp :: any(),
- from :: any()}).
-
--record(muc_history, {maxchars :: non_neg_integer(),
- maxstanzas :: non_neg_integer(),
- seconds :: non_neg_integer(),
- since :: any()}).
-
--record(pubsub_affiliation, {node :: binary(),
- type :: 'member' | 'none' | 'outcast' | 'owner' | 'publish-only' | 'publisher'}).
-
--record(muc_decline, {reason :: binary(),
- from :: any(),
- to :: any()}).
-
--record(sm_a, {h :: non_neg_integer(),
- xmlns :: binary()}).
-
--record(starttls_proceed, {}).
-
--record(sm_resumed, {h :: non_neg_integer(),
- previd :: binary(),
- xmlns :: binary()}).
-
--record(forwarded, {delay :: #delay{},
- sub_els = [] :: [any()]}).
-
--record(sm_enable, {max :: non_neg_integer(),
- resume = false :: any(),
- xmlns :: binary()}).
-
--record(starttls_failure, {}).
-
--record(sasl_challenge, {text :: any()}).
-
--record(gone, {uri :: binary()}).
-
--record(private, {xml_els = [] :: [any()]}).
-
--record(p1_ack, {}).
-
--record(feature_sm, {xmlns :: binary()}).
-
--record(pubsub_item, {id :: binary(),
- xml_els = [] :: [any()]}).
-
--record(pubsub_publish, {node :: binary(),
- items = [] :: [#pubsub_item{}]}).
-
--record(roster_item, {jid :: any(),
- name :: binary(),
- groups = [] :: [binary()],
- subscription = none :: 'both' | 'from' | 'none' | 'remove' | 'to',
- ask :: 'subscribe'}).
-
--record(roster, {items = [] :: [#roster_item{}],
- ver :: binary()}).
-
--record(pubsub_event_item, {id :: binary(),
- node :: binary(),
- publisher :: binary(),
- xml_els = [] :: [any()]}).
-
--record(sm_r, {xmlns :: binary()}).
-
--record(muc_actor, {jid :: any(),
- nick :: binary()}).
-
--record(stat, {name :: binary(),
- units :: binary(),
- value :: binary(),
- error = [] :: [{integer(),'undefined' | binary()}]}).
-
--record('see-other-host', {host :: binary()}).
-
--record(compress, {methods = [] :: [binary()]}).
-
--record(starttls, {required = false :: boolean()}).
-
--record(last, {seconds :: non_neg_integer(),
- text :: binary()}).
-
--record(redirect, {uri :: binary()}).
-
--record(sm_enabled, {id :: binary(),
- location :: binary(),
- max :: non_neg_integer(),
- resume = false :: any(),
- xmlns :: binary()}).
-
--record(pubsub_event_items, {node :: binary(),
- retract = [] :: [binary()],
- items = [] :: [#pubsub_event_item{}]}).
-
--record(pubsub_event, {items = [] :: [#pubsub_event_items{}]}).
-
--record(sasl_response, {text :: any()}).
-
--record(pubsub_subscribe, {node :: binary(),
- jid :: any()}).
-
--record(sasl_auth, {mechanism :: binary(),
- text :: any()}).
-
--record(p1_push, {}).
-
--record(feature_csi, {xmlns :: binary()}).
-
--record(muc_user_destroy, {reason :: binary(),
- jid :: any()}).
-
--record(disco_item, {jid :: any(),
- name :: binary(),
- node :: binary()}).
-
--record(disco_items, {node :: binary(),
- items = [] :: [#disco_item{}]}).
-
--record(unblock, {items = [] :: [any()]}).
-
--record(block, {items = [] :: [any()]}).
-
--record(session, {}).
-
--record(compression, {methods = [] :: [binary()]}).
-
--record(muc_owner_destroy, {jid :: any(),
- reason :: binary(),
- password :: binary()}).
-
--record(pubsub_subscription, {jid :: any(),
- node :: binary(),
- subid :: binary(),
- type :: 'none' | 'pending' | 'subscribed' | 'unconfigured'}).
-
--record(muc_item, {actor :: #muc_actor{},
- continue :: binary(),
- reason :: binary(),
- affiliation :: 'admin' | 'member' | 'none' | 'outcast' | 'owner',
- role :: 'moderator' | 'none' | 'participant' | 'visitor',
- jid :: any(),
- nick :: binary()}).
-
--record(muc_admin, {items = [] :: [#muc_item{}]}).
-
--record(shim, {headers = [] :: [{binary(),'undefined' | binary()}]}).
-
--record(mam_prefs, {xmlns :: binary(),
- default :: 'always' | 'never' | 'roster',
- always = [] :: [any()],
- never = [] :: [any()]}).
-
--record(caps, {hash :: binary(),
- node :: binary(),
- ver :: any()}).
-
--record(muc, {history :: #muc_history{},
- password :: binary()}).
-
--record(stream_features, {sub_els = [] :: [any()]}).
-
--record(stats, {stat = [] :: [#stat{}]}).
-
--record(pubsub_items, {node :: binary(),
- max_items :: non_neg_integer(),
- subid :: binary(),
- items = [] :: [#pubsub_item{}]}).
-
--record(carbons_sent, {forwarded :: #forwarded{}}).
-
--record(mam_archived, {by :: any(),
- id :: binary()}).
-
--record(p1_rebind, {}).
-
--record(compress_failure, {reason :: 'processing-failed' | 'setup-failed' | 'unsupported-method'}).
-
--record(sasl_abort, {}).
-
--record(vcard_email, {home = false :: boolean(),
- work = false :: boolean(),
- internet = false :: boolean(),
- pref = false :: boolean(),
- x400 = false :: boolean(),
- userid :: binary()}).
-
--record(carbons_received, {forwarded :: #forwarded{}}).
-
--record(pubsub_retract, {node :: binary(),
- notify = false :: any(),
- items = [] :: [#pubsub_item{}]}).
-
--record(mix_participant, {jid :: any(),
- nick :: binary()}).
-
--record(vcard_geo, {lat :: binary(),
- lon :: binary()}).
-
--record(compressed, {}).
-
--record(sasl_failure, {reason :: 'aborted' | 'account-disabled' | 'credentials-expired' | 'encryption-required' | 'incorrect-encoding' | 'invalid-authzid' | 'invalid-mechanism' | 'malformed-request' | 'mechanism-too-weak' | 'not-authorized' | 'temporary-auth-failure',
- text = [] :: [#text{}]}).
-
--record(block_list, {}).
-
--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 = [] :: [binary()]}).
-
--record(version, {name :: binary(),
- ver :: binary(),
- os :: binary()}).
-
--record(muc_invite, {reason :: binary(),
- from :: any(),
- to :: any()}).
-
--record(bind, {jid :: any(),
- resource :: any()}).
-
--record(muc_user, {decline :: #muc_decline{},
- destroy :: #muc_user_destroy{},
- invites = [] :: [#muc_invite{}],
- items = [] :: [#muc_item{}],
- status_codes = [] :: [pos_integer()],
- password :: binary()}).
-
--record(vcard_xupdate, {photo :: binary()}).
-
--record(carbons_disable, {}).
-
--record(bytestreams, {hosts = [] :: [#streamhost{}],
- used :: any(),
- activate :: any(),
- dstaddr :: binary(),
- mode = tcp :: 'tcp' | 'udp',
- sid :: binary()}).
-
--record(vcard_org, {name :: binary(),
- units = [] :: [binary()]}).
-
--record(rsm_set, {'after' :: binary(),
- before :: 'none' | binary(),
- count :: non_neg_integer(),
- first :: #rsm_first{},
- index :: non_neg_integer(),
- last :: binary(),
- max :: non_neg_integer()}).
-
--record(mam_fin, {id :: binary(),
- rsm :: #rsm_set{},
- stable :: any(),
- complete :: any()}).
-
--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()}).
-
--record(vcard_key, {type :: binary(),
- cred :: binary()}).
-
--record(vcard_name, {family :: binary(),
- given :: binary(),
- middle :: binary(),
- prefix :: binary(),
- suffix :: binary()}).
-
--record(identity, {category :: binary(),
- type :: binary(),
- lang :: binary(),
- name :: binary()}).
-
--record(bookmark_conference, {name :: binary(),
- jid :: any(),
- autojoin = false :: any(),
- nick :: binary(),
- password :: binary()}).
-
--record(bookmark_url, {name :: binary(),
- url :: binary()}).
-
--record(bookmark_storage, {conference = [] :: [#bookmark_conference{}],
- url = [] :: [#bookmark_url{}]}).
-
--record(vcard_sound, {phonetic :: binary(),
- binval :: any(),
- extval :: binary()}).
-
--record(vcard_photo, {type :: binary(),
- binval :: any(),
- extval :: binary()}).
-
--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()]}).
-
--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()}).
-
--record(xdata, {type :: 'cancel' | 'form' | 'result' | 'submit',
- instructions = [] :: [binary()],
- title :: binary(),
- reported :: [#xdata_field{}],
- items = [] :: [[#xdata_field{}]],
- fields = [] :: [#xdata_field{}]}).
-
--record(mam_query, {xmlns :: binary(),
- id :: binary(),
- start :: any(),
- 'end' :: any(),
- with :: any(),
- rsm :: #rsm_set{},
- xdata :: #xdata{}}).
-
--record(muc_owner, {destroy :: #muc_owner_destroy{},
- config :: #xdata{}}).
-
--record(pubsub_options, {node :: binary(),
- jid :: any(),
- subid :: binary(),
- xdata :: #xdata{}}).
-
--record(pubsub, {subscriptions :: {'none' | binary(),[#pubsub_subscription{}]},
- affiliations :: [#pubsub_affiliation{}],
- publish :: #pubsub_publish{},
- subscribe :: #pubsub_subscribe{},
- unsubscribe :: #pubsub_unsubscribe{},
- options :: #pubsub_options{},
- items :: #pubsub_items{},
- retract :: #pubsub_retract{}}).
-
--record(register, {registered = false :: boolean(),
- remove = false :: boolean(),
- instructions :: binary(),
- username :: 'none' | binary(),
- nick :: 'none' | binary(),
- password :: 'none' | binary(),
- name :: 'none' | binary(),
- first :: 'none' | binary(),
- last :: 'none' | binary(),
- email :: 'none' | binary(),
- address :: 'none' | binary(),
- city :: 'none' | binary(),
- state :: 'none' | binary(),
- zip :: 'none' | binary(),
- phone :: 'none' | binary(),
- url :: 'none' | binary(),
- date :: 'none' | binary(),
- misc :: 'none' | binary(),
- text :: 'none' | binary(),
- key :: 'none' | binary(),
- xdata :: #xdata{}}).
-
--record(disco_info, {node :: binary(),
- identities = [] :: [#identity{}],
- features = [] :: [binary()],
- xdata = [] :: [#xdata{}]}).
-
--record(offline_item, {node :: binary(),
- action :: 'remove' | 'view'}).
-
--record(offline, {items = [] :: [#offline_item{}],
- purge = false :: boolean(),
- fetch = false :: boolean()}).
-
--record(sasl_mechanisms, {list = [] :: [binary()]}).
-
--record(sm_failed, {reason :: atom() | #gone{} | #redirect{},
- h :: non_neg_integer(),
- xmlns :: binary()}).
-
--record(error, {type :: 'auth' | 'cancel' | 'continue' | 'modify' | 'wait',
- by :: binary(),
- reason :: atom() | #gone{} | #redirect{},
- text :: #text{}}).
-
--record(presence, {id :: binary(),
- type :: 'error' | 'probe' | 'subscribe' | 'subscribed' | 'unavailable' | 'unsubscribe' | 'unsubscribed',
- lang :: binary(),
- from :: any(),
- to :: any(),
- show :: 'away' | 'chat' | 'dnd' | 'xa',
- status = [] :: [#text{}],
- priority :: integer(),
- error :: #error{},
- sub_els = [] :: [any()]}).
-
--record(message, {id :: binary(),
- type = normal :: 'chat' | 'error' | 'groupchat' | 'headline' | 'normal',
- lang :: binary(),
- from :: any(),
- to :: any(),
- subject = [] :: [#text{}],
- body = [] :: [#text{}],
- thread :: binary(),
- error :: #error{},
- sub_els = [] :: [any()]}).
-
--record(iq, {id :: binary(),
- type :: 'error' | 'get' | 'result' | 'set',
- lang :: binary(),
- from :: any(),
- to :: any(),
- error :: #error{},
- sub_els = [] :: [any()]}).
-
--record(mix_join, {jid :: any(),
- subscribe = [] :: [binary()]}).
-
--record(privacy_item, {order :: non_neg_integer(),
- action :: 'allow' | 'deny',
- type :: 'group' | 'jid' | 'subscription',
- value :: binary(),
- kinds = [] :: ['iq' | 'message' | 'presence-in' | 'presence-out']}).
-
--record(privacy_list, {name :: binary(),
- items = [] :: [#privacy_item{}]}).
-
--record(privacy, {lists = [] :: [#privacy_list{}],
- default :: 'none' | binary(),
- active :: 'none' | binary()}).
-
--record(stream_error, {reason :: atom() | #'see-other-host'{},
- text :: #text{}}).
-
--record(vcard_logo, {type :: binary(),
- binval :: any(),
- extval :: binary()}).
-
--record(vcard, {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()}).
-
--record(time, {tzo :: any(),
- utc :: any()}).
-
-
diff --git a/tools/xmpp_codec.spec b/tools/xmpp_codec.spec
deleted file mode 100644
index acf9c3bb7..000000000
--- a/tools/xmpp_codec.spec
+++ /dev/null
@@ -1,2520 +0,0 @@
--xml(last,
- #elem{name = <<"query">>,
- xmlns = <<"jabber:iq:last">>,
- result = {last, '$seconds', '$text'},
- attrs = [#attr{name = <<"seconds">>,
- enc = {enc_int, []},
- dec = {dec_int, [0, infinity]}}],
- cdata = #cdata{label = '$text'}}).
-
--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">>},
- #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,
- #elem{name = <<"query">>,
- xmlns = <<"jabber:iq:roster">>,
- result = {roster, '$items', '$ver'},
- attrs = [#attr{name = <<"ver">>}],
- refs = [#ref{name = roster_item, label = '$items'}]}).
-
--xml(privacy_message, #elem{name = <<"message">>, xmlns = <<"jabber:iq:privacy">>,
- result = message}).
--xml(privacy_iq, #elem{name = <<"iq">>, xmlns = <<"jabber:iq:privacy">>,
- result = iq}).
--xml(privacy_presence_in, #elem{name = <<"presence-in">>,
- xmlns = <<"jabber:iq:privacy">>,
- result = 'presence-in'}).
--xml(privacy_presence_out, #elem{name = <<"presence-out">>,
- xmlns = <<"jabber:iq:privacy">>,
- result = 'presence-out'}).
-
--xml(privacy_item,
- #elem{name = <<"item">>,
- xmlns = <<"jabber:iq:privacy">>,
- result = {privacy_item, '$order', '$action', '$type',
- '$value', '$kinds'},
- 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,
- label = '$kinds'},
- #ref{name = privacy_iq,
- label = '$kinds'},
- #ref{name = privacy_presence_in,
- label = '$kinds'},
- #ref{name = privacy_presence_out,
- label = '$kinds'}]}).
-
--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, '$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}}).
-
--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'},
- attrs = [#attr{name = <<"node">>}],
- refs = [#ref{name = disco_item,
- label = '$items'}]}).
-
--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 = {'$code', '$cdata'},
- 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">>},
- #attr{name = <<"value">>}],
- refs = [#ref{name = stat_error,
- label = '$error'}]}).
-
--xml(stats,
- #elem{name = <<"query">>,
- xmlns = <<"http://jabber.org/protocol/stats">>,
- result = {stats, '$stat'},
- refs = [#ref{name = stat,
- label = '$stat'}]}).
-
--xml(iq,
- #elem{name = <<"iq">>,
- xmlns = <<"jabber:client">>,
- result = {iq, '$id', '$type', '$lang', '$from', '$to',
- '$error', '$_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'}],
- refs = [#ref{name = error, min = 0, max = 1, label = '$error'}]}).
-
--xml(message_subject,
- #elem{name = <<"subject">>,
- xmlns = <<"jabber:client">>,
- result = {text, '$lang', '$data'},
- cdata = #cdata{label = '$data'},
- attrs = [#attr{name = <<"xml:lang">>, label = '$lang'}]}).
-
--xml(message_body,
- #elem{name = <<"body">>,
- xmlns = <<"jabber:client">>,
- result = {text, '$lang', '$data'},
- cdata = #cdata{label = '$data'},
- attrs = [#attr{name = <<"xml:lang">>, label = '$lang'}]}).
-
--xml(message_thread,
- #elem{name = <<"thread">>,
- xmlns = <<"jabber:client">>,
- result = '$cdata'}).
-
--xml(message,
- #elem{name = <<"message">>,
- xmlns = <<"jabber:client">>,
- result = {message, '$id', '$type', '$lang', '$from', '$to',
- '$subject', '$body', '$thread', '$error', '$_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 = error, min = 0, max = 1, label = '$error'},
- #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">>,
- result = '$cdata',
- cdata = #cdata{enc = {enc_enum, []},
- dec = {dec_enum, [[away, chat, dnd, xa]]}}}).
-
--xml(presence_status,
- #elem{name = <<"status">>,
- xmlns = <<"jabber:client">>,
- result = {text, '$lang', '$data'},
- cdata = #cdata{label = '$data'},
- attrs = [#attr{name = <<"xml:lang">>,
- label = '$lang'}]}).
-
--xml(presence_priority,
- #elem{name = <<"priority">>,
- xmlns = <<"jabber:client">>,
- result = '$cdata',
- cdata = #cdata{enc = {enc_int, []},
- dec = {dec_int, []}}}).
-
--xml(presence,
- #elem{name = <<"presence">>,
- xmlns = <<"jabber:client">>,
- result = {presence, '$id', '$type', '$lang', '$from', '$to',
- '$show', '$status', '$priority', '$error', '$_els'},
- attrs = [#attr{name = <<"id">>},
- #attr{name = <<"type">>,
- enc = {enc_enum, []},
- dec = {dec_enum, [[unavailable, subscribe, subscribed,
- unsubscribe, unsubscribed,
- 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 = error, min = 0, max = 1, label = '$error'},
- #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_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">>,
- result = {error, '$type', '$by', '$reason', '$text'},
- attrs = [#attr{name = <<"type">>,
- label = '$type',
- required = true,
- dec = {dec_enum, [[auth, cancel, continue,
- modify, wait]]},
- enc = {enc_enum, []}},
- #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_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,
- label = '$resource'}]}).
-
--xml(sasl_auth,
- #elem{name = <<"auth">>,
- xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>,
- cdata = #cdata{label = '$text',
- dec = {base64, 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, 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, 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, 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_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_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 = <<"http://etherx.jabber.org/streams">>,
- 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, '$hash', '$node', '$ver'},
- attrs = [#attr{name = <<"hash">>},
- #attr{name = <<"node">>},
- #attr{name = <<"ver">>,
- enc = {base64, encode, []},
- dec = {base64, decode, []}}]}).
-
--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">>,
- cdata = #cdata{default = none},
- result = '$cdata'}).
--xml(register_nick,
- #elem{name = <<"nick">>,
- xmlns = <<"jabber:iq:register">>,
- cdata = #cdata{default = none},
- result = '$cdata'}).
--xml(register_password,
- #elem{name = <<"password">>,
- xmlns = <<"jabber:iq:register">>,
- cdata = #cdata{default = none},
- result = '$cdata'}).
--xml(register_name,
- #elem{name = <<"name">>,
- xmlns = <<"jabber:iq:register">>,
- cdata = #cdata{default = none},
- result = '$cdata'}).
--xml(register_first,
- #elem{name = <<"first">>,
- xmlns = <<"jabber:iq:register">>,
- cdata = #cdata{default = none},
- result = '$cdata'}).
--xml(register_last,
- #elem{name = <<"last">>,
- xmlns = <<"jabber:iq:register">>,
- cdata = #cdata{default = none},
- result = '$cdata'}).
--xml(register_email,
- #elem{name = <<"email">>,
- xmlns = <<"jabber:iq:register">>,
- cdata = #cdata{default = none},
- result = '$cdata'}).
--xml(register_address,
- #elem{name = <<"address">>,
- xmlns = <<"jabber:iq:register">>,
- cdata = #cdata{default = none},
- result = '$cdata'}).
--xml(register_city,
- #elem{name = <<"city">>,
- xmlns = <<"jabber:iq:register">>,
- cdata = #cdata{default = none},
- result = '$cdata'}).
--xml(register_state,
- #elem{name = <<"state">>,
- xmlns = <<"jabber:iq:register">>,
- cdata = #cdata{default = none},
- result = '$cdata'}).
--xml(register_zip,
- #elem{name = <<"zip">>,
- xmlns = <<"jabber:iq:register">>,
- cdata = #cdata{default = none},
- result = '$cdata'}).
--xml(register_phone,
- #elem{name = <<"phone">>,
- xmlns = <<"jabber:iq:register">>,
- cdata = #cdata{default = none},
- result = '$cdata'}).
--xml(register_url,
- #elem{name = <<"url">>,
- xmlns = <<"jabber:iq:register">>,
- cdata = #cdata{default = none},
- result = '$cdata'}).
--xml(register_date,
- #elem{name = <<"date">>,
- xmlns = <<"jabber:iq:register">>,
- cdata = #cdata{default = none},
- result = '$cdata'}).
--xml(register_misc,
- #elem{name = <<"misc">>,
- xmlns = <<"jabber:iq:register">>,
- cdata = #cdata{default = none},
- result = '$cdata'}).
--xml(register_text,
- #elem{name = <<"text">>,
- xmlns = <<"jabber:iq:register">>,
- cdata = #cdata{default = none},
- result = '$cdata'}).
--xml(register_key,
- #elem{name = <<"key">>,
- xmlns = <<"jabber:iq:register">>,
- cdata = #cdata{default = none},
- 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'},
- 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,
- #elem{name = <<"session">>,
- xmlns = <<"urn:ietf:params:xml:ns:xmpp-session">>,
- result = {session}}).
-
--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'},
- 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 = <<"http://etherx.jabber.org/streams">>,
- 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,
- #elem{name = <<"vCard">>,
- xmlns = <<"vcard-temp">>,
- result = {vcard, '$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'}).
-
--xml(vcard_xupdate,
- #elem{name = <<"x">>,
- xmlns = <<"vcard-temp:x:update">>,
- result = {vcard_xupdate, '$photo'},
- refs = [#ref{name = vcard_xupdate_photo, min = 0, max = 1,
- label = '$photo'}]}).
-
--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 = '$value',
- 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'},
- 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,
- 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">>,
- result = {pubsub_subscription, '$jid', '$node', '$subid',
- '$type'},
- attrs = [#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, []}}]}).
-
--xml(pubsub_affiliation,
- #elem{name = <<"affiliation">>,
- xmlns = <<"http://jabber.org/protocol/pubsub">>,
- result = {pubsub_affiliation, '$node', '$type'},
- attrs = [#attr{name = <<"node">>,
- required = true},
- #attr{name = <<"affiliation">>,
- label = '$type',
- required = true,
- dec = {dec_enum, [[member, none, outcast, owner,
- publisher, 'publish-only']]},
- enc = {enc_enum, []}}]}).
-
--xml(pubsub_item,
- #elem{name = <<"item">>,
- xmlns = <<"http://jabber.org/protocol/pubsub">>,
- result = {pubsub_item, '$id', '$_xmls'},
- attrs = [#attr{name = <<"id">>}]}).
-
--xml(pubsub_items,
- #elem{name = <<"items">>,
- xmlns = <<"http://jabber.org/protocol/pubsub">>,
- result = {pubsub_items, '$node', '$max_items',
- '$subid', '$items'},
- attrs = [#attr{name = <<"max_items">>,
- dec = {dec_int, [0, infinity]},
- enc = {enc_int, []}},
- #attr{name = <<"node">>,
- required = true},
- #attr{name = <<"subid">>}],
- refs = [#ref{name = pubsub_item, label = '$items'}]}).
-
--xml(pubsub_event_retract,
- #elem{name = <<"retract">>,
- xmlns = <<"http://jabber.org/protocol/pubsub#event">>,
- result = '$id',
- attrs = [#attr{name = <<"id">>, required = true}]}).
-
--xml(pubsub_event_item,
- #elem{name = <<"item">>,
- xmlns = <<"http://jabber.org/protocol/pubsub#event">>,
- result = {pubsub_event_item, '$id', '$node', '$publisher', '$_xmls'},
- attrs = [#attr{name = <<"id">>},
- #attr{name = <<"node">>},
- #attr{name = <<"publisher">>}]}).
-
--xml(pubsub_event_items,
- #elem{name = <<"items">>,
- xmlns = <<"http://jabber.org/protocol/pubsub#event">>,
- result = {pubsub_event_items, '$node', '$retract', '$items'},
- attrs = [#attr{name = <<"node">>,
- required = true}],
- refs = [#ref{name = pubsub_event_retract, label = '$retract'},
- #ref{name = pubsub_event_item, label = '$items'}]}).
-
--xml(pubsub_event,
- #elem{name = <<"event">>,
- xmlns = <<"http://jabber.org/protocol/pubsub#event">>,
- result = {pubsub_event, '$items'},
- refs = [#ref{name = pubsub_event_items, label = '$items'}]}).
-
--xml(pubsub_subscriptions,
- #elem{name = <<"subscriptions">>,
- xmlns = <<"http://jabber.org/protocol/pubsub">>,
- result = {'$node', '$subscriptions'},
- attrs = [#attr{name = <<"node">>,
- default = none}],
- refs = [#ref{name = pubsub_subscription, label = '$subscriptions'}]}).
-
--xml(pubsub_affiliations,
- #elem{name = <<"affiliations">>,
- xmlns = <<"http://jabber.org/protocol/pubsub">>,
- result = '$affiliations',
- refs = [#ref{name = pubsub_affiliation, label = '$affiliations'}]}).
-
--xml(pubsub_subscribe,
- #elem{name = <<"subscribe">>,
- xmlns = <<"http://jabber.org/protocol/pubsub">>,
- result = {pubsub_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 = {pubsub_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 = {pubsub_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 = {pubsub_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 = {pubsub_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,
- #elem{name = <<"pubsub">>,
- xmlns = <<"http://jabber.org/protocol/pubsub">>,
- result = {pubsub, '$subscriptions', '$affiliations', '$publish',
- '$subscribe', '$unsubscribe', '$options', '$items',
- '$retract'},
- 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_publish, label = '$publish',
- min = 0, max = 1}]}).
-
--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}).
-
--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'},
- 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_user_reason,
- #elem{name = <<"reason">>,
- xmlns = <<"http://jabber.org/protocol/muc#user">>,
- 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_user_reason, min = 0,
- max = 1, label = '$reason'}]}).
-
--xml(muc_user_destroy,
- #elem{name = <<"destroy">>,
- xmlns = <<"http://jabber.org/protocol/muc#user">>,
- result = {muc_user_destroy, '$reason', '$jid'},
- attrs = [#attr{name = <<"jid">>,
- dec = {dec_jid, []},
- enc = {enc_jid, []}}],
- refs = [#ref{name = muc_user_reason, min = 0,
- max = 1, label = '$reason'}]}).
-
--xml(muc_user_invite,
- #elem{name = <<"invite">>,
- xmlns = <<"http://jabber.org/protocol/muc#user">>,
- result = {muc_invite, '$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_user_reason, min = 0,
- max = 1, label = '$reason'}]}).
-
--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_user_reason,
- 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'},
- attrs = [#attr{name = <<"password">>}],
- refs = [#ref{name = muc_user_decline, min = 0,
- max = 1, label = '$decline'},
- #ref{name = muc_user_destroy, min = 0, max = 1,
- label = '$destroy'},
- #ref{name = muc_user_invite, label = '$invites'},
- #ref{name = muc_user_item, label = '$items'},
- #ref{name = muc_user_status, label = '$status_codes'}]}).
-
--xml(muc_owner_password,
- #elem{name = <<"password">>,
- xmlns = <<"http://jabber.org/protocol/muc#owner">>,
- result = '$cdata'}).
-
--xml(muc_owner_reason,
- #elem{name = <<"reason">>,
- xmlns = <<"http://jabber.org/protocol/muc#owner">>,
- result = '$cdata'}).
-
--xml(muc_owner_destroy,
- #elem{name = <<"destroy">>,
- xmlns = <<"http://jabber.org/protocol/muc#owner">>,
- result = {muc_owner_destroy, '$jid', '$reason', '$password'},
- attrs = [#attr{name = <<"jid">>,
- dec = {dec_jid, []},
- enc = {enc_jid, []}}],
- refs = [#ref{name = muc_owner_password, min = 0, max = 1,
- label = '$password'},
- #ref{name = muc_owner_reason, min = 0, max = 1,
- label = '$reason'}]}).
-
--xml(muc_owner,
- #elem{name = <<"query">>,
- xmlns = <<"http://jabber.org/protocol/muc#owner">>,
- result = {muc_owner, '$destroy', '$config'},
- refs = [#ref{name = muc_owner_destroy, min = 0, max = 1,
- label = '$destroy'},
- #ref{name = xdata, min = 0, max = 1, label = '$config'}]}).
-
--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_admin_reason,
- 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_reason,
- #elem{name = <<"reason">>,
- xmlns = <<"http://jabber.org/protocol/muc#admin">>,
- result = '$cdata'}).
-
--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'},
- attrs = [#attr{name = <<"password">>}],
- refs = [#ref{name = muc_history, min = 0, max = 1,
- label = '$history'}]}).
-
--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 = none},
- 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_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',
- '$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 = 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:tmp">>,
- result = '$cdata',
- cdata = #cdata{required = true,
- dec = {dec_jid, []},
- enc = {enc_jid, []}}}).
-
--xml(mam_never,
- #elem{name = <<"never">>,
- xmlns = <<"urn:xmpp:mam:tmp">>,
- result = '$jids',
- refs = [#ref{name = mam_jid, label = '$jids', default = []}]}).
-
--xml(mam_always,
- #elem{name = <<"always">>,
- xmlns = <<"urn:xmpp:mam:tmp">>,
- result = '$jids',
- refs = [#ref{name = mam_jid, label = '$jids', default = []}]}).
-
--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, default = []},
- #ref{name = mam_never, label = '$never',
- min = 0, max = 1, default = []}]}).
-
--xml(mam_fin,
- #elem{name = <<"fin">>,
- xmlns = <<"urn:xmpp:mam:0">>,
- result = {mam_fin, '$id', '$rsm', '$stable', '$complete'},
- attrs = [#attr{name = <<"queryid">>, label = '$id'},
- #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', '$_els'},
- 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}).
-
--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'}]}).
-
-dec_tzo(Val) ->
- [H1, M1] = str:tokens(Val, <<":">>),
- H = jlib:binary_to_integer(H1),
- M = jlib: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])]).
-
-dec_utc(Val) ->
- {_, _, _} = jlib:datetime_string_to_timestamp(Val).
-
-enc_utc(Val) ->
- jlib:now_to_utc_string(Val).
-
-dec_jid(Val) ->
- case jid:from_string(Val) of
- error ->
- erlang:error(badarg);
- J ->
- J
- end.
-
-enc_jid(J) ->
- jid:to_string(J).
-
-resourceprep(R) ->
- case jid:resourceprep(R) of
- error ->
- erlang:error(badarg);
- R1 ->
- R1
- end.
-
-dec_bool(<<"false">>) -> false;
-dec_bool(<<"0">>) -> false;
-dec_bool(<<"true">>) -> true;
-dec_bool(<<"1">>) -> true.
-
-enc_bool(false) -> <<"false">>;
-enc_bool(true) -> <<"true">>.
-
-%% Local Variables:
-%% mode: erlang
-%% End:
-%% vim: set filetype=erlang tabstop=8: