Sha256: 3fc5b21c4b9dd96bdbd68170e32d8f7d77bce11cef682f3bef043ad31e82b3b7

Contents?: true

Size: 1.18 KB

Versions: 7

Compression:

Stored size: 1.18 KB

Contents

# frozen_string_literal: true

module PUNK
  class IdentifySessionWorker < Worker
    args :session_id

    def validate
      validates_not_null :session_id
      validates_not_empty :session_id
    end

    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
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
punk-0.3.6 lib/punk/workers/identify_session_worker.rb
punk-0.3.5 lib/punk/workers/identify_session_worker.rb
punk-0.3.4 lib/punk/workers/identify_session_worker.rb
punk-0.3.3 lib/punk/workers/identify_session_worker.rb
punk-0.3.2 lib/punk/workers/identify_session_worker.rb
punk-0.3.1 lib/punk/workers/identify_session_worker.rb
punk-0.2.0 lib/punk/workers/identify_session_worker.rb