Class: Abrupt::Transformation::Client::Visit
- Inherits:
-
Base
show all
- Defined in:
- lib/abrupt/transformation/client/visit.rb
Overview
Transformation class for client visit data
Constant Summary
Constants inherited
from Base
Base::SCHEMA_MAPPING
Instance Attribute Summary
Attributes inherited from Base
#md5, #parent_uri, #result, #uri, #values
Instance Method Summary
collapse
Methods inherited from Base
#add_data_property, #add_individual, #add_object_property, #class_name, customize_to_schema, #initialize, #keyname, #resolve_parent_uri, #resolve_parent_uri_part, #resolve_uri, #resolve_uri_part, set_value
Instance Method Details
#add_individuals ⇒ Object
7
8
9
10
11
12
13
14
15
16
17
|
# File 'lib/abrupt/transformation/client/visit.rb', line 7
def add_individuals
@values[:name] = @uri.last
super
@values.delete :name
add_visit_duration
@values.each do |key, value|
add_property(key, value) if value
end
add_individuals_for_view
@result
end
|
#add_individuals_for_view ⇒ Object
38
39
40
41
42
43
44
45
46
|
# File 'lib/abrupt/transformation/client/visit.rb', line 38
def add_individuals_for_view
page_views = @values[:view]
return unless page_views
page_views.each do |type, view|
[view].flatten.each do |attributes|
add_page_view(type.to_s.capitalize, attributes)
end
end
end
|
#add_page_view(type, attributes) ⇒ Object
48
49
50
51
52
53
54
|
# File 'lib/abrupt/transformation/client/visit.rb', line 48
def add_page_view(type, attributes)
time = ::Abrupt.format_time(attributes[:datetime])
page_view = PageView.new(@parent_uri + @uri,
[type, time],
attributes)
@result += page_view.add_individuals
end
|
#add_property(key, value) ⇒ Object
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/abrupt/transformation/client/visit.rb', line 19
def add_property(key, value)
enumerable = value.is_a?(Hash) || value.is_a?(Array)
return if enumerable
name = case key
when :uri
uri = [@parent_uri[1], value].map(&:remove_last_slashes)
parent_uri_path = (@parent_uri[0..-3] + ['Page', uri.join])
parent_uri = "#{VOC}#{parent_uri_path.join('/')}"
add_object_property(parent_uri, 'PageVisit', resolve_uri)
key
when :size
'contentlength'
else
key
end
add_data_property(name, CGI.escape(value))
end
|
#add_visit_duration ⇒ Object
56
57
58
59
60
61
62
|
# File 'lib/abrupt/transformation/client/visit.rb', line 56
def add_visit_duration
leavetime = Abrupt.parse_time(@values[:leavetime])
enterteime = Abrupt.parse_time(@values[:entertime])
return unless leavetime && enterteime
visit_duration = (leavetime - enterteime).to_f.round(8)
add_data_property('visitDuration', visit_duration) if visit_duration > 0.0
end
|