Specify multiple filters when querying for box metadata version

This commit is contained in:
sophia 2022-04-01 09:41:33 -05:00 committed by Paul Hinze
parent f905e004b4
commit 01b4bbc42d
No known key found for this signature in database
GPG Key ID: B69DEDF2D55501C0
2 changed files with 38 additions and 10 deletions

View File

@ -121,7 +121,10 @@ func (b *BoxMetadata) version(ver string, providerOpts *core.BoxProvider) (v *Bo
}
func (b *BoxMetadata) LoadMetadata(url string) (err error) {
resp, err := http.Get(url)
client := &http.Client{}
req, _ := http.NewRequest("GET", url, nil)
req.Header.Set("Accept", "application/json")
resp, err := client.Do(req)
if err != nil {
return err
}
@ -142,15 +145,22 @@ func (b *BoxMetadata) BoxName() string {
return b.Name
}
func (b *BoxMetadata) Version(ver string, providerOpts *core.BoxProvider) (v *core.BoxVersion, err error) {
boxVer, err := b.version(ver, providerOpts)
if err != nil {
return nil, err
func (b *BoxMetadata) Version(ver string, providerOpts ...*core.BoxProvider) (v *core.BoxVersion, err error) {
if len(providerOpts) == 0 {
providerOpts = []*core.BoxProvider{
nil,
}
}
if boxVer != nil {
var coreBoxVersion *core.BoxVersion
mapstructure.Decode(boxVer, &coreBoxVersion)
return coreBoxVersion, nil
for _, p := range providerOpts {
boxVer, err := b.version(ver, p)
if err != nil {
return nil, err
}
if boxVer != nil {
var coreBoxVersion *core.BoxVersion
mapstructure.Decode(boxVer, &coreBoxVersion)
return coreBoxVersion, nil
}
}
return
}

View File

@ -110,7 +110,25 @@ func TestGetVersion(t *testing.T) {
func TestGetVersionWithQuery(t *testing.T) {
metadata := loadMetadata(t, []byte(rawMetadata))
version, err := metadata.Version("1.2.3", &core.BoxProvider{Name: "virtualbox"})
version, err := metadata.Version("1.2.3")
if err != nil {
t.Errorf("Failed to get version")
}
require.NotNil(t, version)
version, err = metadata.Version("1.2.3", &core.BoxProvider{Name: "virtualbox"})
if err != nil {
t.Errorf("Failed to get version")
}
require.NotNil(t, version)
version, err = metadata.Version("1.2.3", &core.BoxProvider{Name: "virtualbox"}, &core.BoxProvider{Name: "idontexist"})
if err != nil {
t.Errorf("Failed to get version")
}
require.NotNil(t, version)
version, err = metadata.Version("1.2.3", &core.BoxProvider{Name: "idontexist"}, &core.BoxProvider{Name: "vmware"})
if err != nil {
t.Errorf("Failed to get version")
}