Skip to content

Commit 01da61a

Browse files
authored
Replace npm package with registry.npmjs.org API (#223)
Signed-off-by: 석지영/책임연구원/SW공학(연)Open Source TP <[email protected]>
1 parent b72505b commit 01da61a

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

requirements.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ spdx-tools==0.8.*;sys_platform=="linux"
1212
setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability
1313
numpy; python_version < '3.8'
1414
numpy>=1.22.2; python_version >= '3.8'
15-
npm
1615
requests
1716
GitPython
1817
cyclonedx-python-lib==8.5.*;sys_platform=="linux"

src/fosslight_util/_get_downloadable_url.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import logging
66
import re
77
import requests
8-
from npm.bindings import npm_run
98
from lastversion import latest
109
from bs4 import BeautifulSoup
1110
from urllib.request import urlopen
@@ -66,10 +65,11 @@ def get_latest_package_version(link, pkg_type, oss_name):
6665

6766
try:
6867
if pkg_type in ['npm', 'npm2']:
69-
stderr, stdout = npm_run('view', oss_name, 'version')
70-
if stdout:
71-
find_version = stdout.strip()
72-
link_with_version = f'https://www.npmjs.com/package/{oss_name}/v/{find_version}'
68+
npm_response = requests.get(f"https://registry.npmjs.org/{oss_name}")
69+
if npm_response.status_code == 200:
70+
find_version = npm_response.json().get("dist-tags", {}).get("latest")
71+
if find_version:
72+
link_with_version = f'https://www.npmjs.com/package/{oss_name}/v/{find_version}'
7373
elif pkg_type == 'pypi':
7474
find_version = str(latest(oss_name, at='pip', output_format='version', pre_ok=True))
7575
link_with_version = f'https://pypi.org/project/{oss_name}/{find_version}'
@@ -78,17 +78,20 @@ def get_latest_package_version(link, pkg_type, oss_name):
7878
if maven_response.status_code == 200:
7979
find_version = maven_response.json().get('versions')[-1].get('versionKey').get('version')
8080
oss_name = oss_name.replace(':', '/')
81-
link_with_version = f'https://mvnrepository.com/artifact/{oss_name}/{find_version}'
81+
if find_version:
82+
link_with_version = f'https://mvnrepository.com/artifact/{oss_name}/{find_version}'
8283
elif pkg_type == 'pub':
8384
pub_response = requests.get(f'https://pub.dev/api/packages/{oss_name}')
8485
if pub_response.status_code == 200:
8586
find_version = pub_response.json().get('latest').get('version')
86-
link_with_version = f'https://pub.dev/packages/{oss_name}/versions/{find_version}'
87+
if find_version:
88+
link_with_version = f'https://pub.dev/packages/{oss_name}/versions/{find_version}'
8789
elif pkg_type == 'go':
8890
go_response = requests.get(f'https://proxy.golang.org/{oss_name}/@latest')
8991
if go_response.status_code == 200:
9092
find_version = go_response.json().get('Version')
91-
link_with_version = f'https://pkg.go.dev/{oss_name}@{find_version}'
93+
if find_version:
94+
link_with_version = f'https://pkg.go.dev/{oss_name}@{find_version}'
9295
except Exception as e:
9396
logger.info(f'Fail to get latest package version({link}:{e})')
9497
return find_version, link_with_version

0 commit comments

Comments
 (0)