Map box metadata

This commit is contained in:
sophia 2022-03-11 12:45:59 -06:00 committed by Paul Hinze
parent 35c094f570
commit e27e6c7871
No known key found for this signature in database
GPG Key ID: B69DEDF2D55501C0
2 changed files with 35 additions and 3 deletions

View File

@ -265,9 +265,7 @@ func (b *Box) UpdateInfo(version string) (updateAvailable bool, meta core.BoxMet
if result == nil {
return false, nil, "", "", nil
}
var metadataMap core.BoxMetadataMap
mapstructure.Decode(metadata, &metadataMap)
return true, metadataMap, result.Version, b.box.Provider, nil
return true, metadata.ToMap(), result.Version, b.box.Provider, nil
}
// Checks if this box is in use according to the given machine

View File

@ -18,6 +18,15 @@ type BoxVersionProvider struct {
ChecksumType string
}
func (b *BoxVersionProvider) ToMap() map[string]interface{} {
m := make(map[string]interface{})
m["Name"] = b.Name
m["Url"] = b.Url
m["Checksum"] = b.Checksum
m["ChecksumType"] = b.ChecksumType
return m
}
func (b *BoxVersionProvider) MatchesAny(p ...*BoxVersionProvider) (matches bool) {
for _, provider := range p {
if b.Matches(provider) {
@ -53,6 +62,19 @@ type BoxVersion struct {
Providers []*BoxVersionProvider
}
func (b *BoxVersion) ToMap() map[string]interface{} {
m := make(map[string]interface{})
m["Version"] = b.Version
m["Status"] = b.Status
m["Description"] = b.Description
providers := []interface{}{}
for _, p := range b.Providers {
providers = append(providers, p.ToMap())
}
m["Providers"] = providers
return m
}
func (b *BoxVersion) Provider(name string) (p *BoxVersionProvider, err error) {
for _, provider := range b.Providers {
if provider.Name == name {
@ -76,6 +98,18 @@ type BoxMetadata struct {
Versions []*BoxVersion
}
func (b *BoxMetadata) ToMap() map[string]interface{} {
m := make(map[string]interface{})
m["Name"] = b.Name
m["Description"] = b.Description
versions := []interface{}{}
for _, v := range b.Versions {
versions = append(versions, v.ToMap())
}
m["Versions"] = versions
return m
}
func LoadBoxMetadata(data []byte) (*BoxMetadata, error) {
var metadata map[string]interface{}
if err := json.Unmarshal(data, &metadata); err != nil {