in internal/serving/disk/reader.go [276:308]
func (reader *Reader) serveCustomFile(ctx context.Context, w http.ResponseWriter, r *http.Request, code int, root vfs.Root, origPath string) error {
fullPath := reader.handleContentEncoding(ctx, w, r, root, origPath)
// Open and serve content of file
file, err := root.Open(ctx, fullPath)
if err != nil {
return err
}
defer file.Close()
fi, err := root.Lstat(ctx, fullPath)
if err != nil {
return err
}
contentType, err := reader.detectContentType(ctx, root, origPath)
if err != nil {
return err
}
reader.fileSizeMetric.WithLabelValues(reader.vfs.Name()).Observe(float64(fi.Size()))
w.Header().Set("Content-Type", contentType)
w.Header().Set("Content-Length", strconv.FormatInt(fi.Size(), 10))
w.WriteHeader(code)
if r.Method != "HEAD" {
_, err := io.CopyN(w, file, fi.Size())
return err
}
return nil
}