mirror of
https://github.com/alice-lg/alice-lg.git
synced 2024-05-11 05:55:03 +00:00
69 lines
1.4 KiB
Go
69 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"io"
|
|
"log"
|
|
"net/http"
|
|
"strings"
|
|
|
|
"github.com/GeertJohan/go.rice"
|
|
"github.com/julienschmidt/httprouter"
|
|
)
|
|
|
|
// Web Client
|
|
// Handle assets and client app preprarations
|
|
|
|
// Prepare client HTML:
|
|
// Set paths and add version to assets.
|
|
func webPrepareClientHtml(html string) string {
|
|
status, _ := NewAppStatus()
|
|
|
|
// Replace paths and tags
|
|
rewriter := strings.NewReplacer(
|
|
// Paths
|
|
"js/", "/static/js/",
|
|
"css/", "/static/css/",
|
|
|
|
// Tags
|
|
"APP_VERSION", status.Version,
|
|
)
|
|
html = rewriter.Replace(html)
|
|
return html
|
|
}
|
|
|
|
// Register assets handler and index handler
|
|
// at /static and /
|
|
func webRegisterAssets(router *httprouter.Router) error {
|
|
log.Println("Preparing and installing assets")
|
|
|
|
// Serve static assets
|
|
assets := rice.MustFindBox("../client/build")
|
|
assetsHandler := http.StripPrefix(
|
|
"/static/",
|
|
http.FileServer(assets.HTTPBox()))
|
|
|
|
// Register static assets
|
|
router.Handler("GET", "/static/*path", assetsHandler)
|
|
|
|
// Prepare client html: Rewrite paths
|
|
indexHtml, err := assets.String("index.html")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
indexHtml = webPrepareClientHtml(indexHtml)
|
|
|
|
// Rewrite paths
|
|
// Serve index html as root...
|
|
router.GET("/", func(res http.ResponseWriter, _ *http.Request, _ httprouter.Params) {
|
|
io.WriteString(res, indexHtml)
|
|
})
|
|
|
|
// ...and as catch all
|
|
router.GET("/alice/*path", func(res http.ResponseWriter, _ *http.Request, _ httprouter.Params) {
|
|
io.WriteString(res, indexHtml)
|
|
})
|
|
|
|
return nil
|
|
}
|