Skip to content

Commit be73771

Browse files
authored
Add support for namespace in build_npm_download_url (#158)
Signed-off-by: tdruez <tdruez@nexb.com>
1 parent aa217f1 commit be73771

4 files changed

Lines changed: 23 additions & 5 deletions

File tree

CHANGELOG.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ Changelog
44
0.16.0 (unreleased)
55
-------------------
66

7+
0.15.3 (2024-07-09)
8+
-------------------
9+
10+
- Add support for namespace in ``build_npm_download_url``.
11+
712
0.15.2 (2024-07-04)
813
-------------------
914

setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[metadata]
22
name = packageurl-python
3-
version = 0.15.2
3+
version = 0.15.3
44
license = MIT
55
description = A purl aka. Package URL parser and builder
66
long_description = file:README.rst

src/packageurl/contrib/purl2url.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -342,11 +342,17 @@ def build_npm_download_url(purl):
342342
"""
343343
purl_data = PackageURL.from_string(purl)
344344

345+
namespace = purl_data.namespace
345346
name = purl_data.name
346347
version = purl_data.version
347348

349+
base_url = "https://registry.npmjs.org"
350+
351+
if namespace:
352+
base_url += f"/{namespace}"
353+
348354
if name and version:
349-
return f"http://registry.npmjs.org/{name}/-/{name}-{version}.tgz"
355+
return f"{base_url}/{name}/-/{name}-{version}.tgz"
350356

351357

352358
@download_router.route("pkg:hackage/.*")

tests/contrib/test_purl2url.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ def test_purl2url_get_repo_url():
5656
"pkg:composer/psr/log": "https://packagist.org/packages/psr/log",
5757
"pkg:composer/psr/log@1.1.3": "https://packagist.org/packages/psr/log#1.1.3",
5858
"pkg:npm/is-npm": "https://www.npmjs.com/package/is-npm",
59-
"pkg:npm/is-npm@1.0.0": "https://www.npmjs.com/package/is-npm/v/1.0.0",
59+
"pkg:npm/@clayui/tooltip@3.1.0": "https://www.npmjs.com/package/@clayui/tooltip/v/3.1.0",
60+
"pkg:npm/%40clayui/tooltip@3.1.0": "https://www.npmjs.com/package/@clayui/tooltip/v/3.1.0",
6061
"pkg:nuget/System.Text.Json": "https://www.nuget.org/packages/System.Text.Json",
6162
"pkg:nuget/System.Text.Json@6.0.6": "https://www.nuget.org/packages/System.Text.Json/6.0.6",
6263
"pkg:hackage/cli-extras": "https://hackage.haskell.org/package/cli-extras",
@@ -75,7 +76,9 @@ def test_purl2url_get_download_url():
7576
# Generated
7677
"pkg:cargo/rand@0.7.2": "https://crates.io/api/v1/crates/rand/0.7.2/download",
7778
"pkg:gem/bundler@2.3.23": "https://rubygems.org/downloads/bundler-2.3.23.gem",
78-
"pkg:npm/is-npm@1.0.0": "http://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
79+
"pkg:npm/is-npm@1.0.0": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
80+
"pkg:npm/@clayui/tooltip@3.1.0": "https://registry.npmjs.org/@clayui/tooltip/-/tooltip-3.1.0.tgz",
81+
"pkg:npm/%40clayui/tooltip@3.1.0": "https://registry.npmjs.org/@clayui/tooltip/-/tooltip-3.1.0.tgz",
7982
"pkg:hackage/cli-extras@0.2.0.0": "https://hackage.haskell.org/package/cli-extras-0.2.0.0/cli-extras-0.2.0.0.tar.gz",
8083
"pkg:nuget/System.Text.Json@6.0.6": "https://www.nuget.org/api/v2/package/System.Text.Json/6.0.6",
8184
"pkg:github/nexb/scancode-toolkit@3.1.1?version_prefix=v": "https://github.com/nexb/scancode-toolkit/archive/v3.1.1.tar.gz",
@@ -119,7 +122,11 @@ def test_purl2url_get_inferred_urls():
119122
],
120123
"pkg:npm/is-npm@1.0.0": [
121124
"https://www.npmjs.com/package/is-npm/v/1.0.0",
122-
"http://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
125+
"https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
126+
],
127+
"pkg:npm/%40clayui/tooltip@3.1.0": [
128+
"https://www.npmjs.com/package/@clayui/tooltip/v/3.1.0",
129+
"https://registry.npmjs.org/@clayui/tooltip/-/tooltip-3.1.0.tgz",
123130
],
124131
"pkg:hackage/cli-extras@0.2.0.0": [
125132
"https://hackage.haskell.org/package/cli-extras-0.2.0.0",

0 commit comments

Comments
 (0)