client: move osv.DBIndex to package client
osv.DBIndex is relevant to the client package, not the osv package.
Change-Id: I9a1007fffaeb9bac42974e9f837943faf7dd6f00
Reviewed-on: https://go-review.googlesource.com/c/vuln/+/372995
Reviewed-by: Jonathan Amsterdam <jba@google.com>
Trust: Julie Qiu <julie@golang.org>
diff --git a/client/cache.go b/client/cache.go
index e02330f..5ad181d 100644
--- a/client/cache.go
+++ b/client/cache.go
@@ -12,8 +12,8 @@
// Cache interface for vuln DB caching.
type Cache interface {
- ReadIndex(string) (osv.DBIndex, time.Time, error)
- WriteIndex(string, osv.DBIndex, time.Time) error
+ ReadIndex(string) (DBIndex, time.Time, error)
+ WriteIndex(string, DBIndex, time.Time) error
ReadEntries(string, string) ([]*osv.Entry, error)
WriteEntries(string, string, []*osv.Entry) error
}
diff --git a/client/client.go b/client/client.go
index 7d994cf..6b3ef4b 100644
--- a/client/client.go
+++ b/client/client.go
@@ -12,7 +12,7 @@
// was added. The index file is called indx.json, and has the
// following format:
//
-// map[string]time.Time (osv.DBIndex)
+// map[string]time.Time (DBIndex)
//
// Each vulnerable module is represented by an individual JSON file
// which contains all of the vulnerabilities in that module. The path
@@ -50,6 +50,10 @@
"golang.org/x/vuln/osv"
)
+// DBIndex contains a mapping of vulnerable packages to the last time a new
+// vulnerability was added to the database.
+type DBIndex map[string]time.Time
+
// Client interface for fetching vulnerabilities based on module path or ID.
type Client interface {
// GetByModule returns the entries that affect the given module path.
@@ -68,7 +72,7 @@
type source interface {
Client
- Index(context.Context) (osv.DBIndex, error)
+ Index(context.Context) (DBIndex, error)
}
type localSource struct {
@@ -120,9 +124,9 @@
return ids, nil
}
-func (ls *localSource) Index(context.Context) (_ osv.DBIndex, err error) {
+func (ls *localSource) Index(context.Context) (_ DBIndex, err error) {
defer derrors.Wrap(&err, "Index()")
- var index osv.DBIndex
+ var index DBIndex
b, err := ioutil.ReadFile(filepath.Join(ls.dir, "index.json"))
if err != nil {
return nil, err
@@ -140,10 +144,10 @@
dbName string
}
-func (hs *httpSource) Index(ctx context.Context) (_ osv.DBIndex, err error) {
+func (hs *httpSource) Index(ctx context.Context) (_ DBIndex, err error) {
defer derrors.Wrap(&err, "Index()")
- var cachedIndex osv.DBIndex
+ var cachedIndex DBIndex
var cachedIndexRetrieved *time.Time
if hs.cache != nil {
@@ -190,7 +194,7 @@
if err != nil {
return nil, err
}
- var index osv.DBIndex
+ var index DBIndex
if err = json.Unmarshal(b, &index); err != nil {
return nil, err
}
diff --git a/client/client_test.go b/client/client_test.go
index 9b2ca26..cb45cf1 100644
--- a/client/client_test.go
+++ b/client/client_test.go
@@ -46,20 +46,20 @@
// testCache for testing purposes
type testCache struct {
- indexMap map[string]osv.DBIndex
+ indexMap map[string]DBIndex
indexStamp map[string]time.Time
vulnMap map[string]map[string][]*osv.Entry
}
func freshTestCache() *testCache {
return &testCache{
- indexMap: make(map[string]osv.DBIndex),
+ indexMap: make(map[string]DBIndex),
indexStamp: make(map[string]time.Time),
vulnMap: make(map[string]map[string][]*osv.Entry),
}
}
-func (tc *testCache) ReadIndex(db string) (osv.DBIndex, time.Time, error) {
+func (tc *testCache) ReadIndex(db string) (DBIndex, time.Time, error) {
index, ok := tc.indexMap[db]
if !ok {
return nil, time.Time{}, nil
@@ -71,7 +71,7 @@
return index, stamp, nil
}
-func (tc *testCache) WriteIndex(db string, index osv.DBIndex, stamp time.Time) error {
+func (tc *testCache) WriteIndex(db string, index DBIndex, stamp time.Time) error {
tc.indexMap[db] = index
tc.indexStamp[db] = stamp
return nil
@@ -219,7 +219,7 @@
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
fetches[r.URL.Path]++
if r.URL.Path == "/index.json" {
- j, _ := json.Marshal(osv.DBIndex{
+ j, _ := json.Marshal(DBIndex{
"a": time.Now(),
"b": time.Now(),
})
@@ -256,7 +256,7 @@
// set timestamp so that cached index is stale,
// i.e., more than two hours old.
timeStamp := time.Now().Add(time.Hour * (-3))
- index := osv.DBIndex{"a": timeStamp}
+ index := DBIndex{"a": timeStamp}
cache := freshTestCache()
cache.WriteIndex(url.Hostname(), index, timeStamp)
diff --git a/osv/json.go b/osv/json.go
index 6ca54d8..8964220 100644
--- a/osv/json.go
+++ b/osv/json.go
@@ -18,13 +18,6 @@
"golang.org/x/mod/semver"
)
-// DBIndex contains a mapping of vulnerable packages to the
-// last time a new vulnerability was added to the database.
-// TODO: this is probably not the correct place to put this
-// type, since it's not really an OSV/CVF thing, but rather
-// vulndb implementatiion detail.
-type DBIndex map[string]time.Time
-
type AffectsRangeType string
const (
diff --git a/srv/cmd/dbdiff/main.go b/srv/cmd/dbdiff/main.go
index a832f26..21c19d4 100644
--- a/srv/cmd/dbdiff/main.go
+++ b/srv/cmd/dbdiff/main.go
@@ -15,14 +15,15 @@
"strings"
"github.com/google/go-cmp/cmp"
+ "golang.org/x/vuln/client"
"golang.org/x/vuln/osv"
"golang.org/x/vuln/srv/internal"
"golang.org/x/vuln/srv/internal/derrors"
)
-func loadDB(dbPath string) (_ osv.DBIndex, _ map[string][]osv.Entry, err error) {
+func loadDB(dbPath string) (_ client.DBIndex, _ map[string][]osv.Entry, err error) {
defer derrors.Wrap(&err, "loadDB(%q)", dbPath)
- index := osv.DBIndex{}
+ index := client.DBIndex{}
dbMap := map[string][]osv.Entry{}
var loadDir func(string) error
diff --git a/srv/cmd/gendb/main.go b/srv/cmd/gendb/main.go
index 9267be8..4d58c8a 100644
--- a/srv/cmd/gendb/main.go
+++ b/srv/cmd/gendb/main.go
@@ -15,6 +15,7 @@
"path/filepath"
"strings"
+ "golang.org/x/vuln/client"
"golang.org/x/vuln/osv"
"golang.org/x/vuln/srv/internal"
"golang.org/x/vuln/srv/internal/database"
@@ -76,7 +77,7 @@
entries = append(entries, entry)
}
- index := make(osv.DBIndex, len(jsonVulns))
+ index := make(client.DBIndex, len(jsonVulns))
for path, vulns := range jsonVulns {
outPath := filepath.Join(*jsonDir, path)
content, err := json.Marshal(vulns)