7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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
63
64
65
66
67
68
69
70
71
72
73
74
|
# File 'lib/url-identifier.rb', line 7
def analyze(url)
duri = ::Domainatrix.parse url
dduri = Addressable::URI.parse url
referral_path = duri.path.empty? ? "/" : duri.path
filters = {}
parameters = {}
parameters = CGI::parse dduri.query unless dduri.query.nil?
if (duri.subdomain.start_with? "www.")
domain = duri.subdomain.slice(4, duri.subdomain.length-4)
domain = domain + "." if domain.length > 0
elsif (duri.subdomain== "www" or duri.subdomain.length == 0)
domain = ""
else
domain = "#{duri.subdomain}."
end
domain += duri.domain
result = {
:source => domain + ".#{duri.public_suffix}",
:uid => referral_path
}
if duri.domain == "blogspot"
result[:source] = "#{domain}"
result[:uid] = "#{dduri.path}"
elsif duri.domain == "youtube"
result[:source] = "#{domain}"
unless dduri.query.nil?
result[:uid] = parameters["v"].first || result[:uid]
end
elsif duri.domain == "youtu" and duri.public_suffix == "be"
result[:source] = "youtube"
m = /\/(.+)$/.match duri.path
if m.length > 1
result[:uid] = m[1] || result[:uid]
end
elsif duri.domain == "lookbook"
result[:source] = "#{domain}"
if duri.path.start_with? "/look/"
m = /\/look\/([0-9]+).*/.match duri.path
if m.length > 1
result[:uid] = m[1] || result[:uid]
end
end
elsif duri.domain == "fashiolista"
result[:source] = "#{domain}"
if duri.path.start_with? "/item/"
m = /\/item\/([0-9]+).*/.match duri.path
if m.length > 1
result[:uid] = m[1] || result[:uid]
end
end
elsif duri.domain == "shareasale"
result[:source] = "#{domain}"
unless dduri.query.nil?
parameters = CGI::parse dduri.query
result[:uid] = parameters["afftrack"].first unless parameters["afftrack"].first.nil? or parameters["afftrack"].first.empty?
result[:uid] = (result[:uid].split '--').first
end
elsif duri.domain == "facebook"
result[:source] = "#{domain}"
result[:uid] = nil
end
result
end
|