class Abrupt::Transformation::Client::Visit
Transformation
class for client visit data
Public Instance Methods
add_individuals()
click to toggle source
Calls superclass method
Abrupt::Transformation::Base#add_individuals
# 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()
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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 # value.is_a?(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('/')}" # Page hasPageVisit visit add_object_property(parent_uri, 'PageVisit', resolve_uri) key when :size # TODO: transform via customize_to_schema 'contentlength' else key end add_data_property(name, CGI.escape(value)) end
add_visit_duration()
click to toggle source
# 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 # maybe no recognized leavetime visit_duration = (leavetime - enterteime).to_f.round(8) # in seconds add_data_property('visitDuration', visit_duration) if visit_duration > 0.0 end