module Fingerbank::Lookup

Public Instance Methods

_lookup(info) click to toggle source
# File lib/fingerbank_client/lookup.rb, line 5
def _lookup(info)
  user_agent = info[:user_agent]
  begin
    device = Device.lookup_in_local(info)
    return device unless device.nil?
  rescue Exception => e
    Fingerbank.logger.warn "Fingerbank : Can't lookup device in local database (#{e.message})"
  end

  device = lookup_in_upstream info 
  return device
end
lookup(info) click to toggle source
# File lib/fingerbank_client/lookup.rb, line 18
def lookup(info)
  user_agent = info[:user_agent]
  begin
    if defined?(Rails)
      Rails.cache.fetch(user_agent, :expires_in => 2.hour) do
        _lookup(info)
      end
    end
  rescue NameError => e
    unless e.message == "uninitialized constant RAILS_CACHE"
      raise e
    end
  end
  return _lookup(info)
end
lookup_in_upstream(info) click to toggle source
# File lib/fingerbank_client/lookup.rb, line 34
def lookup_in_upstream(info)
  user_agent = info[:user_agent]
  data = self.interrogate(user_agent)
  return nil unless data
  name = data['device']['name']
  parents = data['device']['parents'].map{|parent| parent['name']}
  return Device.new(:name => name, :parents => parents, :version => data['version'])
end