aua 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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