Skip to content

Instantly share code, notes, and snippets.

@benizi
Forked from terjesb/core.clj
Created May 5, 2014 03:52
Show Gist options
  • Save benizi/fe92a1c23a8bea26017e to your computer and use it in GitHub Desktop.
Save benizi/fe92a1c23a8bea26017e to your computer and use it in GitHub Desktop.
(ns ga-exp.core
(:import
(com.google.api.client.googleapis.auth.oauth2 GoogleCredential$Builder)
(com.google.api.client.googleapis.javanet GoogleNetHttpTransport)
(com.google.api.client.json.jackson2 JacksonFactory)
(com.google.api.services.analytics Analytics$Builder AnalyticsScopes)))
(def HTTP_TRANSPORT (GoogleNetHttpTransport/newTrustedTransport))
(def JSON_FACTORY (JacksonFactory.))
(defn credential []
(let [credential
(doto (GoogleCredential$Builder.)
(.setTransport HTTP_TRANSPORT)
(.setJsonFactory JSON_FACTORY)
(.setServiceAccountId "[email protected]")
(.setServiceAccountScopes (seq [AnalyticsScopes/ANALYTICS_READONLY]))
(.setServiceAccountPrivateKeyFromP12File (java.io.File. "/Users/example/Downloads/example-privatekey.p12")))]
(.build credential)))
(defn service []
(let [creds (credential)
analytics
(doto (Analytics$Builder. HTTP_TRANSPORT JSON_FACTORY creds)
(.setApplicationName "My App")
(.setHttpRequestInitializer creds))]
(.build analytics)))
(defn q []
(let [analytics (service)
data (.data analytics)
ga (.ga data)
table (.get ga "ga:EXAMPLE" "2013-10-01" "2013-10-01" "ga:totalValue")
query (.. table
(setDimensions "ga:source,ga:medium,ga:transactionId")
(setStartIndex (int 10001))
(setMaxResults (int 10000)))]
(.execute query)))
(defproject ga-exp "0.1.0-SNAPSHOT"
:dependencies [[org.clojure/clojure "1.5.1"]
[com.google.api-client/google-api-client "1.17.0-rc"]
[com.google.http-client/google-http-client "1.17.0-rc"]
[com.google.http-client/google-http-client-jackson2 "1.17.0-rc"]
[com.google.apis/google-api-services-analytics "v3-rev64-1.17.0-rc"]])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment