# Copyright 2016 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging import os from flask import Flask import requests import requests_toolbelt.adapters.appengine # Use the App Engine Requests adapter. This makes sure that Requests uses # URLFetch. requests_toolbelt.adapters.appengine.monkeypatch() app = Flask(__name__) # Environment variables are defined in app.yaml. GA_TRACKING_ID = os.environ['GA_TRACKING_ID'] # [START track_event] def track_event(category, action, label=None, value=0): data = { 'v': '1', # API Version. 'tid': GA_TRACKING_ID, # Tracking ID / Property ID. # Anonymous Client Identifier. Ideally, this should be a UUID that # is associated with particular user, device, or browser instance. 'cid': '555', 't': 'event', # Event hit type. 'ec': category, # Event category. 'ea': action, # Event action. 'el': label, # Event label. 'ev': value, # Event value, must be an integer } response = requests.post( 'http://www.google-analytics.com/collect', data=data) # If the request fails, this will raise a RequestException. Depending # on your application's needs, this may be a non-error and can be caught # by the caller. response.raise_for_status() @app.route('/') def track_example(): track_event( category='Example', action='test action') return 'Event tracked.' # [END track_event] @app.errorhandler(500) def server_error(e): logging.exception('An error occurred during a request.') return """ An internal error occurred:
{}
See logs for full stacktrace. """.format(e), 500 if __name__ == '__main__': # This is used when running locally. Gunicorn is used to run the # application on Google App Engine. See entrypoint in app.yaml. app.run(host='127.0.0.1', port=8080, debug=True)