Specify multiple filters when querying for box metadata version
This commit is contained in:
parent
f905e004b4
commit
01b4bbc42d
@ -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
|
||||
}
|
||||
|
||||
@ -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")
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user