module Kameleoon::Cookie
@api private
Constants
- EXPIRE_DAYS
- KAMELEOON_COOKIE_NAME
- KAMELEOON_COOKIE_VALUE_LENGTH
- KAMELEOON_KEY_JS_COOKIE
- KAMELEOON_VISITOR_CODE_LENGTH
Public Instance Methods
obtain_hash_double(visitor_code, respool_times = {}, container_id = '')
click to toggle source
# File lib/kameleoon/cookie.rb, line 25 def obtain_hash_double(visitor_code, respool_times = {}, container_id = '') identifier = visitor_code.to_s identifier += container_id.to_s if !respool_times.nil? && !respool_times.empty? identifier += respool_times.values.sort.join.to_s end (Digest::SHA256.hexdigest(identifier.encode('UTF-8')).to_i(16) / (BigDecimal("2") ** BigDecimal("256"))).round(16) end
read_and_write(request_cookies, top_level_domain, response_cookies, default_visitor_code = nil)
click to toggle source
@return [String] visitor code
# File lib/kameleoon/cookie.rb, line 12 def read_and_write(request_cookies, top_level_domain, response_cookies, default_visitor_code = nil) kameleoon_visitor_code = read(request_cookies) if kameleoon_visitor_code.nil? kameleoon_visitor_code = check_default_visitor_code(default_visitor_code) || Kameleoon::Utils.generate_random_string(KAMELEOON_COOKIE_VALUE_LENGTH) end cookie = { :value => kameleoon_visitor_code, :expires => Time.now + Kameleoon::Utils.in_seconds(EXPIRE_DAYS), :path => '/' } unless top_level_domain.nil? cookie[:domain] = top_level_domain end response_cookies[KAMELEOON_COOKIE_NAME] = cookie kameleoon_visitor_code end
Private Instance Methods
check_default_visitor_code(default_visitor_code)
click to toggle source
# File lib/kameleoon/cookie.rb, line 42 def check_default_visitor_code(default_visitor_code) if default_visitor_code.nil? return end default_visitor_code = default_visitor_code.to_s if default_visitor_code.length == 0 raise Kameleoon::Exception::VisitorCodeNotValid.new("Empty visitor Code") end if default_visitor_code.length > KAMELEOON_VISITOR_CODE_LENGTH raise Kameleoon::Exception::VisitorCodeNotValid.new("Visitor Code is longer than 255 chars.") end default_visitor_code end
read(cookies)
click to toggle source
# File lib/kameleoon/cookie.rb, line 56 def read(cookies) value = cookies[KAMELEOON_COOKIE_NAME] if value.nil? return end if value.start_with?(KAMELEOON_KEY_JS_COOKIE) start_index = KAMELEOON_KEY_JS_COOKIE.length value = value[start_index..-1] end if value.length == 0 nil end value[0..(KAMELEOON_VISITOR_CODE_LENGTH - 1)] end