commit ed52028: [Feature] Selectors: Add `specific_urls` extractor
Vsevolod Stakhov
vsevolod at highsecure.ru
Mon Aug 19 15:56:16 UTC 2019
Author: Vsevolod Stakhov
Date: 2019-08-19 16:21:42 +0100
URL: https://github.com/rspamd/rspamd/commit/ed52028907d845d373c185131ea319833d4a812d
[Feature] Selectors: Add `specific_urls` extractor
---
lualib/lua_selectors/extractors.lua | 17 +++++++++++++++++
test/lua/unit/selectors.lua | 12 ++++++++++++
2 files changed, 29 insertions(+)
diff --git a/lualib/lua_selectors/extractors.lua b/lualib/lua_selectors/extractors.lua
index a3fda891d..993169708 100644
--- a/lualib/lua_selectors/extractors.lua
+++ b/lualib/lua_selectors/extractors.lua
@@ -278,6 +278,23 @@ e.g. `by_hostname`]],
If no arguments specified, returns list of url objects. Otherwise, calls a specific method,
e.g. `get_tld`]],
},
+ -- Get specific urls
+ ['specific_urls'] = {
+ ['get_value'] = function(task, args)
+ local params = args[1] or {}
+ params.task = task
+ local urls = lua_util.extract_specific_urls(params)
+ return urls,'userdata_list'
+ end,
+ ['description'] = [[Get most specific urls. Arguments are equal to the Lua API function]],
+ ['args_schema'] = {ts.shape{
+ limit = ts.number + ts.string / tonumber,
+ esld_limit = (ts.number + ts.string / tonumber):is_optional(),
+ prefix = ts.string:is_optional(),
+ need_emails = (ts.boolean + ts.string / lua_util.toboolean):is_optional(),
+ ignore_redirected = (ts.boolean + ts.string / lua_util.toboolean):is_optional(),
+ }}
+ },
-- Get all emails
['emails'] = {
['get_value'] = function(task, args)
diff --git a/test/lua/unit/selectors.lua b/test/lua/unit/selectors.lua
index f1a06af30..924c94c48 100644
--- a/test/lua/unit/selectors.lua
+++ b/test/lua/unit/selectors.lua
@@ -151,6 +151,18 @@ context("Selectors test", function()
selector = "emails",
expect = {{"mailto://test@example.net"}}},
+ ["specific_urls"] = {
+ selector = "specific_urls({limit = 1})",
+ expect = {{"http://example.net"}}},
+
+ ["specific_urls + emails"] = {
+ selector = "specific_urls({need_emails = true, limit = 2})",
+ expect = {{"http://example.net", "mailto://test@example.net"}}},
+
+ ["specific_urls + emails limit"] = {
+ selector = "specific_urls({need_emails = true, limit = 1})",
+ expect = {{"http://example.net"}}},
+
["pool_var str, default type"] = {
selector = [[pool_var("str_var")]],
expect = {"str 1"}},
More information about the Commits
mailing list