func NewRoute(rt *kubernetes.Route) *route { var ( r = &route{method: make([]*routePart, 0, 1), header: make([]*routePart, 0, 1)} prefix = false ) if rt.Empty() { return &route{path: &routePart{part: "Path", val: ".*", regex: true}} } for _, part := range rt.Parts() { switch part.Type() { case kubernetes.HostPart: r.host = &routePart{part: "Host", val: part.Value(), regex: part.IsRegex()} case kubernetes.MethodPart: r.method = append( r.method, &routePart{part: "Method", val: part.Value(), regex: part.IsRegex()}, ) case kubernetes.HeaderPart: r.header = append( r.header, &routePart{part: "Header", header: part.Header(), val: part.Value(), regex: part.IsRegex()}, ) case kubernetes.PathPart: if !prefix { r.path = &routePart{part: "Path", val: part.Value(), regex: part.IsRegex()} } case kubernetes.PrefixPart: val := fmt.Sprintf("%s.*", part.Value()) r.path = &routePart{part: "Path", val: val, regex: true} prefix = true } } return r }