2018-05-06 09:53:19 +00:00
|
|
|
package api
|
|
|
|
|
|
|
|
import (
|
2018-05-08 12:57:08 +00:00
|
|
|
"github.com/gobuffalo/packr"
|
2018-05-06 09:53:19 +00:00
|
|
|
"github.com/gorilla/mux"
|
|
|
|
"net/http"
|
|
|
|
)
|
|
|
|
|
2018-05-08 12:57:08 +00:00
|
|
|
func Routes() *mux.Router {
|
2018-05-06 09:53:19 +00:00
|
|
|
// register routes
|
|
|
|
r := mux.NewRouter()
|
|
|
|
r.Handle("/collect", NewCollectHandler()).Methods(http.MethodGet)
|
|
|
|
r.Handle("/api/session", LoginHandler).Methods(http.MethodPost)
|
|
|
|
r.Handle("/api/session", LogoutHandler).Methods(http.MethodDelete)
|
|
|
|
|
2018-05-07 14:05:53 +00:00
|
|
|
r.Handle("/api/stats/site/pageviews", Authorize(GetSiteStatsPageviewsHandler)).Methods(http.MethodGet)
|
|
|
|
r.Handle("/api/stats/site/visitors", Authorize(GetSiteStatsVisitorsHandler)).Methods(http.MethodGet)
|
|
|
|
r.Handle("/api/stats/site/duration", Authorize(GetSiteStatsDurationHandler)).Methods(http.MethodGet)
|
|
|
|
r.Handle("/api/stats/site/bounces", Authorize(GetSiteStatsBouncesHandler)).Methods(http.MethodGet)
|
|
|
|
r.Handle("/api/stats/site/realtime", Authorize(GetSiteStatsRealtimeHandler)).Methods(http.MethodGet)
|
2018-05-06 09:53:19 +00:00
|
|
|
|
2018-05-07 17:20:58 +00:00
|
|
|
r.Handle("/api/stats/pages", Authorize(GetPageStatsHandler)).Methods(http.MethodGet)
|
2018-05-11 13:49:37 +00:00
|
|
|
r.Handle("/api/stats/pages/pageviews", Authorize(GetPageStatsPageviewsHandler)).Methods(http.MethodGet)
|
|
|
|
|
2018-05-07 17:20:58 +00:00
|
|
|
r.Handle("/api/stats/referrers", Authorize(GetReferrerStatsHandler)).Methods(http.MethodGet)
|
2018-05-11 13:49:37 +00:00
|
|
|
r.Handle("/api/stats/referrers/pageviews", Authorize(GetReferrerStatsPageviewsHandler)).Methods(http.MethodGet)
|
2018-05-07 15:01:20 +00:00
|
|
|
|
2018-05-14 09:17:41 +00:00
|
|
|
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)))
|
2018-05-06 09:53:19 +00:00
|
|
|
return r
|
|
|
|
}
|
2018-05-14 09:17:41 +00:00
|
|
|
|
|
|
|
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
|
|
|
|
})
|
|
|
|
}
|