class PUNK::IdentifySessionWorker

Public Instance Methods

process() click to toggle source
# File lib/punk/workers/identify_session_worker.rb, line 12
def process
  require "userstack"

  session = Session[session_id]
  return if session.blank?

  return if PUNK.get.userstack.api_key.blank?
  client = Userstack::Client.new(PUNK.get.userstack.api_key, use_ssl: PUNK.get.userstack.use_ssl)
  result = client.parse(session.user_agent).deep_symbolize_keys

  raise if result[:success] == false || result[:type].nil?

  session.update(data: session.data.merge(
    os: {
      name: result[:os][:name],
      family: result[:os][:family],
      vendor: result[:os][:family_vendor]
    },
    browser: {
      name: result[:browser][:name],
      version: result[:browser][:version]
    },
    device: {
      name: result[:device][:name],
      brand: result[:device][:brand],
      type: result[:device][:type],
      mobile: result[:device][:is_mobile_device]
    }
  ))

  GeocodeSessionWorker.perform_now(session_id: session.id)
end
validate() click to toggle source
# File lib/punk/workers/identify_session_worker.rb, line 7
def validate
  validates_not_null :session_id
  validates_not_empty :session_id
end