This file is indexed.

/usr/share/pyshared/gdata/analytics/__init__.py is in python-gdata 2.0.14-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
#!/usr/bin/python
#
# Original Copyright (C) 2006 Google Inc.
# Refactored in 2009 to work for Google Analytics by Sal Uryasev at Juice Inc.
#
# 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.
#
# Note that this module will not function without specifically adding
# 'analytics': [  #Google Analytics
#  'https://www.google.com/analytics/feeds/'],
# to CLIENT_LOGIN_SCOPES in the gdata/service.py file

"""Contains extensions to Atom objects used with Google Analytics."""

__author__ = 'api.suryasev (Sal Uryasev)'

import atom
import gdata

GAN_NAMESPACE = 'http://schemas.google.com/analytics/2009'

class TableId(gdata.GDataEntry):
  """tableId element."""
  _tag = 'tableId'
  _namespace = GAN_NAMESPACE  

class Property(gdata.GDataEntry):
  _tag = 'property'
  _namespace = GAN_NAMESPACE
  _children = gdata.GDataEntry._children.copy()
  _attributes = gdata.GDataEntry._attributes.copy()
  
  _attributes['name'] = 'name'
  _attributes['value'] = 'value'
  
  def __init__(self, name=None, value=None, *args, **kwargs):
    self.name = name
    self.value = value
    super(Property, self).__init__(*args, **kwargs)
    
  def __str__(self):
    return self.value
      
  def __repr__(self):
    return self.value

class AccountListEntry(gdata.GDataEntry):
  """The Google Documents version of an Atom Entry"""
  
  _tag = 'entry'
  _namespace = atom.ATOM_NAMESPACE
  _children = gdata.GDataEntry._children.copy()
  _attributes = gdata.GDataEntry._attributes.copy()
  _children['{%s}tableId' % GAN_NAMESPACE] = ('tableId', 
                          [TableId])
  _children['{%s}property' % GAN_NAMESPACE] = ('property', 
                          [Property])

  def __init__(self, tableId=None, property=None,
         *args, **kwargs):
    self.tableId = tableId
    self.property = property
    super(AccountListEntry, self).__init__(*args, **kwargs)


def AccountListEntryFromString(xml_string):
  """Converts an XML string into an AccountListEntry object.

  Args:
  xml_string: string The XML describing a Document List feed entry.

  Returns:
  A AccountListEntry object corresponding to the given XML.
  """
  return atom.CreateClassFromXMLString(AccountListEntry, xml_string)


class AccountListFeed(gdata.GDataFeed):
  """A feed containing a list of Google Documents Items"""
  
  _tag = 'feed'
  _namespace = atom.ATOM_NAMESPACE
  _children = gdata.GDataFeed._children.copy()
  _attributes = gdata.GDataFeed._attributes.copy()
  _children['{%s}entry' % atom.ATOM_NAMESPACE] = ('entry', 
                          [AccountListEntry])


def AccountListFeedFromString(xml_string):
  """Converts an XML string into an AccountListFeed object.

  Args:
  xml_string: string The XML describing an AccountList feed.

  Returns:
  An AccountListFeed object corresponding to the given XML.
  All properties are also linked to with a direct reference
  from each entry object for convenience. (e.g. entry.AccountName)
  """
  feed = atom.CreateClassFromXMLString(AccountListFeed, xml_string)
  for entry in feed.entry:
    for pro in entry.property:
      entry.__dict__[pro.name.replace('ga:','')] = pro
    for td in entry.tableId:
      td.__dict__['value'] = td.text
  return feed

class Dimension(gdata.GDataEntry):
  _tag = 'dimension'
  _namespace = GAN_NAMESPACE
  _children = gdata.GDataEntry._children.copy()
  _attributes = gdata.GDataEntry._attributes.copy()
  
  _attributes['name'] = 'name'
  _attributes['value'] = 'value'
  _attributes['type'] = 'type'
  _attributes['confidenceInterval'] = 'confidence_interval'
  
  def __init__(self, name=None, value=None, type=None, 
               confidence_interval = None, *args, **kwargs):
    self.name = name
    self.value = value
    self.type = type
    self.confidence_interval = confidence_interval
    super(Dimension, self).__init__(*args, **kwargs)   
    
  def __str__(self):
    return self.value

  def __repr__(self):
    return self.value 
    
class Metric(gdata.GDataEntry):
  _tag = 'metric'
  _namespace = GAN_NAMESPACE
  _children = gdata.GDataEntry._children.copy()
  _attributes = gdata.GDataEntry._attributes.copy()
  
  _attributes['name'] = 'name'
  _attributes['value'] = 'value'
  _attributes['type'] = 'type'
  _attributes['confidenceInterval'] = 'confidence_interval'
  
  def __init__(self, name=None, value=None, type=None, 
               confidence_interval = None, *args, **kwargs):
    self.name = name
    self.value = value
    self.type = type
    self.confidence_interval = confidence_interval
    super(Metric, self).__init__(*args, **kwargs)
    
  def __str__(self):
    return self.value

  def __repr__(self):
    return self.value
  
class AnalyticsDataEntry(gdata.GDataEntry):
  """The Google Analytics version of an Atom Entry"""
  
  _tag = 'entry'
  _namespace = atom.ATOM_NAMESPACE
  _children = gdata.GDataEntry._children.copy()
  _attributes = gdata.GDataEntry._attributes.copy()
  
  _children['{%s}dimension' % GAN_NAMESPACE] = ('dimension', 
                          [Dimension])
                          
  _children['{%s}metric' % GAN_NAMESPACE] = ('metric', 
                         [Metric])
                         
  def __init__(self, dimension=None, metric=None, *args, **kwargs):
    self.dimension = dimension
    self.metric = metric
    
    super(AnalyticsDataEntry, self).__init__(*args, **kwargs)

class AnalyticsDataFeed(gdata.GDataFeed):
  """A feed containing a list of Google Analytics Data Feed"""
  
  _tag = 'feed'
  _namespace = atom.ATOM_NAMESPACE
  _children = gdata.GDataFeed._children.copy()
  _attributes = gdata.GDataFeed._attributes.copy()
  _children['{%s}entry' % atom.ATOM_NAMESPACE] = ('entry', 
                          [AnalyticsDataEntry])
                    
                         
"""
Data Feed
"""

def AnalyticsDataFeedFromString(xml_string):
  """Converts an XML string into an AccountListFeed object.

  Args:
  xml_string: string The XML describing an AccountList feed.

  Returns:
  An AccountListFeed object corresponding to the given XML.
  Each metric and dimension is also referenced directly from
  the entry for easier access. (e.g. entry.keyword.value)
  """
  feed = atom.CreateClassFromXMLString(AnalyticsDataFeed, xml_string)
  if feed.entry:
    for entry in feed.entry:
      for met in entry.metric:
        entry.__dict__[met.name.replace('ga:','')] = met
      if entry.dimension is not None:
        for dim in entry.dimension:
          entry.__dict__[dim.name.replace('ga:','')] = dim
        
  return feed