serve assets from /assets subdir and re-use packr box for index.html & tracker.js

This commit is contained in:
Danny 2018-05-14 11:17:41 +02:00
parent 4aac79c7f9
commit 6482378734
2 changed files with 25 additions and 5 deletions

View File

@ -2,16 +2,16 @@
<html class="no-js" lang="en">
<head>
<title>Fathom - simple website analytics</title>
<link href="/css/styles.css" rel="stylesheet">
<link href="/assets/css/styles.css" rel="stylesheet">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/assets/img/favicon.png">
</head>
<body class="fathom">
<div id="root"></div>
<script>
document.documentElement.className = document.documentElement.className.replace('no-js', '');
</script>
<script src="/js/script.js"></script>
<script src="/assets/js/script.js"></script>
</body>
</html>

View File

@ -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
})
}