예제 #1
0
    def track_notification(self, notification_type_enum, num_keys):
        """
        For more information about GAnalytics Protocol Parameters, visit
        https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters
        """
        from sitevars.google_analytics_id import GoogleAnalyticsID
        google_analytics_id = GoogleAnalyticsID.google_analytics_id()
        if not google_analytics_id:
            logging.warning("Missing sitevar: google_analytics.id. Can't track API usage.")
        else:
            import uuid
            cid = uuid.uuid3(uuid.NAMESPACE_X500, str('tba-notification-tracking'))

            from urllib import urlencode
            params = urlencode({
                'v': 1,
                'tid': google_analytics_id,
                'cid': cid,
                't': 'event',
                'ec': 'notification',
                'ea': NotificationType.type_names[notification_type_enum],
                'ev': num_keys,
                'ni': 1,
                'sc': 'end',  # forces tracking session to end
            })

            from google.appengine.api import urlfetch
            analytics_url = 'http://www.google-analytics.com/collect?%s' % params
            urlfetch.fetch(
                url=analytics_url,
                method=urlfetch.GET,
                deadline=10,
            )
예제 #2
0
    def test_default_sitevar(self):
        default_sitevar = GoogleAnalyticsID._default_sitevar()
        self.assertIsNotNone(default_sitevar)

        default_json = {'GOOGLE_ANALYTICS_ID': ''}
        self.assertEqual(default_sitevar.values_json, json.dumps(default_json))
        self.assertEqual(default_sitevar.contents, default_json)
예제 #3
0
def track_call(api_action, api_label, auth_owner, request_time):
    """
    For more information about GAnalytics Protocol Parameters, visit
    https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters
    """
    from sitevars.google_analytics_id import GoogleAnalyticsID
    google_analytics_id = GoogleAnalyticsID.google_analytics_id()
    if not google_analytics_id:
        logging.warning(
            "Missing sitevar: google_analytics.id. Can't track API usage.")
    else:
        import uuid
        cid = uuid.uuid3(uuid.NAMESPACE_X500, str(auth_owner))

        from urllib import urlencode
        payloads = [
            urlencode({
                'v': 1,
                'tid': google_analytics_id,
                'cid': cid,
                't': 'event',
                'ec': 'api-v03',
                'ea': api_action,
                'el': api_label,
                'cd1': auth_owner,  # custom dimension 1
                'ni': 1,
                'sc': 'end',  # forces tracking session to end
            }),
            # urlencode({
            #     'v': 1,
            #     'tid': google_analytics_id,
            #     'cid': cid,
            #     't': 'timing',
            #     'utc': 'api-v03',
            #     'utv': api_action,
            #     'utt': request_time,
            # }),
        ]

        payload = '\n'.join(payloads)

        from google.appengine.api import urlfetch
        urlfetch.fetch(
            url='https://www.google-analytics.com/batch',
            validate_certificate=True,
            method=urlfetch.POST,
            deadline=30,
            payload=payload,
        )
예제 #4
0
 def test_google_analytics_id_set(self):
     test_id = 'abc'
     Sitevar.get_or_insert('google_analytics.id',
                           values_json=json.dumps(
                               {'GOOGLE_ANALYTICS_ID': test_id}))
     self.assertEqual(GoogleAnalyticsID.google_analytics_id(), test_id)
예제 #5
0
 def test_google_analytics_id(self):
     self.assertEqual(GoogleAnalyticsID.google_analytics_id(), '')