1
0
Fork 0
mirror of https://github.com/gocsaf/csaf.git synced 2025-12-22 05:40:11 +01:00

use io.WriterTo instead of custom save interface ti serialize metadata and rolie.

This commit is contained in:
Sascha L. Teichmann 2021-12-02 00:24:27 +01:00
parent 5276cea0a0
commit 22c7da1ed1
4 changed files with 24 additions and 13 deletions

View file

@ -138,16 +138,12 @@ func writeHashedFile(fname, name string, data []byte, armored string) error {
return nil
}
type saver interface {
Save(io.Writer) error
}
func saveToFile(fname string, s saver) error {
func saveToFile(fname string, wt io.WriterTo) error {
f, err1 := os.Create(fname)
if err1 != nil {
return err1
}
err1 = s.Save(f)
_, err1 = wt.WriteTo(f)
err2 := f.Close()
if err1 != nil {
return err1

View file

@ -67,7 +67,7 @@ func doTransaction(
return err
}
if err := pmd.Save(newMetaFile); err != nil {
if _, err := pmd.WriteTo(newMetaFile); err != nil {
newMetaFile.Close()
os.Remove(newMetaName)
os.RemoveAll(newDir)

View file

@ -420,11 +420,24 @@ func NewProviderMetadataDomain(domain string, tlps []TLPLabel) *ProviderMetadata
return pm
}
// Save saves a metadata provider to a writer.
func (pmd *ProviderMetadata) Save(w io.Writer) error {
type nWriter struct {
io.Writer
n int64
}
func (nw *nWriter) Write(p []byte) (int, error) {
n, err := nw.Write(p)
nw.n += int64(n)
return n, err
}
// WriteTo saves a metadata provider to a writer.
func (pmd *ProviderMetadata) WriteTo(w io.Writer) (int64, error) {
enc := json.NewEncoder(w)
enc.SetIndent("", " ")
return enc.Encode(pmd)
nw := nWriter{w, 0}
err := enc.Encode(&nw)
return nw.n, err
}
// LoadProviderMetadata loads a metadata provider from a reader.

View file

@ -68,11 +68,13 @@ func LoadROLIEFeed(r io.Reader) (*ROLIEFeed, error) {
return &rf, nil
}
// Save saves a ROLIE feed to a writer.
func (rf *ROLIEFeed) Save(w io.Writer) error {
// WriteTo saves a ROLIE feed to a writer.
func (rf *ROLIEFeed) WriteTo(w io.Writer) (int64, error) {
enc := json.NewEncoder(w)
enc.SetIndent("", " ")
return enc.Encode(rf)
nw := nWriter{w, 0}
err := enc.Encode(&nw)
return nw.n, err
}
// EntryByID looks up an entry by its ID.