func setupHandlers(sources []api.Source, sink sinks.ExternalSinkManager, m manager.Manager) http.Handler { // Make API handler. wsContainer := restful.NewContainer() a := v1.NewApi(m) a.Register(wsContainer) // Validation/Debug handler. handleValidate := func(req *restful.Request, resp *restful.Response) { err := validate.HandleRequest(resp, sources, sink) if err != nil { fmt.Fprintf(resp, "%s", err) } } ws := new(restful.WebService). Path("/validate"). Produces("text/plain") ws.Route(ws.GET("").To(handleValidate)). Doc("get validation information") wsContainer.Add(ws) // TODO(jnagal): Add a main status page. // Redirect root to /validate redirectHandler := http.RedirectHandler(validate.ValidatePage, http.StatusTemporaryRedirect) handleRoot := func(req *restful.Request, resp *restful.Response) { redirectHandler.ServeHTTP(resp, req.Request) } ws = new(restful.WebService) ws.Route(ws.GET("/").To(handleRoot)) wsContainer.Add(ws) handlePprofEndpoint := func(req *restful.Request, resp *restful.Response) { name := strings.TrimPrefix(req.Request.URL.Path, pprofBasePath) switch name { case "profile": pprof.Profile(resp, req.Request) case "symbol": pprof.Symbol(resp, req.Request) case "cmdline": pprof.Cmdline(resp, req.Request) default: pprof.Index(resp, req.Request) } } // Setup pporf handlers. ws = new(restful.WebService).Path(pprofBasePath) ws.Route(ws.GET("/{subpath:*}").To(func(req *restful.Request, resp *restful.Response) { handlePprofEndpoint(req, resp) })).Doc("pprof endpoint") wsContainer.Add(ws) return wsContainer }
func setupHandlers(source sources.Source, sink sinks.ExternalSinkManager) { // Validation/Debug handler. http.HandleFunc(validate.ValidatePage, func(w http.ResponseWriter, r *http.Request) { err := validate.HandleRequest(w, source, sink) if err != nil { fmt.Fprintf(w, "%s", err) } }) // TODO(jnagal): Add a main status page. http.Handle("/", http.RedirectHandler(validate.ValidatePage, http.StatusTemporaryRedirect)) }