From c3281011172693224d271f94c97ed2abaf33bc05 Mon Sep 17 00:00:00 2001 From: Metin Akat Date: Thu, 21 Mar 2019 17:35:08 +0200 Subject: [PATCH 1/6] Fix libphonenumber starting and usage --- apps/roster/src/roster.app.src | 2 +- apps/roster/src/roster.erl | 1 - apps/roster/src/roster_db.erl | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/apps/roster/src/roster.app.src b/apps/roster/src/roster.app.src index cbd238a71..f8d040ed4 100644 --- a/apps/roster/src/roster.app.src +++ b/apps/roster/src/roster.app.src @@ -2,6 +2,6 @@ [{description, "Roster Protocol"}, {vsn, "1"}, {registered, []}, - {applications, [kernel,stdlib,mnesia,kvs,emqttd,n2o,bpe,locus,prometheus]}, + {applications, [kernel,stdlib,mnesia,kvs,emqttd,n2o,bpe,locus,prometheus, libphonenumber_erlang]}, {mod, { roster, []}}, {env, []} ]}. diff --git a/apps/roster/src/roster.erl b/apps/roster/src/roster.erl index 46498d278..3ad97c231 100644 --- a/apps/roster/src/roster.erl +++ b/apps/roster/src/roster.erl @@ -72,7 +72,6 @@ start(_, _) -> atoms(), catch load([]), roster_history:start(), roster_push:start(), stickers_api:init_default_pack(), - application:start(libphonenumber_erlang), init_default_fake_numbers(), prometheus_api:init(), store_mnesia:sync_indexes(), A end catch E:Z -> diff --git a/apps/roster/src/roster_db.erl b/apps/roster/src/roster_db.erl index beac23ffd..e0a7dfd37 100644 --- a/apps/roster/src/roster_db.erl +++ b/apps/roster/src/roster_db.erl @@ -289,7 +289,7 @@ online_user_country(#'Roster'{phone = Phone} =Roster, Acc) -> _ -> Acc end. user_country(#'Roster'{phone = Phone}, Acc) -> - case phone_utils:mobile_phone_number_info(<<"+", Phone/binary>>) of + case libphonenumbers:mobile_phone_number_info(<<"+", Phone/binary>>) of #{country_metadata := #{id := Id}, valid := true} -> roster:inc_key(Id, Acc); _ -> Acc end. -- GitLab From 9e2b44c5915226f80da2a77d50828fdc11f65747 Mon Sep 17 00:00:00 2001 From: nedelcho-delchev-tues Date: Wed, 3 Apr 2019 08:56:37 +0300 Subject: [PATCH 2/6] Added relx release config --- rebar.config | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/rebar.config b/rebar.config index 3000e846c..8528359bc 100644 --- a/rebar.config +++ b/rebar.config @@ -1,6 +1,9 @@ {sub_dirs,["apps"]}. {lib_dirs,["apps","deps"]}. {deps_dir,"deps"}. + +{erl_opts, [{parse_transform,lager_transform},{parse_transform, oc_transform},debug_info]}. + {deps, [ %% {lager, ".*", {git, "https://github.com/erlang-lager/lager.git","3.6.1"}}, {bert, ".*", {git, "git://github.com/synrc/bert",{tag,"master"}}}, @@ -33,4 +36,29 @@ {'erlang-uuid', ".*", {git, "https://github.com/avtobiff/erlang-uuid.git",{tag,"master"}}} % {json_rec, ".*", {git, "https://github.com/justinkirby/json_rec.git",{tag,"master"}}} ]}. -{erl_opts, [{parse_transform,lager_transform},{parse_transform, oc_transform},debug_info]}. \ No newline at end of file + +{relx, [{release, {server, "1.0.0"}, + + [roster,service,bert,fs,base64url,jsx,tools,certifi, + ibrowse,sasl,counters,ctx,inets,compiler,gen_logger,gproc, + asn1,syntax_tools,xmerl,rfc3339,syn,cowlib,wts,esockd,goldrush, + public_key,lager,ssl,ranch,ssl_verify_fun,mochiweb,active,cowboy, + emq_dashboard,emqttc,envy,uuid,erlydtl,forms,gen_smtp,jwt,mad,migresia, + mini_s3,nitro,opencensus,parse_trans,rest,review,sh,stacktrace_compat + ]}, + + {sys_config, "./sys.config"}, + {vm_args, "./vm.args"}, + + {dev_mode, true}, + {include_erts, false}, + + {extended_start_script, true} + ] +}. + +{profiles, [ + {prod, [{relx, [{dev_mode, false}, + {include_erts, true}]} + ]} +]}. -- GitLab From e8b88d55b45478e3a17d7e1a18b6013ef88e8fcf Mon Sep 17 00:00:00 2001 From: Metin Akat Date: Tue, 9 Apr 2019 08:08:23 +0300 Subject: [PATCH 3/6] working dialyzer --- apps/roster/src/roster_validator.erl | 26 ++------------------------ rebar.config | 4 ++-- rebar.lock | 12 ++++++++---- 3 files changed, 12 insertions(+), 30 deletions(-) diff --git a/apps/roster/src/roster_validator.erl b/apps/roster/src/roster_validator.erl index f5fa42118..35f50d4a6 100644 --- a/apps/roster/src/roster_validator.erl +++ b/apps/roster/src/roster_validator.erl @@ -1,6 +1,6 @@ -module(roster_validator). -include_lib("bpe/include/bpe.hrl"). --include_lib("bpe/include/tour.hrl"). +-include_lib("bpe/include/doc.hrl"). -include_lib("emqttd/include/emqttd.hrl"). -include_lib("kvs/include/feed.hrl"). -include_lib("kvs/include/group.hrl"). @@ -1119,29 +1119,7 @@ validate(D = #'cx'{handlers = Handlers, actions = Actions, req = Req, module = M ok -> validate(lists:zip(FieldNames,Fields), [{ErrFields, D}|Acc]); Err -> Err end; -validate(D = #'user2'{id = Id, container = Container, feed = Feed, next = Next, prev = Prev, mail = Mail, name = Name, pass = Pass, zone = Zone, type = Type}, Acc) -> - ErrFields = lists:flatten( - [case {RecField, F} of - {id,_} when (is_integer(Id) orelse Id==[]) -> []; - {container,_} when is_atom(Container) -> []; - {feed,_} -> []; - {next,_} when (is_integer(Next) orelse Next==[]) -> []; - {prev,_} when (is_integer(Prev) orelse Prev==[]) -> []; - {mail,_} when (is_binary(Mail) orelse Mail==[]) -> []; - {name,_} when (is_binary(Name) orelse Name==[]) -> []; - {pass,_} when (is_binary(Pass) orelse Pass==[]) -> []; - {zone,_} when (is_binary(Zone) orelse Zone==[]) -> []; - {type,_} when (is_atom(Type) orelse Type==[]) -> []; - _ -> RecField - end || {RecField, F} <- lists:zip(record_info(fields, 'user2'), tl(tuple_to_list(D)))]), - CondFuns = [], - Fields = [], - FieldNames = [], - case validate(lists:zip3(CondFuns, FieldNames, Fields), [{ErrFields, D}|Acc]) of - ok -> validate(lists:zip(FieldNames,Fields), [{ErrFields, D}|Acc]); - Err -> Err - end; -validate(D = #'mqtt_topic'{topic = Topic, flags = Flags}, Acc) -> +validate(D = #'mqtt_topic'{topic = Topic, flags = Flags}, Acc) -> ErrFields = lists:flatten( [case {RecField, F} of {topic,_} when is_binary(Topic) -> []; diff --git a/rebar.config b/rebar.config index 3650b81c5..30394b007 100644 --- a/rebar.config +++ b/rebar.config @@ -5,11 +5,11 @@ {erl_opts, [{parse_transform,lager_transform},{parse_transform, oc_transform},debug_info]}. {deps, [ - {lager, ".*", {git, "https://github.com/erlang-lager/lager.git","3.6.1"}}, + {lager, ".*", {git, "https://github.com/voxoz/lager.git", {tag, "master"}}}, {bert, ".*", {git, "git://github.com/synrc/bert",{tag,"master"}}}, {active, ".*", {git, "git://github.com/synrc/active",{tag,"master"}}}, {esockd, ".*", {git, "https://github.com/voxoz/esockd",{ref, "a80634b961c315ffe5f020d73236473b53ae5dc9"}}}, - {bpe, ".*", {git, "git://github.com/synrc/bpe.git", {tag,"8f9e5ca7c8b8e5eb9c64381ceed549e9f5ef4f57"}}}, + {bpe, ".*", {git, "git://github.com/synrc/bpe.git", {tag,"master"}}}, {emqttd, ".*", {git, "git://github.com/synrc/emqttd",{tag,"master"}}}, {n2o, ".*", {git, "git://github.com/synrc/n2o", {tag,"master"}}}, {emqttc, ".*", {git, "git://github.com/voxoz/emqttc",{tag,"master"}}}, diff --git a/rebar.lock b/rebar.lock index 7e3256db8..55efe8fc8 100644 --- a/rebar.lock +++ b/rebar.lock @@ -12,8 +12,8 @@ {ref,"9bf347a128c0af6ca422dffb8f066ec1ff9fafca"}}, 0}, {<<"bpe">>, - {git,"git://github.com/spawnproc/bpe.git", - {ref,"73fa6ab18d77e8689c18a80e6dd1add2fdd4db22"}}, + {git,"git://github.com/synrc/bpe.git", + {ref,"7a7e5a00f29003315c1b29a3fe1438be061f20eb"}}, 0}, {<<"certifi">>,{pkg,<<"certifi">>,<<"2.4.2">>},1}, {<<"counters">>, @@ -60,6 +60,10 @@ {git,"https://github.com/voxoz/esockd", {ref,"a80634b961c315ffe5f020d73236473b53ae5dc9"}}, 0}, + {<<"forms">>, + {git,"git://github.com/synrc/forms", + {ref,"9594e8ac01c499c769082b1f949b684c411954cb"}}, + 1}, {<<"fs">>, {git,"git://github.com/synrc/fs", {ref,"dfa36b8fd363cdebff4755c42ce0565d05caaccf"}}, @@ -94,7 +98,7 @@ 0}, {<<"kvs">>, {git,"git://github.com/synrc/kvs", - {ref,"6a4ae5cec94add55c95ce4eb497732d682e6cfcc"}}, + {ref,"c0f9bd4766c2751e8f7b1752f8eb949d17f01b87"}}, 1}, {<<"lager">>, {git,"git://github.com/voxoz/lager", @@ -130,7 +134,7 @@ 0}, {<<"nitro">>, {git,"git://github.com/synrc/nitro", - {ref,"3f15180c00fcc5c49686d2afe6267467d844e06a"}}, + {ref,"007d2d980f4d123b1d596546602e38f69e359067"}}, 1}, {<<"opencensus-erlang">>, {git,"https://github.com/voxoz/opencensus-erlang", -- GitLab From 0cbf77f9facce949e8190d9e5e9e0ce36fc84a2f Mon Sep 17 00:00:00 2001 From: Metin Akat Date: Tue, 9 Apr 2019 09:22:24 +0300 Subject: [PATCH 4/6] upgrade bert to the latest version --- rebar.config | 9 +-------- rebar.lock | 8 ++++---- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/rebar.config b/rebar.config index 30394b007..997ebc3d6 100644 --- a/rebar.config +++ b/rebar.config @@ -40,14 +40,7 @@ {relx, [{release, {server, "1.0.0"}, - [roster,service -%% ,bert,fs,base64url,jsx,tools,certifi, -%% ibrowse,sasl,counters,ctx,inets,compiler,gen_logger,gproc, -%% asn1,syntax_tools,xmerl,rfc3339,syn,cowlib,wts,esockd,goldrush, -%% public_key,lager,ssl,ranch,ssl_verify_fun,mochiweb,active,cowboy, -%% emq_dashboard,emqttc,envy,uuid,erlydtl,forms,gen_smtp,jwt,mad,migresia, -%% mini_s3,nitro,opencensus,parse_trans,rest,review,sh,stacktrace_compat - ]}, + [roster, service]}, {sys_config, "./sys.config"}, {vm_args, "./vm.args"}, diff --git a/rebar.lock b/rebar.lock index 55efe8fc8..5412bd35d 100644 --- a/rebar.lock +++ b/rebar.lock @@ -9,7 +9,7 @@ 0}, {<<"bert">>, {git,"git://github.com/synrc/bert", - {ref,"9bf347a128c0af6ca422dffb8f066ec1ff9fafca"}}, + {ref,"6d01890639016c5ff78d04c723a07a8a1b101ebf"}}, 0}, {<<"bpe">>, {git,"git://github.com/synrc/bpe.git", @@ -79,7 +79,7 @@ {<<"goldrush">>, {git,"git://github.com/voxoz/goldrush.git", {ref,"9e92405985827fabd2508b92bdc8b28b9e17b668"}}, - 2}, + 1}, {<<"gproc">>, {git,"https://github.com/uwiger/gproc", {ref,"1d16f5e6d7cf616eec4395f2385e3a680a4ffc9f"}}, @@ -101,9 +101,9 @@ {ref,"c0f9bd4766c2751e8f7b1752f8eb949d17f01b87"}}, 1}, {<<"lager">>, - {git,"git://github.com/voxoz/lager", + {git,"https://github.com/voxoz/lager.git", {ref,"1ecf4c17e9e39dd7a1943140477f632d17518f0c"}}, - 1}, + 0}, {<<"libphonenumber_erlang">>, {git,"https://github.com/loxs/libphonenumber_erlang.git", {ref,"da6656a9fb43f91c4bfc3e05066f1d834dabb335"}}, -- GitLab From b6ceb5a60538f0f2dd08f0691ea552350089b890 Mon Sep 17 00:00:00 2001 From: Metin Akat Date: Tue, 9 Apr 2019 09:23:43 +0300 Subject: [PATCH 5/6] Re-generate roster_validator.erl --- apps/roster/src/roster_validator.erl | 878 +++++++++++++-------------- 1 file changed, 426 insertions(+), 452 deletions(-) diff --git a/apps/roster/src/roster_validator.erl b/apps/roster/src/roster_validator.erl index dcf46c0f5..6daa5662f 100644 --- a/apps/roster/src/roster_validator.erl +++ b/apps/roster/src/roster_validator.erl @@ -1,6 +1,5 @@ -module(roster_validator). -include_lib("bpe/include/bpe.hrl"). --include_lib("bpe/include/doc.hrl"). -include_lib("emqttd/include/emqttd.hrl"). -include_lib("kvs/include/feed.hrl"). -include_lib("kvs/include/group.hrl"). @@ -20,301 +19,293 @@ validate(Obj, Acc) when is_atom(Obj) -> Acc; validate(Obj, Acc) when is_integer(Obj) -> Acc; validate(Obj, Acc) when is_binary(Obj) -> Acc; -validate(D = #'writer'{id = Id, count = Count, cache = Cache, args = Args, first = First}, Acc) -> +validate(D = #'writer'{id = Id, count = Count, cache = Cache, args = Args, first = First}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} -> Acc2; - {count,_} when is_integer(Count) -> Acc2; - {cache,_} when Cache==[] orelse is_tuple(Cache) -> Acc2; - {args,_} -> Acc2; + {id,_} -> Acc2; + {count,_} when is_integer(Count) -> Acc2; + {cache,_} when Cache==[] orelse is_tuple(Cache) -> Acc2; + {args,_} -> Acc2; {first,_} when First==[] orelse is_tuple(First) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'writer'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'reader'{id = Id, pos = Pos, cache = Cache, args = Args, feed = Feed, dir = Dir}, Acc) -> +validate(D = #'reader'{id = Id, pos = Pos, cache = Cache, args = Args, feed = Feed, dir = Dir}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} -> Acc2; - {pos,_} when Pos==[] orelse is_integer(Pos) -> Acc2; - {cache,_} when Cache==[] orelse is_integer(Cache) -> Acc2; - {args,_} -> Acc2; - {feed,_} -> Acc2; + {id,_} -> Acc2; + {pos,_} when Pos==[] orelse is_integer(Pos) -> Acc2; + {cache,_} when Cache==[] orelse is_integer(Cache) -> Acc2; + {args,_} -> Acc2; + {feed,_} -> Acc2; {dir,_} when Dir==0 orelse Dir==1 -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'reader'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'cur'{id = Id, top = Top, bot = Bot, dir = Dir, reader = Reader, writer = Writer, args = Args}, Acc) -> +validate(D = #'cur'{id = Id, top = Top, bot = Bot, dir = Dir, reader = Reader, writer = Writer, args = Args}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} -> Acc2; - {top,_} when Top==[] orelse is_integer(Top) -> Acc2; - {bot,_} when Bot==[] orelse is_integer(Bot) -> Acc2; - {dir,_} when Dir==0 orelse Dir==1 -> Acc2; - {reader,_} when Reader==[] orelse is_tuple(Reader) -> Acc2; - {writer,_} when Writer==[] orelse is_tuple(Writer) -> Acc2; + {id,_} -> Acc2; + {top,_} when Top==[] orelse is_integer(Top) -> Acc2; + {bot,_} when Bot==[] orelse is_integer(Bot) -> Acc2; + {dir,_} when Dir==0 orelse Dir==1 -> Acc2; + {reader,_} when Reader==[] orelse is_tuple(Reader) -> Acc2; + {writer,_} when Writer==[] orelse is_tuple(Writer) -> Acc2; {args,_} when is_list(Args) -> lists:foldl(fun(Tmp, Acc3) when is_tuple(Tmp) orelse is_integer(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{args, D}|Acc3] end, Acc2, Args); _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'cur'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'iter'{id = Id, container = Container, feed = Feed, next = Next, prev = Prev}, Acc) -> +validate(D = #'iter'{id = Id, container = Container, feed = Feed, next = Next, prev = Prev}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} when Id==[] orelse is_integer(Id) -> Acc2; - {container,_} when is_atom(Container) -> Acc2; - {feed,_} -> Acc2; - {next,_} when Next==[] orelse is_integer(Next) -> Acc2; + {id,_} when Id==[] orelse is_integer(Id) -> Acc2; + {container,_} when is_atom(Container) -> Acc2; + {feed,_} -> Acc2; + {next,_} when Next==[] orelse is_integer(Next) -> Acc2; {prev,_} when Prev==[] orelse is_integer(Prev) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'iter'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'container'{id = Id, top = Top, rear = Rear, count = Count}, Acc) -> +validate(D = #'container'{id = Id, top = Top, rear = Rear, count = Count}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} when Id==[] orelse is_integer(Id) -> Acc2; - {top,_} when Top==[] orelse is_integer(Top) -> Acc2; - {rear,_} when Rear==[] orelse is_integer(Rear) -> Acc2; + {id,_} when Id==[] orelse is_integer(Id) -> Acc2; + {top,_} when Top==[] orelse is_integer(Top) -> Acc2; + {rear,_} when Rear==[] orelse is_integer(Rear) -> Acc2; {count,_} when is_integer(Count) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'container'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'iterator'{id = Id, container = Container, feed_id = Feed_id, prev = Prev, next = Next, feeds = Feeds}, Acc) -> +validate(D = #'iterator'{id = Id, container = Container, feed_id = Feed_id, prev = Prev, next = Next, feeds = Feeds}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} when Id==[] orelse is_integer(Id) -> Acc2; - {container,_} when is_atom(Container) -> Acc2; - {feed_id,_} -> Acc2; - {prev,_} when Prev==[] orelse is_integer(Prev) -> Acc2; - {next,_} when Next==[] orelse is_integer(Next) -> Acc2; + {id,_} when Id==[] orelse is_integer(Id) -> Acc2; + {container,_} when is_atom(Container) -> Acc2; + {feed_id,_} -> Acc2; + {prev,_} when Prev==[] orelse is_integer(Prev) -> Acc2; + {next,_} when Next==[] orelse is_integer(Next) -> Acc2; {feeds,_} when is_list(Feeds) -> []; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'iterator'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'log'{id = Id, top = Top, rear = Rear, count = Count}, Acc) -> +validate(D = #'log'{id = Id, top = Top, rear = Rear, count = Count}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} when Id==[] orelse is_integer(Id) -> Acc2; - {top,_} when Top==[] orelse is_integer(Top) -> Acc2; - {rear,_} when Rear==[] orelse is_integer(Rear) -> Acc2; + {id,_} when Id==[] orelse is_integer(Id) -> Acc2; + {top,_} when Top==[] orelse is_integer(Top) -> Acc2; + {rear,_} when Rear==[] orelse is_integer(Rear) -> Acc2; {count,_} when is_integer(Count) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'log'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'operation'{id = Id, container = Container, feed_id = Feed_id, prev = Prev, next = Next, feeds = Feeds}, Acc) -> +validate(D = #'operation'{id = Id, container = Container, feed_id = Feed_id, prev = Prev, next = Next, feeds = Feeds}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} when Id==[] orelse is_integer(Id) -> Acc2; - {container,_} when is_atom(Container) -> Acc2; - {feed_id,_} -> Acc2; - {prev,_} when Prev==[] orelse is_integer(Prev) -> Acc2; - {next,_} when Next==[] orelse is_integer(Next) -> Acc2; + {id,_} when Id==[] orelse is_integer(Id) -> Acc2; + {container,_} when is_atom(Container) -> Acc2; + {feed_id,_} -> Acc2; + {prev,_} when Prev==[] orelse is_integer(Prev) -> Acc2; + {next,_} when Next==[] orelse is_integer(Next) -> Acc2; {feeds,_} when is_list(Feeds) -> []; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'operation'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'feed'{id = Id, top = Top, rear = Rear, count = Count}, Acc) -> +validate(D = #'feed'{id = Id, top = Top, rear = Rear, count = Count}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} when Id==[] orelse is_integer(Id) -> Acc2; - {top,_} when Top==[] orelse is_integer(Top) -> Acc2; - {rear,_} when Rear==[] orelse is_integer(Rear) -> Acc2; + {id,_} when Id==[] orelse is_integer(Id) -> Acc2; + {top,_} when Top==[] orelse is_integer(Top) -> Acc2; + {rear,_} when Rear==[] orelse is_integer(Rear) -> Acc2; {count,_} when is_integer(Count) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'feed'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'max_tour'{count = Count, joined = Joined}, Acc) -> - ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> - case {RecField, F} of - {count,_} when is_integer(Count) -> Acc2; - {joined,_} when is_integer(Joined) -> Acc2; - _ -> [{RecField, D}|Acc2] - end end, Acc, lists:zip(record_info(fields, 'max_tour'), tl(tuple_to_list(D)))), - {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), - ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'join_application'{id = Id, name = Name, data = Data}, Acc) -> - ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> - case {RecField, F} of - {id,_} when is_integer(Id) -> Acc2; - {name,_} when is_binary(Name) -> Acc2; - {data,_} -> Acc2; - _ -> [{RecField, D}|Acc2] - end end, Acc, lists:zip(record_info(fields, 'join_application'), tl(tuple_to_list(D)))), - {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), - ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'tour_list'{users = Users}, Acc) -> - ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> - case {RecField, F} of - {users,_} when is_list(Users) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'join_application') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{users, D}|Acc3] end, Acc2, Users); - _ -> [{RecField, D}|Acc2] - end end, Acc, lists:zip(record_info(fields, 'tour_list'), tl(tuple_to_list(D)))), - {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), - ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'task'{name = Name, roles = Roles, module = Module}, Acc) -> +validate(D = #'task'{name = Name, module = Module, prompt = Prompt, roles = Roles}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {name,_} when Name==[] orelse is_atom(Name) -> Acc2; + {name,_} when Name==[] orelse is_atom(Name) -> Acc2; + {module,_} when Module==[] orelse is_atom(Module) -> Acc2; + {prompt,_} when is_list(Prompt) -> + lists:foldl(fun(Tmp, Acc3) when is_tuple(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{prompt, D}|Acc3] end, Acc2, Prompt); {roles,_} when is_binary(Roles) -> Acc2; - {module,_} when Module==[] orelse is_atom(Module) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'task'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'userTask'{name = Name, roles = Roles, module = Module}, Acc) -> +validate(D = #'userTask'{name = Name, module = Module, prompt = Prompt, roles = Roles}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {name,_} when Name==[] orelse is_atom(Name) -> Acc2; + {name,_} when Name==[] orelse is_atom(Name) -> Acc2; + {module,_} when Module==[] orelse is_atom(Module) -> Acc2; + {prompt,_} when is_list(Prompt) -> + lists:foldl(fun(Tmp, Acc3) when is_tuple(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{prompt, D}|Acc3] end, Acc2, Prompt); {roles,_} when is_binary(Roles) -> Acc2; - {module,_} when Module==[] orelse is_atom(Module) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'userTask'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'serviceTask'{name = Name, roles = Roles, module = Module}, Acc) -> +validate(D = #'serviceTask'{name = Name, module = Module, prompt = Prompt, roles = Roles}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {name,_} when Name==[] orelse is_atom(Name) -> Acc2; + {name,_} when Name==[] orelse is_atom(Name) -> Acc2; + {module,_} when Module==[] orelse is_atom(Module) -> Acc2; + {prompt,_} when is_list(Prompt) -> + lists:foldl(fun(Tmp, Acc3) when is_tuple(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{prompt, D}|Acc3] end, Acc2, Prompt); {roles,_} when is_binary(Roles) -> Acc2; - {module,_} when Module==[] orelse is_atom(Module) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'serviceTask'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'receiveTask'{name = Name, roles = Roles, module = Module}, Acc) -> +validate(D = #'receiveTask'{name = Name, module = Module, prompt = Prompt, roles = Roles}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {name,_} when Name==[] orelse is_atom(Name) -> Acc2; + {name,_} when Name==[] orelse is_atom(Name) -> Acc2; + {module,_} when Module==[] orelse is_atom(Module) -> Acc2; + {prompt,_} when is_list(Prompt) -> + lists:foldl(fun(Tmp, Acc3) when is_tuple(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{prompt, D}|Acc3] end, Acc2, Prompt); {roles,_} when is_binary(Roles) -> Acc2; - {module,_} when Module==[] orelse is_atom(Module) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'receiveTask'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'messageEvent'{name = Name, payload = Payload, timeout = Timeout, module = Module}, Acc) -> +validate(D = #'messageEvent'{name = Name, module = Module, prompt = Prompt, payload = Payload, timeout = Timeout}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {name,_} when Name==[] orelse is_atom(Name) -> Acc2; - {payload,_} when is_binary(Payload) -> Acc2; + {name,_} when Name==[] orelse is_atom(Name) -> Acc2; + {module,_} when is_atom(Module) -> Acc2; + {prompt,_} when is_list(Prompt) -> + lists:foldl(fun(Tmp, Acc3) when is_tuple(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{prompt, D}|Acc3] end, Acc2, Prompt); + {payload,_} when is_binary(Payload) -> Acc2; {timeout,_} when is_tuple(Timeout) -> Acc2; - {module,_} when is_atom(Module) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'messageEvent'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'boundaryEvent'{name = Name, payload = Payload, timeout = Timeout, timeDate = TimeDate, timeDuration = TimeDuration, timeCycle = TimeCycle, module = Module}, Acc) -> +validate(D = #'boundaryEvent'{name = Name, module = Module, prompt = Prompt, payload = Payload, timeout = Timeout, timeDate = TimeDate, timeDuration = TimeDuration, timeCycle = TimeCycle}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {name,_} when Name==[] orelse is_atom(Name) -> Acc2; - {payload,_} when is_binary(Payload) -> Acc2; - {timeout,_} when is_tuple(Timeout) -> Acc2; - {timeDate,_} when is_binary(TimeDate) -> Acc2; - {timeDuration,_} when is_binary(TimeDuration) -> Acc2; + {name,_} when Name==[] orelse is_atom(Name) -> Acc2; + {module,_} when Module==[] orelse is_atom(Module) -> Acc2; + {prompt,_} when is_list(Prompt) -> + lists:foldl(fun(Tmp, Acc3) when is_tuple(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{prompt, D}|Acc3] end, Acc2, Prompt); + {payload,_} when is_binary(Payload) -> Acc2; + {timeout,_} when is_tuple(Timeout) -> Acc2; + {timeDate,_} when is_binary(TimeDate) -> Acc2; + {timeDuration,_} when is_binary(TimeDuration) -> Acc2; {timeCycle,_} when is_binary(TimeCycle) -> Acc2; - {module,_} when Module==[] orelse is_atom(Module) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'boundaryEvent'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'timeoutEvent'{name = Name, payload = Payload, timeout = Timeout, timeDate = TimeDate, timeDuration = TimeDuration, timeCycle = TimeCycle, module = Module}, Acc) -> +validate(D = #'timeoutEvent'{name = Name, module = Module, prompt = Prompt, payload = Payload, timeout = Timeout, timeDate = TimeDate, timeDuration = TimeDuration, timeCycle = TimeCycle}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {name,_} when Name==[] orelse is_atom(Name) -> Acc2; - {payload,_} when Payload==[] orelse is_binary(Payload) -> Acc2; - {timeout,_} when Timeout==[] orelse is_tuple(Timeout) -> Acc2; - {timeDate,_} when TimeDate==[] orelse is_binary(TimeDate) -> Acc2; - {timeDuration,_} when TimeDuration==[] orelse is_binary(TimeDuration) -> Acc2; + {name,_} when Name==[] orelse is_atom(Name) -> Acc2; + {module,_} when Module==[] orelse is_atom(Module) -> Acc2; + {prompt,_} when is_list(Prompt) -> + lists:foldl(fun(Tmp, Acc3) when is_tuple(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{prompt, D}|Acc3] end, Acc2, Prompt); + {payload,_} when Payload==[] orelse is_binary(Payload) -> Acc2; + {timeout,_} when Timeout==[] orelse is_tuple(Timeout) -> Acc2; + {timeDate,_} when TimeDate==[] orelse is_binary(TimeDate) -> Acc2; + {timeDuration,_} when TimeDuration==[] orelse is_binary(TimeDuration) -> Acc2; {timeCycle,_} when TimeCycle==[] orelse is_binary(TimeCycle) -> Acc2; - {module,_} when Module==[] orelse is_atom(Module) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'timeoutEvent'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'beginEvent'{name = Name, module = Module}, Acc) -> +validate(D = #'beginEvent'{name = Name, module = Module, prompt = Prompt}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {name,_} when Name==[] orelse is_atom(Name) -> Acc2; - {module,_} when Module==[] orelse is_atom(Module) -> Acc2; + {name,_} when Name==[] orelse is_atom(Name) -> Acc2; + {module,_} when Module==[] orelse is_atom(Module) -> Acc2; + {prompt,_} when is_list(Prompt) -> + lists:foldl(fun(Tmp, Acc3) when is_tuple(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{prompt, D}|Acc3] end, Acc2, Prompt); _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'beginEvent'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'endEvent'{name = Name, module = Module}, Acc) -> +validate(D = #'endEvent'{name = Name, module = Module, prompt = Prompt}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {name,_} when Name==[] orelse is_atom(Name) -> Acc2; - {module,_} when Module==[] orelse is_atom(Module) -> Acc2; + {name,_} when Name==[] orelse is_atom(Name) -> Acc2; + {module,_} when Module==[] orelse is_atom(Module) -> Acc2; + {prompt,_} when is_list(Prompt) -> + lists:foldl(fun(Tmp, Acc3) when is_tuple(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{prompt, D}|Acc3] end, Acc2, Prompt); _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'endEvent'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'sequenceFlow'{source = Source, target = Target}, Acc) -> +validate(D = #'sequenceFlow'{source = Source, target = Target}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {source,_} when Source==[] orelse is_atom(Source) -> Acc2; + {source,_} when Source==[] orelse is_atom(Source) -> Acc2; {target,_} when Target==[] orelse is_atom(Target) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'sequenceFlow'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'hist'{id = Id, container = Container, feed_id = Feed_id, prev = Prev, next = Next, feeds = Feeds, name = Name, task = Task, time = Time}, Acc) -> +validate(D = #'hist'{id = Id, container = Container, feed_id = Feed_id, prev = Prev, next = Next, feeds = Feeds, name = Name, task = Task, docs = Docs, time = Time}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} when Id==[] orelse is_integer(Id) -> Acc2; - {container,_} when is_atom(Container) -> Acc2; - {feed_id,_} -> Acc2; - {prev,_} when Prev==[] orelse is_integer(Prev) -> Acc2; - {next,_} when Next==[] orelse is_integer(Next) -> Acc2; - {feeds,_} when is_list(Feeds) -> []; - {name,_} when Name==[] orelse is_binary(Name) -> Acc2; - {task,_} when is_atom(Task) -> Acc2; + {id,_} when Id==[] orelse is_integer(Id) -> Acc2; + {container,_} when is_atom(Container) -> Acc2; + {feed_id,_} -> Acc2; + {prev,_} when Prev==[] orelse is_integer(Prev) -> Acc2; + {next,_} when Next==[] orelse is_integer(Next) -> Acc2; + {feeds,_} when is_list(Feeds) -> []; + {name,_} when Name==[] orelse is_binary(Name) -> Acc2; + {task,_} when is_atom(Task) -> Acc2; + {docs,_} when is_list(Docs) -> + lists:foldl(fun(Tmp, Acc3) when is_tuple(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{docs, D}|Acc3] end, Acc2, Docs); {time,_} -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'hist'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'process'{id = Id, container = Container, feed_id = Feed_id, prev = Prev, next = Next, feeds = Feeds, name = Name, roles = Roles, tasks = Tasks, events = Events, hist = Hist, flows = Flows, rules = Rules, docs = Docs, options = Options, task = Task, timer = Timer, notifications = Notifications, result = Result, started = Started, beginEvent = BeginEvent, endEvent = EndEvent}, Acc) -> +validate(D = #'process'{id = Id, container = Container, feed_id = Feed_id, prev = Prev, next = Next, feeds = Feeds, name = Name, roles = Roles, tasks = Tasks, events = Events, hist = Hist, flows = Flows, rules = Rules, docs = Docs, options = Options, task = Task, timer = Timer, notifications = Notifications, result = Result, started = Started, beginEvent = BeginEvent, endEvent = EndEvent}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} when Id==[] orelse is_integer(Id) -> Acc2; - {container,_} when is_atom(Container) -> Acc2; - {feed_id,_} -> Acc2; - {prev,_} when Prev==[] orelse is_integer(Prev) -> Acc2; - {next,_} when Next==[] orelse is_integer(Next) -> Acc2; - {feeds,_} when is_list(Feeds) -> []; - {name,_} when Name==[] orelse is_binary(Name) -> Acc2; - {roles,_} when is_list(Roles) -> []; + {id,_} when Id==[] orelse is_integer(Id) -> Acc2; + {container,_} when is_atom(Container) -> Acc2; + {feed_id,_} -> Acc2; + {prev,_} when Prev==[] orelse is_integer(Prev) -> Acc2; + {next,_} when Next==[] orelse is_integer(Next) -> Acc2; + {feeds,_} when is_list(Feeds) -> []; + {name,_} when Name==[] orelse is_binary(Name) -> Acc2; + {roles,_} when is_list(Roles) -> []; {tasks,_} when is_list(Tasks) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'task') orelse is_record(Tmp,'serviceTask') orelse is_record(Tmp,'userTask') orelse is_record(Tmp,'receiveTask') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{tasks, D}|Acc3] end, Acc2, Tasks); + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'task') orelse is_record(Tmp,'serviceTask') orelse is_record(Tmp,'userTask') orelse is_record(Tmp,'receiveTask') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{tasks, D}|Acc3] end, Acc2, Tasks); {events,_} when is_list(Events) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'messageEvent') orelse is_record(Tmp,'boundaryEvent') orelse is_record(Tmp,'timeoutEvent') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{events, D}|Acc3] end, Acc2, Events); - + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'messageEvent') orelse is_record(Tmp,'boundaryEvent') orelse is_record(Tmp,'timeoutEvent') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{events, D}|Acc3] end, Acc2, Events); + {flows,_} when is_list(Flows) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'sequenceFlow') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{flows, D}|Acc3] end, Acc2, Flows); - + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'sequenceFlow') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{flows, D}|Acc3] end, Acc2, Flows); + {docs,_} when is_list(Docs) -> - lists:foldl(fun(Tmp, Acc3) when is_tuple(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{docs, D}|Acc3] end, Acc2, Docs); - {options,_} -> Acc2; - {task,_} when Task==[] orelse is_atom(Task) -> Acc2; - {timer,_} when Timer==[] orelse is_binary(Timer) -> Acc2; - {notifications,_} when Notifications==[] orelse true -> Acc2; - {result,_} when Result==[] orelse is_binary(Result) -> Acc2; - {started,_} when Started==[] orelse is_binary(Started) -> Acc2; - {beginEvent,_} when BeginEvent==[] orelse is_atom(BeginEvent) -> Acc2; + lists:foldl(fun(Tmp, Acc3) when is_tuple(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{docs, D}|Acc3] end, Acc2, Docs); + {options,_} -> Acc2; + {task,_} when Task==[] orelse is_atom(Task) -> Acc2; + {timer,_} when Timer==[] orelse is_binary(Timer) -> Acc2; + {notifications,_} when Notifications==[] orelse true -> Acc2; + {result,_} when Result==[] orelse is_binary(Result) -> Acc2; + {started,_} when Started==[] orelse is_binary(Started) -> Acc2; + {beginEvent,_} when BeginEvent==[] orelse is_atom(BeginEvent) -> Acc2; {endEvent,_} when EndEvent==[] orelse is_atom(EndEvent) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'process'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'complete'{id = Id}, Acc) -> +validate(D = #'complete'{id = Id}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of {id,_} when Id==[] orelse is_integer(Id) -> Acc2; @@ -322,7 +313,7 @@ validate(D = #'complete'{id = Id}, Acc) -> end end, Acc, lists:zip(record_info(fields, 'complete'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'proc'{id = Id}, Acc) -> +validate(D = #'proc'{id = Id}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of {id,_} when Id==[] orelse is_integer(Id) -> Acc2; @@ -330,7 +321,7 @@ validate(D = #'proc'{id = Id}, Acc) -> end end, Acc, lists:zip(record_info(fields, 'proc'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'histo'{id = Id}, Acc) -> +validate(D = #'histo'{id = Id}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of {id,_} when Id==[] orelse is_integer(Id) -> Acc2; @@ -338,74 +329,74 @@ validate(D = #'histo'{id = Id}, Acc) -> end end, Acc, lists:zip(record_info(fields, 'histo'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'create'{proc = Proc, docs = Docs}, Acc) -> +validate(D = #'create'{proc = Proc, docs = Docs}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {proc,_} when Proc==[] orelse is_record(Proc,'process') orelse is_binary(Proc) -> Acc2; + {proc,_} when Proc==[] orelse is_record(Proc,'process') orelse is_binary(Proc) -> Acc2; {docs,_} when Docs==[] orelse is_list(Docs) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'join_application') orelse is_record(Tmp,'max_tour') orelse is_record(Tmp,'tour_list') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{docs, D}|Acc3] end, Acc2, Docs); + lists:foldl(fun(Tmp, Acc3) when is_tuple(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{docs, D}|Acc3] end, Acc2, Docs); _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'create'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'amend'{id = Id, docs = Docs}, Acc) -> +validate(D = #'amend'{id = Id, docs = Docs}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} when Id==[] orelse is_integer(Id) -> Acc2; + {id,_} when Id==[] orelse is_integer(Id) -> Acc2; {docs,_} when Docs==[] orelse is_list(Docs) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'join_application') orelse is_record(Tmp,'max_tour') orelse is_record(Tmp,'tour_list') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{docs, D}|Acc3] end, Acc2, Docs); + lists:foldl(fun(Tmp, Acc3) when is_tuple(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{docs, D}|Acc3] end, Acc2, Docs); _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'amend'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'chain'{id = Id, top = Top, rear = Rear, count = Count}, Acc) -> +validate(D = #'chain'{id = Id, top = Top, rear = Rear, count = Count}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} when Id==[] orelse is_integer(Id) -> Acc2; - {top,_} when Top==[] orelse is_integer(Top) -> Acc2; - {rear,_} when Rear==[] orelse is_integer(Rear) -> Acc2; + {id,_} when Id==[] orelse is_integer(Id) -> Acc2; + {top,_} when Top==[] orelse is_integer(Top) -> Acc2; + {rear,_} when Rear==[] orelse is_integer(Rear) -> Acc2; {count,_} when is_integer(Count) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'chain'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'push'{model = Model, type = Type, title = Title, alert = Alert, badge = Badge, sound = Sound}, Acc) -> +validate(D = #'push'{model = Model, type = Type, title = Title, alert = Alert, badge = Badge, sound = Sound}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {model,_} when Model==[] orelse true -> Acc2; - {type,_} when Type==[] orelse is_binary(Type) -> Acc2; - {title,_} when Title==[] orelse is_binary(Title) -> Acc2; - {alert,_} when Alert==[] orelse is_binary(Alert) -> Acc2; - {badge,_} when Badge==[] orelse is_integer(Badge) -> Acc2; + {model,_} when Model==[] orelse true -> Acc2; + {type,_} when Type==[] orelse is_binary(Type) -> Acc2; + {title,_} when Title==[] orelse is_binary(Title) -> Acc2; + {alert,_} when Alert==[] orelse is_binary(Alert) -> Acc2; + {badge,_} when Badge==[] orelse is_integer(Badge) -> Acc2; {sound,_} when Sound==[] orelse is_binary(Sound) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'push'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'Search'{id = Id, ref = Ref, field = Field, type = Type, value = Value, status = Status}, Acc) -> +validate(D = #'Search'{id = Id, ref = Ref, field = Field, type = Type, value = Value, status = Status}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} when is_integer(Id) -> Acc2; - {ref,_} when is_binary(Ref) -> Acc2; - {field,_} when is_binary(Field) -> Acc2; - {type,_} when Type=='==' orelse Type=='!=' orelse Type=='like' -> Acc2; + {id,_} when is_integer(Id) -> Acc2; + {ref,_} when is_binary(Ref) -> Acc2; + {field,_} when is_binary(Field) -> Acc2; + {type,_} when Type=='==' orelse Type=='!=' orelse Type=='like' -> Acc2; {value,_} when is_list(Value) -> - lists:foldl(fun(Tmp, Acc3) when true -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{value, D}|Acc3] end, Acc2, Value); + lists:foldl(fun(Tmp, Acc3) when true -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{value, D}|Acc3] end, Acc2, Value); {status,_} when Status=='profile' orelse Status=='roster' orelse Status=='contact' orelse Status=='member' orelse Status=='room' -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'Search'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'p2p'{from = From, to = To}, Acc) -> +validate(D = #'p2p'{from = From, to = To}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {from,_} when is_binary(From) -> Acc2; + {from,_} when is_binary(From) -> Acc2; {to,_} when is_binary(To) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'p2p'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'muc'{name = Name}, Acc) -> +validate(D = #'muc'{name = Name}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of {name,_} when is_binary(Name) -> Acc2; @@ -413,390 +404,390 @@ validate(D = #'muc'{name = Name}, Acc) -> end end, Acc, lists:zip(record_info(fields, 'muc'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'mqi'{feed_id = Feed_id, query = Query, status = Status}, Acc) -> +validate(D = #'mqi'{feed_id = Feed_id, query = Query, status = Status}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {feed_id, #'muc'{}} -> Acc2; - {query,_} when Query==[] orelse is_binary(Query) -> Acc2; + {feed_id, #'muc'{}} -> Acc2; + {query,_} when Query==[] orelse is_binary(Query) -> Acc2; {status,_} when Status==[] orelse Status=='admin' orelse Status=='member' orelse Status=='removed' -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'mqi'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'Feature'{id = Id, key = Key, value = Value, group = Group}, Acc) -> +validate(D = #'Feature'{id = Id, key = Key, value = Value, group = Group}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} when Id==[] orelse is_binary(Id) -> Acc2; - {key,_} when is_binary(Key) -> Acc2; - {value,_} when is_binary(Value) -> Acc2; + {id,_} when Id==[] orelse is_binary(Id) -> Acc2; + {key,_} when is_binary(Key) -> Acc2; + {value,_} when is_binary(Value) -> Acc2; {group,_} when is_binary(Group) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'Feature'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'Service'{id = Id, type = Type, data = Data, login = Login, password = Password, expiration = Expiration, status = Status}, Acc) -> +validate(D = #'Service'{id = Id, type = Type, data = Data, login = Login, password = Password, expiration = Expiration, status = Status}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} when Id==[] orelse is_binary(Id) -> Acc2; - {type,_} when Type=='email' orelse Type=='vox' orelse Type=='aws' orelse Type=='wallet' -> Acc2; - {data,_} -> Acc2; - {login,_} when Login==[] orelse is_binary(Login) -> Acc2; - {password,_} when Password==[] orelse is_binary(Password) -> Acc2; - {expiration,_} when Expiration==[] orelse is_integer(Expiration) -> Acc2; + {id,_} when Id==[] orelse is_binary(Id) -> Acc2; + {type,_} when Type=='email' orelse Type=='vox' orelse Type=='aws' orelse Type=='wallet' -> Acc2; + {data,_} -> Acc2; + {login,_} when Login==[] orelse is_binary(Login) -> Acc2; + {password,_} when Password==[] orelse is_binary(Password) -> Acc2; + {expiration,_} when Expiration==[] orelse is_integer(Expiration) -> Acc2; {status,_} when Status==[] orelse Status=='verified' orelse Status=='added' orelse Status=='add' orelse Status=='remove' -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'Service'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'Member'{id = Id, container = Container, feed_id = Feed_id, prev = Prev, next = Next, feeds = Feeds, phone_id = Phone_id, avatar = Avatar, names = Names, surnames = Surnames, alias = Alias, reader = Reader, update = Update, settings = Settings, services = Services, presence = Presence, status = Status}, Acc) -> +validate(D = #'Member'{id = Id, container = Container, feed_id = Feed_id, prev = Prev, next = Next, feeds = Feeds, phone_id = Phone_id, avatar = Avatar, names = Names, surnames = Surnames, alias = Alias, reader = Reader, update = Update, settings = Settings, services = Services, presence = Presence, status = Status}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} when Id==[] orelse is_integer(Id) -> Acc2; - {container,_} when Container=='chain' orelse Container=='cur' orelse Container==[] -> Acc2; - {feed_id,_} when is_record(Feed_id,'muc') orelse is_record(Feed_id,'p2p') orelse Feed_id==[] -> Acc2; - {prev,_} when Prev==[] orelse is_integer(Prev) -> Acc2; - {next,_} when Next==[] orelse is_integer(Next) -> Acc2; - {feeds,_} when is_list(Feeds) -> []; - {phone_id,_} when Phone_id==[] orelse is_binary(Phone_id) -> Acc2; - {avatar,_} when Avatar==[] orelse is_binary(Avatar) -> Acc2; - {names,_} when Names==[] orelse is_binary(Names) -> Acc2; - {surnames,_} when Surnames==[] orelse is_binary(Surnames) -> Acc2; - {alias,_} when Alias==[] orelse is_binary(Alias) -> Acc2; - {reader,_} when Reader==[] orelse is_integer(Reader) -> Acc2; - {update,_} when Update==[] orelse is_integer(Update) -> Acc2; + {id,_} when Id==[] orelse is_integer(Id) -> Acc2; + {container,_} when Container=='chain' orelse Container=='cur' orelse Container==[] -> Acc2; + {feed_id,_} when is_record(Feed_id,'muc') orelse is_record(Feed_id,'p2p') orelse Feed_id==[] -> Acc2; + {prev,_} when Prev==[] orelse is_integer(Prev) -> Acc2; + {next,_} when Next==[] orelse is_integer(Next) -> Acc2; + {feeds,_} when is_list(Feeds) -> []; + {phone_id,_} when Phone_id==[] orelse is_binary(Phone_id) -> Acc2; + {avatar,_} when Avatar==[] orelse is_binary(Avatar) -> Acc2; + {names,_} when Names==[] orelse is_binary(Names) -> Acc2; + {surnames,_} when Surnames==[] orelse is_binary(Surnames) -> Acc2; + {alias,_} when Alias==[] orelse is_binary(Alias) -> Acc2; + {reader,_} when Reader==[] orelse is_integer(Reader) -> Acc2; + {update,_} when Update==[] orelse is_integer(Update) -> Acc2; {settings,_} when Settings==[] orelse is_list(Settings) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Feature') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{settings, D}|Acc3] end, Acc2, Settings); + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Feature') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{settings, D}|Acc3] end, Acc2, Settings); {services,_} when Services==[] orelse is_list(Services) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Service') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{services, D}|Acc3] end, Acc2, Services); - {presence,_} when Presence==[] orelse Presence=='online' orelse Presence=='offline' -> Acc2; + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Service') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{services, D}|Acc3] end, Acc2, Services); + {presence,_} when Presence==[] orelse Presence=='online' orelse Presence=='offline' -> Acc2; {status,_} when Status==[] orelse Status=='admin' orelse Status=='member' orelse Status=='removed' orelse Status=='patch' orelse Status=='owner' -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'Member'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'Desc'{id = Id, mime = Mime, payload = Payload, parentid = Parentid, data = Data}, Acc) -> +validate(D = #'Desc'{id = Id, mime = Mime, payload = Payload, parentid = Parentid, data = Data}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} when Id==[] orelse is_binary(Id) -> Acc2; - {mime,_} when is_binary(Mime) -> Acc2; - {payload,_} when Payload==[] orelse is_binary(Payload) -> Acc2; - {parentid,_} when Parentid==[] orelse is_binary(Parentid) -> Acc2; + {id,_} when Id==[] orelse is_binary(Id) -> Acc2; + {mime,_} when is_binary(Mime) -> Acc2; + {payload,_} when Payload==[] orelse is_binary(Payload) -> Acc2; + {parentid,_} when Parentid==[] orelse is_binary(Parentid) -> Acc2; {data,_} when is_list(Data) -> lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Feature') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{data, D}|Acc3] end, Acc2, Data); _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'Desc'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'StickerPack'{id = Id, name = Name, keywords = Keywords, description = Description, author = Author, stickers = Stickers, created = Created, updated = Updated, downloaded = Downloaded}, Acc) -> +validate(D = #'StickerPack'{id = Id, name = Name, keywords = Keywords, description = Description, author = Author, stickers = Stickers, created = Created, updated = Updated, downloaded = Downloaded}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} when Id==[] orelse is_integer(Id) -> Acc2; - {name,_} when Name==[] orelse is_binary(Name) -> Acc2; + {id,_} when Id==[] orelse is_integer(Id) -> Acc2; + {name,_} when Name==[] orelse is_binary(Name) -> Acc2; {keywords,_} when is_list(Keywords) -> - lists:foldl(fun(Tmp, Acc3) when is_binary(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{keywords, D}|Acc3] end, Acc2, Keywords); - {description,_} when Description==[] orelse is_binary(Description) -> Acc2; - {author,_} when Author==[] orelse is_binary(Author) -> Acc2; + lists:foldl(fun(Tmp, Acc3) when is_binary(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{keywords, D}|Acc3] end, Acc2, Keywords); + {description,_} when Description==[] orelse is_binary(Description) -> Acc2; + {author,_} when Author==[] orelse is_binary(Author) -> Acc2; {stickers,_} when is_list(Stickers) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Desc') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{stickers, D}|Acc3] end, Acc2, Stickers); - {created,_} when is_integer(Created) -> Acc2; - {updated,_} when is_integer(Updated) -> Acc2; + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Desc') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{stickers, D}|Acc3] end, Acc2, Stickers); + {created,_} when is_integer(Created) -> Acc2; + {updated,_} when is_integer(Updated) -> Acc2; {downloaded,_} when is_integer(Downloaded) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'StickerPack'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'Message'{id = Id, container = Container, feed_id = Feed_id, prev = Prev, next = Next, msg_id = Msg_id, from = From, to = To, created = Created, files = Files, type = Type, link = Link, seenby = Seenby, repliedby = Repliedby, mentioned = Mentioned, status = Status}, Acc) -> +validate(D = #'Message'{id = Id, container = Container, feed_id = Feed_id, prev = Prev, next = Next, msg_id = Msg_id, from = From, to = To, created = Created, files = Files, type = Type, link = Link, seenby = Seenby, repliedby = Repliedby, mentioned = Mentioned, status = Status}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} when Id==[] orelse is_integer(Id) -> Acc2; - {container,_} when Container=='chain' orelse Container=='cur' orelse Container==[] -> Acc2; - {feed_id,_} when is_record(Feed_id,'muc') orelse is_record(Feed_id,'p2p') -> Acc2; - {prev,_} when Prev==[] orelse is_integer(Prev) -> Acc2; - {next,_} when Next==[] orelse is_integer(Next) -> Acc2; - {msg_id,_} when Msg_id==[] orelse is_binary(Msg_id) -> Acc2; - {from,_} when From==[] orelse is_binary(From) -> Acc2; - {to,_} when To==[] orelse is_binary(To) -> Acc2; - {created,_} when Created==[] orelse is_integer(Created) -> Acc2; + {id,_} when Id==[] orelse is_integer(Id) -> Acc2; + {container,_} when Container=='chain' orelse Container=='cur' orelse Container==[] -> Acc2; + {feed_id,_} when is_record(Feed_id,'muc') orelse is_record(Feed_id,'p2p') -> Acc2; + {prev,_} when Prev==[] orelse is_integer(Prev) -> Acc2; + {next,_} when Next==[] orelse is_integer(Next) -> Acc2; + {msg_id,_} when Msg_id==[] orelse is_binary(Msg_id) -> Acc2; + {from,_} when From==[] orelse is_binary(From) -> Acc2; + {to,_} when To==[] orelse is_binary(To) -> Acc2; + {created,_} when Created==[] orelse is_integer(Created) -> Acc2; {files,_} when is_list(Files) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Desc') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{files, D}|Acc3] end, Acc2, Files); + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Desc') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{files, D}|Acc3] end, Acc2, Files); {type,_} when is_list(Type) -> - lists:foldl(fun(Tmp, Acc3) when Tmp=='sys' orelse Tmp=='reply' orelse Tmp=='forward' orelse Tmp=='read' orelse Tmp=='edited' orelse Tmp=='cursor' -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{type, D}|Acc3] end, Acc2, Type); - {link,_} when Link==[] orelse is_integer(Link) orelse is_record(Link,'Message') -> Acc2; + lists:foldl(fun(Tmp, Acc3) when Tmp=='sys' orelse Tmp=='reply' orelse Tmp=='forward' orelse Tmp=='read' orelse Tmp=='edited' orelse Tmp=='cursor' -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{type, D}|Acc3] end, Acc2, Type); + {link,_} when Link==[] orelse is_integer(Link) orelse is_record(Link,'Message') -> Acc2; {seenby,_} when Seenby==[] orelse is_list(Seenby) -> - lists:foldl(fun(Tmp, Acc3) when is_binary(Tmp) orelse is_integer(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{seenby, D}|Acc3] end, Acc2, Seenby); + lists:foldl(fun(Tmp, Acc3) when is_binary(Tmp) orelse is_integer(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{seenby, D}|Acc3] end, Acc2, Seenby); {repliedby,_} when Repliedby==[] orelse is_list(Repliedby) -> - lists:foldl(fun(Tmp, Acc3) when is_integer(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{repliedby, D}|Acc3] end, Acc2, Repliedby); + lists:foldl(fun(Tmp, Acc3) when is_integer(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{repliedby, D}|Acc3] end, Acc2, Repliedby); {mentioned,_} when Mentioned==[] orelse is_list(Mentioned) -> - lists:foldl(fun(Tmp, Acc3) when is_integer(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{mentioned, D}|Acc3] end, Acc2, Mentioned); + lists:foldl(fun(Tmp, Acc3) when is_integer(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{mentioned, D}|Acc3] end, Acc2, Mentioned); {status,_} when Status==[] orelse Status=='async' orelse Status=='delete' orelse Status=='clear' orelse Status=='update' orelse Status=='edit' -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'Message'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'Link'{entity_id = Entity_id, name = Name, type = Type, status = Status}, Acc) -> +validate(D = #'Link'{entity_id = Entity_id, name = Name, type = Type, status = Status}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {entity_id,_} when Entity_id==[] orelse is_binary(Entity_id) -> Acc2; - {name,_} when Name==[] orelse is_binary(Name) -> Acc2; - {type,_} when Type==[] orelse Type=='group' orelse Type=='channel' -> Acc2; + {entity_id,_} when Entity_id==[] orelse is_binary(Entity_id) -> Acc2; + {name,_} when Name==[] orelse is_binary(Name) -> Acc2; + {type,_} when Type==[] orelse Type=='group' orelse Type=='channel' -> Acc2; {status,_} when Status==[] orelse Status=='get' orelse Status=='join' orelse Status=='update' orelse Status=='delete' -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'Link'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'Room'{id = Id, name = Name, links = Links, description = Description, settings = Settings, members = Members, admins = Admins, data = Data, type = Type, tos = Tos, tos_update = Tos_update, unread = Unread, mentions = Mentions, readers = Readers, last_msg = Last_msg, update = Update, created = Created, status = Status}, Acc) -> +validate(D = #'Room'{id = Id, name = Name, links = Links, description = Description, settings = Settings, members = Members, admins = Admins, data = Data, type = Type, tos = Tos, tos_update = Tos_update, unread = Unread, mentions = Mentions, readers = Readers, last_msg = Last_msg, update = Update, created = Created, status = Status}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} when Id==[] orelse is_binary(Id) -> Acc2; - {name,_} when Name==[] orelse is_binary(Name) -> Acc2; - {links,_} when Links==[] orelse is_binary(Links) -> Acc2; - {description,_} when Description==[] orelse is_binary(Description) -> Acc2; + {id,_} when Id==[] orelse is_binary(Id) -> Acc2; + {name,_} when Name==[] orelse is_binary(Name) -> Acc2; + {links,_} when Links==[] orelse is_binary(Links) -> Acc2; + {description,_} when Description==[] orelse is_binary(Description) -> Acc2; {settings,_} when is_list(Settings) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Feature') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{settings, D}|Acc3] end, Acc2, Settings); + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Feature') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{settings, D}|Acc3] end, Acc2, Settings); {members,_} when is_list(Members) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Member') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{members, D}|Acc3] end, Acc2, Members); + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Member') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{members, D}|Acc3] end, Acc2, Members); {admins,_} when is_list(Admins) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Member') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{admins, D}|Acc3] end, Acc2, Admins); + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Member') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{admins, D}|Acc3] end, Acc2, Admins); {data,_} when is_list(Data) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Desc') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{data, D}|Acc3] end, Acc2, Data); - {type,_} when Type==[] orelse Type=='group' orelse Type=='channel' -> Acc2; - {tos,_} when Tos==[] orelse is_binary(Tos) -> Acc2; - {tos_update,_} when Tos_update==[] orelse is_integer(Tos_update) -> Acc2; - {unread,_} when Unread==[] orelse is_integer(Unread) -> Acc2; + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Desc') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{data, D}|Acc3] end, Acc2, Data); + {type,_} when Type==[] orelse Type=='group' orelse Type=='channel' -> Acc2; + {tos,_} when Tos==[] orelse is_binary(Tos) -> Acc2; + {tos_update,_} when Tos_update==[] orelse is_integer(Tos_update) -> Acc2; + {unread,_} when Unread==[] orelse is_integer(Unread) -> Acc2; {mentions,_} when is_list(Mentions) -> - lists:foldl(fun(Tmp, Acc3) when is_integer(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{mentions, D}|Acc3] end, Acc2, Mentions); + lists:foldl(fun(Tmp, Acc3) when is_integer(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{mentions, D}|Acc3] end, Acc2, Mentions); {readers,_} when is_list(Readers) -> - lists:foldl(fun(Tmp, Acc3) when is_integer(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{readers, D}|Acc3] end, Acc2, Readers); - {last_msg,_} when Last_msg==[] orelse is_integer(Last_msg) orelse is_record(Last_msg,'Message') -> Acc2; - {update,_} when Update==[] orelse is_integer(Update) -> Acc2; - {created,_} when Created==[] orelse is_integer(Created) -> Acc2; + lists:foldl(fun(Tmp, Acc3) when is_integer(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{readers, D}|Acc3] end, Acc2, Readers); + {last_msg,_} when Last_msg==[] orelse is_integer(Last_msg) orelse is_record(Last_msg,'Message') -> Acc2; + {update,_} when Update==[] orelse is_integer(Update) -> Acc2; + {created,_} when Created==[] orelse is_integer(Created) -> Acc2; {status,_} when Status==[] orelse Status=='create' orelse Status=='leave' orelse Status=='add' orelse Status=='remove' orelse Status=='removed' orelse Status=='join' orelse Status=='patch' orelse Status=='get' orelse Status=='delete' orelse Status=='last_msg' orelse Status=='mute' orelse Status=='unmute' -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'Room'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'Tag'{roster_id = Roster_id, name = Name, color = Color, status = Status}, Acc) -> +validate(D = #'Tag'{roster_id = Roster_id, name = Name, color = Color, status = Status}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {roster_id,_} when Roster_id==[] orelse is_binary(Roster_id) -> Acc2; - {name,_} when is_binary(Name) -> Acc2; - {color,_} when is_binary(Color) -> Acc2; + {roster_id,_} when Roster_id==[] orelse is_binary(Roster_id) -> Acc2; + {name,_} when is_binary(Name) -> Acc2; + {color,_} when is_binary(Color) -> Acc2; {status,_} when Status==[] orelse Status=='create' orelse Status=='remove' orelse Status=='edit' -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'Tag'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'Star'{id = Id, client_id = Client_id, roster_id = Roster_id, message = Message, tags = Tags, status = Status}, Acc) -> +validate(D = #'Star'{id = Id, client_id = Client_id, roster_id = Roster_id, message = Message, tags = Tags, status = Status}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} when Id==[] orelse is_integer(Id) -> Acc2; - {client_id,_} when Client_id==[] orelse is_binary(Client_id) -> Acc2; - {roster_id,_} when Roster_id==[] orelse is_integer(Roster_id) -> Acc2; - {message, #'Message'{}} -> Acc2; + {id,_} when Id==[] orelse is_integer(Id) -> Acc2; + {client_id,_} when Client_id==[] orelse is_binary(Client_id) -> Acc2; + {roster_id,_} when Roster_id==[] orelse is_integer(Roster_id) -> Acc2; + {message, #'Message'{}} -> Acc2; {tags,_} when is_list(Tags) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Tag') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{tags, D}|Acc3] end, Acc2, Tags); + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Tag') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{tags, D}|Acc3] end, Acc2, Tags); {status,_} when Status==[] orelse Status=='add' orelse Status=='remove' -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'Star'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'Typing'{phone_id = Phone_id, comments = Comments}, Acc) -> +validate(D = #'Typing'{phone_id = Phone_id, comments = Comments}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {phone_id,_} when is_binary(Phone_id) -> Acc2; + {phone_id,_} when is_binary(Phone_id) -> Acc2; {comments,_} -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'Typing'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'Contact'{phone_id = Phone_id, avatar = Avatar, names = Names, surnames = Surnames, nick = Nick, reader = Reader, unread = Unread, last_msg = Last_msg, update = Update, created = Created, settings = Settings, services = Services, presence = Presence, status = Status}, Acc) -> +validate(D = #'Contact'{phone_id = Phone_id, avatar = Avatar, names = Names, surnames = Surnames, nick = Nick, reader = Reader, unread = Unread, last_msg = Last_msg, update = Update, created = Created, settings = Settings, services = Services, presence = Presence, status = Status}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {phone_id,_} when Phone_id==[] orelse is_binary(Phone_id) -> Acc2; - {avatar,_} when Avatar==[] orelse is_binary(Avatar) -> Acc2; - {names,_} when Names==[] orelse is_binary(Names) -> Acc2; - {surnames,_} when Surnames==[] orelse is_binary(Surnames) -> Acc2; - {nick,_} when Nick==[] orelse is_binary(Nick) -> Acc2; + {phone_id,_} when Phone_id==[] orelse is_binary(Phone_id) -> Acc2; + {avatar,_} when Avatar==[] orelse is_binary(Avatar) -> Acc2; + {names,_} when Names==[] orelse is_binary(Names) -> Acc2; + {surnames,_} when Surnames==[] orelse is_binary(Surnames) -> Acc2; + {nick,_} when Nick==[] orelse is_binary(Nick) -> Acc2; {reader,_} when Reader==[] orelse is_integer(Reader) orelse is_list(Reader) -> - lists:foldl(fun(Tmp, Acc3) when is_integer(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{reader, D}|Acc3] end, Acc2, Reader); - {unread,_} when Unread==[] orelse is_integer(Unread) -> Acc2; - {last_msg,_} when Last_msg==[] orelse is_record(Last_msg,'Message') -> Acc2; - {update,_} when Update==[] orelse is_integer(Update) -> Acc2; - {created,_} when Created==[] orelse is_integer(Created) -> Acc2; + lists:foldl(fun(Tmp, Acc3) when is_integer(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{reader, D}|Acc3] end, Acc2, Reader); + {unread,_} when Unread==[] orelse is_integer(Unread) -> Acc2; + {last_msg,_} when Last_msg==[] orelse is_record(Last_msg,'Message') -> Acc2; + {update,_} when Update==[] orelse is_integer(Update) -> Acc2; + {created,_} when Created==[] orelse is_integer(Created) -> Acc2; {settings,_} when is_list(Settings) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Feature') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{settings, D}|Acc3] end, Acc2, Settings); + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Feature') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{settings, D}|Acc3] end, Acc2, Settings); {services,_} when is_list(Services) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Service') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{services, D}|Acc3] end, Acc2, Services); - {presence,_} when Presence==[] orelse Presence=='online' orelse Presence=='offline' orelse is_binary(Presence) -> Acc2; + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Service') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{services, D}|Acc3] end, Acc2, Services); + {presence,_} when Presence==[] orelse Presence=='online' orelse Presence=='offline' orelse is_binary(Presence) -> Acc2; {status,_} when Status==[] orelse Status=='request' orelse Status=='authorization' orelse Status=='ignore' orelse Status=='internal' orelse Status=='friend' orelse Status=='last_msg' orelse Status=='ban' orelse Status=='banned' orelse Status=='deleted' -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'Contact'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'ExtendedStar'{star = Star, from = From}, Acc) -> +validate(D = #'ExtendedStar'{star = Star, from = From}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {star,_} when is_record(Star,'Star') orelse Star==[] -> Acc2; + {star,_} when is_record(Star,'Star') orelse Star==[] -> Acc2; {from,_} when is_record(From,'Contact') orelse is_record(From,'Room') orelse From==[] -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'ExtendedStar'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'Auth'{client_id = Client_id, dev_key = Dev_key, user_id = User_id, phone = Phone, token = Token, type = Type, sms_code = Sms_code, attempts = Attempts, services = Services, settings = Settings, push = Push, os = Os, created = Created, last_online = Last_online}, Acc) -> +validate(D = #'Auth'{client_id = Client_id, dev_key = Dev_key, user_id = User_id, phone = Phone, token = Token, type = Type, sms_code = Sms_code, attempts = Attempts, services = Services, settings = Settings, push = Push, os = Os, created = Created, last_online = Last_online}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {client_id,_} when Client_id==[] orelse is_binary(Client_id) -> Acc2; - {dev_key,_} when Dev_key==[] orelse is_binary(Dev_key) -> Acc2; - {user_id,_} when User_id==[] orelse is_binary(User_id) -> Acc2; - {phone,_} when Phone==[] orelse is_binary(Phone) orelse is_tuple(Phone) -> Acc2; - {token,_} when Token==[] orelse is_binary(Token) -> Acc2; - {type,_} when Type==[] orelse is_atom(Type) -> Acc2; - {sms_code,_} when Sms_code==[] orelse is_binary(Sms_code) -> Acc2; - {attempts,_} when Attempts==[] orelse is_integer(Attempts) -> Acc2; + {client_id,_} when Client_id==[] orelse is_binary(Client_id) -> Acc2; + {dev_key,_} when Dev_key==[] orelse is_binary(Dev_key) -> Acc2; + {user_id,_} when User_id==[] orelse is_binary(User_id) -> Acc2; + {phone,_} when Phone==[] orelse is_binary(Phone) orelse is_tuple(Phone) -> Acc2; + {token,_} when Token==[] orelse is_binary(Token) -> Acc2; + {type,_} when Type==[] orelse is_atom(Type) -> Acc2; + {sms_code,_} when Sms_code==[] orelse is_binary(Sms_code) -> Acc2; + {attempts,_} when Attempts==[] orelse is_integer(Attempts) -> Acc2; {services,_} when is_list(Services) -> - lists:foldl(fun(Tmp, Acc3) when true -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{services, D}|Acc3] end, Acc2, Services); + lists:foldl(fun(Tmp, Acc3) when true -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{services, D}|Acc3] end, Acc2, Services); {settings,_} when is_list(Settings) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Feature') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{settings, D}|Acc3] end, Acc2, Settings); - {push,_} when Push==[] orelse is_binary(Push) -> Acc2; - {os,_} when Os==[] orelse Os=='ios' orelse Os=='android' orelse Os=='web' -> Acc2; - {created,_} when Created==[] orelse is_integer(Created) -> Acc2; + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Feature') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{settings, D}|Acc3] end, Acc2, Settings); + {push,_} when Push==[] orelse is_binary(Push) -> Acc2; + {os,_} when Os==[] orelse Os=='ios' orelse Os=='android' orelse Os=='web' -> Acc2; + {created,_} when Created==[] orelse is_integer(Created) -> Acc2; {last_online,_} when Last_online==[] orelse is_integer(Last_online) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'Auth'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'Roster'{id = Id, names = Names, surnames = Surnames, email = Email, nick = Nick, userlist = Userlist, roomlist = Roomlist, favorite = Favorite, tags = Tags, phone = Phone, avatar = Avatar, update = Update, status = Status}, Acc) -> +validate(D = #'Roster'{id = Id, names = Names, surnames = Surnames, email = Email, nick = Nick, userlist = Userlist, roomlist = Roomlist, favorite = Favorite, tags = Tags, phone = Phone, avatar = Avatar, update = Update, status = Status}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} when Id==[] orelse is_binary(Id) orelse is_integer(Id) -> Acc2; - {names,_} when Names==[] orelse is_binary(Names) -> Acc2; - {surnames,_} when Surnames==[] orelse is_binary(Surnames) -> Acc2; - {email,_} when Email==[] orelse is_binary(Email) -> Acc2; - {nick,_} when Nick==[] orelse is_binary(Nick) -> Acc2; + {id,_} when Id==[] orelse is_binary(Id) orelse is_integer(Id) -> Acc2; + {names,_} when Names==[] orelse is_binary(Names) -> Acc2; + {surnames,_} when Surnames==[] orelse is_binary(Surnames) -> Acc2; + {email,_} when Email==[] orelse is_binary(Email) -> Acc2; + {nick,_} when Nick==[] orelse is_binary(Nick) -> Acc2; {userlist,_} when is_list(Userlist) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Contact') orelse is_integer(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{userlist, D}|Acc3] end, Acc2, Userlist); + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Contact') orelse is_integer(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{userlist, D}|Acc3] end, Acc2, Userlist); {roomlist,_} when is_list(Roomlist) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Room') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{roomlist, D}|Acc3] end, Acc2, Roomlist); + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Room') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{roomlist, D}|Acc3] end, Acc2, Roomlist); {favorite,_} when is_list(Favorite) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Star') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{favorite, D}|Acc3] end, Acc2, Favorite); + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Star') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{favorite, D}|Acc3] end, Acc2, Favorite); {tags,_} when is_list(Tags) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Tag') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{tags, D}|Acc3] end, Acc2, Tags); - {phone,_} when Phone==[] orelse is_binary(Phone) -> Acc2; - {avatar,_} when Avatar==[] orelse is_binary(Avatar) -> Acc2; - {update,_} when Update==[] orelse is_integer(Update) -> Acc2; + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Tag') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{tags, D}|Acc3] end, Acc2, Tags); + {phone,_} when Phone==[] orelse is_binary(Phone) -> Acc2; + {avatar,_} when Avatar==[] orelse is_binary(Avatar) -> Acc2; + {update,_} when Update==[] orelse is_integer(Update) -> Acc2; {status,_} when Status==[] orelse Status=='get' orelse Status=='create' orelse Status=='del' orelse Status=='remove' orelse Status=='nick' orelse Status=='add' orelse Status=='update' orelse Status=='list' orelse Status=='patch' orelse Status=='last_msg' -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'Roster'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'Profile'{phone = Phone, services = Services, rosters = Rosters, settings = Settings, update = Update, balance = Balance, presence = Presence, status = Status}, Acc) -> +validate(D = #'Profile'{phone = Phone, services = Services, rosters = Rosters, settings = Settings, update = Update, balance = Balance, presence = Presence, status = Status}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {phone,_} when Phone==[] orelse is_binary(Phone) -> Acc2; + {phone,_} when Phone==[] orelse is_binary(Phone) -> Acc2; {services,_} when is_list(Services) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Service') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{services, D}|Acc3] end, Acc2, Services); + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Service') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{services, D}|Acc3] end, Acc2, Services); {rosters,_} when is_list(Rosters) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Roster') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{rosters, D}|Acc3] end, Acc2, Rosters); + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Roster') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{rosters, D}|Acc3] end, Acc2, Rosters); {settings,_} when is_list(Settings) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Feature') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{settings, D}|Acc3] end, Acc2, Settings); - {update,_} when is_integer(Update) -> Acc2; - {balance,_} when is_integer(Balance) -> Acc2; - {presence,_} when Presence==[] orelse Presence=='offline' orelse Presence=='online' -> Acc2; + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Feature') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{settings, D}|Acc3] end, Acc2, Settings); + {update,_} when is_integer(Update) -> Acc2; + {balance,_} when is_integer(Balance) -> Acc2; + {presence,_} when Presence==[] orelse Presence=='offline' orelse Presence=='online' -> Acc2; {status,_} when Status==[] orelse Status=='remove' orelse Status=='get' orelse Status=='patch' orelse Status=='update' orelse Status=='delete' -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'Profile'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'Friend'{phone_id = Phone_id, friend_id = Friend_id, settings = Settings, status = Status}, Acc) -> +validate(D = #'Friend'{phone_id = Phone_id, friend_id = Friend_id, settings = Settings, status = Status}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {phone_id,_} when is_binary(Phone_id) -> Acc2; - {friend_id,_} when is_binary(Friend_id) -> Acc2; + {phone_id,_} when is_binary(Phone_id) -> Acc2; + {friend_id,_} when is_binary(Friend_id) -> Acc2; {settings,_} when is_list(Settings) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Feature') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{settings, D}|Acc3] end, Acc2, Settings); + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Feature') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{settings, D}|Acc3] end, Acc2, Settings); {status,_} when Status=='ban' orelse Status=='unban' orelse Status=='request' orelse Status=='confirm' orelse Status=='update' orelse Status=='ignore' -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'Friend'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'act'{name = Name, data = Data}, Acc) -> +validate(D = #'act'{name = Name, data = Data}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {name,_} when Name==[] orelse is_binary(Name) -> Acc2; + {name,_} when Name==[] orelse is_binary(Name) -> Acc2; {data,_} when is_binary(Data) orelse is_integer(Data) orelse is_list(Data) -> lists:foldl(fun(Tmp, Acc3) when true -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{data, D}|Acc3] end, Acc2, Data); _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'act'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'Job'{id = Id, container = Container, feed_id = Feed_id, prev = Prev, next = Next, context = Context, proc = Proc, time = Time, data = Data, events = Events, settings = Settings, status = Status}, Acc) -> +validate(D = #'Job'{id = Id, container = Container, feed_id = Feed_id, prev = Prev, next = Next, context = Context, proc = Proc, time = Time, data = Data, events = Events, settings = Settings, status = Status}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} when Id==[] orelse is_integer(Id) -> Acc2; - {container,_} when Container=='chain' orelse Container==[] -> Acc2; - {feed_id, #'act'{}} -> Acc2; - {prev,_} when Prev==[] orelse is_integer(Prev) -> Acc2; - {next,_} when Next==[] orelse is_integer(Next) -> Acc2; - {context,_} when Context==[] orelse is_integer(Context) orelse is_binary(Context) -> Acc2; - {proc,_} when Proc==[] orelse is_integer(Proc) orelse is_record(Proc,'process') -> Acc2; - {time,_} when Time==[] orelse is_integer(Time) -> Acc2; + {id,_} when Id==[] orelse is_integer(Id) -> Acc2; + {container,_} when Container=='chain' orelse Container==[] -> Acc2; + {feed_id, #'act'{}} -> Acc2; + {prev,_} when Prev==[] orelse is_integer(Prev) -> Acc2; + {next,_} when Next==[] orelse is_integer(Next) -> Acc2; + {context,_} when Context==[] orelse is_integer(Context) orelse is_binary(Context) -> Acc2; + {proc,_} when Proc==[] orelse is_integer(Proc) orelse is_record(Proc,'process') -> Acc2; + {time,_} when Time==[] orelse is_integer(Time) -> Acc2; {data,_} when is_list(Data) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Message') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{data, D}|Acc3] end, Acc2, Data); + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Message') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{data, D}|Acc3] end, Acc2, Data); {events,_} when Events==[] orelse is_list(Events) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'messageEvent') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{events, D}|Acc3] end, Acc2, Events); + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'messageEvent') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{events, D}|Acc3] end, Acc2, Events); {settings,_} when Settings==[] orelse is_list(Settings) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Feature') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{settings, D}|Acc3] end, Acc2, Settings); + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Feature') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{settings, D}|Acc3] end, Acc2, Settings); {status,_} when Status==[] orelse Status=='init' orelse Status=='update' orelse Status=='delete' orelse Status=='pending' orelse Status=='stop' orelse Status=='complete' -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'Job'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'History'{roster_id = Roster_id, feed = Feed, size = Size, entity_id = Entity_id, data = Data, status = Status}, Acc) -> +validate(D = #'History'{roster_id = Roster_id, feed = Feed, size = Size, entity_id = Entity_id, data = Data, status = Status}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {roster_id,_} when is_binary(Roster_id) -> Acc2; - {feed,_} when is_record(Feed,'p2p') orelse is_record(Feed,'muc') orelse is_record(Feed,'act') orelse is_record(Feed,'StickerPack') orelse Feed==[] -> Acc2; - {size,_} when Size==[] orelse is_integer(Size) -> Acc2; - {entity_id,_} when Entity_id==[] orelse is_integer(Entity_id) -> Acc2; + {roster_id,_} when is_binary(Roster_id) -> Acc2; + {feed,_} when is_record(Feed,'p2p') orelse is_record(Feed,'muc') orelse is_record(Feed,'act') orelse is_record(Feed,'StickerPack') orelse Feed==[] -> Acc2; + {size,_} when Size==[] orelse is_integer(Size) -> Acc2; + {entity_id,_} when Entity_id==[] orelse is_integer(Entity_id) -> Acc2; {data,_} when Data==[] orelse is_list(Data) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Message') orelse is_record(Tmp,'Job') orelse is_record(Tmp,'StickerPack') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{data, D}|Acc3] end, Acc2, Data); + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'Message') orelse is_record(Tmp,'Job') orelse is_record(Tmp,'StickerPack') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{data, D}|Acc3] end, Acc2, Data); {status,_} when Status=='updated' orelse Status=='get' orelse Status=='update' orelse Status=='last_loaded' orelse Status=='last_msg' orelse Status=='get_reply' orelse Status=='double_get' orelse Status=='delete' orelse Status=='image' orelse Status=='video' orelse Status=='file' orelse Status=='link' orelse Status=='audio' orelse Status=='contact' orelse Status=='location' -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'History'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'Schedule'{id = Id, proc = Proc, data = Data, state = State}, Acc) -> +validate(D = #'Schedule'{id = Id, proc = Proc, data = Data, state = State}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} when Id==[] orelse is_integer(Id) -> Acc2; - {proc,_} when Proc==[] orelse is_integer(Proc) -> Acc2; + {id,_} when Id==[] orelse is_integer(Id) -> Acc2; + {proc,_} when Proc==[] orelse is_integer(Proc) -> Acc2; {data,_} when is_list(Data) -> - lists:foldl(fun(Tmp, Acc3) when true -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{data, D}|Acc3] end, Acc2, Data); + lists:foldl(fun(Tmp, Acc3) when true -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{data, D}|Acc3] end, Acc2, Data); {state,_} when State==[] orelse true -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'Schedule'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'Index'{id = Id, roster = Roster}, Acc) -> +validate(D = #'Index'{id = Id, roster = Roster}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} when Id==[] orelse true -> Acc2; + {id,_} when Id==[] orelse true -> Acc2; {roster,_} when is_list(Roster) -> lists:foldl(fun(Tmp, Acc3) when true -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{roster, D}|Acc3] end, Acc2, Roster); _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'Index'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'Whitelist'{phone = Phone, created = Created}, Acc) -> +validate(D = #'Whitelist'{phone = Phone, created = Created}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {phone,_} when Phone==[] orelse is_binary(Phone) -> Acc2; + {phone,_} when Phone==[] orelse is_binary(Phone) -> Acc2; {created,_} when Created==[] orelse is_integer(Created) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'Whitelist'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'error'{code = Code}, Acc) -> +validate(D = #'error'{code = Code}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of {code,_} when Code==[] orelse is_atom(Code) -> Acc2; @@ -804,7 +795,7 @@ validate(D = #'error'{code = Code}, Acc) -> end end, Acc, lists:zip(record_info(fields, 'error'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'ok'{code = Code}, Acc) -> +validate(D = #'ok'{code = Code}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of {code,_} when Code==[] orelse is_binary(Code) -> Acc2; @@ -812,206 +803,189 @@ validate(D = #'ok'{code = Code}, Acc) -> end end, Acc, lists:zip(record_info(fields, 'ok'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'error2'{code = Code, src = Src}, Acc) -> +validate(D = #'error2'{code = Code, src = Src}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {code,_} when Code==[] orelse is_atom(Code) -> Acc2; + {code,_} when Code==[] orelse is_atom(Code) -> Acc2; {src,_} when Src==[] orelse is_binary(Src) orelse is_integer(Src) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'error2'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'ok2'{code = Code, src = Src}, Acc) -> +validate(D = #'ok2'{code = Code, src = Src}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {code,_} when Code==[] orelse is_atom(Code) -> Acc2; + {code,_} when Code==[] orelse is_atom(Code) -> Acc2; {src,_} when Src==[] orelse is_tuple(Src) orelse is_binary(Src) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'ok2'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'io'{code = Code, data = Data}, Acc) -> +validate(D = #'io'{code = Code, data = Data}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {code,_} when Code==[] orelse is_record(Code,'ok') orelse is_record(Code,'error') orelse is_record(Code,'ok2') orelse is_record(Code,'error2') -> Acc2; + {code,_} when Code==[] orelse is_record(Code,'ok') orelse is_record(Code,'error') orelse is_record(Code,'ok2') orelse is_record(Code,'error2') -> Acc2; {data,_} when Data==[] orelse is_binary(Data) orelse is_record(Data,'Roster') orelse is_tuple(Data) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'io'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'errors'{code = Code, data = Data}, Acc) -> +validate(D = #'errors'{code = Code, data = Data}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of {code,_} when Code==[] orelse is_list(Code) -> - lists:foldl(fun(Tmp, Acc3) when is_binary(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{code, D}|Acc3] end, Acc2, Code); + lists:foldl(fun(Tmp, Acc3) when is_binary(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{code, D}|Acc3] end, Acc2, Code); {data,_} when Data==[] orelse true -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'errors'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'PushService'{recipients = Recipients, id = Id, ttl = Ttl, module = Module, priority = Priority, payload = Payload}, Acc) -> +validate(D = #'PushService'{recipients = Recipients, id = Id, ttl = Ttl, module = Module, priority = Priority, payload = Payload}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of {recipients,_} when is_list(Recipients) -> - lists:foldl(fun(Tmp, Acc3) when is_binary(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{recipients, D}|Acc3] end, Acc2, Recipients); - {id,_} when Id==[] orelse is_binary(Id) -> Acc2; - {ttl,_} when Ttl==[] orelse is_integer(Ttl) -> Acc2; - {module,_} when Module==[] orelse is_binary(Module) -> Acc2; - {priority,_} when Priority==[] orelse is_binary(Priority) -> Acc2; + lists:foldl(fun(Tmp, Acc3) when is_binary(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{recipients, D}|Acc3] end, Acc2, Recipients); + {id,_} when Id==[] orelse is_binary(Id) -> Acc2; + {ttl,_} when Ttl==[] orelse is_integer(Ttl) -> Acc2; + {module,_} when Module==[] orelse is_binary(Module) -> Acc2; + {priority,_} when Priority==[] orelse is_binary(Priority) -> Acc2; {payload,_} when Payload==[] orelse is_binary(Payload) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'PushService'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'PublishService'{message = Message, topic = Topic, qos = Qos}, Acc) -> +validate(D = #'PublishService'{message = Message, topic = Topic, qos = Qos}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {message,_} when Message==[] orelse is_binary(Message) -> Acc2; - {topic,_} when Topic==[] orelse is_binary(Topic) -> Acc2; + {message,_} when Message==[] orelse is_binary(Message) -> Acc2; + {topic,_} when Topic==[] orelse is_binary(Topic) -> Acc2; {qos,_} when Qos==[] orelse is_integer(Qos) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'PublishService'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'FakeNumbers'{phone = Phone, created = Created}, Acc) -> +validate(D = #'FakeNumbers'{phone = Phone, created = Created}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {phone,_} when Phone==[] orelse is_binary(Phone) -> Acc2; + {phone,_} when Phone==[] orelse is_binary(Phone) -> Acc2; {created,_} when Created==[] orelse is_integer(Created) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'FakeNumbers'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'handler'{name = Name, module = Module, class = Class, group = Group, config = Config, state = State, seq = Seq}, Acc) -> +validate(D = #'handler'{name = Name, module = Module, class = Class, group = Group, config = Config, state = State, seq = Seq}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {name,_} when is_atom(Name) -> Acc2; - {module,_} when is_atom(Module) -> Acc2; - {class,_} -> Acc2; - {group,_} when is_atom(Group) -> Acc2; - {config,_} -> Acc2; - {state,_} -> Acc2; + {name,_} when is_atom(Name) -> Acc2; + {module,_} when is_atom(Module) -> Acc2; + {class,_} -> Acc2; + {group,_} when is_atom(Group) -> Acc2; + {config,_} -> Acc2; + {state,_} -> Acc2; {seq,_} -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'handler'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'pi'{name = Name, sup = Sup, module = Module, state = State}, Acc) -> +validate(D = #'pi'{name = Name, sup = Sup, module = Module, state = State}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {name,_} when is_atom(Name) -> Acc2; - {sup,_} when is_atom(Sup) -> Acc2; - {module,_} when is_atom(Module) -> Acc2; + {name,_} when is_atom(Name) -> Acc2; + {sup,_} when is_atom(Sup) -> Acc2; + {module,_} when is_atom(Module) -> Acc2; {state,_} -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'pi'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'cx'{handlers = Handlers, actions = Actions, req = Req, module = Module, lang = Lang, path = Path, session = Session, formatter = Formatter, params = Params, node = Node, client_pid = Client_pid, state = State, from = From, vsn = Vsn}, Acc) -> +validate(D = #'cx'{handlers = Handlers, actions = Actions, req = Req, module = Module, lang = Lang, path = Path, session = Session, formatter = Formatter, params = Params, node = Node, client_pid = Client_pid, state = State, from = From, vsn = Vsn}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of {handlers,_} when is_list(Handlers) -> - lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'handler') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{handlers, D}|Acc3] end, Acc2, Handlers); + lists:foldl(fun(Tmp, Acc3) when is_record(Tmp,'handler') -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{handlers, D}|Acc3] end, Acc2, Handlers); {actions,_} when is_list(Actions) -> - lists:foldl(fun(Tmp, Acc3) when is_tuple(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{actions, D}|Acc3] end, Acc2, Actions); - {req,_} when Req==[] orelse true -> Acc2; - {module,_} when Module==[] orelse is_atom(Module) -> Acc2; - {lang,_} when Lang==[] orelse is_atom(Lang) -> Acc2; - {path,_} when Path==[] orelse is_binary(Path) -> Acc2; - {session,_} when Session==[] orelse is_binary(Session) -> Acc2; - {formatter,_} when Formatter=='bert' orelse Formatter=='json' -> Acc2; + lists:foldl(fun(Tmp, Acc3) when is_tuple(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{actions, D}|Acc3] end, Acc2, Actions); + {req,_} when Req==[] orelse true -> Acc2; + {module,_} when Module==[] orelse is_atom(Module) -> Acc2; + {lang,_} when Lang==[] orelse is_atom(Lang) -> Acc2; + {path,_} when Path==[] orelse is_binary(Path) -> Acc2; + {session,_} when Session==[] orelse is_binary(Session) -> Acc2; + {formatter,_} when Formatter=='bert' orelse Formatter=='json' -> Acc2; {params,_} when Params==[] orelse is_list(Params) -> - lists:foldl(fun(Tmp, Acc3) when is_tuple(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{params, D}|Acc3] end, Acc2, Params); - {node,_} when Node==[] orelse is_atom(Node) -> Acc2; - {client_pid,_} when Client_pid==[] orelse true -> Acc2; - {state,_} when State==[] orelse true -> Acc2; - {from,_} when From==[] orelse is_binary(From) -> Acc2; + lists:foldl(fun(Tmp, Acc3) when is_tuple(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{params, D}|Acc3] end, Acc2, Params); + {node,_} when Node==[] orelse is_atom(Node) -> Acc2; + {client_pid,_} when Client_pid==[] orelse true -> Acc2; + {state,_} when State==[] orelse true -> Acc2; + {from,_} when From==[] orelse is_binary(From) -> Acc2; {vsn,_} when Vsn==[] orelse is_binary(Vsn) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'cx'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'user'{id = Id, container = Container, feed_id = Feed_id, prev = Prev, next = Next, feeds = Feeds, email = Email}, Acc) -> +validate(D = #'user'{id = Id, container = Container, feed_id = Feed_id, prev = Prev, next = Next, feeds = Feeds, email = Email}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} when Id==[] orelse is_integer(Id) -> Acc2; - {container,_} when is_atom(Container) -> Acc2; - {feed_id,_} -> Acc2; - {prev,_} when Prev==[] orelse is_integer(Prev) -> Acc2; - {next,_} when Next==[] orelse is_integer(Next) -> Acc2; - {feeds,_} when is_list(Feeds) -> []; + {id,_} when Id==[] orelse is_integer(Id) -> Acc2; + {container,_} when is_atom(Container) -> Acc2; + {feed_id,_} -> Acc2; + {prev,_} when Prev==[] orelse is_integer(Prev) -> Acc2; + {next,_} when Next==[] orelse is_integer(Next) -> Acc2; + {feeds,_} when is_list(Feeds) -> []; {email,_} when Email==[] orelse is_binary(Email) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'user'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'user2'{id = Id, container = Container, feed = Feed, next = Next, prev = Prev, mail = Mail, name = Name, pass = Pass, zone = Zone, type = Type}, Acc) -> - ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> - case {RecField, F} of - {id,_} when Id==[] orelse is_integer(Id) -> Acc2; - {container,_} when is_atom(Container) -> Acc2; - {feed,_} -> Acc2; - {next,_} when Next==[] orelse is_integer(Next) -> Acc2; - {prev,_} when Prev==[] orelse is_integer(Prev) -> Acc2; - {mail,_} when Mail==[] orelse is_binary(Mail) -> Acc2; - {name,_} when Name==[] orelse is_binary(Name) -> Acc2; - {pass,_} when Pass==[] orelse is_binary(Pass) -> Acc2; - {zone,_} when Zone==[] orelse is_binary(Zone) -> Acc2; - {type,_} when Type==[] orelse is_atom(Type) -> Acc2; - _ -> [{RecField, D}|Acc2] - end end, Acc, lists:zip(record_info(fields, 'user2'), tl(tuple_to_list(D)))), - {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), - ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'group'{id = Id, container = Container, feed_id = Feed_id, prev = Prev, next = Next, feeds = Feeds}, Acc) -> +validate(D = #'group'{id = Id, container = Container, feed_id = Feed_id, prev = Prev, next = Next, feeds = Feeds}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} when Id==[] orelse is_integer(Id) -> Acc2; - {container,_} when is_atom(Container) -> Acc2; - {feed_id,_} -> Acc2; - {prev,_} when Prev==[] orelse is_integer(Prev) -> Acc2; - {next,_} when Next==[] orelse is_integer(Next) -> Acc2; + {id,_} when Id==[] orelse is_integer(Id) -> Acc2; + {container,_} when is_atom(Container) -> Acc2; + {feed_id,_} -> Acc2; + {prev,_} when Prev==[] orelse is_integer(Prev) -> Acc2; + {next,_} when Next==[] orelse is_integer(Next) -> Acc2; {feeds,_} when is_list(Feeds) -> []; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'group'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'mqtt_topic'{topic = Topic, flags = Flags}, Acc) -> +validate(D = #'mqtt_topic'{topic = Topic, flags = Flags}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {topic,_} when is_binary(Topic) -> Acc2; + {topic,_} when is_binary(Topic) -> Acc2; {flags,_} when is_list(Flags) -> lists:foldl(fun(Tmp, Acc3) when Tmp=='retained' orelse Tmp=='static' -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{flags, D}|Acc3] end, Acc2, Flags); _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'mqtt_topic'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'mqtt_client'{client_id = Client_id, client_pid = Client_pid, username = Username, peername = Peername, clean_sess = Clean_sess, proto_ver = Proto_ver, will_topic = Will_topic, ws_initial_headers = Ws_initial_headers}, Acc) -> +validate(D = #'mqtt_client'{client_id = Client_id, client_pid = Client_pid, username = Username, peername = Peername, clean_sess = Clean_sess, proto_ver = Proto_ver, will_topic = Will_topic, ws_initial_headers = Ws_initial_headers}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {client_id,_} when is_binary(Client_id) orelse Client_id=='undefined' -> Acc2; - - {username,_} when is_binary(Username) orelse Username=='undefined' -> Acc2; - {peername,_} when is_tuple(Peername) -> Acc2; - - {proto_ver,_} when Proto_ver==3 orelse Proto_ver==4 -> Acc2; - {will_topic,_} when Will_topic=='undefined' orelse is_binary(Will_topic) -> Acc2; + {client_id,_} when is_binary(Client_id) orelse Client_id=='undefined' -> Acc2; + + {username,_} when is_binary(Username) orelse Username=='undefined' -> Acc2; + {peername,_} when is_tuple(Peername) -> Acc2; + + {proto_ver,_} when Proto_ver==3 orelse Proto_ver==4 -> Acc2; + {will_topic,_} when Will_topic=='undefined' orelse is_binary(Will_topic) -> Acc2; {ws_initial_headers,_} when is_list(Ws_initial_headers) -> lists:foldl(fun(Tmp, Acc3) when is_tuple(Tmp) -> validate(Tmp, Acc3); (Tmp, Acc3) -> [{ws_initial_headers, D}|Acc3] end, Acc2, Ws_initial_headers); _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'mqtt_client'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'mqtt_session'{client_id = Client_id, sess_pid = Sess_pid, clean_sess = Clean_sess}, Acc) -> +validate(D = #'mqtt_session'{client_id = Client_id, sess_pid = Sess_pid, clean_sess = Clean_sess}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {client_id,_} when is_binary(Client_id) -> Acc2; - - + {client_id,_} when is_binary(Client_id) -> Acc2; + + _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'mqtt_session'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'mqtt_message'{id = Id}, Acc) -> +validate(D = #'mqtt_message'{id = Id}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of {id,_} when is_binary(Id) orelse Id=='undefined' -> Acc2; @@ -1019,32 +993,32 @@ validate(D = #'mqtt_message'{id = Id}, Acc) -> end end, Acc, lists:zip(record_info(fields, 'mqtt_message'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'mqtt_delivery'{sender = Sender, message = Message}, Acc) -> +validate(D = #'mqtt_delivery'{sender = Sender, message = Message}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - + {message, #'mqtt_message'{}} -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'mqtt_delivery'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'mqtt_route'{topic = Topic, node = Node}, Acc) -> +validate(D = #'mqtt_route'{topic = Topic, node = Node}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {topic,_} when is_binary(Topic) -> Acc2; - + {topic,_} when is_binary(Topic) -> Acc2; + _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'mqtt_route'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end; -validate(D = #'mqtt_alarm'{id = Id, severity = Severity, title = Title, summary = Summary}, Acc) -> +validate(D = #'mqtt_alarm'{id = Id, severity = Severity, title = Title, summary = Summary}, Acc) -> ErrFields = lists:foldl(fun ({RecField, F}, Acc2) -> case {RecField, F} of - {id,_} when is_binary(Id) -> Acc2; - {severity,_} when Severity=='warning' orelse Severity=='error' orelse Severity=='critical' -> Acc2; - {title,_} when is_list(Title) orelse is_binary(Title) -> Acc2; + {id,_} when is_binary(Id) -> Acc2; + {severity,_} when Severity=='warning' orelse Severity=='error' orelse Severity=='critical' -> Acc2; + {title,_} when is_list(Title) orelse is_binary(Title) -> Acc2; {summary,_} when is_list(Summary) orelse is_binary(Summary) -> Acc2; _ -> [{RecField, D}|Acc2] end end, Acc, lists:zip(record_info(fields, 'mqtt_alarm'), tl(tuple_to_list(D)))), {CustomValidateModule, ValidateFun} = application:get_env(bert, custom_validate, {?MODULE, custom_validate}), - ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end. + ErrFields++case ErrFields of [] -> CustomValidateModule:ValidateFun(D); _ -> [] end. \ No newline at end of file -- GitLab From ddf7a5c66049e0b619109895418fd432532f818e Mon Sep 17 00:00:00 2001 From: gspasov Date: Thu, 11 Apr 2019 14:48:26 +0300 Subject: [PATCH 6/6] Changed version of jwt from 0.1.0 to 0.1.8 --- rebar.config | 2 +- rebar.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rebar.config b/rebar.config index 997ebc3d6..9e99afe7c 100644 --- a/rebar.config +++ b/rebar.config @@ -22,7 +22,7 @@ {gproc, ".*", {git, "https://github.com/uwiger/gproc","0.6.1"}}, {erlydtl, ".*", {git, "git://github.com/voxoz/erlydtl",{tag,"master"}}}, {mini_s3, ".*", {git, "https://github.com/chef/mini_s3.git",{tag,"master"}}}, - {jwt, ".*", {git, "https://github.com/artemeff/jwt.git",{tag, "0.1.0"}}}, + {jwt, ".*", {git, "https://github.com/artemeff/jwt.git",{tag, "0.1.8"}}}, {jsx, ".*", {git, "https://github.com/talentdeficit/jsx.git","v2.9.0"}}, {base64url, ".*", {git, "https://github.com/dvv/base64url.git","v1.0"}}, {migresia, ".*", {git, "https://github.com/yoonka/migresia.git",{tag,"master"}}}, diff --git a/rebar.lock b/rebar.lock index 5412bd35d..888b68fe4 100644 --- a/rebar.lock +++ b/rebar.lock @@ -94,7 +94,7 @@ 0}, {<<"jwt">>, {git,"https://github.com/artemeff/jwt.git", - {ref,"cf0fc2688148a5b4e1583e0a2788c0aa5b522df7"}}, + {ref,"6fd754fec1cd2e4577a5d7121233371900aa44e7"}}, 0}, {<<"kvs">>, {git,"git://github.com/synrc/kvs", -- GitLab