ValidateAsyncAPI validates the given object against an AsyncAPI schema version. It tries 3.0 first, then falls back to 2.6.
(data interface{})
| 587 | // ValidateAsyncAPI validates the given object against an AsyncAPI schema version. |
| 588 | // It tries 3.0 first, then falls back to 2.6. |
| 589 | func ValidateAsyncAPI(data interface{}) error { |
| 590 | asyncapiOnce.Do(initAsyncAPISchemas) |
| 591 | |
| 592 | var errs error |
| 593 | err := compiledAsyncAPISchemas[AsyncAPIVersion3_0].Validate(data) |
| 594 | if err != nil { |
| 595 | if err := errorIsJSONFormat(err); err != nil { |
| 596 | return err |
| 597 | } |
| 598 | errs = multierror.Append(errs, err) |
| 599 | } else { |
| 600 | return nil |
| 601 | } |
| 602 | |
| 603 | err = compiledAsyncAPISchemas[AsyncAPIVersion2_6].Validate(data) |
| 604 | if err != nil { |
| 605 | if err := errorIsJSONFormat(err); err != nil { |
| 606 | errs = multierror.Append(errs, err) |
| 607 | return errs |
| 608 | } |
| 609 | return multierror.Append(errs, err) |
| 610 | } |
| 611 | |
| 612 | return nil |
| 613 | } |
| 614 | |
| 615 | // errorIsJSONFormat checks if the error is a JSON format error. |
| 616 | func errorIsJSONFormat(err error) error { |