clustvirt/router/router.go

31 lines
725 B
Go
Raw Normal View History

package router
import (
"net/http"
"git.staur.ca/stobbsm/clustvirt/cluster"
)
// Types that are shared among routers
// SubRouter defines an interface to be able to add a subrouter to a
// chi router
type SubRouter interface {
// MountTo needs the cluster handle and the mux to add to
MountTo(*cluster.Cluster, *http.ServeMux) error
// Prefix returns the path prefix
Prefix() string
}
// Route defines a route that should be added to a chi router or
// subrouter
type Route struct {
Method string
Path string
Handler RouteHandler
}
// RouteHandler gets the active cluster for the server to inject into
// the http.HandlerFunc that is then returned
type RouteHandler func(*cluster.Cluster) http.HandlerFunc