Module: IrusAnalytics::Controller::AnalyticsBehaviour

Defined in:
lib/irus_analytics/controller/analytics_behaviour.rb

Instance Method Summary collapse

Instance Method Details

#send_analyticsObject



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
# File 'lib/irus_analytics/controller/analytics_behaviour.rb', line 7

def send_analytics
  logger = Logger.new(STDOUT) if logger.nil? 
  # Retrieve required params from the request
  if request.nil?
     logger.warn("IrusAnalytics::Controller::AnalyticsBehaviour.send_analytics exited: Request object is nil.")
  else
    # Should we filter this request...
    unless filter_request?(request)
      # Get Request data
      client_ip = request.remote_ip if request.respond_to?(:remote_ip)
      user_agent = request.user_agent if request.respond_to?(:user_agent)
      file_url = request.url if request.respond_to?(:url)
      referer = request.referer if request.respond_to?(:referer)

       # Defined locally
      datetime = datetime_stamp
      source_repository = source_repository_name

      # These following should defined in the controller class including this module
      identifier = self.item_identifier if self.respond_to?(:item_identifier)

      analytics_params = { date_stamp: datetime, client_ip_address: client_ip, user_agent: user_agent, item_oai_identifier: identifier, file_url: file_url, 
                                       http_referer: referer,  source_repository: source_repository }

      if irus_server_address.nil? 
        # In development and test Rails environment without irus_server_address we log in debug  
        if rails_environment == "development" || rails_environment == "test"
          logger.debug("IrusAnalytics::ControllerBehaviour.send_irus_analytics params extracted #{analytics_params}")
        else
          logger.error("IrusAnalytics::Controller::AnalyticsBehaviour.send_analytics exited: Irus Server address is not set.")
        end

      else
        begin
          Resque.enqueue(IrusClient, irus_server_address, analytics_params)
        rescue Exception => e
          logger.error("IrusAnalytics::Controller::AnalyticsBehaviour.send_analytics error: Problem enquing the analytics with Resque. Error: #{e}")
        end
      end
    end
  end
end