package rootparticipation import ( "github.com/carlosframework/platform/internal/controlname" "strings" ) func (q ExecutionRequest) Valid() bool { if q.Schema != 1 || !validID(q.ID) || len(q.ID) > 128 || !controlname.ValidHostShape(q.Host) || !validID(q.Incarnation) || (q.Stamp == 0 && (q.Session != 0 || !validID(q.Op))) { return false } if q.Operation == "executionView" && q.Token == "" { return q.Op == "" || validID(q.Op) } if !validID(q.Op) { return false } switch q.Operation { case "executionBegin": return q.Token == "" case "executionRenew", "executionSettle", "executionView": return validID(q.Token) } return false } func validID(s string) bool { return s != "" && s != "." && s != ".." && !strings.ContainsAny(s, "/\\\x00\r\n\t ") }