diff --git a/internal/core/box_metadata.go b/internal/core/box_metadata.go index 1320b2f13..5dacb0aff 100644 --- a/internal/core/box_metadata.go +++ b/internal/core/box_metadata.go @@ -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 } diff --git a/internal/core/box_metadata_test.go b/internal/core/box_metadata_test.go index 1768e8153..f157fa3cc 100644 --- a/internal/core/box_metadata_test.go +++ b/internal/core/box_metadata_test.go @@ -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") }