Module: ChannelGrouping

Defined in:
lib/channel_grouping.rb,
lib/channel_grouping/source.rb,
lib/channel_grouping/version.rb,
lib/channel_grouping/destination.rb

Defined Under Namespace

Classes: Destination, Source

Constant Summary collapse

VERSION =
"0.5.1"

Class Method Summary collapse

Class Method Details

.identify(source_url:, destination_url:) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/channel_grouping.rb', line 6

def self.identify(source_url: , destination_url:)
  destination = Destination.new(destination_url)

  medium = destination.medium

  return 'Email' if medium =~ /^email$/i
  return 'Affiliates' if medium =~ /^affiliate$/i
  return 'Referral' if medium =~ /^referral$/i
  return 'Organic Search' if medium =~ /^organic$/i
  return 'Paid Search' if medium =~ /^(cpc|ppc|paidsearch)$/i
  return 'Other Advertising' if medium =~ /^(cpv|cpa|cpp)$/i
  return 'Display' if medium =~ /^(display|cpm|banner)$/i
  return 'Social' if medium =~ /^(social|social-network|social-media|sm|social network|social media)$/i

  source = Source.new(source_url)

  return 'Organic Search' if source.search_engine?
  return 'Social' if source.social_network?
  return 'Direct' if source.direct? && (medium == 'none' || medium.nil?)
  return 'Direct' if source.host == destination.host
  return 'Referral' if source.host && (medium == 'none' || medium.nil?)

  'Other'
end