1
0
mirror of https://github.com/rancher/steve.git synced 2025-06-21 12:37:45 +00:00
steve/pkg/server/router/router.go

46 lines
1.4 KiB
Go
Raw Normal View History

2019-08-14 18:08:34 +00:00
package router
import (
"net/http"
"github.com/gorilla/mux"
"github.com/rancher/apiserver/pkg/urlbuilder"
2019-08-14 18:08:34 +00:00
)
2020-01-31 05:37:59 +00:00
type RouterFunc func(h Handlers) http.Handler
2019-08-14 18:08:34 +00:00
type Handlers struct {
K8sResource http.Handler
GenericResource http.Handler
2019-08-14 20:39:08 +00:00
APIRoot http.Handler
2019-08-14 18:08:34 +00:00
K8sProxy http.Handler
2020-01-31 05:37:59 +00:00
Next http.Handler
2019-08-14 18:08:34 +00:00
}
func Routes(h Handlers) http.Handler {
m := mux.NewRouter()
m.UseEncodedPath()
m.StrictSlash(true)
2020-02-20 23:06:43 +00:00
m.Use(urlbuilder.RedirectRewrite)
2019-08-14 18:08:34 +00:00
2020-01-31 05:37:59 +00:00
m.Path("/").Handler(h.APIRoot).HeadersRegexp("Accepts", ".*json.*")
2019-08-14 20:39:08 +00:00
m.Path("/{name:v1}").Handler(h.APIRoot)
m.Path("/v1/{type}").Handler(h.K8sResource)
2020-06-01 22:59:38 +00:00
m.Path("/v1/{type}/{nameorns}").Queries("link", "{link}").Handler(h.K8sResource)
m.Path("/v1/{type}/{nameorns}").Queries("action", "{action}").Handler(h.K8sResource)
2020-06-01 22:59:38 +00:00
m.Path("/v1/{type}/{nameorns}").Handler(h.K8sResource)
m.Path("/v1/{type}/{namespace}/{name}").Queries("action", "{action}").Handler(h.K8sResource)
2020-06-01 22:59:38 +00:00
m.Path("/v1/{type}/{namespace}/{name}").Queries("link", "{link}").Handler(h.K8sResource)
m.Path("/v1/{type}/{namespace}/{name}").Handler(h.K8sResource)
m.Path("/v1/{type}/{namespace}/{name}/{link}").Handler(h.K8sResource)
2020-03-02 23:03:33 +00:00
m.Path("/api").Handler(h.K8sProxy) // Can't just prefix this as UI needs /apikeys path
m.PathPrefix("/api/").Handler(h.K8sProxy)
2020-03-02 23:03:33 +00:00
m.PathPrefix("/apis").Handler(h.K8sProxy)
2020-01-31 05:37:59 +00:00
m.PathPrefix("/openapi").Handler(h.K8sProxy)
m.PathPrefix("/version").Handler(h.K8sProxy)
m.NotFoundHandler = h.Next
2019-08-14 18:08:34 +00:00
return m
}