// NewPrimary creates a new API router. func NewPrimary(cluster cluster.Cluster, tlsConfig *tls.Config, status StatusHandler, enableCors bool) *mux.Router { // Register the API events handler in the cluster. eventsHandler := newEventsHandler() cluster.RegisterEventHandler(eventsHandler) context := &context{ cluster: cluster, eventsHandler: eventsHandler, statusHandler: status, tlsConfig: tlsConfig, } r := mux.NewRouter() for method, mappings := range routes { for route, fct := range mappings { log.WithFields(log.Fields{"method": method, "route": route}).Debug("Registering HTTP route") localRoute := route localFct := fct wrap := func(w http.ResponseWriter, r *http.Request) { log.WithFields(log.Fields{"method": r.Method, "uri": r.RequestURI}).Debug("HTTP request received") if enableCors { writeCorsHeaders(w, r) } localFct(context, w, r) } localMethod := method r.Path("/v{version:[0-9.]+}" + localRoute).Methods(localMethod).HandlerFunc(wrap) r.Path(localRoute).Methods(localMethod).HandlerFunc(wrap) } } return r }
// NewPrimary creates a new API router. func NewPrimary(cluster cluster.Cluster, tlsConfig *tls.Config, status StatusHandler, debug, enableCors bool) *mux.Router { // Register the API events handler in the cluster. eventsHandler := newEventsHandler() cluster.RegisterEventHandler(eventsHandler) context := &context{ cluster: cluster, eventsHandler: eventsHandler, statusHandler: status, tlsConfig: tlsConfig, } r := mux.NewRouter() setupPrimaryRouter(r, context, enableCors) if debug { profilerSetup(r, "/debug/") } return r }