RAW_WS serves all static files

master
bel 2023-04-10 18:38:38 -06:00
parent 6a4ad5ec36
commit 9a38033b65
1 changed files with 17 additions and 10 deletions

View File

@ -2,6 +2,7 @@ package raw
import (
"context"
"embed"
_ "embed"
"fmt"
"log"
@ -9,6 +10,7 @@ import (
"net/http/httputil"
"net/url"
"os"
"path"
"strings"
"github.com/gorilla/websocket"
@ -75,16 +77,13 @@ func (ws WS) ServeHTTP(w http.ResponseWriter, r *http.Request) {
func (ws WS) serveHTTP(w http.ResponseWriter, r *http.Request) error {
switch r.URL.Path {
case "/":
return ws.serveIndex(w, r)
case "/api/ws":
return ws.serveWS(w, r)
}
if strings.HasPrefix(r.URL.Path, "/proxy") {
return ws.serveProxy(w, r)
}
http.NotFound(w, r)
return nil
return ws.serveStaticFile(w, r)
}
func (ws WS) serveProxy(w http.ResponseWriter, r *http.Request) error {
@ -101,16 +100,24 @@ func (ws WS) serveProxy(w http.ResponseWriter, r *http.Request) error {
return nil
}
//go:embed public/root.html
var rootHTML string
//go:embed public/*
var staticFiles embed.FS
func (ws WS) serveIndex(w http.ResponseWriter, r *http.Request) error {
v := rootHTML
func (ws WS) serveStaticFile(w http.ResponseWriter, r *http.Request) error {
log.Println("serveStaticFile", 0, r.URL.Path)
if FlagWSDebug {
b, _ := os.ReadFile("src/device/input/raw/public/root.html")
v = string(b)
w.Write(b)
return nil
}
w.Write([]byte(v))
log.Println("serveStaticFile", 1, r.URL.Path)
if r.URL.Path == "/" {
r.URL.Path = "root.html"
}
log.Println("serveStaticFile", 2, r.URL.Path)
r.URL.Path = path.Join("public", r.URL.Path)
log.Println("serveStaticFile", 3, r.URL.Path)
http.FileServer(http.FS(staticFiles)).ServeHTTP(w, r)
return nil
}