Implement oauth2 for accessing google analytics
[ckanext-ga-report.git] / ckanext / ga_report / command.py
blob:a/ckanext/ga_report/command.py -> blob:b/ckanext/ga_report/command.py
--- a/ckanext/ga_report/command.py
+++ b/ckanext/ga_report/command.py
@@ -23,13 +23,31 @@
         ga_model.init_tables()
         log.info("DB tables are setup")
 
+
+class GetAuthToken(CkanCommand):
+    """ Get's the Google auth token
+    """
+    summary = __doc__.split('\n')[0]
+    usage = __doc__
+    max_args = 0
+    min_args = 0
+
+    def command(self):
+        from ga_auth import initialize_service
+        initialize_service('token.dat',
+                           self.args[0] if self.args
+                                        else 'credentials.json')
+
 class LoadAnalytics(CkanCommand):
     """Get data from Google Analytics API and save it
     in the ga_model
 
-    Usage: paster loadanalytics <time-period>
+    Usage: paster loadanalytics <tokenfile> <time-period>
 
-    Where <time-period> is:
+    Where <tokenfile> is the name of the auth token file from
+    the getauthtoken step.
+
+    And where <time-period> is:
         all         - data for all time
         latest      - (default) just the 'latest' data
         YYYY-MM-DD  - just data for all time periods going
@@ -37,16 +55,24 @@
     """
     summary = __doc__.split('\n')[0]
     usage = __doc__
-    max_args = 1
-    min_args = 0
+    max_args = 2
+    min_args = 1
 
     def command(self):
         self._load_config()
 
+        from ga_auth import initialize_service
+        try:
+            svc = initialize_service(self.args[0], None)
+        except TypeError:
+            print 'Have you correctly run the getauthtoken task and specified the correct file here'
+            return
+
         from download_analytics import DownloadAnalytics
-        downloader = DownloadAnalytics()
-        
-        time_period = self.args[0] if self.args else 'latest'
+        from ga_auth import get_profile_id
+        downloader = DownloadAnalytics(svc, profile_id=get_profile_id(svc))
+
+        time_period = self.args[1] if self.args and len(self.args) > 1 else 'latest'
         if time_period == 'all':
             downloader.all_()
         elif time_period == 'latest':