package pkg import ( "errors" "strings" ) type StatisticsProfile struct { ProfileCommon Field1 string `json:"field1"` Field2 string `json:"field2"` Field3 string `json:"field3"` Field4 string `json:"field4"` Field5 string `json:"field5"` Field6 string `json:"field6"` Field7 string `json:"field7"` Field8 string `json:"field8"` Field9 string `json:"field9"` Field10 string `json:"field10"` Field11 string `json:"field11"` Field12 string `json:"field12"` Field13 string `json:"field13"` Field14 string `json:"field14"` Field15 string `json:"field15"` Field16 string `json:"field16"` Field17 string `json:"field17"` Field18 string `json:"field18"` Field19 string `json:"field19"` Field20 string `json:"field20"` Field21 string `json:"field21"` Field22 string `json:"field22"` Field23 string `json:"field23"` Field24 string `json:"field24"` Field25 string `json:"field25"` Field26 string `json:"field26"` Field27 string `json:"field27"` Field28 string `json:"field28"` Field29 string `json:"field29"` Field30 string `json:"field30"` Field31 string `json:"field31"` Field32 string `json:"field32"` } func ParseStatisticsProfile(raw string) (*StatisticsProfile, error) { p := new(StatisticsProfile) split := strings.Split(raw, "\n") if !strings.Contains(split[0], "ltm profile statistics") { return nil, errors.New("not an statistics profile") } p.ProfileCommon = parseCommon(raw) for _, line := range split { f := strings.Fields(line) switch strings.ToLower(f[0]) { case "field1": p.Field1 = strings.Join(f[1:], " ") case "field2": p.Field2 = strings.Join(f[1:], " ") case "field3": p.Field3 = strings.Join(f[1:], " ") case "field4": p.Field4 = strings.Join(f[1:], " ") case "field5": p.Field5 = strings.Join(f[1:], " ") case "field6": p.Field6 = strings.Join(f[1:], " ") case "field7": p.Field7 = strings.Join(f[1:], " ") case "field8": p.Field8 = strings.Join(f[1:], " ") case "field9": p.Field9 = strings.Join(f[1:], " ") case "field10": p.Field10 = strings.Join(f[1:], " ") case "field11": p.Field11 = strings.Join(f[1:], " ") case "field12": p.Field12 = strings.Join(f[1:], " ") case "field13": p.Field13 = strings.Join(f[1:], " ") case "field14": p.Field14 = strings.Join(f[1:], " ") case "field15": p.Field15 = strings.Join(f[1:], " ") case "field16": p.Field16 = strings.Join(f[1:], " ") case "field17": p.Field17 = strings.Join(f[1:], " ") case "field18": p.Field18 = strings.Join(f[1:], " ") case "field19": p.Field19 = strings.Join(f[1:], " ") case "field20": p.Field20 = strings.Join(f[1:], " ") case "field21": p.Field21 = strings.Join(f[1:], " ") case "field22": p.Field22 = strings.Join(f[1:], " ") case "field23": p.Field23 = strings.Join(f[1:], " ") case "field24": p.Field24 = strings.Join(f[1:], " ") case "field25": p.Field25 = strings.Join(f[1:], " ") case "field26": p.Field26 = strings.Join(f[1:], " ") case "field27": p.Field27 = strings.Join(f[1:], " ") case "field28": p.Field28 = strings.Join(f[1:], " ") case "field29": p.Field29 = strings.Join(f[1:], " ") case "field30": p.Field30 = strings.Join(f[1:], " ") case "field31": p.Field31 = strings.Join(f[1:], " ") case "field32": p.Field32 = strings.Join(f[1:], " ") } } return p, nil }