Embed nvd's downloading and storing of meta data into a function to help with resource management

master
Jean Michel MacKay 6 years ago
parent 3959f416fa
commit f34f94320a

@ -165,24 +165,26 @@ func getDataFeeds(dataFeedHashes map[string]string, localPath string) (map[strin
}
}
downloadAndSave := func() error {
// Download data feed.
r, err := httputil.GetWithUserAgent(fmt.Sprintf(dataFeedURL, dataFeedName))
if err != nil {
log.WithError(err).WithField(logDataFeedName, dataFeedName).Error("could not download NVD data feed")
return dataFeedReaders, dataFeedHashes, commonerr.ErrCouldNotDownload
return commonerr.ErrCouldNotDownload
}
defer r.Body.Close()
if !httputil.Status2xx(r) {
log.WithField("StatusCode", r.StatusCode).Error("Failed to download NVD data feed")
return dataFeedReaders, dataFeedHashes, commonerr.ErrCouldNotDownload
return commonerr.ErrCouldNotDownload
}
// Un-gzip it.
gr, err := gzip.NewReader(r.Body)
if err != nil {
log.WithError(err).WithField(logDataFeedName, dataFeedName).Error("could not read NVD data feed")
return dataFeedReaders, dataFeedHashes, commonerr.ErrCouldNotDownload
return commonerr.ErrCouldNotDownload
}
// Store it to a file at the same time if possible.
@ -191,11 +193,19 @@ func getDataFeeds(dataFeedHashes map[string]string, localPath string) (map[strin
if err != nil {
log.WithError(err).Warning("could not stream NVD data feed to filesystem")
}
defer f.Close()
dataFeedReaders[dataFeedName] = fileName
f.Close()
} else {
log.WithError(err).Warning("could not store NVD data feed to filesystem")
}
return nil
}
err := downloadAndSave()
if err != nil {
return dataFeedReaders, dataFeedHashes, err
}
}
}

Loading…
Cancel
Save