diff --git a/assets/index.html b/assets/index.html
index 0c1b66f..1be54b7 100644
--- a/assets/index.html
+++ b/assets/index.html
@@ -2,16 +2,16 @@
Fathom - simple website analytics
-
+
-
+
-
+
diff --git a/pkg/api/routes.go b/pkg/api/routes.go
index ca568b1..d03b551 100644
--- a/pkg/api/routes.go
+++ b/pkg/api/routes.go
@@ -25,7 +25,27 @@ func Routes() *mux.Router {
r.Handle("/api/stats/referrers", Authorize(GetReferrerStatsHandler)).Methods(http.MethodGet)
r.Handle("/api/stats/referrers/pageviews", Authorize(GetReferrerStatsPageviewsHandler)).Methods(http.MethodGet)
- r.Path("/tracker.js").Handler(http.FileServer(packr.NewBox("./../../build/js")))
- r.PathPrefix("/").Handler(http.FileServer(packr.NewBox("./../../build")))
+ box := packr.NewBox("./../../build")
+ r.Path("/tracker.js").Handler(serveFileFromBox(&box, "js/tracker.js"))
+ r.Path("/").Handler(serveFileFromBox(&box, "/index.html"))
+ r.PathPrefix("/assets").Handler(http.StripPrefix("/assets", http.FileServer(box)))
return r
}
+
+func serveFileFromBox(box *packr.Box, filename string) http.Handler {
+ return HandlerFunc(func(w http.ResponseWriter, r *http.Request) error {
+ f, err := box.Open(filename)
+ if err != nil {
+ return err
+ }
+ defer f.Close()
+
+ d, err := f.Stat()
+ if err != nil {
+ return err
+ }
+
+ http.ServeContent(w, r, filename, d.ModTime(), f)
+ return nil
+ })
+}