59 lines
1.2 KiB
Go
59 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"embed"
|
|
"fmt"
|
|
"io/fs"
|
|
"log"
|
|
"mime"
|
|
"net/http"
|
|
"strings"
|
|
|
|
"github.com/gorilla/mux"
|
|
"github.com/pkg/browser"
|
|
)
|
|
|
|
//go:embed dist/*
|
|
var res embed.FS
|
|
|
|
func main() {
|
|
mime.AddExtensionType("js", "application/javascript")
|
|
mime.AddExtensionType("css", "text/css")
|
|
|
|
err := readConfig()
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
router := mux.NewRouter().StrictSlash(true)
|
|
router.HandleFunc("/api/v1/search", searchHandler)
|
|
router.HandleFunc("/api/v1/note/{id}", noteHandler)
|
|
|
|
fmt.Println("starting public file server")
|
|
|
|
strippedFs, err := fs.Sub(res, "dist")
|
|
if err != nil {
|
|
log.Fatal("can't load embedded js")
|
|
}
|
|
|
|
fs := http.FileServer(http.FS(strippedFs))
|
|
|
|
router.PathPrefix("/").HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
if strings.HasSuffix(r.URL.Path, ".css") {
|
|
w.Header().Set("Content-Type", "text/css")
|
|
} else if strings.HasSuffix(r.URL.Path, ".js") {
|
|
w.Header().Set("Content-Type", "application/javascript")
|
|
}
|
|
|
|
fs.ServeHTTP(w, r)
|
|
})
|
|
|
|
fmt.Println("listening on localhost:8181")
|
|
http.ListenAndServe("localhost:8181", router)
|
|
|
|
err = browser.OpenURL("http://localhost:8181")
|
|
if err != nil {
|
|
fmt.Println("Unable to open browser, visit http://localhost:8181")
|
|
}
|
|
}
|