Skip to content

Commit 1965f3b

Browse files
committed
Make code review changes at PR #278
Signed-off-by: Shivam Sandbhor <shivam.sandbhor@gmail.com>
1 parent fd27281 commit 1965f3b

5 files changed

Lines changed: 14 additions & 17 deletions

File tree

vulnerabilities/helpers.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,14 @@ def load_toml(path):
4343

4444

4545
def create_etag(data_src, url, etag_key):
46+
"""
47+
Etags are like hashes of web responses. For a data source `data_src`,
48+
we maintain (url, etag) mappings in the DB. `create_etag` creates
49+
(`url`, etag) pair. If a (`url`, etag) already exists then the code
50+
skips processing the response further to avoid duplicate work.
51+
52+
`etag_key` is the name of header which contains the etag for the url.
53+
"""
4654
etag = requests.head(url).headers.get(etag_key)
4755
if not etag:
4856
return True

vulnerabilities/importers/debian_oval.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,9 @@ def __init__(self, *args, **kwargs):
5757
self.pkg_manager_api = DebianVersionAPI()
5858

5959
def _fetch(self):
60-
base_url = "https://www.debian.org/security/oval/"
61-
file_name = "oval-definitions-{}.xml"
6260
releases = self.config.releases
6361
for release in releases:
64-
file_url = base_url + file_name.format(release)
62+
file_url = f"https://www.debian.org/security/oval/oval-definitions-{release}.xml"
6563
if not create_etag(data_src=self, url=file_url, etag_key="ETag"):
6664
continue
6765

vulnerabilities/importers/project_kb_msr2019.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,6 @@ class ProjectKBMSRDataSource(DataSource):
4949
url = "https://raw.githubusercontent.com/SAP/project-kb/master/MSR2019/dataset/vulas_db_msr2019_release.csv" # nopep8
5050

5151
def updated_advisories(self):
52-
# etag are like hashes of web responses. We maintain
53-
# (url, etag) mappings in the DB. `create_etag` creates
54-
# (url, etag) pair. If a (url, etag) already exists then the code
55-
# skips processing the response further to avoid duplicate work
5652
if create_etag(data_src=self, url=self.url, etag_key="ETag"):
5753
raw_data = self.fetch()
5854
advisories = self.to_advisories(raw_data)

vulnerabilities/importers/safety_db.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,10 @@
3131
from typing import Mapping
3232
from typing import Set
3333
from typing import Tuple
34-
from urllib.error import HTTPError
35-
from urllib.request import urlopen
36-
import requests
3734

3835
from dephell_specifier import RangeSpecifier
3936
from packageurl import PackageURL
37+
import requests
4038
from schema import Or
4139
from schema import Regex
4240
from schema import Schema
@@ -94,8 +92,7 @@ def set_api(self, packages):
9492

9593
def _fetch(self) -> Mapping[str, Any]:
9694
if create_etag(data_src=self, url=self.config.url, etag_key="ETag"):
97-
with urlopen(self.config.url) as response:
98-
return json.load(response)
95+
return requests.get(self.config.url).json()
9996

10097
return []
10198

@@ -142,13 +139,13 @@ def updated_advisories(self) -> Set[Advisory]:
142139
def categorize_versions(
143140
package_name: str,
144141
all_versions: Set[str],
145-
version_specs: Iterable[str],
142+
version_ranges: Iterable[str],
146143
) -> Tuple[Set[PackageURL], Set[PackageURL]]:
147144
"""
148145
:return: impacted, resolved purls
149146
"""
150147
impacted_versions, impacted_purls = set(), set()
151-
ranges = [RangeSpecifier(s) for s in version_specs]
148+
ranges = [RangeSpecifier(s) for s in version_ranges]
152149

153150
for version in all_versions:
154151
if any([version in r for r in ranges]):

vulnerabilities/importers/ubuntu.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,9 @@ def __init__(self, *args, **kwargs):
5858
self.pkg_manager_api = LaunchpadVersionAPI()
5959

6060
def _fetch(self):
61-
base_url = "https://people.canonical.com/~ubuntu-security/oval/"
62-
file_name = "com.ubuntu.{}.cve.oval.xml.bz2"
6361
releases = self.config.releases
6462
for release in releases:
65-
file_url = base_url + file_name.format(release)
63+
file_url = f"https://people.canonical.com/~ubuntu-security/oval/com.ubuntu.{release}.cve.oval.xml.bz2" # nopep8
6664
if not create_etag(data_src=self, url=file_url, etag_key="ETag"):
6765
continue
6866
resp = requests.get(file_url)

0 commit comments

Comments
 (0)