Commented the code in ga_auth
[ckanext-ga-report.git] / ckanext / ga_report / ga_auth.py
blob:a/ckanext/ga_report/ga_auth.py -> blob:b/ckanext/ga_report/ga_auth.py
import httplib2 import httplib2
from apiclient.discovery import build from apiclient.discovery import build
from oauth2client.client import flow_from_clientsecrets from oauth2client.client import flow_from_clientsecrets
from oauth2client.file import Storage from oauth2client.file import Storage
from oauth2client.tools import run from oauth2client.tools import run
   
from pylons import config from pylons import config
   
   
def _prepare_credentials( token_filename, credentials_filename ): def _prepare_credentials( token_filename, credentials_filename ):
  """
  Either returns the user's oauth credentials or uses the credentials
  file to generate a token (by forcing the user to login in the browser)
  """
storage = Storage( token_filename ) storage = Storage( token_filename )
credentials = storage.get() credentials = storage.get()
   
if credentials is None or credentials.invalid: if credentials is None or credentials.invalid:
flow = flow_from_clientsecrets(credentials_filename, flow = flow_from_clientsecrets(credentials_filename,
scope='https://www.googleapis.com/auth/analytics.readonly', scope='https://www.googleapis.com/auth/analytics.readonly',
message="Can't find the credentials file") message="Can't find the credentials file")
credentials = run(flow, storage) credentials = run(flow, storage)
   
return credentials return credentials
   
def initialize_service( token_file, credentials_file ): def init_service( token_file, credentials_file ):
  """
  Given a file containing the user's oauth token (and another with
  credentials in case we need to generate the token) will return a
  service object representing the analytics API.
  """
http = httplib2.Http() http = httplib2.Http()
   
credentials = _prepare_credentials(token_file, credentials_file) credentials = _prepare_credentials(token_file, credentials_file)
http = credentials.authorize(http) # authorize the http object http = credentials.authorize(http) # authorize the http object
   
return build('analytics', 'v3', http=http) return build('analytics', 'v3', http=http)
   
   
def get_profile_id(service): def get_profile_id(service):
# Get a list of all Google Analytics accounts for this user """
  Get the profile ID for this user and the service specified by the
  'googleanalytics.id' configuration option.
  """
accounts = service.management().accounts().list().execute() accounts = service.management().accounts().list().execute()
   
if accounts.get('items'): if not accounts.get('items'):
firstAccountId = accounts.get('items')[0].get('id') return None
webPropertyId = config.get('googleanalytics.id')  
profiles = service.management().profiles().list(  
accountId=firstAccountId,  
webPropertyId=webPropertyId).execute()  
   
if profiles.get('items'): accountId = accounts.get('items')[0].get('id')
# return the first Profile ID webPropertyId = config.get('googleanalytics.id')
return profiles.get('items')[0].get('id') profiles = service.management().profiles().list(
  accountId=accountId, webPropertyId=webPropertyId).execute()
   
  if profiles.get('items'):
  return profiles.get('items')[0].get('id')
   
return None return None