This is an automated email from the ASF dual-hosted git repository.
membphis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-apisix.git
The following commit(s) were added to refs/heads/master by this push:
new b61db08 feature: support to run `header_filter` and `body_filter`
phase for global rules. (#1364)
b61db08 is described below
commit b61db0865a18c887897246483f08108e583327ae
Author: Ayeshmantha Perera <[email protected]>
AuthorDate: Thu Apr 2 02:46:00 2020 +0200
feature: support to run `header_filter` and `body_filter` phase for global
rules. (#1364)
---
apisix/init.lua | 38 +++++++++++++++++++++++++++++++++++---
1 file changed, 35 insertions(+), 3 deletions(-)
diff --git a/apisix/init.lua b/apisix/init.lua
index 3a08157..a9a07a7 100644
--- a/apisix/init.lua
+++ b/apisix/init.lua
@@ -435,12 +435,44 @@ end
function _M.http_header_filter_phase()
- run_plugin("header_filter")
+ local api_ctx = ngx.ctx.api_ctx
+ if not api_ctx then
+ return
+ end
+
+ if router.global_rules and router.global_rules.values
+ and #router.global_rules.values > 0
+ then
+ local plugins = core.tablepool.fetch("plugins", 32, 0)
+ for _, global_rule in ipairs(router.global_rules.values) do
+ core.table.clear(plugins)
+ plugins = plugin.filter(global_rule, plugins)
+ run_plugin("header_filter", plugins, api_ctx)
+ end
+ core.tablepool.release("plugins", plugins)
+ end
+ run_plugin("header_filter", nil, api_ctx)
end
function _M.http_body_filter_phase()
- run_plugin("body_filter")
+ local api_ctx = ngx.ctx.api_ctx
+ if not api_ctx then
+ return
+ end
+
+ if router.global_rules and router.global_rules.values
+ and #router.global_rules.values > 0
+ then
+ local plugins = core.tablepool.fetch("plugins", 32, 0)
+ for _, global_rule in ipairs(router.global_rules.values) do
+ core.table.clear(plugins)
+ plugins = plugin.filter(global_rule, plugins)
+ run_plugin("body_filter", plugins, api_ctx)
+ end
+ core.tablepool.release("plugins", plugins)
+ end
+ run_plugin("body_filter", nil, api_ctx)
end
@@ -451,7 +483,7 @@ function _M.http_log_phase()
end
if router.global_rules and router.global_rules.values
- and #router.global_rules.values > 0
+ and #router.global_rules.values > 0
then
local plugins = core.tablepool.fetch("plugins", 32, 0)
for _, global_rule in ipairs(router.global_rules.values) do