in scripts/lua/routing.lua [211:260]
function _M.slowLookup(resourceKeys, tenant, path, redisKey, cfRedisKey)
for _, key in pairs(resourceKeys) do
if key == redisKey or key == cfRedisKey then
local res = {string.match(key, "([^:]+):([^:]+):([^:]+)")}
ngx.var.gatewayPath = res[3]
return key
end
end
local cfUrl = ngx.req.get_headers()["x-cf-forwarded-url"]
if cfUrl ~= nil and cfUrl ~= "" then
return nil
end
local keyTable = {}
for _, key in pairs(resourceKeys) do
local _, count = string.gsub(key, "/", "")
if count == 1 and string.sub(key, -1) == "/" then
count = count - 1
end
count = tostring(count)
if keyTable[count] == nil then
keyTable[count] = {}
end
table.insert(keyTable[count], key)
end
local _, count = string.gsub(redisKey, "/", "")
for i = count, 0, -1 do
local countString = tostring(i)
if keyTable[countString] ~= nil then
for _, key in pairs(keyTable[countString]) do
if key == redisKey or key == utils.concatStrings({redisKey, "/"}) or _M.pathParamMatch(key, redisKey) == true then
local res = {string.match(key, "([^:]+):([^:]+):([^:]+)")}
ngx.var.gatewayPath = res[3]
return key
end
end
end
local index = redisKey:match("^.*()/")
if index == nil then
return nil
end
redisKey = string.sub(redisKey, 1, index - 1)
end
return nil
end