func copyAvps(src []*AVP, dst *dict.App) { for _, avp := range src { newAVP := &dict.AVP{ Name: avp.Name, Code: avp.Code, } if avp.Type.Name == "" && avp.Grouped != nil { newAVP.Data = dict.Data{TypeName: "Grouped"} } else { newAVP.Data = dict.Data{TypeName: avp.Type.Name} } switch avp.MayEncrypt { case "yes": newAVP.MayEncrypt = "Y" case "no": newAVP.MayEncrypt = "N" default: newAVP.MayEncrypt = "-" } switch avp.Mandatory { case "must": newAVP.Must = "M" case "may": newAVP.May = "P" default: newAVP.Must = "" } if newAVP.May != "" { switch avp.Protected { case "may": newAVP.May = "P" default: newAVP.May = "" } } for _, p := range avp.Enum { newAVP.Data.Enum = append(newAVP.Data.Enum, &dict.Enum{ Name: p.Name, Code: p.Code, }) } for _, grp := range avp.Grouped { for _, p := range grp.GAVP { newAVP.Data.Rule = append(newAVP.Data.Rule, &dict.Rule{ AVP: p.Name, Min: p.Min, Max: p.Max, }) } for _, p := range grp.Required.Rule { newAVP.Data.Rule = append(newAVP.Data.Rule, &dict.Rule{ AVP: p.Name, Required: true, Min: p.Min, Max: p.Max, }) } for _, p := range grp.Optional.Rule { newAVP.Data.Rule = append(newAVP.Data.Rule, &dict.Rule{ AVP: p.Name, Required: false, Min: p.Min, Max: p.Max, }) } } dst.AVP = append(dst.AVP, newAVP) } }