in internal/azure/types/resource_type.go [66:157]
func (t *ResourceType) UnmarshalJSON(body []byte) error {
var m map[string]*json.RawMessage
err := json.Unmarshal(body, &m)
if err != nil {
return err
}
for k, v := range m {
switch k {
case "$type":
if v != nil {
var typeRef string
err := json.Unmarshal(*v, &typeRef)
if err != nil {
return err
}
t.Type = typeRef
}
case "name":
if v != nil {
var name string
err := json.Unmarshal(*v, &name)
if err != nil {
return err
}
t.Name = name
}
case "scopeType":
if v != nil {
var scopeType int
err := json.Unmarshal(*v, &scopeType)
if err != nil {
return err
}
scopeTypes := make([]ScopeType, 0)
for _, f := range PossibleScopeTypeValues() {
if scopeType&int(f) != 0 {
scopeTypes = append(scopeTypes, f)
}
}
if scopeType == 0 {
scopeTypes = append(scopeTypes, Unknown)
}
t.ScopeTypes = scopeTypes
}
case "readOnlyScopes":
if v != nil {
var scopeType int
err := json.Unmarshal(*v, &scopeType)
if err != nil {
return err
}
scopeTypes := make([]ScopeType, 0)
for _, f := range PossibleScopeTypeValues() {
if scopeType&int(f) != 0 {
scopeTypes = append(scopeTypes, f)
}
}
if scopeType == 0 {
scopeTypes = append(scopeTypes, Unknown)
}
t.ReadOnlyScopeTypes = scopeTypes
}
case "body":
if v != nil {
var typeRef TypeReference
err := json.Unmarshal(*v, &typeRef)
if err != nil {
return err
}
t.Body = &typeRef
}
case "flags":
if v != nil {
var flag int
err := json.Unmarshal(*v, &flag)
if err != nil {
return err
}
flags := make([]ResourceTypeFlag, 0)
for _, f := range PossibleResourceTypeFlagValues() {
if flag&int(f) != 0 {
flags = append(flags, f)
}
}
t.Flags = flags
}
default:
return fmt.Errorf("unmarshalling resource type, unrecognized key: %s", k)
}
}
return nil
}