aua 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,36 @@
1
+ module Aua::OperatingSystems::Windows
2
+
3
+ def self.extend?(agent)
4
+ agent.comments.first &&
5
+ (agent.app_comments.include?("Windows") ||
6
+ agent.comments_string =~ PATTERN)
7
+ end
8
+
9
+ VERSIONS = {
10
+ "NT 6.1" => "7",
11
+ "NT 6.0" => "Vista",
12
+ "NT 5.2" => "XP",
13
+ "NT 5.1" => "XP",
14
+ "NT 5.01" => "2000",
15
+ "NT 5.0" => "2000",
16
+ "NT 4.0" => "NT 4.0",
17
+ "98" => "98",
18
+ "95" => "95",
19
+ "CE" => "CE",
20
+ "9x 4.90" => "ME"
21
+ }
22
+
23
+ PATTERN = /Win(dows)?\s?([\d\sA-Zx\.]+)/
24
+
25
+ def platform
26
+ :Windows
27
+ end
28
+
29
+ def os_name
30
+ :Windows
31
+ end
32
+
33
+ def os_version
34
+ @os_version ||= comments_string =~ PATTERN && VERSIONS[$2] || $2
35
+ end
36
+ end
@@ -0,0 +1,10 @@
1
+ module Aua::StackBase
2
+ def extend_agent(agent)
3
+ default.each do |mod|
4
+ if mod.extend?(agent)
5
+ agent.extend(mod)
6
+ break
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,3 @@
1
+ class Aua
2
+ VERSION = "0.1.0"
3
+ end
data/spec/aua_spec.rb ADDED
@@ -0,0 +1,474 @@
1
+ require 'spec_helper'
2
+
3
+ describe Aua do
4
+
5
+ describe ".parse/.new" do
6
+ it "should be fast" do
7
+ start = Time.now
8
+ runs = 10
9
+ runs.times do
10
+ EXAMPLES.each do |string, values|
11
+ Aua.parse string
12
+ end
13
+ end
14
+ sec = Time.now - start
15
+ mspr = ((sec/runs*1_000/EXAMPLES.size)*10_000).to_i/10_000.0
16
+ puts "#{sec} sec #{mspr} ms/string #{(EXAMPLES.size*runs/sec).to_i} strings/sec"
17
+ mspr.should < 0.2
18
+ end
19
+
20
+ context "when parsing blank string" do
21
+ let(:user_agent) { Aua.parse("") }
22
+
23
+ it "returns an instance of Aua" do
24
+ user_agent.should be_kind_of(Aua)
25
+ end
26
+ end
27
+
28
+ context "when parsing nil" do
29
+ let(:user_agent) { Aua.parse(nil) }
30
+
31
+ it "returns an instance of Aua" do
32
+ user_agent.should be_kind_of(Aua)
33
+ end
34
+ end
35
+
36
+ context "when parsing unknown string" do
37
+ let(:user_agent) { Aua.parse("Bla/1.2.3;Blupp;X/2.0.0") }
38
+
39
+ it "returns an instance of Aua" do
40
+ user_agent.should be_kind_of(Aua)
41
+ end
42
+ end
43
+
44
+ EXAMPLES = {
45
+ # Firefox
46
+ "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; de; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13" =>
47
+ { :type => :Browser, :name => :Firefox, :version => "3.6.13", :os_name => :MacOSX, :os_version => "10.6", :platform => :Macintosh },
48
+ "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11 " =>
49
+ { :type => :Browser, :name => :Firefox, :version => "3.6.11", :os_name => :Windows, :os_version => "Vista", :platform => :Windows },
50
+ "Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2" =>
51
+ { :type => :Browser, :name => :Firefox, :version => "3.6.2", :os_name => :Windows, :os_version => "7", :platform => :Windows },
52
+ "Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 (.NET CLR 3.5.30729)" =>
53
+ { :type => :Browser, :name => :Firefox, :version => "3.6.13", :os_name => :Windows, :os_version => "Vista", :platform => :Windows },
54
+ "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; de; rv:1.9) Gecko/2008061004 Firefox/3.0" =>
55
+ { :type => :Browser, :name => :Firefox, :version => "3.0", :os_name => :MacOSX, :os_version => "10.6", :platform => :Macintosh },
56
+ "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13" =>
57
+ { :type => :Browser, :name => :Firefox, :version => "3.6.13", :os_name => :Windows, :os_version => "XP", :platform => :Windows },
58
+ "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3" =>
59
+ { :type => :Browser, :name => :Firefox, :version => "3.0.3", :os_name => :MacOSX, :os_version => "10.5", :platform => :Macintosh },
60
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0b9) Gecko/20100101 Firefox/4.0b9" =>
61
+ { :type => :Browser, :name => :Firefox, :version => "4.0b9", :os_name => :MacOSX, :os_version => "10.6", :platform => :Macintosh },
62
+ "Mozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3" =>
63
+ { :type => :Browser, :name => :Firefox, :version => "1.5.0.3", :os_name => :Windows, :os_version => "ME", :platform => :Windows },
64
+ "Mozilla/5.0 (Windows; U; Win98; de-DE; rv:1.7) Gecko/20040803 Firefox/0.9.3" =>
65
+ { :type => :Browser, :name => :Firefox, :version => "0.9.3", :os_name => :Windows, :os_version => "98", :platform => :Windows },
66
+ "Mozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.1.7) Gecko/20070930 Firefox/2.0.0.7" =>
67
+ { :type => :Browser, :name => :Firefox, :version => "2.0.0.7", :os_name => :Linux, :os_version => "OpenBSD", :platform => :X11 },
68
+ "Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.04 (lucid) Firefox/3.6.13 (.NET CLR 3.5.30729)" =>
69
+ { :type => :Browser, :name => :Firefox, :version => "3.6.13", :os_name => :Linux, :os_version => "Ubuntu", :platform => :X11 },
70
+ "Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.13) Gecko/20101206 Red Hat/3.6-2.el5 Firefox/3.6.13" =>
71
+ { :type => :Browser, :name => :Firefox, :version => "3.6.13", :os_name => :Linux, :os_version => "Red Hat", :platform => :X11 },
72
+ "Mozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.0.12) Gecko/2009072711 CentOS/3.0.12-1.el5.centos Firefox/3.0.12" =>
73
+ { :type => :Browser, :name => :Firefox, :version => "3.0.12", :os_name => :Linux, :os_version => "CentOS", :platform => :X11 },
74
+ "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.9) Gecko/20100915 Gentoo Firefox/3.6.9" =>
75
+ { :type => :Browser, :name => :Firefox, :version => "3.6.9", :os_name => :Linux, :os_version => "Gentoo", :platform => :X11 },
76
+ "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.13) Gecko/20101203 YFF35 Firefox/3.6.13 GTB7.1 (.NET CLR 3.5.30729)" =>
77
+ { :type => :Browser, :name => :Firefox, :version => "3.6.13", :os_name => :Windows, :os_version => "XP", :platform => :Windows },
78
+ "Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.2.13) Gecko/20101203 SUSE/3.6.13-0.2.1 Firefox/3.6.13" =>
79
+ { :type => :Browser, :name => :Firefox, :version => "3.6.13", :os_name => :Linux, :os_version => "SUSE", :platform => :X11 },
80
+ "Mozilla/5.0 (X11; Linux x86_64; rv:2.0b10pre) Gecko/20110120 Firefox-4.0/4.0b10pre" =>
81
+ { :type => :Browser, :name => :Firefox, :version => "4.0b10pre", :os_name => :Linux, :os_version => nil, :platform => :X11 },
82
+ "Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.14pre) Gecko/20110113 Ubuntu/9.10 (karmic) Namoroka/3.6.14pre" =>
83
+ { :type => :Browser, :name => :Firefox, :version => "3.6.14pre", :os_name => :Linux, :os_version => "Ubuntu", :platform => :X11 },
84
+
85
+ # Firefox/Mozilla based
86
+ "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9a9pre) Gecko/2007110108 prism/0.8" =>
87
+ { :type => :Browser, :name => :Prism, :version => "0.8", :os_name => :Windows, :os_version => "7", :platform => :Windows },
88
+ "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2pre) Gecko/20100322 Prism/1.0b4" =>
89
+ { :type => :Browser, :name => :Prism, :version => "1.0b4", :os_name => :Windows, :os_version => "7", :platform => :Windows },
90
+ "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.15) Gecko/20101027 SeaMonkey/2.0.10" =>
91
+ { :type => :Browser, :name => :SeaMonkey, :version => "2.0.10", :os_name => :Windows, :os_version => "XP", :platform => :Windows },
92
+ "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en; rv:1.9.0.19) Gecko/2010111021 Camino/2.0.6 (like Firefox/3.0.19)" =>
93
+ { :type => :Browser, :name => :Camino, :version => "2.0.6", :os_name => :MacOSX, :os_version => "10.5", :platform => :Macintosh },
94
+ "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.16) Gecko/20110107 Iceweasel/3.5.16 (like Firefox/3.5.16)" =>
95
+ { :type => :Browser, :name => :Iceweasel, :version => "3.5.16", :os_name => :Linux, :os_version => nil, :platform => :X11 },
96
+ "Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.19) Gecko/2010120923 Iceweasel/3.0.6 (Debian-3.0.6-3)" =>
97
+ { :type => :Browser, :name => :Iceweasel, :version => "3.0.6", :os_name => :Linux, :os_version => "Debian", :platform => :X11 },
98
+ "Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.13) Gecko/20101207 Lightning/1.0b2 Thunderbird/3.1.7" =>
99
+ { :type => :Browser, :name => :Thunderbird, :version => "3.1.7", :os_name => :Windows, :os_version => "7", :platform => :Windows },
100
+ "Mozilla/5.0 (X11; U; Linux x86_64; en; rv:1.9.0.8) Gecko/20080528 Fedora/2.24.3-4.fc10 Epiphany/2.22 Firefox/3.0" =>
101
+ { :type => :Browser, :name => :Epiphany, :version => "2.22", :os_name => :Linux, :os_version => "Fedora", :platform => :X11 },
102
+ "Mozilla/5.0 (X11; U; Linux x86_64; en; rv:1.8.1.13) Gecko/20080326 (Debian-1.8.1.13-1) Epiphany/2.20" =>
103
+ { :type => :Browser, :name => :Epiphany, :version => "2.20", :os_name => :Linux, :os_version => "Debian", :platform => :X11 },
104
+ "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008100716 Firefox/3.0.3 Flock/2.0" =>
105
+ { :type => :Browser, :name => :Flock, :version => "2.0", :os_name => :Linux, :os_version => nil, :platform => :X11 },
106
+ "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.12) Gecko/20080219 Firefox/2.0.0.12 Navigator/9.0.0.6" =>
107
+ { :type => :Browser, :name => :NetscapeNavigator, :version => "9.0.0.6", :os_name => :Linux, :os_version => nil, :platform => :X11 },
108
+ "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.5) Gecko/20050519 Netscape/8.0.1" =>
109
+ { :type => :Browser, :name => :NetscapeNavigator, :version => "8.0.1", :os_name => :Windows, :os_version => "2000", :platform => :Windows },
110
+
111
+ # Safari
112
+ "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; de-de) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5" =>
113
+ { :type => :Browser, :name => :Safari, :version => "5.0.2", :os_name => :MacOSX, :os_version => "10.5.8", :platform => :Macintosh },
114
+ "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-us) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4" =>
115
+ { :type => :Browser, :name => :Safari, :version => "5.0.3", :os_name => :MacOSX, :os_version => "10.6.6", :platform => :Macintosh },
116
+ "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; de-de) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10" =>
117
+ { :type => :Browser, :name => :Safari, :version => "4.0.4", :os_name => :MacOSX, :os_version => "10.6.2", :platform => :Macintosh },
118
+ "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10" =>
119
+ { :type => :Browser, :name => :Safari, :version => "4.0.4", :os_name => :Windows, :os_version => "XP", :platform => :Windows },
120
+ "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/525.28.3 (KHTML, like Gecko) Version/3.2.3 Safari/525.28.3" =>
121
+ { :type => :Browser, :name => :Safari, :version => "3.2.3", :os_name => :MacOSX, :os_version => "10.5.7", :platform => :Macintosh },
122
+ "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/418.8 (KHTML, like Gecko) Safari/419.3" =>
123
+ { :type => :Browser, :name => :Safari, :version => "2.0.4", :os_name => :MacOSX, :os_version => nil, :platform => :Macintosh },
124
+ "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/412 (KHTML, like Gecko) Safari/412" =>
125
+ { :type => :Browser, :name => :Safari, :version => "2.0", :os_name => :MacOSX, :os_version => nil, :platform => :Macintosh },
126
+ "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.9 (KHTML, like Gecko) Safari/312.6" =>
127
+ { :type => :Browser, :name => :Safari, :version => "1.3.2", :os_name => :MacOSX, :os_version => nil, :platform => :Macintosh },
128
+ "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; es) AppleWebKit/85 (KHTML, like Gecko) Safari/85" =>
129
+ { :type => :Browser, :name => :Safari, :version => "1.0", :os_name => :MacOSX, :os_version => nil, :platform => :Macintosh },
130
+ "Safari/6533.19.4 CFNetwork/454.11.5 Darwin/10.6.0 (i386) (iMac8%2C1)" =>
131
+ { :type => :Browser, :name => :Safari, :version => "6533.19.4", :os_name => :MacOSX, :os_version => "10.6.6", :platform => :Macintosh },
132
+
133
+ # Safari based
134
+ "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; de-de) AppleWebKit/533.18.1 (KHTML, like Gecko) Fluid/0.9.6 Safari/533.18.1" =>
135
+ { :type => :Browser, :name => :Fluid, :version => "0.9.6", :os_name => :MacOSX, :os_version => "10.5.8", :platform => :Macintosh },
136
+ "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; de-de) AppleWebKit/533.17.8 (KHTML, like Gecko) Fluid/0.9.6 Safari/533.17.8" =>
137
+ { :type => :Browser, :name => :Fluid, :version => "0.9.6", :os_name => :MacOSX, :os_version => "10.5.8", :platform => :Macintosh },
138
+ "Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US) AppleWebKit/525.18 (KHTML, like Gecko, Safari/525.20) OmniWeb/v622.4.0.109283" =>
139
+ { :type => :Browser, :name => :OmniWeb, :version => "v622.4.0.109283", :os_name => :MacOSX, :os_version => nil, :platform => :Macintosh },
140
+ "MobileSafari/6531.22.7 CFNetwork/485.2 Darwin/10.3.1" =>
141
+ { :type => :Browser, :name => :MobileSafari, :version => "6531.22.7", :os_name => :Darwin, :os_version => "10.3.1", :platform => :Darwin },
142
+ "Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Epiphany/2.30.6 Safari/534.7" =>
143
+ { :type => :Browser, :name => :Epiphany, :version => "2.30.6", :os_name => :Linux, :os_version => nil, :platform => :X11 },
144
+ "Mozilla/5.0 (X11; U; OpenBSD arm; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Safari/531.2+ Epiphany/2.30.0" =>
145
+ { :type => :Browser, :name => :Epiphany, :version => "2.30.0", :os_name => :Linux, :os_version => "OpenBSD", :platform => :X11 },
146
+ "Mozilla/5.0 (X11; U; Linux x86_64; zh-cn) AppleWebKit/531.2+ (KHTML, like Gecko) Safari/531.2+ Epiphany/2.28.0 SUSE/2.28.0-2.4" =>
147
+ { :type => :Browser, :name => :Epiphany, :version => "2.28.0", :os_name => :Linux, :os_version => "SUSE", :platform => :X11 },
148
+ "Mozilla/5.0 (compatible; Konqueror/4.4; Linux) KHTML/4.4.1 (like Gecko) Fedora/4.4.1-1.fc12" =>
149
+ { :type => :Browser, :name => :Konqueror, :version => "4.4", :os_name => :Linux, :os_version => "Fedora", :platform => :X11 },
150
+ "Mozilla/5.0 (compatible; Konqueror/4.3; Linux 2.6.31-16-generic; X11) KHTML/4.3.2 (like Gecko)" =>
151
+ { :type => :Browser, :name => :Konqueror, :version => "4.3", :os_name => :Linux, :os_version => nil, :platform => :X11 },
152
+ "Mozilla/5.0 (compatible; Konqueror/4.0; Windows) KHTML/4.0.83 (like Gecko)" =>
153
+ { :type => :Browser, :name => :Konqueror, :version => "4.0", :os_name => :Windows, :os_version => nil, :platform => :Windows },
154
+
155
+ # Chrome
156
+ "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.638.0 Safari/534.16" =>
157
+ { :type => :Browser, :name => :Chrome, :version => "10.0.638.0", :os_name => :Windows, :os_version => "7", :platform => :Windows },
158
+ "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.15 (KHTML, like Gecko) Ubuntu/10.10 Chromium/10.0.613.0 Chrome/10.0.613.0 Safari/534.15" =>
159
+ { :type => :Browser, :name => :Chrome, :version => "10.0.613.0", :os_name => :Linux, :os_version => "Ubuntu", :platform => :X11 },
160
+ "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.231 Safari/534.10" =>
161
+ { :type => :Browser, :name => :Chrome, :version => "8.0.552.231", :os_name => :MacOSX, :os_version => "10.6.4", :platform => :Macintosh },
162
+
163
+ # Chrome based
164
+ "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.237 Safari/534.10 chromeframe/8.0.552.237" =>
165
+ { :type => :Browser, :name => :Chromeframe, :version => "8.0.552.237", :os_name => :Windows, :os_version => "7", :platform => :Windows },
166
+ "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6.6; BTRS26718; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C) chromeframe/8.0.552.237" =>
167
+ { :type => :Browser, :name => :Chromeframe, :version => "8.0.552.237", :os_name => :Windows, :os_version => "7", :platform => :Windows },
168
+ "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Iron/4.0.280.0 Chrome/4.0.280.0 Safari/532.9" =>
169
+ { :type => :Browser, :name => :Iron, :version => "4.0.280.0", :os_name => :Windows, :os_version => "7", :platform => :Windows },
170
+ "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Iron/5.0.381.0 Chrome/5.0.381 Safari/533.4" =>
171
+ { :type => :Browser, :name => :Iron, :version => "5.0.381.0", :os_name => :MacOSX, :os_version => "10.5.8", :platform => :Macintosh },
172
+ "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.10 (KHTML, like Gecko) RockMelt/0.8.40.147 Chrome/8.0.552.231 Safari/534.10" =>
173
+ { :type => :Browser, :name => :RockMelt, :version => "0.8.40.147", :os_name => :MacOSX, :os_version => "10.6.6", :platform => :Macintosh },
174
+
175
+ # Opera
176
+ "Opera/9.80 (Windows NT 6.1; U; de) Presto/2.7.62 Version/11.00" =>
177
+ { :type => :Browser, :name => :Opera, :version => "11.00", :os_name => :Windows, :os_version => "7", :platform => :Windows },
178
+ "Opera/9.80 (X11; Linux i686; U; en-GB) Presto/2.6.30 Version/10.62" =>
179
+ { :type => :Browser, :name => :Opera, :version => "10.62", :os_name => :Linux, :os_version => nil, :platform => :X11 },
180
+ "Opera/9.80 (Windows NT 6.1; U; en) Presto/2.5.24 Version/10.54" =>
181
+ { :type => :Browser, :name => :Opera, :version => "10.54", :os_name => :Windows, :os_version => "7", :platform => :Windows },
182
+ "Opera/10.00 (X11; Linux i686 ; U; en) Presto/2.2.0" =>
183
+ { :type => :Browser, :name => :Opera, :version => "10.00", :os_name => :Linux, :os_version => nil, :platform => :X11 },
184
+ "Opera/9.25 (Windows NT 6.0; U; en)" =>
185
+ { :type => :Browser, :name => :Opera, :version => "9.25", :os_name => :Windows, :os_version => "Vista", :platform => :Windows },
186
+ "Mozilla/5.0 (Macintosh; PPC Mac OS X; U; en) Opera 8.5" =>
187
+ { :type => :Browser, :name => :Opera, :version => "8.5", :os_name => :MacOSX, :os_version => nil, :platform => :Macintosh },
188
+ "Mozilla/4.0 (compatible; MSIE 6.0; Mac_PowerPC Mac OS X; en) Opera 8.5" =>
189
+ { :type => :Browser, :name => :Opera, :version => "8.5", :os_name => :MacOSX, :os_version => nil, :platform => :Macintosh },
190
+ "Opera/8.5 (Macintosh; PPC Mac OS X; U; en)" =>
191
+ { :type => :Browser, :name => :Opera, :version => "8.5", :os_name => :MacOSX, :os_version => nil, :platform => :Macintosh },
192
+ "Opera/8.01 (Windows NT 5.1)" =>
193
+ { :type => :Browser, :name => :Opera, :version => "8.01", :os_name => :Windows, :os_version => "XP", :platform => :Windows },
194
+ "Mozilla/5.0 (Windows NT 5.1; U; en) Opera 8.01" =>
195
+ { :type => :Browser, :name => :Opera, :version => "8.01", :os_name => :Windows, :os_version => "XP", :platform => :Windows },
196
+ "Mozilla/4.0 (compatible; MSIE 5.0; Windows 95) Opera 6.01 [en]" =>
197
+ { :type => :Browser, :name => :Opera, :version => "6.01", :os_name => :Windows, :os_version => "95", :platform => :Windows },
198
+
199
+ # Opera Mini/Mobile
200
+ "Opera/9.80 (BlackBerry; Opera Mini/5.1.22303/22.453; U; de) Presto/2.5.25 Version/10.54" =>
201
+ { :type => :Browser, :name => :OperaMini, :version => "5.1.22303", :os_name => :BlackBerry, :os_version => nil, :platform => :BlackBerry },
202
+ "Opera/9.80 (J2ME/MIDP; Opera Mini/5.1.22296/22.453; U; en) Presto/2.5.25 Version/10.54" =>
203
+ { :type => :Browser, :name => :OperaMini, :version => "5.1.22296", :os_name => :"J2ME/MIDP", :os_version => nil, :platform => :"J2ME/MIDP" },
204
+ "Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.13337/504; U; en) Presto/2.2.0" =>
205
+ { :type => :Browser, :name => :OperaMini, :version => "4.2.13337", :os_name => :"J2ME/MIDP", :os_version => nil, :platform => :"J2ME/MIDP" },
206
+ "Opera/9.80 (S60; SymbOS; Opera Mobi/499; U; en-GB) Presto/2.4.18 Version/10.00" =>
207
+ { :type => :Browser, :name => :OperaMobile, :version => "10.00", :os_name => :SymbianOS, :os_version => nil, :platform => :SymbianOS },
208
+ "Opera/9.80 (Linux armv7l; Maemo; Opera Mobi/4; U; de) Presto/2.5.28 Version/10.1" =>
209
+ { :type => :Browser, :name => :OperaMobile, :version => "10.1", :os_name => :Linux, :os_version => "Maemo", :platform => :X11 },
210
+
211
+ # MSIE
212
+ "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)" =>
213
+ { :type => :Browser, :name => :MSIE, :version => "9.0", :os_name => :Windows, :os_version => "7", :platform => :Windows },
214
+ "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; .NET4.0C; InfoPath.3)" =>
215
+ { :type => :Browser, :name => :MSIE, :version => "8.0", :os_name => :Windows, :os_version => "7", :platform => :Windows },
216
+ "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3; .NET4.0E)" =>
217
+ { :type => :Browser, :name => :MSIE, :version => "8.0", :os_name => :Windows, :os_version => "7", :platform => :Windows },
218
+ "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6)" =>
219
+ { :type => :Browser, :name => :MSIE, :version => "8.0", :os_name => :Windows, :os_version => "XP", :platform => :Windows },
220
+ "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6.4; .NET CLR 1.1.4322; FDM; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)" =>
221
+ { :type => :Browser, :name => :MSIE, :version => "7.0", :os_name => :Windows, :os_version => "XP", :platform => :Windows },
222
+ "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; ZangoToolbar 4.8.2)" =>
223
+ { :type => :Browser, :name => :MSIE, :version => "6.0", :os_name => :Windows, :os_version => "XP", :platform => :Windows },
224
+ "Mozilla/4.0 (compatible; MSIE 5.14; Mac_PowerPC)" =>
225
+ { :type => :Browser, :name => :MSIE, :version => "5.14", :os_name => :MacOS, :os_version => nil, :platform => :Macintosh },
226
+ "Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; IDG.pl; Alexa Toolbar)" =>
227
+ { :type => :Browser, :name => :MSIE, :version => "5.5", :os_name => :Windows, :os_version => "98", :platform => :Windows },
228
+ "Mozilla/4.0 (compatible; MSIE 7.0)" =>
229
+ { :type => :Browser, :name => :MSIE, :version => "7.0", :os_name => nil, :os_version => nil, :platform => nil },
230
+ "Mozilla/4.0 (compatible; MSIE 6.0; Windows XP)" =>
231
+ { :type => :Browser, :name => :MSIE, :version => "6.0", :os_name => :Windows, :os_version => "XP", :platform => :Windows },
232
+
233
+ # iPhone / iPad / iPod
234
+ "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; de-de) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5" =>
235
+ { :type => :Browser, :name => :MobileSafari, :version => "5.0.2", :os_name => :iOS, :os_version => "4.2.1", :platform => :iPhone },
236
+ "Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_3 like Mac OS X; de-de) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7E18 Safari/528.16" =>
237
+ { :type => :Browser, :name => :MobileSafari, :version => "4.0", :os_name => :iOS, :os_version => "3.1.3", :platform => :iPhone },
238
+ "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile/8C148" =>
239
+ { :type => :Browser, :name => :MobileSafari, :version => "8C148", :os_name => :iOS, :os_version => "4.2.1", :platform => :iPhone },
240
+ "Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_1 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F136 Safari/525.20" =>
241
+ { :type => :Browser, :name => :MobileSafari, :version => "3.1.1", :os_name => :iOS, :os_version => "2.1", :platform => :iPhone },
242
+ "Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1C28 Safari/419.3" =>
243
+ { :type => :Browser, :name => :MobileSafari, :version => "3.0", :os_name => :iOS, :os_version => nil, :platform => :iPhone },
244
+
245
+ "Mozilla/5.0 (iPod; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7" =>
246
+ { :type => :Browser, :name => :MobileSafari, :version => "4.0.5", :os_name => :iOS, :os_version => "4.0", :platform => :iPod },
247
+ "Mozilla/5.0 (iPod; U; CPU iPhone OS 2_2_1 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11a Safari/525.20" =>
248
+ { :type => :Browser, :name => :MobileSafari, :version => "3.1.1", :os_name => :iOS, :os_version => "2.2.1", :platform => :iPod },
249
+ "Mozilla/5.0 (iPod; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3A100a Safari/419.3" =>
250
+ { :type => :Browser, :name => :MobileSafari, :version => "3.0", :os_name => :iOS, :os_version => nil, :platform => :iPod },
251
+
252
+ "Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; es-es) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405" =>
253
+ { :type => :Browser, :name => :MobileSafari, :version => "7B405", :os_name => :iOS, :os_version => "3.2.1", :platform => :iPad },
254
+ "Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; es-es) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B405 Safari/531.21.10" =>
255
+ { :type => :Browser, :name => :MobileSafari, :version => "4.0.4", :os_name => :iOS, :os_version => "3.2.1", :platform => :iPad },
256
+ "Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; de-de) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5" =>
257
+ { :type => :Browser, :name => :MobileSafari, :version => "5.0.2", :os_name => :iOS, :os_version => "4.2.1", :platform => :iPad },
258
+
259
+ # Android
260
+ "Mozilla/5.0 (Linux; U; Android 1.1; en-gb; dream) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2" =>
261
+ { :type => :Browser, :name => :AndroidWebkit, :version => "3.0.4", :os_name => :Android, :os_version => "1.1", :platform => :Android },
262
+ "Mozilla/5.0 (Linux; U; Android 0.5; en-us) AppleWebKit/522+ (KHTML, like Gecko) Safari/419.3" =>
263
+ { :type => :Browser, :name => :AndroidWebkit, :version => nil, :os_name => :Android, :os_version => "0.5", :platform => :Android },
264
+ "Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17" =>
265
+ { :type => :Browser, :name => :AndroidWebkit, :version => "4.0", :os_name => :Android, :os_version => "2.1", :platform => :Android },
266
+
267
+ # Palm (Pre)
268
+ "Mozilla/5.0 (webOS/1.3; U; en-US) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Desktop/1.0" =>
269
+ { :type => :Browser, :name => :webOSWebkit, :version => "1.0", :os_name => :webOS, :os_version => "1.3", :platform => :webOS },
270
+
271
+ # Mobiles
272
+ "Mozilla/4.1 (compatible; MSIE 5.0; Symbian OS; Nokia 3650;424) Opera 6.10 [en]" =>
273
+ { :type => :Browser, :name => :OperaMobile, :version => "6.10", :os_name => :SymbianOS, :os_version => nil, :platform => :SymbianOS },
274
+ "Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; Nokia 6600/4.09.1; 6329) Opera 8.00 [en]" =>
275
+ { :type => :Browser, :name => :OperaMobile, :version => "8.00", :os_name => :SymbianOS, :os_version => nil, :platform => :SymbianOS },
276
+ "Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaX6-00/30.0.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.6.6 3gpp-gba,gzip(gfe),gzip(gfe),gzip(gfe)" =>
277
+ { :type => :Browser, :name => :AppleWebKit, :version => "525", :os_name => :SymbianOS, :os_version => "9.4", :platform => :SymbianOS },
278
+ "Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 Nokia6120c/3.83; Profile/MIDP-2.0 Configuration/CLDC-1.1) AppleWebKit/413 (KHTML, like Gecko) Safari/413" =>
279
+ { :type => :Browser, :name => :Safari, :version => "413", :os_name => :SymbianOS, :os_version => "9.2", :platform => :SymbianOS },
280
+ "Mozilla/5.0 (SymbianOS/9.1; U; en-us) AppleWebKit/413 (KHTML, like Gecko) Safari/413 es61i" =>
281
+ { :type => :Browser, :name => :AppleWebKit, :version => "413", :os_name => :SymbianOS, :os_version => "9.1", :platform => :SymbianOS },
282
+ "HTC_HD2_T8585 Opera/9.70 (Windows NT 5.1; U; de)" =>
283
+ { :type => :Browser, :name => :Opera, :version => "9.70", :os_name => :Windows, :os_version => "XP", :platform => :Windows },
284
+ "Swisscom/1.0/HTC_Touch_Pro/ Opera/9.50 (Windows NT 5.1; U; de)" =>
285
+ { :type => :Browser, :name => :Opera, :version => "9.50", :os_name => :Windows, :os_version => "XP", :platform => :Windows },
286
+
287
+ # ApiClients
288
+ "curl/7.20.0 (x86_64-pc-linux-gnu) libcurl/7.20.0 OpenSSL/0.9.8l zlib/1.2.3" =>
289
+ { :type => :ApiClient, :name => :curl, :version => "7.20.0", :os_name => :Linux, :os_version => nil, :platform => :X11 },
290
+ "Yahoo Pipes 2.0" =>
291
+ { :type => :ApiClient, :name => :YahooPipes, :version => "2.0", :os_name => nil, :os_version => nil, :platform => nil },
292
+ "Zendesk" =>
293
+ { :type => :ApiClient, :name => :Zendesk, :version => nil, :os_name => nil, :os_version => nil, :platform => nil },
294
+ "Python-urllib/2.6" =>
295
+ { :type => :ApiClient, :name => :"Python-urllib", :version => "2.6", :os_name => nil, :os_version => nil, :platform => nil },
296
+ "Ruby" =>
297
+ { :type => :ApiClient, :name => :Ruby, :version => nil, :os_name => nil, :os_version => nil, :platform => nil },
298
+ "PEAR HTTP_Request class ( http://pear.php.net/ )" =>
299
+ { :type => :ApiClient, :name => :PearPHP, :version => nil, :os_name => nil, :os_version => nil, :platform => nil },
300
+ "NativeHost" =>
301
+ { :type => :ApiClient, :name => :CappucinosNativeHost, :version => nil, :os_name => nil, :os_version => nil, :platform => nil },
302
+ "Java/1.6.0_20" =>
303
+ { :type => :ApiClient, :name => :Java, :version => "1.6.0_20", :os_name => nil, :os_version => nil, :platform => nil },
304
+ "Systemeinstellungen5.2 CFNetwork/438.16 Darwin/9.8.0 (i386) (MacBookPro5%2C5)" =>
305
+ { :type => :ApiClient, :name => :SystemPreferences, :version => nil, :os_name => :MacOSX, :os_version => "10.5.8", :platform => :Macintosh },
306
+ "Systemeinstellungen/7.0 CFNetwork/454.11.5 Darwin/10.6.0 (i386) (iMac8%2C1)" =>
307
+ { :type => :ApiClient, :name => :SystemPreferences, :version => "7.0", :os_name => :MacOSX, :os_version => "10.6.6", :platform => :Macintosh },
308
+ "SystemUIServer248.9 CFNetwork/438.16 Darwin/9.8.0 (i386) (iMac8%2C1)" =>
309
+ { :type => :ApiClient, :name => :SystemUIServer, :version => nil, :os_name => :MacOSX, :os_version => "10.5.8", :platform => :Macintosh },
310
+ "SystemUIServer/298.16 CFNetwork/454.11.5 Darwin/10.5.0 (i386) (MacPro3%2C1)" =>
311
+ { :type => :ApiClient, :name => :SystemUIServer, :version => "298.16", :os_name => :MacOSX, :os_version => "10.6.5", :platform => :Macintosh },
312
+ "AppEngine-Google; (+http://code.google.com/appengine; appid: aquantum-todo)" =>
313
+ { :type => :ApiClient, :name => :"AppEngine-Google", :version => "appid: aquantum-todo", :os_name => nil, :os_version => nil, :platform => nil },
314
+ "AppEngine-Google; (+http://code.google.com/appengine)" =>
315
+ { :type => :ApiClient, :name => :"AppEngine-Google", :version => nil, :os_name => nil, :os_version => nil, :platform => nil },
316
+ "Twisted PageGetter" =>
317
+ { :type => :ApiClient, :name => :PythonTwistedPageGetter, :version => nil, :os_name => nil, :os_version => nil, :platform => nil },
318
+
319
+ # Others
320
+ "1PasswordThumbs/1 CFNetwork/454.11.5 Darwin/10.6.0 (i386) (MacBookPro4%2C1)" =>
321
+ { :type => :Others, :name => :"1PasswordThumbs", :version => "1", :os_name => :MacOSX, :os_version => "10.6.6", :platform => :Macintosh },
322
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X) Word/12.25.0" =>
323
+ { :type => :Others, :name => :MSWord, :version => "12.25.0", :os_name => :MacOSX, :os_version => nil, :platform => :Macintosh },
324
+ "Microsoft Office/14.0 (Windows NT 6.1; Microsoft Outlook 14.0.5128; Pro; ms-office; MSOffice 14)" =>
325
+ { :type => :Others, :name => :MSOffice, :version => "14.0", :os_name => :Windows, :os_version => "7", :platform => :Windows },
326
+
327
+ # HttpCheckers
328
+ "check_http/v2053 (nagios-plugins 1.4.13)" =>
329
+ { :type => :HttpChecker, :name => :Nagios, :version => "v2053", :os_name => nil, :os_version => nil, :platform => nil },
330
+ "Pingdom.com_bot_version_1.4_(http://www.pingdom.com/)" =>
331
+ { :type => :HttpChecker, :name => :PingdomBot, :version => "1.4", :os_name => nil, :os_version => nil, :platform => nil },
332
+ "NewRelicPinger/1.0" =>
333
+ { :type => :HttpChecker, :name => :NewRelicPinger, :version => "1.0", :os_name => nil, :os_version => nil, :platform => nil },
334
+ "W3C_Validator/1.1" =>
335
+ { :type => :HttpChecker, :name => :W3C_Validator, :version => "1.1", :os_name => nil, :os_version => nil, :platform => nil },
336
+ "FeedValidator/1.3" =>
337
+ { :type => :HttpChecker, :name => :FeedValidator, :version => "1.3", :os_name => nil, :os_version => nil, :platform => nil },
338
+
339
+ # Feed Reader/Parser
340
+ "Windows-RSS-Platform/2.0 (MSIE 9.0; Windows NT 6.1)" =>
341
+ { :type => :FeedReader, :name => :"Windows-RSS-Platform", :version => "2.0", :os_name => :Windows, :os_version => "7", :platform => :Windows },
342
+ "Vienna/2.5.0.2501" =>
343
+ { :type => :FeedReader, :name => :Vienna, :version => "2.5.0.2501", :os_name => nil, :os_version => nil, :platform => nil },
344
+ "NewsGatorOnline/2.0 (http://www.newsgator.com; 1 subscribers)" =>
345
+ { :type => :FeedReader, :name => :NewsGatorOnline, :version => "2.0", :os_name => nil, :os_version => nil, :platform => nil },
346
+ "NewsFire/84 CFNetwork/454.11.5 Darwin/10.6.0 (i386) (iMac11%2C3)" =>
347
+ { :type => :FeedReader, :name => :NewsFire, :version => "84", :os_name => :MacOSX, :os_version => "10.6.6", :platform => :Macintosh },
348
+ "NetNewsWire/3.2b24 (Mac OS X; http://www.newsgator.com/Individuals/NetNewsWire/)" =>
349
+ { :type => :FeedReader, :name => :NetNewsWire, :version => "3.2b24", :os_name => nil, :os_version => nil, :platform => nil },
350
+ "MWFeedParser" =>
351
+ { :type => :FeedReader, :name => :MWFeedParser, :version => nil, :os_name => nil, :os_version => nil, :platform => nil },
352
+ "SimplePie/1.1.1 (Feed Parser; http://simplepie.org; Allow like Gecko) Build/20080315205900" =>
353
+ { :type => :FeedReader, :name => :SimplePie, :version => "1.1.1", :os_name => nil, :os_version => nil, :platform => nil },
354
+ "MagpieRSS/0.72 \(+http://magpierss.sf.net\)" =>
355
+ { :type => :FeedReader, :name => :MagpieRSS, :version => "0.72", :os_name => nil, :os_version => nil, :platform => nil },
356
+ "Feedfetcher-Google; (+http://www.google.com/feedfetcher.html; feed-id=6486597085114830250)" =>
357
+ { :type => :FeedReader, :name => :"Feedfetcher-Google", :version => nil, :os_name => nil, :os_version => nil, :platform => nil },
358
+ "Feedfetcher-Google; (+http://www.google.com/feedfetcher.html; 1 subscribers; feed-id=10493421032871565854)" =>
359
+ { :type => :FeedReader, :name => :"Feedfetcher-Google", :version => nil, :os_name => nil, :os_version => nil, :platform => nil },
360
+ "Apple-PubSub/65.20" =>
361
+ { :type => :FeedReader, :name => :"Apple-PubSub", :version => "65.20", :os_name => nil, :os_version => nil, :platform => nil },
362
+ "Netvibes (http://www.netvibes.com/; 1 subscribers; feedID: 6639445)" =>
363
+ { :type => :FeedReader, :name => :Netvibes, :version => nil, :os_name => nil, :os_version => nil, :platform => nil },
364
+ "AppleSyndication/38" =>
365
+ { :type => :FeedReader, :name => :AppleSyndication, :version => "38", :os_name => nil, :os_version => nil, :platform => nil },
366
+
367
+ # SearchBots
368
+ "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" =>
369
+ { :type => :SearchBot, :name => :Bingbot, :version => "2.0", :os_name => nil, :os_version => nil, :platform => nil },
370
+ "Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)" =>
371
+ { :type => :SearchBot, :name => :YahooSlurp, :version => nil, :os_name => nil, :os_version => nil, :platform => nil },
372
+ "Baiduspider+(+http://www.baidu.jp/spider/)" =>
373
+ { :type => :SearchBot, :name => :Baiduspider, :version => nil, :os_name => nil, :os_version => nil, :platform => nil },
374
+ "Baiduspider+(+http://www.baidu.com/search/spider.htm)" =>
375
+ { :type => :SearchBot, :name => :Baiduspider, :version => nil, :os_name => nil, :os_version => nil, :platform => nil },
376
+ "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.htm)" =>
377
+ { :type => :SearchBot, :name => :Baiduspider, :version => "2.0", :os_name => nil, :os_version => nil, :platform => nil },
378
+ "msnbot/2.0b (+http://search.msn.com/msnbot.htm)._" =>
379
+ { :type => :SearchBot, :name => :msnbot, :version => "2.0b", :os_name => nil, :os_version => nil, :platform => nil },
380
+ "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" =>
381
+ { :type => :SearchBot, :name => :Googlebot, :version => "2.1", :os_name => nil, :os_version => nil, :platform => nil },
382
+ "DoCoMo/2.0 N905i(c100;TB;W24H16) (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)" =>
383
+ { :type => :SearchBot, :name => :GooglebotMobile, :version => "2.1", :os_name => nil, :os_version => nil, :platform => nil },
384
+
385
+ # Engine Fallbacks
386
+ "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-au) AppleWebKit/533.19.4 (KHTML, like Gecko)" =>
387
+ { :type => :Browser, :name => :AppleWebKit, :version => "533.19.4", :os_name => :MacOSX, :os_version => "10.6.6", :platform => :Macintosh },
388
+ "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; de-de) AppleWebKit/533.17.9 (KHTML, like Gecko) 1Password/3.5.5/355003 (like Mobile/8C148 Safari/6533.18.5)" =>
389
+ { :type => :Browser, :name => :AppleWebKit, :version => "533.17.9", :os_name => :iOS, :os_version => "4.2.1", :platform => :iPhone },
390
+ "Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.14pre) Gecko/20110113 Ubuntu/9.10 (karmic)" =>
391
+ { :type => :Browser, :name => :Gecko, :version => "20110113", :os_name => :Linux, :os_version => "Ubuntu", :platform => :X11 },
392
+ "Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.7) Gecko/20070606" =>
393
+ { :type => :Browser, :name => :Gecko, :version => "20070606", :os_name => :Linux, :os_version => "Solaris", :platform => :X11 },
394
+ "Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.12) Gecko/20051105" =>
395
+ { :type => :Browser, :name => :Gecko, :version => "20051105", :os_name => :Linux, :os_version => "FreeBSD", :platform => :X11 },
396
+ }
397
+
398
+ EXAMPLES.each do |string, values|
399
+ context "when parsing #{string.inspect}" do
400
+ let(:user_agent) { Aua.parse(string) }
401
+ values.each do |key, value|
402
+ it "should return #{value} for #{key}" do
403
+ user_agent.send(key).should eql(value)
404
+ end
405
+ end
406
+ end
407
+ end
408
+ end
409
+
410
+ context "empty String" do
411
+ its(:raw) { should eql("")}
412
+ its(:products) { should eql([]) }
413
+ its(:versions) { should eql([]) }
414
+ its(:comments) { should eql([]) }
415
+
416
+ it "should return nil on #version_of" do
417
+ subject.version_of(nil).should eql(nil)
418
+ subject.version_of("Firefox").should eql(nil)
419
+ end
420
+
421
+ its(:os_string) { should eql(nil) }
422
+ its(:platform_string) { should eql(nil) }
423
+
424
+ its(:name) { should eql(nil) }
425
+ its(:type) { should eql(nil) }
426
+ its(:version) { should eql(nil) }
427
+ its(:os_name) { should eql(nil) }
428
+ its(:os_version) { should eql(nil) }
429
+ its(:platform) { should eql(nil) }
430
+
431
+ it{ should be_unknown }
432
+ its(:to_s) { should eql("Unknown: ")}
433
+ end
434
+
435
+ context "simple user agent string" do
436
+ subject{ Aua.new("Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; de; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13") }
437
+
438
+ its(:raw) { should eql("Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; de; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13")}
439
+ its(:products) { should eql(["Mozilla", "Gecko", "Firefox"]) }
440
+ its(:versions) { should eql(["5.0", "20101203", "3.6.13"]) }
441
+ its(:comments) { should eql([["Macintosh", "U", "Intel Mac OS X 10.6", "de", "rv:1.9.2.13"], [], []]) }
442
+
443
+ it "should return version on #version_of" do
444
+ subject.version_of("Mozilla").should eql("5.0")
445
+ subject.version_of("Firefox").should eql("3.6.13")
446
+ end
447
+
448
+ its(:platform_string) { should eql("Macintosh") }
449
+ its(:os_string) { should eql("Intel Mac OS X 10.6") }
450
+
451
+ it{ should_not be_unknown }
452
+ its(:to_s) { should eql("Browser Firefox/3.6.13 MacOSX/10.6 Macintosh")}
453
+ end
454
+
455
+ context "unknown user agent string" do
456
+ subject{ Aua.new("Mozilla/5.0 (Bla; U; Krank; de; rv:1.9.2.13) Less/20101203 Vrrrr/3.6.13") }
457
+
458
+ its(:raw) { should eql("Mozilla/5.0 (Bla; U; Krank; de; rv:1.9.2.13) Less/20101203 Vrrrr/3.6.13")}
459
+ its(:products) { should eql(["Mozilla", "Less", "Vrrrr"]) }
460
+ its(:versions) { should eql(["5.0", "20101203", "3.6.13"]) }
461
+ its(:comments) { should eql([["Bla", "U", "Krank", "de", "rv:1.9.2.13"], [], []]) }
462
+
463
+ it "should return version on #version_of" do
464
+ subject.version_of("Mozilla").should eql("5.0")
465
+ subject.version_of("Vrrrr").should eql("3.6.13")
466
+ end
467
+
468
+ its(:platform_string) { should eql("Bla") }
469
+ its(:os_string) { should eql("Krank") }
470
+
471
+ it{ should be_unknown }
472
+ its(:to_s) { should eql("Unknown: Mozilla/5.0 (Bla; U; Krank; de; rv:1.9.2.13) Less/20101203 Vrrrr/3.6.13")}
473
+ end
474
+ end