Skip to content

Instantly share code, notes, and snippets.

@leandromoreira
Created April 14, 2020 14:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save leandromoreira/ffe13b957e99a45ea5b6ded977942157 to your computer and use it in GitHub Desktop.
Save leandromoreira/ffe13b957e99a45ea5b6ded977942157 to your computer and use it in GitHub Desktop.
-- location /test {
-- content_by_lua_block {
local redis_client = redis_cluster:new(config)
--- simulating a dynamic code being stored at Redis ---
redis_client:set('authentication', "access_by_lua_block||local token = ngx.var.arg_token or ngx.var.cookie_superstition \n if token ~= 'token' then \n return ngx.exit(ngx.HTTP_FORBIDDEN) \n else \n ngx.header['Set-Cookie'] = {'superstition=token'} \n end")
redis_client:sadd('coding_units', 'authentication')
--- simulating a dynamic code being stored at Redis ---
--- fetch ---
local resp, err = redis_client:smembers("coding_units")
local raw_coding_units = {}
for _, coding_unit_key in ipairs(resp) do
local resp, err = redis_client:get(coding_unit_key)
table.insert(raw_coding_units, resp)
end
--- fetch ---
--- parse ---
local coding_units = {}
for _, raw_coding_unit in ipairs(raw_coding_units) do
local parts = mysplit(raw_coding_unit, "||")
local cu = {}
cu['phase'] = parts[1]
cu['code'] = parts[2]
table.insert(coding_units, cu)
end
--- parse ---
--- execute ---
for _, coding_unit in ipairs(coding_units) do
ngx.log(ngx.ERR, "phase ", coding_unit['phase'])
ngx.log(ngx.ERR, "code ", coding_unit['code'])
local function_code, err = loadstring(coding_unit['code'])
ngx.log(ngx.ERR, "loadstring error ", err)
local status, ret = xpcall(function_code, err_handler)
ngx.log(ngx.ERR, "xpcall status ", status, " ret ", ret)
end
--- execute ---
ngx.say(" R$ 45,567,900,00 ") -- a random value
-- }
-- }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment