package parse import ( "net/http" "github.com/gorilla/mux" "github.com/rancher/steve/pkg/schemaserver/types" ) type Vars struct { Type string Name string Namespace string Link string Prefix string Action string } func Set(v Vars) mux.MatcherFunc { return func(request *http.Request, match *mux.RouteMatch) bool { if match.Vars == nil { match.Vars = map[string]string{} } if v.Type != "" { match.Vars["type"] = v.Type } if v.Name != "" { match.Vars["name"] = v.Name } if v.Link != "" { match.Vars["link"] = v.Link } if v.Prefix != "" { match.Vars["prefix"] = v.Prefix } if v.Action != "" { match.Vars["action"] = v.Action } if v.Namespace != "" { match.Vars["namespace"] = v.Namespace } return true } } func MuxURLParser(rw http.ResponseWriter, req *http.Request, schemas *types.APISchemas) (ParsedURL, error) { vars := mux.Vars(req) url := ParsedURL{ Type: vars["type"], Name: vars["name"], Namespace: vars["namespace"], Link: vars["link"], Prefix: vars["prefix"], Method: req.Method, Action: vars["action"], Query: req.URL.Query(), } return url, nil }