updated as per the review comments
This commit is contained in:
@@ -12,7 +12,7 @@ import (
|
||||
// PluginManager defines an interface for managing plugins dynamically.
|
||||
type PluginManager interface {
|
||||
Middleware(ctx context.Context, cfg *plugin.Config) (func(http.Handler) http.Handler, error)
|
||||
SignValidator(ctx context.Context, cfg *plugin.Config) (definition.Verifier, error)
|
||||
SignValidator(ctx context.Context, cfg *plugin.Config) (definition.SignValidator, error)
|
||||
Validator(ctx context.Context, cfg *plugin.Config) (definition.SchemaValidator, error)
|
||||
Router(ctx context.Context, cfg *plugin.Config) (definition.Router, error)
|
||||
Publisher(ctx context.Context, cfg *plugin.Config) (definition.Publisher, error)
|
||||
|
||||
@@ -21,7 +21,7 @@ import (
|
||||
type stdHandler struct {
|
||||
signer definition.Signer
|
||||
steps []definition.Step
|
||||
signValidator definition.Verifier
|
||||
signValidator definition.SignValidator
|
||||
cache definition.Cache
|
||||
km definition.KeyManager
|
||||
schemaValidator definition.SchemaValidator
|
||||
@@ -108,13 +108,15 @@ func (h *stdHandler) subID(ctx context.Context) string {
|
||||
return h.SubscriberID
|
||||
}
|
||||
|
||||
var proxyFunc = proxy
|
||||
|
||||
// route handles request forwarding or message publishing based on the routing type.
|
||||
func route(ctx *model.StepContext, r *http.Request, w http.ResponseWriter, pb definition.Publisher) {
|
||||
log.Debugf(ctx, "Routing to ctx.Route to %#v", ctx.Route)
|
||||
switch ctx.Route.TargetType {
|
||||
case "url":
|
||||
log.Infof(ctx.Context, "Forwarding request to URL: %s", ctx.Route.URL)
|
||||
proxy(r, w, ctx.Route.URL)
|
||||
proxyFunc(r, w, ctx.Route.URL)
|
||||
return
|
||||
case "publisher":
|
||||
if pb == nil {
|
||||
@@ -124,7 +126,7 @@ func route(ctx *model.StepContext, r *http.Request, w http.ResponseWriter, pb de
|
||||
return
|
||||
}
|
||||
log.Infof(ctx.Context, "Publishing message to: %s", ctx.Route.PublisherID)
|
||||
if err := pb.Publish(ctx, ctx.Body); err != nil {
|
||||
if err := pb.Publish(ctx, ctx.Route.PublisherID, ctx.Body); err != nil {
|
||||
log.Errorf(ctx.Context, err, "Failed to publish message")
|
||||
http.Error(w, "Error publishing message", http.StatusInternalServerError)
|
||||
response.SendNack(ctx, w, err)
|
||||
|
||||
@@ -52,12 +52,12 @@ func (s *signStep) Run(ctx *model.StepContext) error {
|
||||
|
||||
// validateSignStep represents the signature validation step.
|
||||
type validateSignStep struct {
|
||||
validator definition.Verifier
|
||||
validator definition.SignValidator
|
||||
km definition.KeyManager
|
||||
}
|
||||
|
||||
// newValidateSignStep initializes and returns a new validate sign step.
|
||||
func newValidateSignStep(signValidator definition.Verifier, km definition.KeyManager) (definition.Step, error) {
|
||||
func newValidateSignStep(signValidator definition.SignValidator, km definition.KeyManager) (definition.Step, error) {
|
||||
if signValidator == nil {
|
||||
return nil, fmt.Errorf("invalid config: SignValidator plugin not configured")
|
||||
}
|
||||
@@ -102,7 +102,7 @@ func (s *validateSignStep) validate(ctx *model.StepContext, value string) error
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get validation key: %w", err)
|
||||
}
|
||||
if _, err := s.validator.Verify(ctx, ctx.Body, []byte(value), key); err != nil {
|
||||
if err := s.validator.Validate(ctx, ctx.Body, value, key); err != nil {
|
||||
return fmt.Errorf("sign validation failed: %w", err)
|
||||
}
|
||||
return nil
|
||||
|
||||
@@ -23,7 +23,7 @@ func (m *mockPluginManager) Middleware(ctx context.Context, cfg *plugin.Config)
|
||||
}
|
||||
|
||||
// SignValidator returns a mock verifier implementation.
|
||||
func (m *mockPluginManager) SignValidator(ctx context.Context, cfg *plugin.Config) (definition.Verifier, error) {
|
||||
func (m *mockPluginManager) SignValidator(ctx context.Context, cfg *plugin.Config) (definition.SignValidator, error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user