Updated versions

This commit is contained in:
leadpipe@wpgntav-ubiq70.hot.corp.google.com
2011-11-02 16:27:24 -05:00
parent dbcaba420c
commit bba4898b66
3 changed files with 98 additions and 55 deletions

View File

@@ -21,7 +21,8 @@ from django.template.loader import get_template
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,
@@ -30,20 +31,30 @@ settings.configure(DEBUG=True, TEMPLATE_DEBUG=True,
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-ccoffers-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
@@ -55,10 +66,10 @@ gflags.DEFINE_enum('logging_level', 'DEBUG',
gflags.DEFINE_enum("output_type", 'STDOUT', ['BOTH', 'HTML', 'STDOUT'],
'Set how to output the results received from the API')
gflags.DEFINE_string('credentials_filename', 'offers.dat',
gflags.DEFINE_string('credentials_filename', '../credentials.dat',
'File to store credentials in', short_name='cf')
gflags.DEFINE_multistring('advertiser', None,
gflags.DEFINE_multistring('advertiser', [],
'If given, advertiser we should run as')
@@ -100,16 +111,15 @@ def main(argv):
ccOffers = service.ccOffers()
# Retrieve the relevant offers.
list_call = ccOffers.list(publisher=publisher,
# TODO(leadpipe): add back when advertiser is repeated
# advertiser=FLAGS.advertiser,
request = ccOffers.list(publisher=publisher,
advertiser=FLAGS.advertiser,
projection='full')
list = list_call.execute()
list['publisher'] = publisher
response = request.execute()
response['publisher'] = publisher
if FLAGS.output_type in ["BOTH", "HTML"]:
template = get_template('offers_template.html')
context = Context(list)
context = Context(response)
fname = '%s.html' % publisher
out = open(fname, 'w')
@@ -120,7 +130,7 @@ def main(argv):
print 'Wrote %s' % fname
if FLAGS.output_type in ["BOTH", "STDOUT"]:
print json.dumps(list, sort_keys=True, indent=4)
print json.dumps(response, sort_keys=True, indent=4)
if __name__ == '__main__':
main(sys.argv)

View File

@@ -14,6 +14,11 @@
}
tr.details td {
padding: 0 3ex;
min-width: 15%;
max-width: 33%;
}
tr.details td img {
max-width: 200px;
}
td pre {
margin: 3ex 3em;
@@ -33,7 +38,8 @@
</head>
<body>
<h1>Credit Card Offers for Publisher {{ publisher }}</h1>
<table>
{% if items %}
<table cellspacing=5>
{% for item in items %}
<tr>
<td colspan=3 class="cardName">
@@ -45,18 +51,22 @@
{% if item.imageUrl %}
<img src="{{ item.imageUrl }}" title="Image from GAN" />
{% endif %}
{% if item.logoUrl %}
<img src="{{ item.logoUrl }}" title="Image from AdConnect" />
{% endif %}
{% if item.disclaimer %}
<div>{{ item.disclaimer }}</div>
{% endif %}
<td>
{% if item.aprDisplay %}
<div>APR: {{ item.aprDisplay }}</div>
{% endif %}
{% if item.annualFeeDisplay %}
<div>Annual Fee: {{ item.annualFeeDisplay }}</div>
{% endif %}
{% if item.gracePeriodDisplay %}
<div>Grace Period: {{ item.gracePeriodDisplay }}</div>
{% endif %}
{% if item.latePaymentFee %}
<div>Late Payment Fee: {{ item.latePaymentFee }}</div>
{% endif %}
{% if item.creditRatingDisplay %}
<div>Credit Rating: {{ item.creditRatingDisplay }}</div>
{% endif %}
<td>
{% if item.introAprDisplay %}
<div>Intro APR: {{ item.introAprDisplay }}</div>
@@ -88,12 +98,20 @@
</ul>
-->
</tr>
<tr>
<td colspan=3>
{% if item.disclaimer %}
<div style="font-size:x-small">{{ item.disclaimer }}</div>
{% endif %}
</tr>
<tr><td colspan=3><pre id="pre{{forloop.counter}}" style="display:none">
{{ item|pprint|linebreaks }}</pre>
{% empty %}
<tr><td>
<h2>Whoops, {{ publisher }} has no associated credit card offers.</h2>
{% endfor %}
</table>
{% else %}
<h2>Whoops, {{ publisher }} has no associated credit card offers.</h2>
{% endif %}
</body>
</html>

View File

@@ -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 django.template.loader import get_template
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 @@ settings.configure(DEBUG=True, TEMPLATE_DEBUG=True,
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('logging_level', 'DEBUG',
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 @@ def main(argv):
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 @@ def main(argv):
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)