func cveFileList()

in providers/nvd/cve.go [147:195]


func cveFileList(c CVE) []cveFile {
	filefmt := func(version, suffix, encoding, compression string) string {
		s := fmt.Sprintf("nvdcve-%s-%s.%s", version, suffix, encoding)
		if compression != "" {
			s += "." + compression
		}
		return s
	}

	// nvd data feeds start in 2002
	const startingYear = 2002
	currentYear := time.Now().Year()
	if currentYear < startingYear {
		panic("system date is in the past, cannot continue")
	}

	entries := (currentYear - startingYear) + 1
	f := make([]cveFile, entries+2) // +recent +modified

	version := c.version()
	encoding := c.encoding()
	compression := c.compression()

	for i := 0; i < entries; i++ {
		year := startingYear + i
		suffix := strconv.Itoa(year)
		f[i] = cveFile{
			CVE:      c,
			MetaFile: filefmt(version, suffix, "meta", ""),
			DataFile: filefmt(version, suffix, encoding, compression),
		}
	}

	// recent
	f[entries] = cveFile{
		CVE:      c,
		MetaFile: filefmt(version, "recent", "meta", ""),
		DataFile: filefmt(version, "recent", encoding, compression),
	}

	// modified
	f[entries+1] = cveFile{
		CVE:      c,
		MetaFile: filefmt(version, "modified", "meta", ""),
		DataFile: filefmt(version, "modified", encoding, compression),
	}

	return f
}