Skip to content

Commit da1d699

Browse files
authored
feat: add support of purl repository_url (#123)
Signed-off-by: Damian Sniezek <[email protected]>
1 parent cb2136a commit da1d699

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

lib/ecosystems/package.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"context"
2121
"fmt"
2222
"net/http"
23+
"net/url"
2324

2425
"github.com/package-url/packageurl-go"
2526

@@ -75,7 +76,23 @@ func GetPackageVersionData(purl packageurl.PackageURL) (*packages.GetRegistryPac
7576
return resp, nil
7677
}
7778

79+
func repositoryURLfromPurl(purl packageurl.PackageURL) *url.URL {
80+
if len(purl.Qualifiers) > 0 {
81+
qualifiersMap := purl.Qualifiers.Map()
82+
if repoURL, ok := qualifiersMap["repository_url"]; ok && repoURL != "" {
83+
parsedURL, err := url.Parse(repoURL)
84+
if err == nil && parsedURL.Host != "" {
85+
return parsedURL
86+
}
87+
}
88+
}
89+
return nil
90+
}
91+
7892
func purlToEcosystemsRegistry(purl packageurl.PackageURL) string {
93+
if repoURL := repositoryURLfromPurl(purl); repoURL != nil {
94+
return repoURL.Host
95+
}
7996
return map[string]string{
8097
packageurl.TypeApk: "alpine-edge",
8198
packageurl.TypeBower: "bower.io",

lib/ecosystems/package_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ func TestPurlToEcosystemsRegistry(t *testing.T) {
109109
{"pkg:nuget/[email protected]", "nuget.org"},
110110
{"pkg:hex/[email protected]", "hex.pm"},
111111
{"pkg:maven/com.google.guava/[email protected]", "repo1.maven.org"},
112+
{"pkg:maven/org.opensaml/[email protected]?repository_url=https%3A%2F%2Fbuild.shibboleth.net%2Fnexus%2Fcontent%2Frepositories%2Freleases%2F", "build.shibboleth.net"},
112113
{"pkg:pypi/[email protected]", "pypi.org"},
113114
{"pkg:composer/symfony/[email protected]", "packagist.org"},
114115
{"pkg:gem/[email protected]", "rubygems.org"},

0 commit comments

Comments
 (0)