github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/pkg/scanners/azure/arm/parser/armjson/unmarshal.go (about)

     1  package armjson
     2  
     3  import (
     4  	"bytes"
     5  	"io"
     6  
     7  	"github.com/khulnasoft-lab/defsec/pkg/types"
     8  )
     9  
    10  type Unmarshaller interface {
    11  	UnmarshalJSONWithMetadata(node Node) error
    12  }
    13  
    14  type MetadataReceiver interface {
    15  	SetMetadata(m *types.Metadata)
    16  }
    17  
    18  func Unmarshal(data []byte, target interface{}, metadata *types.Metadata) error {
    19  	node, err := newParser(NewPeekReader(bytes.NewReader(data)), Position{1, 1}).parse(metadata)
    20  	if err != nil {
    21  		return err
    22  	}
    23  	if err := node.Decode(target); err != nil {
    24  		return err
    25  	}
    26  
    27  	return nil
    28  }
    29  
    30  func UnmarshalFromReader(r io.ReadSeeker, target interface{}, metadata *types.Metadata) error {
    31  	node, err := newParser(NewPeekReader(r), Position{1, 1}).parse(metadata)
    32  	if err != nil {
    33  		return err
    34  	}
    35  	if err := node.Decode(target); err != nil {
    36  		return err
    37  	}
    38  
    39  	return nil
    40  }