Clojure Ring Middleware for Google Analytics
This code allow you to monitor your custom apis via Google Analytics using Google Analytics for Mobile Websites.
https://gist.github.com/4383179
(:use [ring.util.codec :only [url-encode]])
(defn- make-query-string [m]
(->> (for [[k v] m]
(str (url-encode k) "=" (url-encode (str v))))
(interpose "&")
(apply str)))
(defn make-ga-url [utmp ip]
(let [gif-url "http://www.google-analytics.com/__utm.gif?"
url-map (atom {})
add-key (fn [k v]
(swap! url-map assoc (name k) v))]
(add-key :utmac "MO-XXXXXX") ;; use MO not UA
(add-key :utmn (rand-int 0x7fffffff))
(add-key :utmr "-")
(add-key :utmp utmp)
(add-key :utmdebug 1)
(add-key :guid "ON")
(add-key :utmwv "4.4sh")
(add-key :utmcc "__utma=999.999.999.999.999.1")
(add-key :utmvid "0xa5a576be59cbd6e4")
(add-key :utmip ip)
(str gif-url (make-query-string @url-map))))
(defn wrap-ga
[handler]
(fn [request]
(let [url (make-ga-url (str (:uri request) "?" (:query-string request)) (:remote-addr request))]
(prn url)
(slurp url)
(handler request))))
Written by Lucas Souza
Related protips
1 Response
very useful
over 1 year ago
·
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Clojure
Authors
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#