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!") } }