packages/marshaler.go (29 lines of code) (raw):
// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
// or more contributor license agreements. Licensed under the Elastic License 2.0;
// you may not use this file except in compliance with the Elastic License 2.0.
package packages
import (
"bytes"
"encoding/json"
"github.com/elastic/package-registry/internal/util"
)
var (
_ json.Marshaler = new(Package)
_ json.Unmarshaler = new(Package)
)
func (p *Package) MarshalJSON() ([]byte, error) {
var buf bytes.Buffer
err := util.WriteJSONPretty(&buf, *p)
return buf.Bytes(), err
}
func (p *Package) UnmarshalJSON(data []byte) error {
type Alias Package
aux := &struct {
*Alias
}{
(*Alias)(p),
}
err := json.Unmarshal(data, &aux)
if err != nil {
return err
}
((*Package)(aux.Alias)).setBasePolicyTemplates()
return ((*Package)(aux.Alias)).setRuntimeFields()
}