diff options
author | Gabriel Arakaki Giovanini <mail@gabrielgio.me> | 2023-06-25 18:36:33 +0200 |
---|---|---|
committer | Gabriel Arakaki Giovanini <mail@gabrielgio.me> | 2023-06-25 18:36:33 +0200 |
commit | 438aa0e19b628923482dbc3fadcbb2e1ecfd5d7a (patch) | |
tree | 2a5e716b381373d6348f387e68db3eb9d6c3161c /pkg | |
parent | ead855b7991b14554eb098616cfac29d91e796eb (diff) | |
download | lens-438aa0e19b628923482dbc3fadcbb2e1ecfd5d7a.tar.gz lens-438aa0e19b628923482dbc3fadcbb2e1ecfd5d7a.tar.bz2 lens-438aa0e19b628923482dbc3fadcbb2e1ecfd5d7a.zip |
fix: Actually read from embedded
Previous implementation was not reading from embedded fs.
Diffstat (limited to 'pkg')
-rw-r--r-- | pkg/ext/fileserver.go | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/pkg/ext/fileserver.go b/pkg/ext/fileserver.go index fdea08e..ee4a80b 100644 --- a/pkg/ext/fileserver.go +++ b/pkg/ext/fileserver.go @@ -2,6 +2,8 @@ package ext import ( "io/fs" + "mime" + "path/filepath" "github.com/valyala/fasthttp" ) @@ -10,9 +12,22 @@ type FileSystem interface { Open(name string) (fs.File, error) } +// This is a VERY simple file server. It does not take a lot into consideration +// and it should only be used to return small predictable files, like in the +// static folder. func FileServer(rootFS FileSystem, rootPath string) fasthttp.RequestHandler { - return func(r *fasthttp.RequestCtx) { - path := r.UserValue("filepath").(string) - r.SendFile(rootPath + path) + return func(ctx *fasthttp.RequestCtx) { + path := ctx.UserValue("filepath").(string) + + f, err := rootFS.Open(rootPath + path) + if err != nil { + InternalServerError(ctx, err) + return + } + defer f.Close() + + m := mime.TypeByExtension(filepath.Ext(path)) + ctx.SetContentType(m) + ctx.SetBodyStream(f, -1) } } |