def action(self, logic_function, ver=None): try: function = logic.get_action(logic_function) side_effect_free = getattr(function, "side_effect_free", False) request_data = self._get_request_data( try_url_params=side_effect_free ) if isinstance(request_data, dict): id = request_data.get("id", False) resource_id = request_data.get("resource_id", False) package_id = request_data.get("resource", {}).get("package_id", False) package_id = request_data.get("package_id", package_id) if "q" in request_data: id = request_data["q"] if "sql" in request_data: id = request_data["sql"] if "query" in request_data: id = request_data["query"] self._post_analytics(c.user, logic_function, "", [ id, resource_id, package_id]) except Exception as e: log.debug(e) pass return ApiController.action(self, logic_function, ver)
def action(self, api_action, ver=None): try: request_data = self._get_action_request_data(api_action) parameter_value = self._get_parameter_value(request_data) capture_api_actions = ga_api_actions.GoogleAnalyticsPlugin.capture_api_actions event_action = '' event_label = '' # Only send api actions if it is in the capture_api_actions dictionary if api_action in capture_api_actions: capture_api_action = capture_api_actions.get(api_action) event_action = capture_api_action['action'].format(api_action) event_label = capture_api_action['label'].format( parameter_value) # If catch_all_api_actions is True send api action elif ga_api_actions.GoogleAnalyticsPlugin.catch_all_api_actions: event_action = api_action event_label = parameter_value # Only send to google analytics if event_action is set to reduce noise if event_action: self._post_analytics(c.user, event_action, event_label) except Exception as e: log.debug(e) pass return ApiController.action(self, api_action, ver)
def action(self, logic_function, ver=None): if c.environ['SERVER_NAME'] not in ('localhost', '127.0.0.1', '::1'): request_query = c.environ.get('paste.parsed_dict_querystring', ({},))[0] request_id = request_query.get('query', request_query.get('q', '')) request_description = "CKAN API Request" _post_analytics(c.user or 'anonymous', 'action', logic_function, request_description, request_id) return ApiController.action(self, logic_function, ver)
def action(self, api_action, ver=None): try: function = toolkit.get_action(api_action) side_effect_free = getattr(function, 'side_effect_free', False) request_data = self._get_request_data( try_url_params=side_effect_free) capture_api_actions = plugin.GoogleAnalyticsPlugin.capture_api_actions # Only send api actions if it is in the capture_api_actions dictionary if api_action in capture_api_actions and isinstance( request_data, dict): api_action_label = capture_api_actions.get(api_action) parameter_value = request_data.get('id', '') if parameter_value == '' and 'resource_id' in request_data: parameter_value = request_data['resource_id'] if parameter_value == '' and 'q' in request_data: parameter_value = request_data['q'] if parameter_value == '' and 'query' in request_data: parameter_value = request_data['query'] if parameter_value == '' and 'sql' in request_data: parameter_value = self._alter_sql(request_data['sql']) event_action = "{0} - {1}".format( api_action, c.environ['PATH_INFO'].replace('/api/3/', '')) event_label = api_action_label.format(parameter_value) self._post_analytics(c.user, event_action, event_label, request_data) except Exception as e: log.debug(e) pass return ApiController.action(self, api_action, ver)
def action(self, logic_function, ver=None): #Create the normal CKAN API Controller apiController = CKANApiController() #Calls function "action" of the CKAN controller and gets the result res = apiController.action(logic_function, ver) #Patch the JSON so we remove the urls toolkit.response.content_type = 'application/json' return pathJSON(res)
def action(self, logic_function, ver=None): #Create the normal CKAN API Controller apiController = CKANApiController() #Calls function "action" of the CKAN controller and gets the result res = apiController.action(logic_function,ver) #Patch the JSON so we remove the urls toolkit.response.content_type = 'application/json' return pathJSON(res)
class GAApiController(ApiController): # intercept API calls to record via google analytics def _post_analytics(self, user, request_obj_type, request_function, request_id): if config.get('googleanalytics.id'): data_dict = { "v": 1, "tid": config.get('googleanalytics.id'), "cid": hashlib.md5(user).hexdigest(), # customer id should be obfuscated "t": "event", "dh": c.environ['HTTP_HOST'], "dp": c.environ['PATH_INFO'], "dr": c.environ.get('HTTP_REFERER', ''), "ec": "CKAN API Request", "ea": request_obj_type + request_function, "el": request_id, } try: if converters.asbool( config.get('googleanalytics.activities_tracker', False)) == True: context = { 'model': model, 'session': model.Session, 'user': c.user } data = { 'resource_id': request_id, 'event': request_function, 'obj_type': request_obj_type, } logic.get_action('resource_tracker_create')(context, data) except: pass plugin.GoogleAnalyticsPlugin.analytics_queue.put(data_dict) def action(self, logic_function, ver=None): try: function = logic.get_action(logic_function) side_effect_free = getattr(function, 'side_effect_free', False) request_data = self._get_request_data( try_url_params=side_effect_free) if isinstance(request_data, dict): id = request_data.get('id', '') if 'q' in request_data: id = request_data['q'] if 'query' in request_data: id = request_data['query'] self._post_analytics(c.user, logic_function, '', id) except Exception, e: log.debug(e) pass return ApiController.action(self, logic_function, ver)
class CscGAApiController(ApiController): # intercept API calls to record via google analytics def _post_analytics(self, user, request_obj_type, request_function, request_id): if config.get('googleanalytics.id'): data_dict = { "v": 1, "tid": config.get('googleanalytics.id'), "cid": hashlib.md5(user).hexdigest(), # customer id should be obfuscated "t": "event", "dh": c.environ['HTTP_HOST'], "dp": c.environ['PATH_INFO'], "dr": c.environ.get('HTTP_REFERER', ''), "ec": "CKAN API Request", "ea": request_obj_type + request_function, "el": request_id, } plugin.CscGAPlugin.analytics_queue.put(data_dict) def action(self, logic_function, ver=None): try: function = get_action(logic_function) side_effect_free = getattr(function, 'side_effect_free', False) request_data = self._get_request_data( try_url_params=side_effect_free) if isinstance(request_data, dict): id = request_data.get('id', '') if 'q' in request_data: id = request_data['q'] if 'query' in request_data: id = request_data['query'] self._post_analytics(c.user, logic_function, '', id) except Exception, e: log.debug(e) pass return ApiController.action(self, logic_function, ver)