55 lines
1.4 KiB
Go
55 lines
1.4 KiB
Go
|
|
package webcontroller
|
||
|
|
|
||
|
|
import (
|
||
|
|
"net/http"
|
||
|
|
"os"
|
||
|
|
|
||
|
|
"fornaxian.tech/log"
|
||
|
|
"github.com/julienschmidt/httprouter"
|
||
|
|
)
|
||
|
|
|
||
|
|
// New initializes a new WebController by registering all the request handlers
|
||
|
|
// and parsing all templates in the resource directory
|
||
|
|
func serveSK(r *httprouter.Router) (err error) {
|
||
|
|
// r.ServeFiles("/_app/*filepath", http.Dir(assetsPath+"/_app"))
|
||
|
|
// r.ServeFiles("/style/*filepath", http.Dir(assetsPath+"/style"))
|
||
|
|
|
||
|
|
readdir, err := os.ReadDir(assetsPath)
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
for _, entry := range readdir {
|
||
|
|
if entry.Type().IsRegular() {
|
||
|
|
serveFile(r, "/"+entry.Name(), assetsPath+"/"+entry.Name())
|
||
|
|
} else if entry.IsDir() {
|
||
|
|
r.ServeFiles("/"+entry.Name()+"/*filepath", http.Dir(assetsPath+"/"+entry.Name()))
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
r.NotFound = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||
|
|
log.Debug("Running fallback handler for %s", r.URL.Path)
|
||
|
|
http.ServeFile(w, r, assetsPath+"/fallback.html")
|
||
|
|
})
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
|
||
|
|
const assetsPath = "/home/wim/Workspace/svelte/fnx_sk/build"
|
||
|
|
|
||
|
|
func serveFile(r *httprouter.Router, path, file string) {
|
||
|
|
var handler = func(
|
||
|
|
w http.ResponseWriter,
|
||
|
|
r *http.Request,
|
||
|
|
p httprouter.Params,
|
||
|
|
) {
|
||
|
|
http.ServeFile(w, r, assetsPath+"/"+file)
|
||
|
|
}
|
||
|
|
|
||
|
|
r.GET(path, handler)
|
||
|
|
r.HEAD(path, handler)
|
||
|
|
r.OPTIONS(path, handler)
|
||
|
|
r.POST(path, handler)
|
||
|
|
r.PUT(path, handler)
|
||
|
|
r.PATCH(path, handler)
|
||
|
|
r.DELETE(path, handler)
|
||
|
|
}
|