74 lines
1.8 KiB
Go
74 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"beckn-onix/plugins"
|
|
"context"
|
|
"encoding/json"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"log"
|
|
"net/url"
|
|
"strings"
|
|
)
|
|
|
|
type Payload struct {
|
|
Context struct {
|
|
Domain string `json:"domain"`
|
|
Version string `json:"version"`
|
|
} `json:"context"`
|
|
}
|
|
|
|
func main() {
|
|
|
|
pluginsConfig, err := plugins.LoadPluginsConfig("plugins/config.yaml")
|
|
if err != nil {
|
|
log.Fatalf("Failed to load plugins configuration: %v", err)
|
|
}
|
|
|
|
_, validators, err := plugins.NewValidatorProvider(pluginsConfig)
|
|
if err != nil {
|
|
log.Fatalf("Failed to create PluginManager: %v", err)
|
|
}
|
|
|
|
for fileName, validator := range validators {
|
|
fmt.Printf("%s: %v\n", fileName, validator)
|
|
}
|
|
requestURL := "http://example.com/select"
|
|
|
|
// Extract endpoint from request URL
|
|
u, err := url.Parse(requestURL)
|
|
if err != nil {
|
|
log.Fatalf("Failed to parse request URL: %v", err)
|
|
}
|
|
//schemaFileName := fmt.Sprintf("%s.json", strings.Trim(u.Path, "/"))
|
|
|
|
//approch 1 start
|
|
endpoint := strings.Trim(u.Path, "/")
|
|
|
|
payloadData, err := ioutil.ReadFile("plugins/test/payload.json")
|
|
if err != nil {
|
|
log.Fatalf("Failed to read payload data: %v", err)
|
|
}
|
|
var payload Payload
|
|
if err := json.Unmarshal(payloadData, &payload); err != nil {
|
|
log.Fatalf("Failed to unmarshal payload: %v", err)
|
|
}
|
|
domain := strings.Replace(strings.ToLower(payload.Context.Domain), ":", "_", -1)
|
|
schemaFileName := fmt.Sprintf("%s_%s.json.%s", domain,
|
|
strings.ToLower(payload.Context.Version), endpoint)
|
|
|
|
//end
|
|
|
|
validator, exists := validators[schemaFileName]
|
|
if !exists {
|
|
log.Fatalf("Validator not found for %s", schemaFileName)
|
|
}
|
|
ctx := context.Background()
|
|
err = validator.Validate(ctx, payloadData)
|
|
if err != nil {
|
|
fmt.Printf("Document validation failed: %v\n", err)
|
|
} else {
|
|
fmt.Println("Document validation succeeded!")
|
|
}
|
|
}
|