diff --git a/src/packageurl/contrib/purl2url.py b/src/packageurl/contrib/purl2url.py index 08a404b..a30780e 100644 --- a/src/packageurl/contrib/purl2url.py +++ b/src/packageurl/contrib/purl2url.py @@ -304,6 +304,16 @@ def build_golang_repo_url(purl): return f"https://pkg.go.dev/{namespace}/{name}" +@repo_router.route("pkg:cocoapods/.*") +def build_cocoapods_repo_url(purl): + """ + Return a CocoaPods repo URL from the `purl` string. + """ + purl_data = PackageURL.from_string(purl) + name = purl_data.name + return name and f"https://cocoapods.org/pods/{name}" + + # Download URLs: diff --git a/tests/contrib/test_purl2url.py b/tests/contrib/test_purl2url.py index a37cbcd..6770641 100644 --- a/tests/contrib/test_purl2url.py +++ b/tests/contrib/test_purl2url.py @@ -65,6 +65,8 @@ def test_purl2url_get_repo_url(): "pkg:golang/xorm.io/xorm": "https://pkg.go.dev/xorm.io/xorm", "pkg:golang/xorm.io/xorm@v0.8.2": "https://pkg.go.dev/xorm.io/xorm@v0.8.2", "pkg:golang/gopkg.in/ldap.v3@v3.1.0": "https://pkg.go.dev/gopkg.in/ldap.v3@v3.1.0", + "pkg:cocoapods/AFNetworking@4.0.1": "https://cocoapods.org/pods/AFNetworking", + "pkg:cocoapods/MapsIndoors@3.24.0": "https://cocoapods.org/pods/MapsIndoors", } for purl, url in purls_url.items(): @@ -143,6 +145,7 @@ def test_purl2url_get_inferred_urls(): "https://gitlab.com/tg1999/firebase/-/archive/1a122122/firebase-1a122122.tar.gz", ], "pkg:pypi/sortedcontainers@2.4.0": ["https://pypi.org/project/sortedcontainers/2.4.0/"], + "pkg:cocoapods/AFNetworking@4.0.1": ["https://cocoapods.org/pods/AFNetworking"], "pkg:composer/psr/log@1.1.3": ["https://packagist.org/packages/psr/log#1.1.3"], "pkg:rubygems/package-name": ["https://rubygems.org/gems/package-name"], "pkg:bitbucket/birkenfeld": [],