module VWO::Utils::Impression
Public Instance Methods
Creates properties for the bulk impression event
@param :settings_file Settings file object @param :campaign_id Campaign
identifier @param :variation_id Variation identifier @param :user_id User identifier @param :sdk_key SDK Key @param :goal_id Goal identifier, if building track impression @param[String|Float|Integer|nil) :revenue Number value, in any representation, if building track impression
@return None if campaign ID or variation ID is invalid,
Else Properties(dict)
# File lib/vwo/utils/impression.rb, line 129 def create_bulk_event_impression(settings_file, campaign_id, variation_id, user_id, goal_id = nil, revenue = nil) return unless valid_number?(campaign_id) && valid_string?(user_id) is_track_user_api = true is_track_user_api = false unless goal_id.nil? account_id = settings_file['accountId'] impression = { eT: is_track_user_api ? 1 : 2, e: campaign_id, c: variation_id, u: generator_for(user_id, account_id), sId: get_current_unix_timestamp } logger = VWO::Logger.get_instance if is_track_user_api logger.log( LogLevelEnum::DEBUG, format( LogMessageEnum::DebugMessages::IMPRESSION_FOR_TRACK_USER, file: FileNameEnum::ImpressionUtil, properties: JSON.generate(impression) ) ) else impression['g'] = goal_id impression['r'] = revenue if revenue logger.log( LogLevelEnum::DEBUG, format( LogMessageEnum::DebugMessages::IMPRESSION_FOR_TRACK_GOAL, file: FileNameEnum::ImpressionUtil, properties: JSON.generate(impression) ) ) end impression end
Creates the impression from the arguments passed
@param :settings_file Settings file object @param :campaign_id Campaign
identifier @param :variation_id Variation identifier @param :user_id User identifier @param :sdk_key SDK Key @param :goal_id Goal identifier, if building track impression @param[String|Float|Integer|nil) :revenue Number value, in any representation, if building track impression
@return None if campaign ID or variation ID is invalid,
Else Properties(dict)
# File lib/vwo/utils/impression.rb, line 44 def create_impression(settings_file, campaign_id, variation_id, user_id, sdk_key, goal_id = nil, revenue = nil, usage_stats = {}) return unless valid_number?(campaign_id) && valid_string?(user_id) is_track_user_api = true is_track_user_api = false unless goal_id.nil? account_id = settings_file['accountId'] impression = { account_id: account_id, experiment_id: campaign_id, ap: PLATFORM, combination: variation_id, random: get_random_number, sId: get_current_unix_timestamp, u: generator_for(user_id, account_id), env: sdk_key } # Version and SDK constants sdk_version = Gem.loaded_specs['vwo_sdk'] ? Gem.loaded_specs['vwo_sdk'].version : VWO::SDK_VERSION impression['sdk'] = 'ruby' impression['sdk-v'] = sdk_version impression = usage_stats.merge(impression) url = HTTPS_PROTOCOL + ENDPOINTS::BASE_URL logger = VWO::Logger.get_instance if is_track_user_api impression['ed'] = JSON.generate(p: 'server') impression['url'] = "#{url}#{ENDPOINTS::TRACK_USER}" logger.log( LogLevelEnum::DEBUG, format( LogMessageEnum::DebugMessages::IMPRESSION_FOR_TRACK_USER, file: FileNameEnum::ImpressionUtil, properties: JSON.generate(impression) ) ) else impression['url'] = url + ENDPOINTS::TRACK_GOAL impression['goal_id'] = goal_id impression['r'] = revenue if revenue logger.log( LogLevelEnum::DEBUG, format( LogMessageEnum::DebugMessages::IMPRESSION_FOR_TRACK_GOAL, file: FileNameEnum::ImpressionUtil, properties: JSON.generate(impression) ) ) end impression end
Returns commonly used params for making requests to our servers.
@param :user_id Unique identification of user @param :settings_file Settings file containing campaign data for extracting account_id @return Commonly used params for making call to our servers
# File lib/vwo/utils/impression.rb, line 104 def get_common_properties(user_id, settings_file) account_id = settings_file['accountId'] { 'random' => get_random_number, 'sdk' => SDK_NAME, 'sdk-v' => SDK_VERSION, 'ap' => PLATFORM, 'sId' => get_current_unix_timestamp, 'u' => generator_for(user_id, account_id), 'account_id' => account_id } end