mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	* When route cannot be found on chi, go to macaron * Stick chi version to 1.5.0 * Follow router log setting
		
			
				
	
	
		
			56 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
		
			Vendored
		
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
		
			Vendored
		
	
	
	
| package middleware
 | |
| 
 | |
| import (
 | |
| 	"expvar"
 | |
| 	"fmt"
 | |
| 	"net/http"
 | |
| 	"net/http/pprof"
 | |
| 
 | |
| 	"github.com/go-chi/chi"
 | |
| )
 | |
| 
 | |
| // Profiler is a convenient subrouter used for mounting net/http/pprof. ie.
 | |
| //
 | |
| //  func MyService() http.Handler {
 | |
| //    r := chi.NewRouter()
 | |
| //    // ..middlewares
 | |
| //    r.Mount("/debug", middleware.Profiler())
 | |
| //    // ..routes
 | |
| //    return r
 | |
| //  }
 | |
| func Profiler() http.Handler {
 | |
| 	r := chi.NewRouter()
 | |
| 	r.Use(NoCache)
 | |
| 
 | |
| 	r.Get("/", func(w http.ResponseWriter, r *http.Request) {
 | |
| 		http.Redirect(w, r, r.RequestURI+"/pprof/", 301)
 | |
| 	})
 | |
| 	r.HandleFunc("/pprof", func(w http.ResponseWriter, r *http.Request) {
 | |
| 		http.Redirect(w, r, r.RequestURI+"/", 301)
 | |
| 	})
 | |
| 
 | |
| 	r.HandleFunc("/pprof/*", pprof.Index)
 | |
| 	r.HandleFunc("/pprof/cmdline", pprof.Cmdline)
 | |
| 	r.HandleFunc("/pprof/profile", pprof.Profile)
 | |
| 	r.HandleFunc("/pprof/symbol", pprof.Symbol)
 | |
| 	r.HandleFunc("/pprof/trace", pprof.Trace)
 | |
| 	r.HandleFunc("/vars", expVars)
 | |
| 
 | |
| 	return r
 | |
| }
 | |
| 
 | |
| // Replicated from expvar.go as not public.
 | |
| func expVars(w http.ResponseWriter, r *http.Request) {
 | |
| 	first := true
 | |
| 	w.Header().Set("Content-Type", "application/json")
 | |
| 	fmt.Fprintf(w, "{\n")
 | |
| 	expvar.Do(func(kv expvar.KeyValue) {
 | |
| 		if !first {
 | |
| 			fmt.Fprintf(w, ",\n")
 | |
| 		}
 | |
| 		first = false
 | |
| 		fmt.Fprintf(w, "%q: %s", kv.Key, kv.Value)
 | |
| 	})
 | |
| 	fmt.Fprintf(w, "\n}\n")
 | |
| }
 |