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

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

Raises:



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

.confObject



29
30
31
# File 'lib/utm/configuration.rb', line 29

def self.conf
  @conf ||= Configuration.new
end

.configure {|conf| ... } ⇒ Object

Yields:



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