]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Add generic request method to Clickhouse lib
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 6 Aug 2018 15:12:12 +0000 (16:12 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 6 Aug 2018 17:00:34 +0000 (18:00 +0100)
lualib/lua_clickhouse.lua

index 3e8daa61e65e4a3ad2c049e3dcb969bbe4a5d286..771592e57abf491f2e613c874a4cf15e54f3db59 100644 (file)
@@ -260,7 +260,54 @@ exports.insert = function (upstream, settings, params, query, rows,
         escape_spaces(query))
   end
 
-  rspamd_logger.debugm(N, http_params.log_obj, "clickhouse select request: %s", params.body)
+  return rspamd_http.request(http_params)
+end
+
+--[[[
+-- @function lua_clickhouse.generic(upstream, settings, params, query,
+      ok_cb, fail_cb)
+-- Make a generic request to Clickhouse (e.g. alter)
+-- @param {upstream} upstream clickhouse server upstream
+-- @param {table} settings global settings table:
+--   * use_gsip: use gzip compression
+--   * timeout: request timeout
+--   * no_ssl_verify: skip SSL verification
+--   * user: HTTP user
+--   * password: HTTP password
+-- @param {params} HTTP request params
+-- @param {string} query Clickhouse query (passed in `query` request element with spaces escaped)
+-- @param {function} ok_cb callback to be called in case of success
+-- @param {function} fail_cb callback to be called in case of some error
+-- @return {boolean} whether a connection was successful
+-- @example
+--
+--]]
+exports.generic = function (upstream, settings, params, query,
+                           ok_cb, fail_cb)
+  local http_params = {}
+
+  for k,v in pairs(params) do http_params[k] = v end
+
+  http_params.callback = mk_http_insert_cb(upstream, http_params, ok_cb, fail_cb)
+  http_params.gzip = settings.use_gzip
+  http_params.mime_type = 'text/plain'
+  http_params.timeout = settings.timeout or default_timeout
+  http_params.no_ssl_verify = settings.no_ssl_verify
+  http_params.user = settings.user
+  http_params.password = settings.password
+  http_params.log_obj = params.task or params.config
+
+  if not http_params.url then
+    local connect_prefix = "http://"
+    if settings.use_https then
+      connect_prefix = 'https://'
+    end
+    local ip_addr = upstream:get_addr():to_string(true)
+    http_params.url = connect_prefix .. ip_addr .. '/?default_format=JSONEachRow'
+  end
+
+  return rspamd_http.request(http_params)
 end
 
+
 return exports
\ No newline at end of file