MCPcopy
hub / github.com/filebrowser/filebrowser / handle

Function handle

http/data.go:66–101  ·  view source on GitHub ↗
(fn handleFunc, prefix string, store *storage.Storage, server *settings.Server)

Source from the content-addressed store, hash-verified

64}
65
66func handle(fn handleFunc, prefix string, store *storage.Storage, server *settings.Server) http.Handler {
67 handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
68 for k, v := range globalHeaders {
69 w.Header().Set(k, v)
70 }
71
72 settings, err := store.Settings.Get()
73 if err != nil {
74 log.Fatalf("ERROR: couldn't get settings: %v\n", err)
75 return
76 }
77
78 status, err := fn(w, r, &data{
79 Runner: &runner.Runner{Enabled: server.EnableExec, Settings: settings},
80 store: store,
81 settings: settings,
82 server: server,
83 })
84
85 if status >= 400 || err != nil {
86 clientIP := realip.FromRequest(r)
87 log.Printf("%s: %v %s %v", r.URL.Path, status, clientIP, err)
88 }
89
90 if status != 0 {
91 txt := http.StatusText(status)
92 if status == http.StatusBadRequest && err != nil {
93 txt += " (" + err.Error() + ")"
94 }
95 http.Error(w, strconv.Itoa(status)+" "+txt, status)
96 return
97 }
98 })
99
100 return stripPrefix(prefix, handler)
101}

Calls 3

stripPrefixFunction · 0.85
ErrorMethod · 0.80
GetMethod · 0.65