Files
artifactapi/internal/virtual/merger.go
T
unkinben eaa34ec05e
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/test Pipeline was successful
ci/woodpecker/pr/build Pipeline was successful
fix: don't rewrite helm chart URLs pointing to a different host
When a helm chart index has download URLs on a different host than the
remote's base URL (e.g. charts hosted on intel.github.io but downloads
on github.com), the URL rewriting would produce broken proxy URLs.

Now URLs with a different host are left as-is so helm downloads
directly from the source. Same-host URLs are still rewritten through
the proxy as before.

Also fixes the route prefix to use /local/ for local members.
2026-06-26 23:30:02 +10:00

33 lines
621 B
Go

package virtual
import (
"fmt"
"git.unkin.net/unkin/artifactapi/pkg/models"
)
type MemberIndex struct {
RemoteName string
RepoType models.RepoType
BaseURL string
Body []byte
}
type IndexMerger interface {
MergeIndexes(members []MemberIndex, proxyBaseURL string) ([]byte, error)
}
var mergers = map[models.PackageType]IndexMerger{}
func RegisterMerger(pt models.PackageType, m IndexMerger) {
mergers[pt] = m
}
func GetMerger(pt models.PackageType) (IndexMerger, error) {
m, ok := mergers[pt]
if !ok {
return nil, fmt.Errorf("no merger registered for package type %q", pt)
}
return m, nil
}