Skip to content

Commit

Permalink
fix: handle nextjs parameterized paths
Browse files Browse the repository at this point in the history
  • Loading branch information
lekotros committed May 4, 2022
1 parent 143246f commit a2d57dc
Showing 1 changed file with 29 additions and 9 deletions.
38 changes: 29 additions & 9 deletions server.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ import (
"net/http"
"net/url"
"os"
"path"
"sort"
"time"

badger "github.com/dgraph-io/badger/v3"
"github.com/gorilla/websocket"
"github.com/koding/websocketproxy"
"github.com/labstack/echo/v4"
Expand All @@ -31,12 +31,37 @@ type StaticDir struct {
d http.Dir
}

func (d StaticDir) genericPath(name string) (http.File, error) {
dir := path.Dir(name)
f, err := d.d.Open(dir)
if err != nil {
return nil, err
}

fs, err := f.Stat()
if err != nil {
return nil, err
}
if fs.IsDir() {
files, err := f.Readdir(0)
if err != nil {
return nil, err
}

for _, file := range files {
if file.Name()[0] == '[' {
return d.d.Open(dir + "/" + file.Name())
}
}
}

return nil, fmt.Errorf("file not found")
}

func (d StaticDir) Open(name string) (http.File, error) {
f, err := d.d.Open(name)
if os.IsNotExist(err) {
if f, err := d.d.Open(name + ".html"); err == nil {
return f, nil
}
return d.genericPath(name)
}

fs, err := f.Stat()
Expand All @@ -62,11 +87,6 @@ func StartServer(cfg *ServerConfig) {
if cfg != nil && cfg.Port != "" {
port = cfg.Port
}
db, err := badger.Open(badger.DefaultOptions("").WithInMemory(true))
if err != nil {
log.Fatal(err)
}
defer db.Close()

fs := http.FileServer(StaticDir{http.Dir("app/out")})
e := echo.New()
Expand Down

0 comments on commit a2d57dc

Please sign in to comment.