Module: UTM
- Defined in:
- lib/utm.rb,
lib/utm/configuration.rb
Defined Under Namespace
Classes: Configuration
Constant Summary collapse
- MANDATORY_FIELDS =
FIXME rename to UTMHelper
[:utm_source, :utm_medium, :utm_campaign]
- POSSIBLE_FIELDS =
[:utm_source, :utm_term, :utm_medium, :utm_content, :utm_campaign]
Class Method Summary collapse
-
.build_params(utm = {}) ⇒ Object
Campaign Name (utm_campaign) Used for keyword analysis.
- .conf ⇒ Object
- .configure {|conf| ... } ⇒ Object
- .parse(url) ⇒ Object
- .reset_config! ⇒ Object
Class Method Details
.build_params(utm = {}) ⇒ Object
Campaign Name (utm_campaign) Used for keyword analysis. Use utm_campaign to identify a specific product promotion or strategic campaign.
-
Example: utm_campaign=spring_sale
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/utm.rb', line 37 def self.build_params(utm = {}) new = {} new[:utm_source] = utm[:utm_source] || conf.utm_source new[:utm_term] = utm[:utm_term] || conf.utm_term new[:utm_medium] = utm[:utm_medium] || conf.utm_medium new[:utm_content] = utm[:utm_content] || conf.utm_content new[:utm_campaign] = utm[:utm_campaign] || conf.utm_campaign new.select! {|field, content| content != nil} raise UTMError, "Missing mandatory fields" if new.values_at(*MANDATORY_FIELDS).include?(nil) parameters = new.map { |field, content| "#{field}=#{CGI.escape(content.to_s)}" unless content.nil? } parameters.sort.join("&") end |
.conf ⇒ Object
29 30 31 |
# File 'lib/utm/configuration.rb', line 29 def self.conf @conf ||= Configuration.new end |
.configure {|conf| ... } ⇒ Object
24 25 26 27 |
# File 'lib/utm/configuration.rb', line 24 def self.configure @conf = nil yield conf end |
.parse(url) ⇒ Object
53 54 55 56 |
# File 'lib/utm.rb', line 53 def self.parse(url) params = Addressable::URI.parse(url).query_values params.select {|key,val| POSSIBLE_FIELDS.map(&:to_s).include?(key)} end |
.reset_config! ⇒ Object
20 21 22 |
# File 'lib/utm/configuration.rb', line 20 def self.reset_config! @conf = nil end |