updated as per the review comments

This commit is contained in:
MohitKatare-protean
2025-03-30 19:13:02 +05:30
parent 244a7be7c1
commit f0e39e34e7
35 changed files with 1605 additions and 124 deletions

View File

@@ -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)

View File

@@ -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)

View File

@@ -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

View File

@@ -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
}