eaa34ec05e
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.
33 lines
621 B
Go
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
|
|
}
|