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