package pkg import ( "errors" "strconv" "strings" ) type IIOPProfile struct { ProfileCommon AbortOnTimeout string `json:"abort_on_timeout"` PersistObjectKey string `json:"persist_object_key"` PersistRequestID string `json:"persist_request_id"` Timeout int `json:"timeout"` } func ParseIIOP(raw string) (*IIOPProfile, error) { p := new(IIOPProfile) split := strings.Split(raw, "\n") if !strings.Contains(split[0], "ltm profile iiop") { return nil, errors.New("not an iiop profile") } p.ProfileCommon = parseCommon(raw) for _, line := range split { f := strings.Fields(line) switch strings.ToLower(f[0]) { case "abort-on-timeout": p.AbortOnTimeout = f[1] case "persist-object-key": p.PersistObjectKey = f[1] case "persist-request-id": p.PersistRequestID = f[1] case "timeout": i, err := strconv.Atoi(f[1]) if err != nil { log.WithField("data", f[1]).Error(err.Error()) return nil, err } p.Timeout = i } } return p, nil }