Updated versions
diff --git a/samples/gan/events/events.py b/samples/gan/events/events.py
index 05a42c0..bc45167 100644
--- a/samples/gan/events/events.py
+++ b/samples/gan/events/events.py
@@ -3,7 +3,7 @@
#
# Copyright (C) 2011 Google Inc.
-"""Sample for retrieving credit-card offers from GAN."""
+"""Sample for retrieving event information from GAN."""
__author__ = 'leadpipe@google.com (Luke Blanshard)'
@@ -22,7 +22,8 @@
from apiclient.discovery import build
from oauth2client.file import Storage
-from oauth2client.client import OAuth2WebServerFlow
+from oauth2client.client import AccessTokenRefreshError
+from oauth2client.client import flow_from_clientsecrets
from oauth2client.tools import run
settings.configure(DEBUG=True, TEMPLATE_DEBUG=True,
@@ -31,20 +32,30 @@
FLAGS = gflags.FLAGS
-# Set up a Flow object to be used if we need to authenticate. This
-# sample uses OAuth 2.0, and we set up the OAuth2WebServerFlow with
-# the information it needs to authenticate. Note that it is called
-# the Web Server Flow, but it can also handle the flow for native
-# applications <http://code.google.com/apis/accounts/docs/OAuth2.html#IA>
-# The client_id client_secret are copied from the API Access tab on
-# the Google APIs Console <http://code.google.com/apis/console>. When
-# creating credentials for this application be sure to choose an Application
-# type of "Installed application".
-FLOW = OAuth2WebServerFlow(
- client_id='767567128246-ti2q06i1neqm5boe2m1pqdc2riivhk41.apps.googleusercontent.com',
- client_secret='UtdXI8nKD2SEcQRLQDZPkGT9',
+# CLIENT_SECRETS, name of a file containing the OAuth 2.0 information for this
+# application, including client_id and client_secret, which are found
+# on the API Access tab on the Google APIs
+# Console <http://code.google.com/apis/console>
+CLIENT_SECRETS = '../client_secrets.json'
+
+# Helpful message to display in the browser if the CLIENT_SECRETS file
+# is missing.
+MISSING_CLIENT_SECRETS_MESSAGE = """
+WARNING: Please configure OAuth 2.0
+
+To make this sample run you will need to populate the client_secrets.json file
+found at:
+
+ %s
+
+with information from the APIs Console <https://code.google.com/apis/console>.
+
+""" % os.path.join(os.path.dirname(__file__), CLIENT_SECRETS)
+
+# Set up a Flow object to be used if we need to authenticate.
+FLOW = flow_from_clientsecrets(CLIENT_SECRETS,
scope='https://www.googleapis.com/auth/gan.readonly',
- user_agent='gan-events-sample/1.0')
+ message=MISSING_CLIENT_SECRETS_MESSAGE)
# The gflags module makes defining command-line options easy for
# applications. Run this program with the '--help' argument to see
@@ -56,7 +67,7 @@
gflags.DEFINE_enum("output_type", 'STDOUT', ['BOTH', 'HTML', 'STDOUT'],
'Set how to output the results received from the API')
-gflags.DEFINE_string('credentials_filename', 'events.dat',
+gflags.DEFINE_string('credentials_filename', '../credentials.dat',
'File to store credentials in', short_name='cf')
API_FLAGS = {'eventDateMin':None, 'eventDateMax':None, 'advertiserId':None,
@@ -146,15 +157,22 @@
params[key] = FLAGS[key].value
# Retrieve the relevant events.
+ all_items = []
try:
- list_call = events.list(**params)
- list = list_call.execute()
+ request = events.list(**params)
+ while request:
+ response = request.execute()
+ if FLAGS.output_type in ["BOTH", "STDOUT"]:
+ print json.dumps(response, sort_keys=True, indent=4)
+ all_items.extend(response['items'])
+ request = events.list_next(request, response)
+
except apiclient.errors.HttpError, e:
print json.dumps(e.__dict__, sort_keys=True, indent=4)
if FLAGS.output_type in ["BOTH", "HTML"]:
template = get_template('events_template.html')
- context = Context(list)
+ context = Context({'items':items})
out = open("output.html", 'w')
out.write(template.render(context).encode('UTF-8'))
@@ -163,8 +181,5 @@
print 'Wrote output.html'
- if FLAGS.output_type in ["BOTH", "STDOUT"]:
- print json.dumps(list, sort_keys=True, indent=4)
-
if __name__ == '__main__':
main(sys.argv)