73 lines
1.6 KiB
Lua
73 lines
1.6 KiB
Lua
local nkeys = require "table.nkeys"
|
|
|
|
|
|
local kong = kong
|
|
local ngx = ngx
|
|
|
|
|
|
|
|
local function get_response_headers(n)
|
|
local headers = {}
|
|
|
|
for i = 1, n - 2 do
|
|
headers["a" .. i] = "v" .. i
|
|
end
|
|
|
|
--headers["content-length"] = "0" (added by nginx/kong)
|
|
--headers["connection"] = "keep-alive" (added by nginx/kong)
|
|
|
|
return headers
|
|
end
|
|
|
|
|
|
local MaxArgsHandler = {
|
|
VERSION = "0.1-t",
|
|
PRIORITY = 1000,
|
|
}
|
|
|
|
|
|
function MaxArgsHandler:access(conf)
|
|
local client_args_count = nkeys(ngx.req.get_uri_args(0))
|
|
|
|
ngx.req.read_body()
|
|
|
|
kong.ctx.plugin.data = {
|
|
client_args_count = client_args_count,
|
|
kong = {
|
|
request_headers = kong.request.get_headers(),
|
|
uri_args = kong.request.get_query(),
|
|
post_args = kong.request.get_body() or {},
|
|
},
|
|
ngx = {
|
|
request_headers = ngx.req.get_headers(),
|
|
uri_args = ngx.req.get_uri_args(),
|
|
post_args = ngx.req.get_post_args(),
|
|
},
|
|
}
|
|
|
|
return kong.response.exit(200, "", get_response_headers(client_args_count))
|
|
end
|
|
|
|
|
|
function MaxArgsHandler:header_filter(conf)
|
|
local data = kong.ctx.plugin.data
|
|
return kong.response.exit(200, {
|
|
client_args_count = data.client_args_count,
|
|
kong = {
|
|
request_headers = data.kong.request_headers,
|
|
response_headers = kong.response.get_headers(),
|
|
uri_args = data.kong.uri_args,
|
|
post_args = data.kong.post_args,
|
|
},
|
|
ngx = {
|
|
request_headers = data.ngx.request_headers,
|
|
response_headers = ngx.resp.get_headers(),
|
|
uri_args = data.ngx.uri_args,
|
|
post_args = data.ngx.post_args,
|
|
}
|
|
})
|
|
end
|
|
|
|
|
|
return MaxArgsHandler
|