This is an automated email from the ASF dual-hosted git repository.
spacewander pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix-go-plugin-runner.git
The following commit(s) were added to refs/heads/master by this push:
new ee55902 feat: add DefaultPlugin (#92)
ee55902 is described below
commit ee55902d87d8da5d50c4e765f95df3ec54105661
Author: soulbird <[email protected]>
AuthorDate: Wed Jun 22 09:43:59 2022 +0800
feat: add DefaultPlugin (#92)
---
cmd/go-runner/plugins/fault_injection.go | 7 +++----
cmd/go-runner/plugins/limit_req.go | 7 +++----
cmd/go-runner/plugins/response_rewrite.go | 7 +++----
cmd/go-runner/plugins/say.go | 7 +++----
pkg/plugin/plugin.go | 6 ++++++
5 files changed, 18 insertions(+), 16 deletions(-)
diff --git a/cmd/go-runner/plugins/fault_injection.go
b/cmd/go-runner/plugins/fault_injection.go
index eee3f0c..1d729f6 100644
--- a/cmd/go-runner/plugins/fault_injection.go
+++ b/cmd/go-runner/plugins/fault_injection.go
@@ -41,6 +41,9 @@ func init() {
// FaultInjection is used in the benchmark
type FaultInjection struct {
+ // Embed the default plugin here,
+ // so that we don't need to reimplement all the methods.
+ plugin.DefaultPlugin
}
type FaultInjectionConf struct {
@@ -94,7 +97,3 @@ func (p *FaultInjection) RequestFilter(conf interface{}, w
http.ResponseWriter,
log.Errorf("failed to write: %s", err)
}
}
-
-func (p *FaultInjection) ResponseFilter(interface{}, pkgHTTP.Response) {
-
-}
diff --git a/cmd/go-runner/plugins/limit_req.go
b/cmd/go-runner/plugins/limit_req.go
index 34c8c29..6632da3 100644
--- a/cmd/go-runner/plugins/limit_req.go
+++ b/cmd/go-runner/plugins/limit_req.go
@@ -35,6 +35,9 @@ func init() {
// LimitReq is a demo for a real world plugin
type LimitReq struct {
+ // Embed the default plugin here,
+ // so that we don't need to reimplement all the methods.
+ plugin.DefaultPlugin
}
type LimitReqConf struct {
@@ -75,7 +78,3 @@ func (p *LimitReq) RequestFilter(conf interface{}, w
http.ResponseWriter, r pkgH
}
time.Sleep(rs.Delay())
}
-
-func (p *LimitReq) ResponseFilter(interface{}, pkgHTTP.Response) {
-
-}
diff --git a/cmd/go-runner/plugins/response_rewrite.go
b/cmd/go-runner/plugins/response_rewrite.go
index d14cec3..0af1ba8 100644
--- a/cmd/go-runner/plugins/response_rewrite.go
+++ b/cmd/go-runner/plugins/response_rewrite.go
@@ -19,7 +19,6 @@ package plugins
import (
"encoding/json"
- "net/http"
pkgHTTP "github.com/apache/apisix-go-plugin-runner/pkg/http"
"github.com/apache/apisix-go-plugin-runner/pkg/log"
@@ -35,6 +34,9 @@ func init() {
// ResponseRewrite is a demo to show how to rewrite response data.
type ResponseRewrite struct {
+ // Embed the default plugin here,
+ // so that we don't need to reimplement all the methods.
+ plugin.DefaultPlugin
}
type ResponseRewriteConf struct {
@@ -53,9 +55,6 @@ func (p *ResponseRewrite) ParseConf(in []byte) (interface{},
error) {
return conf, err
}
-func (p *ResponseRewrite) RequestFilter(interface{}, http.ResponseWriter,
pkgHTTP.Request) {
-}
-
func (p *ResponseRewrite) ResponseFilter(conf interface{}, w pkgHTTP.Response)
{
cfg := conf.(ResponseRewriteConf)
if cfg.Status > 0 {
diff --git a/cmd/go-runner/plugins/say.go b/cmd/go-runner/plugins/say.go
index 49a41ea..e4b5540 100644
--- a/cmd/go-runner/plugins/say.go
+++ b/cmd/go-runner/plugins/say.go
@@ -36,6 +36,9 @@ func init() {
// Say is a demo to show how to return data directly instead of proxying
// it to the upstream.
type Say struct {
+ // Embed the default plugin here,
+ // so that we don't need to reimplement all the methods.
+ plugin.DefaultPlugin
}
type SayConf struct {
@@ -64,7 +67,3 @@ func (p *Say) RequestFilter(conf interface{}, w
http.ResponseWriter, r pkgHTTP.R
log.Errorf("failed to write: %s", err)
}
}
-
-func (p *Say) ResponseFilter(interface{}, pkgHTTP.Response) {
-
-}
diff --git a/pkg/plugin/plugin.go b/pkg/plugin/plugin.go
index 14540bc..177240f 100644
--- a/pkg/plugin/plugin.go
+++ b/pkg/plugin/plugin.go
@@ -52,3 +52,9 @@ type Plugin interface {
func RegisterPlugin(p Plugin) error {
return plugin.RegisterPlugin(p.Name(), p.ParseConf, p.RequestFilter,
p.ResponseFilter)
}
+
+// DefaultPlugin provides the no-op implementation of the Plugin interface.
+type DefaultPlugin struct{}
+
+func (*DefaultPlugin) RequestFilter(interface{}, http.ResponseWriter,
pkgHTTP.Request) {}
+func (*DefaultPlugin) ResponseFilter(interface{}, pkgHTTP.Response)
{}