]> source.dussan.org Git - rspamd.git/commitdiff
[Project] Add a simple url encoding function + tests
authorVsevolod Stakhov <vsevolod@rspamd.com>
Sat, 12 Nov 2022 14:58:29 +0000 (14:58 +0000)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Sat, 19 Nov 2022 12:44:14 +0000 (12:44 +0000)
lualib/lua_maps.lua

index 14439f7783b6431a14ea7d6d61b5068fb15313a5..b2f8dda92343d7821745c81fe139d9c243b3607b 100644 (file)
@@ -99,10 +99,15 @@ local rspamd_http = require "rspamd_http"
 local ucl = require "ucl"
 
 local function url_encode_string(str)
-  -- TODO: implement encoding
+  str = string.gsub(str, "([^%w _%%%-%.~])",
+      function(c) return string.format("%%%02X", string.byte(c)) end)
+  str = string.gsub(str, " ", "+")
   return str
 end
 
+assert(url_encode_string('上海+中國') == '%E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B')
+assert(url_encode_string('? and the Mysterians') == '%3F+and+the+Mysterians')
+
 local function query_external_map(map_config, upstreams, key, callback, task)
   local http_method = (map_config.method == 'body' or map_config.method == 'form') and 'POST' or 'GET'
   local upstream = upstreams:get_upstream_round_robin()