1
0
Fork 0
forked from forgejo/forgejo

Fix handling of plenty Nuget package versions (#26075)

Fixes #25953

- Do not load full version information (v3)
- Add pagination support (v2)
This commit is contained in:
KN4CK3R 2023-07-26 21:43:21 +02:00 committed by GitHub
parent 6ce89883eb
commit 2d7fe4cc1e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 138 additions and 38 deletions

View file

@ -5,10 +5,17 @@ package nuget
import (
"fmt"
"net/url"
)
type nextOptions struct {
Path string
Query url.Values
}
type linkBuilder struct {
Base string
Next *nextOptions
}
// GetRegistrationIndexURL builds the registration index url
@ -30,3 +37,16 @@ func (l *linkBuilder) GetPackageDownloadURL(id, version string) string {
func (l *linkBuilder) GetPackageMetadataURL(id, version string) string {
return fmt.Sprintf("%s/Packages(Id='%s',Version='%s')", l.Base, id, version)
}
func (l *linkBuilder) GetNextURL() string {
u, _ := url.Parse(l.Base)
u = u.JoinPath(l.Next.Path)
q := u.Query()
for k, vs := range l.Next.Query {
for _, v := range vs {
q.Add(k, v)
}
}
u.RawQuery = q.Encode()
return u.String()
}