From 0cf6a831462e2d52f037af7d1caa819da80ce03c Mon Sep 17 00:00:00 2001 From: Yuansheng Wang Date: Mon, 6 May 2019 17:06:19 +0800 Subject: [PATCH 1/2] change: added Makefile to manage apimeta server. --- Makefile | 32 ++++++++++++++++++++++++++++++ doc/apimeta-plugin-design.graffle | Bin 10702 -> 10705 bytes lua/apimeta/core/resp.lua | 2 ++ lua/apimeta/route/handler.lua | 3 +-- 4 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 000000000000..b2283233ba71 --- /dev/null +++ b/Makefile @@ -0,0 +1,32 @@ + +### help: Show Makefile rules. +.PHONY: help +help: + @echo Makefile rules: + @echo + @grep -E '^### [-A-Za-z0-9_]+:' Makefile | sed 's/###/ /' + + +### run: Start the apimeta server +.PHONY: run +run: + mkdir -p logs + sudo $$(which openresty) -p $$PWD/ + + +### stop: Stop the apimeta server +.PHONY: stop +stop: + sudo $$(which openresty) -p $$PWD/ -s stop + + +### clean: Remove generated files +.PHONY: clean +clean: + rm -rf logs/ + + +### reload: Reload the apimeta server +.PHONY: reload +reload: + sudo $$(which openresty) -p $$PWD/ -s reload diff --git a/doc/apimeta-plugin-design.graffle b/doc/apimeta-plugin-design.graffle index 280a830e28e0ac7acfce6ced116a7290b71449d2..c1cdf5ed3c9f8fa4d765eea380c3fc43f018b978 100644 GIT binary patch literal 10705 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 literal 10702 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 diff --git a/lua/apimeta/core/resp.lua b/lua/apimeta/core/resp.lua index 15597496eaa7..0ba6fa8d3ff6 100644 --- a/lua/apimeta/core/resp.lua +++ b/lua/apimeta/core/resp.lua @@ -5,6 +5,8 @@ local ngx_say = ngx.say local ngx_exit = ngx.exit return function (code, body) + code = code or 200 + if not body then ngx_exit(code) return diff --git a/lua/apimeta/route/handler.lua b/lua/apimeta/route/handler.lua index 925f2795a713..3984fe53c5ec 100644 --- a/lua/apimeta/route/handler.lua +++ b/lua/apimeta/route/handler.lua @@ -4,7 +4,6 @@ local ngx = ngx local ipairs = ipairs local r3router = require("resty.r3") local log = require("apimeta.core.log") -local insert_tab = table.insert local new_tab = require("table.new") local router @@ -32,7 +31,7 @@ function _M.get_router() end -local function run_route(params, route, api_ctx) +local function run_route(matched_params, route, api_ctx) ngx.say("run route id: ", route.id, " host: ", api_ctx.host) end From 9a5463661f01f4e34d09800cae76bcccd752ca2f Mon Sep 17 00:00:00 2001 From: Yuansheng Wang Date: Mon, 6 May 2019 18:15:52 +0800 Subject: [PATCH 2/2] feature: supported to filter the config of plugin. --- lua/apimeta/plugin.lua | 22 ++++++++++++++++++++++ t/example-plugin.t | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/lua/apimeta/plugin.lua b/lua/apimeta/plugin.lua index c71bb8b3af8b..cba162891362 100644 --- a/lua/apimeta/plugin.lua +++ b/lua/apimeta/plugin.lua @@ -66,5 +66,27 @@ function _M.load() return plugins end + -- user_config = { + -- example_plugin = {i = 1, s = "s", t = {1, 2}}, + -- invalid_plugin = {a = "a"}, + -- } + +function _M.filter_plugin(user_plugins, local_supported_plugins) + -- todo: reuse table + local plugins = new_tab(#local_supported_plugins * 2, 0) + + for _, plugin_obj in ipairs(local_supported_plugins) do + local name = plugin_obj.name + local plugin_conf = user_plugins[name] + + if plugin_conf then + insert_tab(plugins, plugin_obj) + insert_tab(plugins, plugin_conf) + end + end + + return plugins +end + return _M diff --git a/t/example-plugin.t b/t/example-plugin.t index 4ef3286fade2..902b41af2fdc 100644 --- a/t/example-plugin.t +++ b/t/example-plugin.t @@ -71,3 +71,35 @@ plugin name: example_plugin priority: 1000 --- error_log failed to load plugin not_exist_plugin err: module 'apimeta.plugins.not_exist_plugin' not found rewrite(): plugin rewrite phase + + + +=== TEST 3: filter plugins +--- config + location /t { + content_by_lua_block { + local plugin = require("apimeta.plugin") + + local all_plugins, err = plugin.load() + if not all_plugins then + ngx.say("failed to load plugins: ", err) + end + + local filter_plugins = plugin.filter_plugin({ + example_plugin = {i = 1, s = "s", t = {1, 2}}, + new_plugin = {a = "a"}, + }, all_plugins) + + local encode_json = require "cjson.safe" .encode + for i = 1, #filter_plugins, 2 do + local plugin = filter_plugins[i] + local plugin_conf = filter_plugins[i + 1] + ngx.say("plugin [", plugin.name, "] config: ", + encode_json(plugin_conf)) + end + } + } +--- request +GET /t +--- response_body +plugin [example_plugin] config: {"i":1,"s":"s","t":[1,2]}