48 lines
1.2 KiB
Go
48 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"strconv"
|
|
|
|
"github.com/beckn-one/beckn-onix/pkg/plugin/definition"
|
|
"github.com/beckn-one/beckn-onix/pkg/plugin/implementation/schemav2validator"
|
|
)
|
|
|
|
// schemav2ValidatorProvider provides instances of schemav2Validator.
|
|
type schemav2ValidatorProvider struct{}
|
|
|
|
// New initialises a new Schemav2Validator instance.
|
|
func (vp schemav2ValidatorProvider) New(ctx context.Context, config map[string]string) (definition.SchemaValidator, func() error, error) {
|
|
if ctx == nil {
|
|
return nil, nil, errors.New("context cannot be nil")
|
|
}
|
|
|
|
typeVal, hasType := config["type"]
|
|
locVal, hasLoc := config["location"]
|
|
|
|
if !hasType || typeVal == "" {
|
|
return nil, nil, errors.New("type not configured")
|
|
}
|
|
if !hasLoc || locVal == "" {
|
|
return nil, nil, errors.New("location not configured")
|
|
}
|
|
|
|
cfg := &schemav2validator.Config{
|
|
Type: typeVal,
|
|
Location: locVal,
|
|
CacheTTL: 3600,
|
|
}
|
|
|
|
if ttlStr, ok := config["cacheTTL"]; ok {
|
|
if ttl, err := strconv.Atoi(ttlStr); err == nil && ttl > 0 {
|
|
cfg.CacheTTL = ttl
|
|
}
|
|
}
|
|
|
|
return schemav2validator.New(ctx, cfg)
|
|
}
|
|
|
|
// Provider is the exported plugin provider.
|
|
var Provider schemav2ValidatorProvider
|