feat: add static filename and info served by fileserver to context vars

Signed-off-by: Arthur <git@arthur.pro>
pull/6983/head
Arthur 2025-04-23 14:45:58 -04:00
parent 105eee671c
commit 8aa487da88
1 changed files with 11 additions and 0 deletions

View File

@ -42,6 +42,9 @@ func init() {
caddy.RegisterModule(FileServer{})
}
const FileServerFilenameVarKey = "fileserver_filename"
const FileServerFileinfoVarKey = "fileserver_fileinfo"
// FileServer implements a handler that serves static files.
//
// The path of the file to serve is constructed by joining the site root
@ -559,6 +562,14 @@ func (fsrv *FileServer) ServeHTTP(w http.ResponseWriter, r *http.Request, next c
w = statusOverrideResponseWriter{ResponseWriter: w, code: statusCodeOverride}
}
// add filename and file info to the request context vars so that other middlewares
// can find out what static file has been served by the fileserver.
// middlewares can access the vars as follows:
// caddyhttp.GetVar(r.Context(), fileserver.FileServerFilenameVarKey).(string)
// caddyhttp.GetVar(r.Context(), fileserver.FileServerFileinfoVarKey).(fs.FileInfo)
caddyhttp.SetVar(r.Context(), FileServerFilenameVarKey, filename)
caddyhttp.SetVar(r.Context(), FileServerFileinfoVarKey, info)
// let the standard library do what it does best; note, however,
// that errors generated by ServeContent are written immediately
// to the response, so we cannot handle them (but errors there