]> source.dussan.org Git - rspamd.git/commitdiff
[Project] Add schema for external maps
authorVsevolod Stakhov <vsevolod@rspamd.com>
Sat, 5 Nov 2022 14:57:04 +0000 (14:57 +0000)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Sat, 19 Nov 2022 12:44:13 +0000 (12:44 +0000)
lualib/lua_maps.lua

index 95828fe1310dc96f796924bd1ececaf3f3d6b277..75d999d8c3fe576eb1b1d316b88ac61fff99480f 100644 (file)
@@ -396,24 +396,32 @@ exports.fill_config_maps = function(mname, opts, map_defs)
   return true
 end
 
+local external_map_schema = ts.shape{
+  external = ts.equivalent(true), -- must be true
+  backend = ts.string, -- where to get data, required
+  method = ts.one_of{"body", "header", "query", "form"}, -- how to pass input
+  encode = ts.one_of{"json", "messagepack"}:is_optional(), -- how to encode input (if relevant)
+}
+local direct_map_schema = ts.shape{ -- complex object
+  name = ts.string:is_optional(),
+  description = ts.string:is_optional(),
+  timeout = ts.number,
+  data = ts.array_of(ts.string):is_optional(),
+  -- Tableshape has no options support for something like key1 or key2?
+  upstreams = ts.one_of{
+    ts.string,
+    ts.array_of(ts.string),
+  }:is_optional(),
+  url = ts.one_of{
+    ts.string,
+    ts.array_of(ts.string),
+  }:is_optional(),
+}
+
 exports.map_schema = ts.one_of{
   ts.string, -- 'http://some_map'
   ts.array_of(ts.string), -- ['foo', 'bar']
-  ts.shape{ -- complex object
-    name = ts.string:is_optional(),
-    description = ts.string:is_optional(),
-    timeout = ts.number,
-    data = ts.array_of(ts.string):is_optional(),
-    -- Tableshape has no options support for something like key1 or key2?
-    upstreams = ts.one_of{
-      ts.string,
-      ts.array_of(ts.string),
-    }:is_optional(),
-    url = ts.one_of{
-      ts.string,
-      ts.array_of(ts.string),
-    }:is_optional(),
-  }
+  ts.one_of{direct_map_schema, external_map_schema}
 }
 
 return exports