in pkg/asyncapi/v2/decode.go [30:61]
func Decode(b []byte, dst interface{}) error {
r, err := parser.NewReader(string(b)) // parser should provide another method for parsing []byte
if err != nil {
return errors.Wrap(err, "error reading AsyncAPI doc")
}
p, err := parser.New()
if err != nil {
return err
}
w := bytes.NewBuffer(nil)
if err := p(r, w); err != nil {
return errors.Wrap(err, "error parsing AsyncAPI doc")
}
raw := make(map[string]interface{})
if err := json.Unmarshal(w.Bytes(), &raw); err != nil {
return err
}
dec, err := mapstructure.NewDecoder(&mapstructure.DecoderConfig{
DecodeHook: mapstructure.ComposeDecodeHookFunc(setModelIdentifierHook, setDefaultsHook),
Squash: true,
Result: dst,
})
if err != nil {
return err
}
return dec.Decode(raw)
}