diff options
| author | Christine Dodrill <me@christine.website> | 2018-08-22 03:17:59 +0000 |
|---|---|---|
| committer | Christine Dodrill <me@christine.website> | 2018-08-22 03:17:59 +0000 |
| commit | 6b7d6dcc49c6cbd83af70d97d01b700c8fb0c393 (patch) | |
| tree | 60bd319655e77afb0e3737cc9070d5111a41f22b /cmd | |
| parent | 5a8b8dc48f33c44fd41ac27c1fb4185de1d87d41 (diff) | |
| download | xesite-6b7d6dcc49c6cbd83af70d97d01b700c8fb0c393.tar.xz xesite-6b7d6dcc49c6cbd83af70d97d01b700c8fb0c393.zip | |
add analytics via segment again
Diffstat (limited to 'cmd')
| -rw-r--r-- | cmd/site/html.go | 9 | ||||
| -rw-r--r-- | cmd/site/main.go | 18 |
2 files changed, 27 insertions, 0 deletions
diff --git a/cmd/site/html.go b/cmd/site/html.go index ba304c5..20be7de 100644 --- a/cmd/site/html.go +++ b/cmd/site/html.go @@ -8,6 +8,7 @@ import ( "time" "github.com/Xe/ln" + analytics "gopkg.in/segmentio/analytics-go.v3" ) func logTemplateTime(name string, from time.Time) { @@ -70,4 +71,12 @@ func (s *Site) showPost(w http.ResponseWriter, r *http.Request) { } s.renderTemplatePage("blogpost.html", p).ServeHTTP(w, r) + + if s.segment != nil { + s.segment.Enqueue(&analytics.Track{ + UserId: Hash(r.RemoteAddr, r.Header.Get("X-Forwarded-For")), + Event: "Post Viewed", + Properties: analytics.NewProperties().SetURL(r.RequestURI).SetTitle(p.Title), + }) + } } 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 |
