Skip to content

Commit

Permalink
MuxServeFS -> WalkDir
Browse files Browse the repository at this point in the history
  • Loading branch information
linkdata committed May 30, 2024
1 parent 4497766 commit 5091f95
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 37 deletions.
33 changes: 0 additions & 33 deletions staticserve/muxservefs.go

This file was deleted.

30 changes: 30 additions & 0 deletions staticserve/walkdir.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package staticserve

import (
"io"
"io/fs"
"strings"
)

// WalkDir walks the file tree rooted at root, calling fn for each file in the tree with
// the filename having root trimmed (e.g. "root/dir/file.ext" becomes "dir/file.ext").
func WalkDir(fsys fs.FS, root string, fn func(filename string, ss *StaticServe) (err error)) (err error) {
err = fs.WalkDir(fsys, root, func(filename string, d fs.DirEntry, err error) error {
if err == nil && !d.IsDir() {
var f fs.File
if f, err = fsys.Open(filename); err == nil {
defer f.Close()
var b []byte
if b, err = io.ReadAll(f); err == nil {
var ss *StaticServe
filename = strings.TrimPrefix(strings.TrimPrefix(filename, root), "/")
if ss, err = New(filename, b); err == nil {
err = fn(filename, ss)
}
}
}
}
return err
})
return
}
15 changes: 11 additions & 4 deletions staticserve/muxservefs_test.go → staticserve/walkdir_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"embed"
"net/http"
"net/http/httptest"
"path"
"testing"

"github.com/linkdata/jaws/staticserve"
Expand All @@ -12,17 +13,23 @@ import (
//go:embed assets
var assetsFS embed.FS

func Test_MuxServeFS(t *testing.T) {
func Test_WalkDir(t *testing.T) {
var uris []string
mux := http.NewServeMux()
uris, err := staticserve.MuxServeFS(mux, "/", assetsFS)
err := staticserve.WalkDir(assetsFS, "assets", func(filepath string, ss *staticserve.StaticServe) (err error) {
uri := path.Join("/static", ss.Name)
t.Log(filepath, uri)
uris = append(uris, uri)
mux.Handle(uri, ss)
return
})
if err != nil {
t.Error(err)
}
if len(uris) != 2 {
t.Error("expected two uris")
}
for fn, uri := range uris {
t.Log(fn, uri)
for _, uri := range uris {
rq := httptest.NewRequest(http.MethodGet, uri, nil)
rr := httptest.NewRecorder()
mux.ServeHTTP(rr, rq)
Expand Down

0 comments on commit 5091f95

Please sign in to comment.