From a955949857e305c14f4cddc850d7d4365fb856e2 Mon Sep 17 00:00:00 2001 From: "mayur.popli" Date: Thu, 3 Apr 2025 13:35:49 +0530 Subject: [PATCH 1/6] fix: added error from error module --- .../implementation/decrypter/decrypter.go | 8 +++++--- .../implementation/encrypter/encrypter.go | 9 +++++---- .../schemavalidator/schemavalidator.go | 5 +++-- pkg/plugin/implementation/signer/signer.go | 7 ++++--- .../signvalidator/signvalidator.go | 20 ++++++++----------- 5 files changed, 25 insertions(+), 24 deletions(-) diff --git a/pkg/plugin/implementation/decrypter/decrypter.go b/pkg/plugin/implementation/decrypter/decrypter.go index f312f16..1141766 100644 --- a/pkg/plugin/implementation/decrypter/decrypter.go +++ b/pkg/plugin/implementation/decrypter/decrypter.go @@ -9,6 +9,8 @@ import ( "fmt" "github.com/zenazn/pkcs7pad" + + "github.com/beckn/beckn-onix/pkg/model" ) // decrypter implements the Decrypter interface and handles the decryption process. @@ -24,18 +26,18 @@ func New(ctx context.Context) (*decrypter, func() error, error) { func (d *decrypter) Decrypt(ctx context.Context, encryptedData, privateKeyBase64, publicKeyBase64 string) (string, error) { privateKeyBytes, err := base64.StdEncoding.DecodeString(privateKeyBase64) if err != nil { - return "", fmt.Errorf("invalid private key: %w", err) + return "", model.NewBadReqErr(err) } publicKeyBytes, err := base64.StdEncoding.DecodeString(publicKeyBase64) if err != nil { - return "", fmt.Errorf("invalid public key: %w", err) + return "", model.NewBadReqErr(err) } // Decode the Base64 encoded encrypted data. messageByte, err := base64.StdEncoding.DecodeString(encryptedData) if err != nil { - return "", fmt.Errorf("failed to decode encrypted data: %w", err) + return "", model.NewBadReqErr(err) } aesCipher, err := createAESCipher(privateKeyBytes, publicKeyBytes) diff --git a/pkg/plugin/implementation/encrypter/encrypter.go b/pkg/plugin/implementation/encrypter/encrypter.go index f0a8663..3ba7c3e 100644 --- a/pkg/plugin/implementation/encrypter/encrypter.go +++ b/pkg/plugin/implementation/encrypter/encrypter.go @@ -8,6 +8,7 @@ import ( "encoding/base64" "fmt" + "github.com/beckn/beckn-onix/pkg/model" "github.com/zenazn/pkcs7pad" ) @@ -23,12 +24,12 @@ func New(ctx context.Context) (*encrypter, func() error, error) { func (e *encrypter) Encrypt(ctx context.Context, data string, privateKeyBase64, publicKeyBase64 string) (string, error) { privateKeyBytes, err := base64.StdEncoding.DecodeString(privateKeyBase64) if err != nil { - return "", fmt.Errorf("invalid private key: %w", err) + return "", model.NewBadReqErr(err) } publicKeyBytes, err := base64.StdEncoding.DecodeString(publicKeyBase64) if err != nil { - return "", fmt.Errorf("invalid public key: %w", err) + return "", model.NewBadReqErr(err) } // Convert the input string to a byte slice. @@ -50,11 +51,11 @@ func createAESCipher(privateKey, publicKey []byte) (cipher.Block, error) { x25519Curve := ecdh.X25519() x25519PrivateKey, err := x25519Curve.NewPrivateKey(privateKey) if err != nil { - return nil, fmt.Errorf("failed to create private key: %w", err) + return nil, model.NewBadReqErr(err) } x25519PublicKey, err := x25519Curve.NewPublicKey(publicKey) if err != nil { - return nil, fmt.Errorf("failed to create public key: %w", err) + return nil, model.NewBadReqErr(err) } sharedSecret, err := x25519PrivateKey.ECDH(x25519PublicKey) if err != nil { diff --git a/pkg/plugin/implementation/schemavalidator/schemavalidator.go b/pkg/plugin/implementation/schemavalidator/schemavalidator.go index 715def7..8b56e03 100644 --- a/pkg/plugin/implementation/schemavalidator/schemavalidator.go +++ b/pkg/plugin/implementation/schemavalidator/schemavalidator.go @@ -3,6 +3,7 @@ package schemavalidator import ( "context" "encoding/json" + "errors" "fmt" "net/url" "os" @@ -77,12 +78,12 @@ func (v *schemaValidator) Validate(ctx context.Context, url *url.URL, data []byt // Retrieve the schema from the cache. schema, exists := v.schemaCache[schemaFileName] if !exists { - return fmt.Errorf("schema not found for domain: %s", schemaFileName) + return model.NewNotFoundErr(errors.New("schema not found for domain")) } var jsonData any if err := json.Unmarshal(data, &jsonData); err != nil { - return fmt.Errorf("failed to parse JSON data: %v", err) + return model.NewBadReqErr(err) } err = schema.Validate(jsonData) if err != nil { diff --git a/pkg/plugin/implementation/signer/signer.go b/pkg/plugin/implementation/signer/signer.go index 1f5be86..71f8774 100644 --- a/pkg/plugin/implementation/signer/signer.go +++ b/pkg/plugin/implementation/signer/signer.go @@ -7,6 +7,7 @@ import ( "errors" "fmt" + "github.com/beckn/beckn-onix/pkg/model" "golang.org/x/crypto/blake2b" ) @@ -32,7 +33,7 @@ func hash(payload []byte, createdAt, expiresAt int64) (string, error) { _, err := hasher.Write(payload) if err != nil { - return "", fmt.Errorf("failed to hash payload: %w", err) + return "", model.NewBadReqErr(err) } hashSum := hasher.Sum(nil) @@ -45,11 +46,11 @@ func hash(payload []byte, createdAt, expiresAt int64) (string, error) { func generateSignature(signingString []byte, privateKeyBase64 string) ([]byte, error) { privateKeyBytes, err := base64.StdEncoding.DecodeString(privateKeyBase64) if err != nil { - return nil, fmt.Errorf("error decoding private key: %w", err) + return nil, model.NewBadReqErr(err) } if len(privateKeyBytes) != ed25519.SeedSize { - return nil, errors.New("invalid seed length") + return nil, model.NewBadReqErr(errors.New("invalid seed length")) } // Generate the private key from the seed diff --git a/pkg/plugin/implementation/signvalidator/signvalidator.go b/pkg/plugin/implementation/signvalidator/signvalidator.go index c381d40..b107619 100644 --- a/pkg/plugin/implementation/signvalidator/signvalidator.go +++ b/pkg/plugin/implementation/signvalidator/signvalidator.go @@ -4,11 +4,13 @@ import ( "context" "crypto/ed25519" "encoding/base64" + "errors" "fmt" "strconv" "strings" "time" + "github.com/beckn/beckn-onix/pkg/model" "golang.org/x/crypto/blake2b" ) @@ -32,20 +34,17 @@ func New(ctx context.Context, config *Config) (*validator, func() error, error) func (v *validator) Validate(ctx context.Context, body []byte, header string, publicKeyBase64 string) error { createdTimestamp, expiredTimestamp, signature, err := parseAuthHeader(header) if err != nil { - // TODO: Return appropriate error code when Error Code Handling Module is ready - return fmt.Errorf("error parsing header: %w", err) + return model.NewBadReqErr(err) } signatureBytes, err := base64.StdEncoding.DecodeString(signature) if err != nil { - // TODO: Return appropriate error code when Error Code Handling Module is ready return fmt.Errorf("error decoding signature: %w", err) } currentTime := time.Now().Unix() if createdTimestamp > currentTime || currentTime > expiredTimestamp { - // TODO: Return appropriate error code when Error Code Handling Module is ready - return fmt.Errorf("signature is expired or not yet valid") + return model.NewSignValidationErr(errors.New("signature is expired or not yet valid")) } createdTime := time.Unix(createdTimestamp, 0) @@ -55,13 +54,11 @@ func (v *validator) Validate(ctx context.Context, body []byte, header string, pu decodedPublicKey, err := base64.StdEncoding.DecodeString(publicKeyBase64) if err != nil { - // TODO: Return appropriate error code when Error Code Handling Module is ready - return fmt.Errorf("error decoding public key: %w", err) + return model.NewBadReqErr(err) } if !ed25519.Verify(ed25519.PublicKey(decodedPublicKey), []byte(signingString), signatureBytes) { - // TODO: Return appropriate error code when Error Code Handling Module is ready - return fmt.Errorf("signature verification failed") + return model.NewSignValidationErr(errors.New("signature verification failed")) } return nil @@ -91,14 +88,13 @@ func parseAuthHeader(header string) (int64, int64, string, error) { expiredTimestamp, err := strconv.ParseInt(signatureMap["expires"], 10, 64) if err != nil { - // TODO: Return appropriate error code when Error Code Handling Module is ready - return 0, 0, "", fmt.Errorf("invalid expires timestamp: %w", err) + return 0, 0, "", model.NewSignValidationErr(err) } signature := signatureMap["signature"] if signature == "" { // TODO: Return appropriate error code when Error Code Handling Module is ready - return 0, 0, "", fmt.Errorf("signature missing in header") + return 0, 0, "", model.NewSignValidationErr(errors.New("signature missing in header")) } return createdTimestamp, expiredTimestamp, signature, nil From dc108ddf68d97c626921516fbdd113ff15cba45a Mon Sep 17 00:00:00 2001 From: "mayur.popli" Date: Thu, 3 Apr 2025 13:41:58 +0530 Subject: [PATCH 2/6] fix: added error from error module --- .../implementation/schemavalidator/schemavalidator.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pkg/plugin/implementation/schemavalidator/schemavalidator.go b/pkg/plugin/implementation/schemavalidator/schemavalidator.go index 8b56e03..dd3d596 100644 --- a/pkg/plugin/implementation/schemavalidator/schemavalidator.go +++ b/pkg/plugin/implementation/schemavalidator/schemavalidator.go @@ -39,7 +39,7 @@ type Config struct { func New(ctx context.Context, config *Config) (*schemaValidator, func() error, error) { // Check if config is nil if config == nil { - return nil, nil, fmt.Errorf("config cannot be nil") + return nil, nil, model.NewBadReqErr(errors.New("config cannot be nil")) } v := &schemaValidator{ config: config, @@ -105,8 +105,7 @@ func (v *schemaValidator) Validate(ctx context.Context, url *url.URL, data []byt // Return the array of schema validation errors return &model.SchemaValidationErr{Errors: schemaErrors} } - // Return a generic error for non-validation errors - return fmt.Errorf("validation failed: %v", err) + return model.NewBadReqErr(err) } // Return nil if validation succeeds @@ -191,7 +190,7 @@ func (v *schemaValidator) initialise() error { // Start processing from the root schema directory. if err := processDir(schemaDir); err != nil { - return fmt.Errorf("failed to read schema directory: %v", err) + return model.NewNotFoundErr(err) } return nil From 2a0b2c35d37bc4441ff790a1b1fbd6c181504a9a Mon Sep 17 00:00:00 2001 From: "mayur.popli" Date: Thu, 3 Apr 2025 18:59:38 +0530 Subject: [PATCH 3/6] fix: error module implementation --- pkg/plugin/implementation/decrypter/decrypter.go | 6 +++--- pkg/plugin/implementation/encrypter/encrypter.go | 8 ++++---- .../schemavalidator/schemavalidator.go | 16 ++++++++-------- pkg/plugin/implementation/signer/signer.go | 4 ++-- .../signvalidator/signvalidator.go | 13 ++++++------- 5 files changed, 23 insertions(+), 24 deletions(-) diff --git a/pkg/plugin/implementation/decrypter/decrypter.go b/pkg/plugin/implementation/decrypter/decrypter.go index 1141766..f03d438 100644 --- a/pkg/plugin/implementation/decrypter/decrypter.go +++ b/pkg/plugin/implementation/decrypter/decrypter.go @@ -26,18 +26,18 @@ func New(ctx context.Context) (*decrypter, func() error, error) { func (d *decrypter) Decrypt(ctx context.Context, encryptedData, privateKeyBase64, publicKeyBase64 string) (string, error) { privateKeyBytes, err := base64.StdEncoding.DecodeString(privateKeyBase64) if err != nil { - return "", model.NewBadReqErr(err) + return "", model.NewBadReqErr(fmt.Errorf("invalid private key: %w", err)) } publicKeyBytes, err := base64.StdEncoding.DecodeString(publicKeyBase64) if err != nil { - return "", model.NewBadReqErr(err) + return "", model.NewBadReqErr(fmt.Errorf("invalid public key: %w", err)) } // Decode the Base64 encoded encrypted data. messageByte, err := base64.StdEncoding.DecodeString(encryptedData) if err != nil { - return "", model.NewBadReqErr(err) + return "", model.NewBadReqErr(fmt.Errorf("failed to decode encrypted data: %w", err)) } aesCipher, err := createAESCipher(privateKeyBytes, publicKeyBytes) diff --git a/pkg/plugin/implementation/encrypter/encrypter.go b/pkg/plugin/implementation/encrypter/encrypter.go index 3ba7c3e..301cf0a 100644 --- a/pkg/plugin/implementation/encrypter/encrypter.go +++ b/pkg/plugin/implementation/encrypter/encrypter.go @@ -24,12 +24,12 @@ func New(ctx context.Context) (*encrypter, func() error, error) { func (e *encrypter) Encrypt(ctx context.Context, data string, privateKeyBase64, publicKeyBase64 string) (string, error) { privateKeyBytes, err := base64.StdEncoding.DecodeString(privateKeyBase64) if err != nil { - return "", model.NewBadReqErr(err) + return "", model.NewBadReqErr(fmt.Errorf("invalid private key: %w", err)) } publicKeyBytes, err := base64.StdEncoding.DecodeString(publicKeyBase64) if err != nil { - return "", model.NewBadReqErr(err) + return "", model.NewBadReqErr(fmt.Errorf("invalid public key: %w", err)) } // Convert the input string to a byte slice. @@ -51,11 +51,11 @@ func createAESCipher(privateKey, publicKey []byte) (cipher.Block, error) { x25519Curve := ecdh.X25519() x25519PrivateKey, err := x25519Curve.NewPrivateKey(privateKey) if err != nil { - return nil, model.NewBadReqErr(err) + return nil, model.NewBadReqErr(fmt.Errorf("failed to create private key: %w", err)) } x25519PublicKey, err := x25519Curve.NewPublicKey(publicKey) if err != nil { - return nil, model.NewBadReqErr(err) + return nil, model.NewBadReqErr(fmt.Errorf("failed to create public key: %w", err)) } sharedSecret, err := x25519PrivateKey.ECDH(x25519PublicKey) if err != nil { diff --git a/pkg/plugin/implementation/schemavalidator/schemavalidator.go b/pkg/plugin/implementation/schemavalidator/schemavalidator.go index dd3d596..9456c07 100644 --- a/pkg/plugin/implementation/schemavalidator/schemavalidator.go +++ b/pkg/plugin/implementation/schemavalidator/schemavalidator.go @@ -11,6 +11,7 @@ import ( "path/filepath" "strings" + "github.com/beckn/beckn-onix/pkg/log" "github.com/beckn/beckn-onix/pkg/model" "github.com/santhosh-tekuri/jsonschema/v6" @@ -39,7 +40,7 @@ type Config struct { func New(ctx context.Context, config *Config) (*schemaValidator, func() error, error) { // Check if config is nil if config == nil { - return nil, nil, model.NewBadReqErr(errors.New("config cannot be nil")) + return nil, nil, fmt.Errorf("config cannot be nil") } v := &schemaValidator{ config: config, @@ -58,7 +59,7 @@ func (v *schemaValidator) Validate(ctx context.Context, url *url.URL, data []byt var payloadData payload err := json.Unmarshal(data, &payloadData) if err != nil { - return fmt.Errorf("failed to parse JSON payload: %v", err) + return model.NewBadReqErr(fmt.Errorf("failed to parse JSON payload: %v", err)) } // Extract domain, version, and endpoint from the payload and uri. @@ -67,8 +68,7 @@ func (v *schemaValidator) Validate(ctx context.Context, url *url.URL, data []byt version = fmt.Sprintf("v%s", version) endpoint := path.Base(url.String()) - // ToDo Add debug log here - fmt.Println("Handling request for endpoint:", endpoint) + log.Debugf(ctx, "Handling request for endpoint: %s", endpoint) domain := strings.ToLower(cxtDomain) domain = strings.ReplaceAll(domain, ":", "_") @@ -78,12 +78,12 @@ func (v *schemaValidator) Validate(ctx context.Context, url *url.URL, data []byt // Retrieve the schema from the cache. schema, exists := v.schemaCache[schemaFileName] if !exists { - return model.NewNotFoundErr(errors.New("schema not found for domain")) + return model.NewBadReqErr(errors.New("schema not found for domain")) } var jsonData any if err := json.Unmarshal(data, &jsonData); err != nil { - return model.NewBadReqErr(err) + return model.NewBadReqErr(fmt.Errorf("failed to parse JSON data: %v", err)) } err = schema.Validate(jsonData) if err != nil { @@ -105,7 +105,7 @@ func (v *schemaValidator) Validate(ctx context.Context, url *url.URL, data []byt // Return the array of schema validation errors return &model.SchemaValidationErr{Errors: schemaErrors} } - return model.NewBadReqErr(err) + return model.NewBadReqErr(fmt.Errorf("validation failed: %v", err)) } // Return nil if validation succeeds @@ -190,7 +190,7 @@ func (v *schemaValidator) initialise() error { // Start processing from the root schema directory. if err := processDir(schemaDir); err != nil { - return model.NewNotFoundErr(err) + return fmt.Errorf("failed to read schema directory: %v", err) } return nil diff --git a/pkg/plugin/implementation/signer/signer.go b/pkg/plugin/implementation/signer/signer.go index 71f8774..ca659d4 100644 --- a/pkg/plugin/implementation/signer/signer.go +++ b/pkg/plugin/implementation/signer/signer.go @@ -33,7 +33,7 @@ func hash(payload []byte, createdAt, expiresAt int64) (string, error) { _, err := hasher.Write(payload) if err != nil { - return "", model.NewBadReqErr(err) + return "", fmt.Errorf("failed to hash payload: %w", err) } hashSum := hasher.Sum(nil) @@ -46,7 +46,7 @@ func hash(payload []byte, createdAt, expiresAt int64) (string, error) { func generateSignature(signingString []byte, privateKeyBase64 string) ([]byte, error) { privateKeyBytes, err := base64.StdEncoding.DecodeString(privateKeyBase64) if err != nil { - return nil, model.NewBadReqErr(err) + return nil, fmt.Errorf("error decoding private key: %w", err) } if len(privateKeyBytes) != ed25519.SeedSize { diff --git a/pkg/plugin/implementation/signvalidator/signvalidator.go b/pkg/plugin/implementation/signvalidator/signvalidator.go index b107619..07893fd 100644 --- a/pkg/plugin/implementation/signvalidator/signvalidator.go +++ b/pkg/plugin/implementation/signvalidator/signvalidator.go @@ -4,7 +4,6 @@ import ( "context" "crypto/ed25519" "encoding/base64" - "errors" "fmt" "strconv" "strings" @@ -34,7 +33,7 @@ func New(ctx context.Context, config *Config) (*validator, func() error, error) func (v *validator) Validate(ctx context.Context, body []byte, header string, publicKeyBase64 string) error { createdTimestamp, expiredTimestamp, signature, err := parseAuthHeader(header) if err != nil { - return model.NewBadReqErr(err) + return model.NewBadReqErr(fmt.Errorf("error parsing header: %w", err)) } signatureBytes, err := base64.StdEncoding.DecodeString(signature) @@ -44,7 +43,7 @@ func (v *validator) Validate(ctx context.Context, body []byte, header string, pu currentTime := time.Now().Unix() if createdTimestamp > currentTime || currentTime > expiredTimestamp { - return model.NewSignValidationErr(errors.New("signature is expired or not yet valid")) + return model.NewSignValidationErr(fmt.Errorf("signature is expired or not yet valid")) } createdTime := time.Unix(createdTimestamp, 0) @@ -54,11 +53,11 @@ func (v *validator) Validate(ctx context.Context, body []byte, header string, pu decodedPublicKey, err := base64.StdEncoding.DecodeString(publicKeyBase64) if err != nil { - return model.NewBadReqErr(err) + return model.NewBadReqErr(fmt.Errorf("error decoding public key: %w", err)) } if !ed25519.Verify(ed25519.PublicKey(decodedPublicKey), []byte(signingString), signatureBytes) { - return model.NewSignValidationErr(errors.New("signature verification failed")) + return model.NewSignValidationErr(fmt.Errorf("signature verification failed")) } return nil @@ -88,13 +87,13 @@ func parseAuthHeader(header string) (int64, int64, string, error) { expiredTimestamp, err := strconv.ParseInt(signatureMap["expires"], 10, 64) if err != nil { - return 0, 0, "", model.NewSignValidationErr(err) + return 0, 0, "", model.NewSignValidationErr(fmt.Errorf("invalid expires timestamp: %w", err)) } signature := signatureMap["signature"] if signature == "" { // TODO: Return appropriate error code when Error Code Handling Module is ready - return 0, 0, "", model.NewSignValidationErr(errors.New("signature missing in header")) + return 0, 0, "", model.NewSignValidationErr(fmt.Errorf("signature missing in header")) } return createdTimestamp, expiredTimestamp, signature, nil From edf82b8e8a4f8d92fa8bea8e90f822f3ba14c73e Mon Sep 17 00:00:00 2001 From: "mayur.popli" Date: Thu, 3 Apr 2025 19:02:42 +0530 Subject: [PATCH 4/6] fix: error module implementation --- pkg/plugin/implementation/signer/signer.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkg/plugin/implementation/signer/signer.go b/pkg/plugin/implementation/signer/signer.go index ca659d4..1f5be86 100644 --- a/pkg/plugin/implementation/signer/signer.go +++ b/pkg/plugin/implementation/signer/signer.go @@ -7,7 +7,6 @@ import ( "errors" "fmt" - "github.com/beckn/beckn-onix/pkg/model" "golang.org/x/crypto/blake2b" ) @@ -50,7 +49,7 @@ func generateSignature(signingString []byte, privateKeyBase64 string) ([]byte, e } if len(privateKeyBytes) != ed25519.SeedSize { - return nil, model.NewBadReqErr(errors.New("invalid seed length")) + return nil, errors.New("invalid seed length") } // Generate the private key from the seed From 67808f3628e4658c72ede1e419f9cad92fb45e74 Mon Sep 17 00:00:00 2001 From: "mayur.popli" Date: Fri, 4 Apr 2025 15:08:37 +0530 Subject: [PATCH 5/6] ft: module_name wrapper middleware --- core/module/module.go | 2 +- core/module/module_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/module/module.go b/core/module/module.go index 3b0fcef..0cd7567 100644 --- a/core/module/module.go +++ b/core/module/module.go @@ -51,7 +51,7 @@ func Register(ctx context.Context, mCfgs []Config, mux *http.ServeMux, mgr handl } // addMiddleware applies middleware plugins to the provided handler in reverse order. -// It retrieves middleware instances from the plugin manager and chains them to the handler. +// It retrieves middleware instances from the plugin manager and chains them to the handler.. func addMiddleware(ctx context.Context, mgr handler.PluginManager, handler http.Handler, hCfg *handler.Config) (http.Handler, error) { mws := hCfg.Plugins.Middleware log.Debugf(ctx, "Applying %d middleware(s) to the handler", len(mws)) diff --git a/core/module/module_test.go b/core/module/module_test.go index 8f9016c..8737968 100644 --- a/core/module/module_test.go +++ b/core/module/module_test.go @@ -99,7 +99,7 @@ func TestRegisterSuccess(t *testing.T) { } } -// TestRegisterFailure tests scenarios where the handler registration should fail. +// TestRegisterFailure tests scenarios where the handler registration should fail.. func TestRegisterFailure(t *testing.T) { tests := []struct { name string From bb737505d411b57864f577f3b1f3e13c30332d51 Mon Sep 17 00:00:00 2001 From: "mayur.popli" Date: Fri, 4 Apr 2025 16:34:43 +0530 Subject: [PATCH 6/6] fix: resolved comments --- core/module/module.go | 2 +- core/module/module_test.go | 2 +- pkg/plugin/implementation/schemavalidator/schemavalidator.go | 5 +---- pkg/plugin/implementation/signvalidator/signvalidator.go | 4 ++-- 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/core/module/module.go b/core/module/module.go index 0cd7567..3b0fcef 100644 --- a/core/module/module.go +++ b/core/module/module.go @@ -51,7 +51,7 @@ func Register(ctx context.Context, mCfgs []Config, mux *http.ServeMux, mgr handl } // addMiddleware applies middleware plugins to the provided handler in reverse order. -// It retrieves middleware instances from the plugin manager and chains them to the handler.. +// It retrieves middleware instances from the plugin manager and chains them to the handler. func addMiddleware(ctx context.Context, mgr handler.PluginManager, handler http.Handler, hCfg *handler.Config) (http.Handler, error) { mws := hCfg.Plugins.Middleware log.Debugf(ctx, "Applying %d middleware(s) to the handler", len(mws)) diff --git a/core/module/module_test.go b/core/module/module_test.go index 8737968..8f9016c 100644 --- a/core/module/module_test.go +++ b/core/module/module_test.go @@ -99,7 +99,7 @@ func TestRegisterSuccess(t *testing.T) { } } -// TestRegisterFailure tests scenarios where the handler registration should fail.. +// TestRegisterFailure tests scenarios where the handler registration should fail. func TestRegisterFailure(t *testing.T) { tests := []struct { name string diff --git a/pkg/plugin/implementation/schemavalidator/schemavalidator.go b/pkg/plugin/implementation/schemavalidator/schemavalidator.go index 9456c07..bab2dba 100644 --- a/pkg/plugin/implementation/schemavalidator/schemavalidator.go +++ b/pkg/plugin/implementation/schemavalidator/schemavalidator.go @@ -105,16 +105,13 @@ func (v *schemaValidator) Validate(ctx context.Context, url *url.URL, data []byt // Return the array of schema validation errors return &model.SchemaValidationErr{Errors: schemaErrors} } - return model.NewBadReqErr(fmt.Errorf("validation failed: %v", err)) + return fmt.Errorf("validation failed: %v", err) } // Return nil if validation succeeds return nil } -// ValidatorProvider provides instances of Validator. -type ValidatorProvider struct{} - // Initialise initialises the validator provider by compiling all the JSON schema files // from the specified directory and storing them in a cache indexed by their schema filenames. func (v *schemaValidator) initialise() error { diff --git a/pkg/plugin/implementation/signvalidator/signvalidator.go b/pkg/plugin/implementation/signvalidator/signvalidator.go index 07893fd..612d857 100644 --- a/pkg/plugin/implementation/signvalidator/signvalidator.go +++ b/pkg/plugin/implementation/signvalidator/signvalidator.go @@ -33,7 +33,7 @@ func New(ctx context.Context, config *Config) (*validator, func() error, error) func (v *validator) Validate(ctx context.Context, body []byte, header string, publicKeyBase64 string) error { createdTimestamp, expiredTimestamp, signature, err := parseAuthHeader(header) if err != nil { - return model.NewBadReqErr(fmt.Errorf("error parsing header: %w", err)) + return model.NewSignValidationErr(fmt.Errorf("error parsing header: %w", err)) } signatureBytes, err := base64.StdEncoding.DecodeString(signature) @@ -53,7 +53,7 @@ func (v *validator) Validate(ctx context.Context, body []byte, header string, pu decodedPublicKey, err := base64.StdEncoding.DecodeString(publicKeyBase64) if err != nil { - return model.NewBadReqErr(fmt.Errorf("error decoding public key: %w", err)) + return model.NewSignValidationErr(fmt.Errorf("error decoding public key: %w", err)) } if !ed25519.Verify(ed25519.PublicKey(decodedPublicKey), []byte(signingString), signatureBytes) {