aboutsummaryrefslogtreecommitdiff
path: root/cmd/site/main.go
diff options
context:
space:
mode:
authorChristine Dodrill <me@christine.website>2018-08-22 03:17:59 +0000
committerChristine Dodrill <me@christine.website>2018-08-22 03:17:59 +0000
commit6b7d6dcc49c6cbd83af70d97d01b700c8fb0c393 (patch)
tree60bd319655e77afb0e3737cc9070d5111a41f22b /cmd/site/main.go
parent5a8b8dc48f33c44fd41ac27c1fb4185de1d87d41 (diff)
downloadxesite-6b7d6dcc49c6cbd83af70d97d01b700c8fb0c393.tar.xz
xesite-6b7d6dcc49c6cbd83af70d97d01b700c8fb0c393.zip
add analytics via segment again
Diffstat (limited to 'cmd/site/main.go')
-rw-r--r--cmd/site/main.go18
1 files changed, 18 insertions, 0 deletions
diff --git a/cmd/site/main.go b/cmd/site/main.go
index bad297e..7dbe9bc 100644
--- a/cmd/site/main.go
+++ b/cmd/site/main.go
@@ -17,6 +17,7 @@ import (
"github.com/gorilla/feeds"
blackfriday "github.com/russross/blackfriday"
"github.com/tj/front"
+ "gopkg.in/segmentio/analytics-go.v3"
)
var port = os.Getenv("PORT")
@@ -47,11 +48,24 @@ type Site struct {
templates map[string]*template.Template
tlock sync.RWMutex
+
+ segment analytics.Client
}
func (s *Site) ServeHTTP(w http.ResponseWriter, r *http.Request) {
ln.Log(r.Context(), ln.F{"action": "Site.ServeHTTP", "user_ip_address": r.RemoteAddr, "path": r.RequestURI})
+
s.mux.ServeHTTP(w, r)
+
+ if s.segment != nil {
+ if !strings.HasPrefix(r.RequestURI, "/blog/") {
+ s.segment.Enqueue(&analytics.Track{
+ UserId: Hash(r.RemoteAddr, r.Header.Get("X-Forwarded-For")),
+ Event: "Page Viewed",
+ Properties: analytics.NewProperties().SetURL(r.RequestURI),
+ })
+ }
+ }
}
// Build creates a new Site instance or fails.
@@ -88,6 +102,10 @@ func Build() (*Site, error) {
templates: map[string]*template.Template{},
}
+ if wk := os.Getenv("SEGMENT_WRITE_KEY"); wk != "" {
+ s.segment = analytics.New(wk)
+ }
+
err := filepath.Walk("./blog/", func(path string, info os.FileInfo, err error) error {
if err != nil {
return err