You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by sh...@apache.org on 2021/10/12 03:39:27 UTC
[apisix-python-plugin-runner] branch master updated: fix: default
response is empty (#34)
This is an automated email from the ASF dual-hosted git repository.
shuaijinchao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix-python-plugin-runner.git
The following commit(s) were added to refs/heads/master by this push:
new fe6f842 fix: default response is empty (#34)
fe6f842 is described below
commit fe6f842ab4977820ff812e2f64f9cd2fbb00a62c
Author: 帅进超 <sh...@gmail.com>
AuthorDate: Tue Oct 12 11:39:15 2021 +0800
fix: default response is empty (#34)
* fix: default response is empty
* test: update test case
* test: update test function name
---
.github/semantic.yml | 15 +++++++++++++++
.licenserc.yaml | 1 +
apisix/runner/plugin/core.py | 23 +++++++++++++++++++++++
tests/runner/plugin/test_core.py | 18 ++++++++++++++++++
4 files changed, 57 insertions(+)
diff --git a/.github/semantic.yml b/.github/semantic.yml
new file mode 100644
index 0000000..5fe591e
--- /dev/null
+++ b/.github/semantic.yml
@@ -0,0 +1,15 @@
+titleOnly: true
+allowRevertCommits: true
+types:
+ - feat
+ - fix
+ - docs
+ - style
+ - refactor
+ - perf
+ - test
+ - build
+ - ci
+ - chore
+ - revert
+ - change
diff --git a/.licenserc.yaml b/.licenserc.yaml
index b3b3b02..5cde714 100644
--- a/.licenserc.yaml
+++ b/.licenserc.yaml
@@ -31,5 +31,6 @@ header:
- '**/__pycache__/**'
- '**/images/**'
- '**/config.json'
+ - '.github/'
comment: on-failure
diff --git a/apisix/runner/plugin/core.py b/apisix/runner/plugin/core.py
index bab9af7..e5667fb 100644
--- a/apisix/runner/plugin/core.py
+++ b/apisix/runner/plugin/core.py
@@ -38,10 +38,33 @@ def execute(configs: dict, request, response) -> Tuple[int, str]:
return RESP_STATUS_CODE_BAD_REQUEST, "execute plugin `%s`, %s" % (name, e.args.__str__())
else:
response.action_type = plugin.action
+ refresh_response(request, response)
return RESP_STATUS_CODE_OK, RESP_STATUS_MESSAGE_OK
+def refresh_response(request, response) -> None:
+ # setting default header
+ if len(request.headers) >= 1:
+ for req_hk in request.headers.keys():
+ req_hv = request.headers.get(req_hk)
+ resp_hv = response.headers.get(req_hk)
+ if not resp_hv:
+ response.headers[req_hk] = req_hv
+
+ # setting default path
+ if not response.path or len(response.path) == 0:
+ response.path = request.path
+
+ # setting default args
+ if len(request.args) >= 1:
+ for req_ak in request.args.keys():
+ req_av = request.args.get(req_ak)
+ resp_av = response.args.get(req_ak)
+ if not resp_av:
+ response.args[req_ak] = req_av
+
+
def loading() -> dict:
path = "%s/plugins" % os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
modules = iter_modules(path=[path])
diff --git a/tests/runner/plugin/test_core.py b/tests/runner/plugin/test_core.py
index 376090a..86ac90a 100644
--- a/tests/runner/plugin/test_core.py
+++ b/tests/runner/plugin/test_core.py
@@ -17,8 +17,10 @@
import os
from pkgutil import iter_modules
+
from apisix.runner.plugin.core import loading as plugin_loading
from apisix.runner.plugin.core import execute as plugin_execute
+from apisix.runner.plugin.core import refresh_response as refresh_response
from apisix.runner.http.request import Request as NewHttpRequest
from apisix.runner.http.response import Response as NewHttpResponse
from apisix.runner.server.response import RESP_STATUS_CODE_OK
@@ -61,3 +63,19 @@ def test_execute():
configs["test"] = Test()
(code, _) = plugin_execute(configs, request, response)
assert code == RESP_STATUS_CODE_BAD_REQUEST
+
+
+def test_refresh_response():
+ request = NewHttpRequest()
+ request.path = "/hello"
+ request.args = {
+ "q": "hello"
+ }
+ request.headers = {
+ "h": "world"
+ }
+ response = NewHttpResponse()
+ refresh_response(request, response)
+ assert request.path == response.path
+ assert request.args == response.args
+ assert request.headers == response.headers