Module: Optimizely::Helpers::EventTagUtils
- Defined in:
- lib/optimizely/helpers/event_tag_utils.rb
Constant Summary collapse
- REVENUE_EVENT_METRIC_NAME =
'revenue'- NUMERIC_EVENT_METRIC_NAME =
'value'
Class Method Summary collapse
- .get_numeric_value(event_tags, logger = nil) ⇒ Object
- .get_revenue_value(event_tags) ⇒ Object
- .isStringNumeric(str) ⇒ Object
Class Method Details
.get_numeric_value(event_tags, logger = nil) ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/optimizely/helpers/event_tag_utils.rb', line 64 def get_numeric_value(, logger = nil) # Grab the numeric event value from the event tags. "value" is a reserved keyword. # The value of 'value' can be a float or a numeric string # # event_tags - +Hash+ representing metadata associated with the event. # Returns +Number+ | +nil+ if value can't be retrieved from the event tags. logger = SimpleLogger.new if logger.nil? if .nil? logger.log(Logger::DEBUG,"Event tags is undefined.") return nil end if !Helpers::Validator.() logger.log(Logger::DEBUG,"Event tags is not a dictionary.") return nil end if !.has_key?(NUMERIC_EVENT_METRIC_NAME) logger.log(Logger::DEBUG,"The numeric metric key is not defined in the event tags.") return nil end if [NUMERIC_EVENT_METRIC_NAME].nil? logger.log(Logger::DEBUG,"The numeric metric key is null.") return nil end raw_value = [NUMERIC_EVENT_METRIC_NAME] if raw_value === true or raw_value === false logger.log(Logger::DEBUG,"Provided numeric value is a boolean, which is an invalid format.") return nil end if raw_value.is_a? Array or raw_value.is_a? Hash or raw_value.to_f.nan? or raw_value.to_f.infinite? logger.log(Logger::DEBUG,"Provided numeric value is in an invalid format.") return nil end if !Helpers::Validator.string_numeric?(raw_value) logger.log(Logger::DEBUG,"Provided numeric value is not a numeric string.") return nil end raw_value = raw_value.to_f logger.log(Logger::INFO,"The numeric metric value #{raw_value} will be sent to results.") raw_value end |
.get_revenue_value(event_tags) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/optimizely/helpers/event_tag_utils.rb', line 31 def get_revenue_value() # Grab the revenue value from the event tags. "revenue" is a reserved keyword. # The revenue value must be an integer. # # event_tags - Hash representing metadata associated with the event. # Returns revenue value as an integer number # Returns nil if revenue can't be retrieved from the event tags. if .nil? or !Helpers::Validator.() return nil end unless .has_key?(REVENUE_EVENT_METRIC_NAME) return nil end logger = SimpleLogger.new raw_value = [REVENUE_EVENT_METRIC_NAME] unless raw_value.is_a? Numeric logger.log(Logger::WARN, "Failed to parse revenue value #{raw_value} from event tags.") return nil end if raw_value.is_a? Float logger.log(Logger::WARN, "Failed to parse revenue value #{raw_value} from event tags.") return nil end logger.log(Logger::INFO, "Parsed revenue value #{raw_value} from event tags.") raw_value end |
.isStringNumeric(str) ⇒ Object
27 28 29 |
# File 'lib/optimizely/helpers/event_tag_utils.rb', line 27 def isStringNumeric(str) Float(str) != nil rescue false end |