browser 0.6.0 → 0.7.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.
- checksums.yaml +4 -4
- data/README.md +6 -1
- data/bots.yml +16 -1
- data/lib/browser.rb +4 -3
- data/lib/browser/methods/bots.rb +6 -2
- data/lib/browser/methods/platform.rb +6 -1
- data/lib/browser/version.rb +1 -1
- data/test/browser_spec.rb +94 -62
- data/test/ua.yml +3 -0
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 93f6d12da42a0b1944f3fb44ed75614d02e51e20
|
|
4
|
+
data.tar.gz: 876e5220638da02b508fb0070333d5c6426847c9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ae24a76b7d3ea2dd0737c870605a5cff9c7347aa41474da7a478f17f06272fa21dffbb1eb5ab612e225153cc9727c8761987a48ccde24ad68e4a297f4f58f691
|
|
7
|
+
data.tar.gz: bca7fb51b2bd60ccb4f3fda10e4df85af44312d577bd4a825fa8f4b7a2fe4a5adcedaab1d54e983db46b6f71a187e046a204f370c676b81bfb2001f7ee088efd
|
data/README.md
CHANGED
|
@@ -19,7 +19,8 @@ require "browser"
|
|
|
19
19
|
|
|
20
20
|
browser = Browser.new(:ua => "some string", :accept_language => "en-us")
|
|
21
21
|
browser.name # readable browser name
|
|
22
|
-
browser.version
|
|
22
|
+
browser.version # major version number
|
|
23
|
+
browser.full_version
|
|
23
24
|
browser.safari?
|
|
24
25
|
browser.opera?
|
|
25
26
|
browser.chrome?
|
|
@@ -39,6 +40,10 @@ browser.linux?
|
|
|
39
40
|
browser.blackberry?
|
|
40
41
|
browser.bot?
|
|
41
42
|
browser.search_engine?
|
|
43
|
+
browser.phantom_js?
|
|
44
|
+
browser.quicktime?
|
|
45
|
+
browser.core_media?
|
|
46
|
+
browser.silk?
|
|
42
47
|
browser.meta # an array with several attributes
|
|
43
48
|
browser.to_s # the meta info joined by space
|
|
44
49
|
```
|
data/bots.yml
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
360Spider: "360Spider"
|
|
2
|
+
ADmantX: "ADmantX Platform Semantic Analyzer"
|
|
1
3
|
AdsBot-Google: "Google Adwords"
|
|
2
4
|
AhrefsBot: "Ahrefs backlinks research tool"
|
|
3
5
|
alexa: "Alexa Crawler"
|
|
4
6
|
Apache-HttpClient: "Java http library"
|
|
5
7
|
ApacheBench: "ApacheBench (ab)"
|
|
6
8
|
AppEngine-Google: "Google App Engine"
|
|
9
|
+
Ask Jeeves: "Ask Jeeves"
|
|
7
10
|
AsyncHttpClient: "Java http and WebSocket client library"
|
|
8
11
|
awe.sm: "Awe.sm URL expander"
|
|
9
12
|
Baidu: "Chinese search engine"
|
|
@@ -23,6 +26,7 @@ curl: "curl unix CLI http client"
|
|
|
23
26
|
developers.google.com/+/web/snippet/: "Google Plus"
|
|
24
27
|
DigitalPersona Fingerprint Software: "HP Fingerprint scanner"
|
|
25
28
|
DotBot: "Dot Bot"
|
|
29
|
+
DuckDuckBot: "Duck Duck Go"
|
|
26
30
|
Embedly: "Embedly"
|
|
27
31
|
EOAAgent: "EOAAgent"
|
|
28
32
|
EventMachine HttpClient: "Ruby http library"
|
|
@@ -42,9 +46,9 @@ Googlebot: "Google spider"
|
|
|
42
46
|
Hatena::Bookmark: "Hatena::Bookmark"
|
|
43
47
|
heritrix: "heritrix"
|
|
44
48
|
HTMLParser: "HTMLParser"
|
|
45
|
-
HTTP_Request2: "HTTP_Request2"
|
|
46
49
|
HTTPClient: "HTTPClient"
|
|
47
50
|
https://developers.google.com/+/web/snippet: "Google+ Snippet Fetcher"
|
|
51
|
+
HTTP_Request2: "HTTP_Request2"
|
|
48
52
|
HubSpot Connect: "HubSpot Connect"
|
|
49
53
|
ia_archiver(OS-Wayback): "ia_archiver(OS-Wayback)"
|
|
50
54
|
iCoreService: "iCoreService"
|
|
@@ -52,6 +56,7 @@ InAGist: "URL resolver"
|
|
|
52
56
|
Insieve Bot: "Insieve Bot"
|
|
53
57
|
InsieveBot: "InsieveBot"
|
|
54
58
|
Instapaper: "Instapaper"
|
|
59
|
+
IstellaBot: "IstellaBot"
|
|
55
60
|
jack: "jack"
|
|
56
61
|
Jakarta Commons-HttpClient: "Jakarta Commons-HttpClient"
|
|
57
62
|
Jakarta Commons: "Jakarta Commons HttpClient"
|
|
@@ -67,12 +72,14 @@ libwww-perl: "Perl client-server library loved by script kids"
|
|
|
67
72
|
linkdexbot: "Linkdex Bot"
|
|
68
73
|
LinkedInBot: "LinkedIn"
|
|
69
74
|
LinksCrawler: "LinksCrawler"
|
|
75
|
+
Linode: "Linode Longview"
|
|
70
76
|
Lipperhey: "Lipperhey"
|
|
71
77
|
Livelapbot: "Livelapbot"
|
|
72
78
|
LoadTimeBot: "Load Time Bot"
|
|
73
79
|
LongURL: "URL expander service"
|
|
74
80
|
Lumibot: "Lumibot"
|
|
75
81
|
lwp-trivial: "Another Perl library loved by script kids"
|
|
82
|
+
magpie-crawler: "magpie-crawler"
|
|
76
83
|
Mail.RU_Bot: "Mail.ru Bot"
|
|
77
84
|
Mediapartners-Google: "Google Adsense bot"
|
|
78
85
|
MetaURI: "MetaURI"
|
|
@@ -94,6 +101,8 @@ peerindex: "peerindex"
|
|
|
94
101
|
PercolateCrawler: "PercolateCrawler"
|
|
95
102
|
PhantomJS: "PhantomJS"
|
|
96
103
|
Pingdom: "Pingdom monitoring"
|
|
104
|
+
Pinterest: "Pinterest"
|
|
105
|
+
publiclibraryarchive.org: "publiclibraryarchive.org"
|
|
97
106
|
PycURL: "Python http library"
|
|
98
107
|
Python-httplib2: "Python-httplib2"
|
|
99
108
|
python-requests: "Python http library"
|
|
@@ -109,6 +118,8 @@ Ruby/1.9.3: "Ruby/1.9.3"
|
|
|
109
118
|
Ruby: "Ruby"
|
|
110
119
|
Scrapy: "Scrapy"
|
|
111
120
|
SemrushBot: "SEO analysis bot"
|
|
121
|
+
SeznamBot: "SeznamBot"
|
|
122
|
+
ShopWiki: "ShopWiki"
|
|
112
123
|
ShortLinkTranslate: "Link shortener"
|
|
113
124
|
ShowyouBot: "Showyou iOS app spider"
|
|
114
125
|
Siege: "Joe Dog Siege"
|
|
@@ -119,6 +130,7 @@ spider: "generic web spider"
|
|
|
119
130
|
Spinn3r: "Spinn3r aggregator"
|
|
120
131
|
Test Certificate Info: "C http library?"
|
|
121
132
|
trendictionbot: "trendiction search"
|
|
133
|
+
TurnitinBot: "TurnitinBot"
|
|
122
134
|
TweetmemeBot: "TweetMeMe Crawler"
|
|
123
135
|
Twikle: "Social web search bot"
|
|
124
136
|
TwitJobSearch: "TwitJobSearch"
|
|
@@ -128,12 +140,15 @@ Twurly: "Twurly"
|
|
|
128
140
|
Typhoeus: "Typhoeus"
|
|
129
141
|
UnwindFetch: "Gnip URL expander"
|
|
130
142
|
UnwindFetchor: "Gnip crawler"
|
|
143
|
+
Vagabondo: "Vagabondo"
|
|
131
144
|
VB Project: "Visual Basic"
|
|
132
145
|
vkShare: "VKontake Sharer"
|
|
146
|
+
VoilaBot: "VoilaBot"
|
|
133
147
|
Webscout: "Webscout"
|
|
134
148
|
Wget: "wget unix CLI http client"
|
|
135
149
|
WordPress: "WordPress spider"
|
|
136
150
|
Xenu Link Sleuth: "Xenu Link Sleuth"
|
|
151
|
+
XoviBot: "XoviBot"
|
|
137
152
|
YandexBot: "Yandex spider"
|
|
138
153
|
YandexDirect: "Yandex Direct spider"
|
|
139
154
|
YandexMetrika: "Yandex Metrika spider"
|
data/lib/browser.rb
CHANGED
|
@@ -42,9 +42,9 @@ class Browser
|
|
|
42
42
|
alias_method :ua=, :user_agent=
|
|
43
43
|
|
|
44
44
|
NAMES = {
|
|
45
|
+
chrome: "Chrome", # Must come before android
|
|
45
46
|
android: "Android",
|
|
46
47
|
blackberry: "BlackBerry",
|
|
47
|
-
chrome: "Chrome",
|
|
48
48
|
core_media: "Apple CoreMedia",
|
|
49
49
|
firefox: "Firefox",
|
|
50
50
|
ie: "Internet Explorer",
|
|
@@ -65,7 +65,8 @@ class Browser
|
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
VERSIONS = {
|
|
68
|
-
|
|
68
|
+
chrome: %r[(?:Chrome|CriOS)/([\d.]+)],
|
|
69
|
+
default: %r[(?:Version|MSIE|Firefox|QuickTime|BlackBerry[^/]+|CoreMedia v|PhantomJS)[/ ]?([a-z0-9.]+)]i,
|
|
69
70
|
opera: %r[(?:Opera/.*? Version/([\d.]+)|Chrome/([\d.]+).*?OPR)],
|
|
70
71
|
ie: %r[(?:MSIE |Trident/.*?; rv:)([\d.]+)]
|
|
71
72
|
}
|
|
@@ -156,7 +157,7 @@ class Browser
|
|
|
156
157
|
|
|
157
158
|
# Detect if browser is Safari.
|
|
158
159
|
def safari?
|
|
159
|
-
ua =~ /Safari/ && ua !~ /Chrome|CriOS|PhantomJS/
|
|
160
|
+
ua =~ /Safari/ && ua !~ /Android|Chrome|CriOS|PhantomJS/
|
|
160
161
|
end
|
|
161
162
|
|
|
162
163
|
# Detect if browser is Firefox.
|
data/lib/browser/methods/bots.rb
CHANGED
|
@@ -5,11 +5,15 @@ class Browser
|
|
|
5
5
|
SEARCH_ENGINES = YAML.load_file(root.join("search_engines.yml"))
|
|
6
6
|
|
|
7
7
|
def self.detect_empty_ua!
|
|
8
|
-
|
|
8
|
+
@detect_empty_ua = true
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def self.detect_empty_ua?
|
|
12
|
+
!!@detect_empty_ua
|
|
9
13
|
end
|
|
10
14
|
|
|
11
15
|
def bot?
|
|
12
|
-
BOTS.any? {|key, _| ua.include?(key) }
|
|
16
|
+
Browser::Bots.detect_empty_ua? && ua.strip == "" || BOTS.any? {|key, _| ua.include?(key) }
|
|
13
17
|
end
|
|
14
18
|
|
|
15
19
|
def search_engine?
|
|
@@ -30,6 +30,11 @@ class Browser
|
|
|
30
30
|
ios? && !!(ua =~ /OS 7/)
|
|
31
31
|
end
|
|
32
32
|
|
|
33
|
+
# Detect if is iOS7.
|
|
34
|
+
def ios8?
|
|
35
|
+
ios? && !!(ua =~ /OS 8/)
|
|
36
|
+
end
|
|
37
|
+
|
|
33
38
|
# Detect if is BlackBerry 4.
|
|
34
39
|
def blackberry4?
|
|
35
40
|
blackberry? && !!(ua =~ %r[BlackBerry\d+/4])
|
|
@@ -57,7 +62,7 @@ class Browser
|
|
|
57
62
|
|
|
58
63
|
# Detect if current platform is Macintosh.
|
|
59
64
|
def mac?
|
|
60
|
-
|
|
65
|
+
ua =~ /Mac OS X/ && !ios?
|
|
61
66
|
end
|
|
62
67
|
|
|
63
68
|
# Detect if current platform is Windows.
|
data/lib/browser/version.rb
CHANGED
data/test/browser_spec.rb
CHANGED
|
@@ -4,6 +4,7 @@ require "spec_helper"
|
|
|
4
4
|
describe Browser do
|
|
5
5
|
before do
|
|
6
6
|
@browser = Browser.new
|
|
7
|
+
Browser::Bots.instance_variable_set("@detect_empty_ua", false)
|
|
7
8
|
end
|
|
8
9
|
|
|
9
10
|
it "yields self when block is given" do
|
|
@@ -48,7 +49,8 @@ describe Browser do
|
|
|
48
49
|
assert @browser.mobile?
|
|
49
50
|
assert @browser.modern?
|
|
50
51
|
assert @browser.ios?
|
|
51
|
-
|
|
52
|
+
refute @browser.tablet?
|
|
53
|
+
refute @browser.mac?
|
|
52
54
|
assert_equal "3.0", @browser.full_version
|
|
53
55
|
assert_equal "3", @browser.version
|
|
54
56
|
end
|
|
@@ -74,7 +76,8 @@ describe Browser do
|
|
|
74
76
|
assert @browser.mobile?
|
|
75
77
|
assert @browser.modern?
|
|
76
78
|
assert @browser.ios?
|
|
77
|
-
|
|
79
|
+
refute @browser.tablet?
|
|
80
|
+
refute @browser.mac?
|
|
78
81
|
assert_equal "3.0", @browser.full_version
|
|
79
82
|
assert_equal "3", @browser.version
|
|
80
83
|
end
|
|
@@ -89,7 +92,8 @@ describe Browser do
|
|
|
89
92
|
assert @browser.modern?
|
|
90
93
|
assert @browser.ios?
|
|
91
94
|
assert @browser.tablet?
|
|
92
|
-
|
|
95
|
+
refute @browser.mobile?
|
|
96
|
+
refute @browser.mac?
|
|
93
97
|
assert_equal "4.0.4", @browser.full_version
|
|
94
98
|
assert_equal "4", @browser.version
|
|
95
99
|
end
|
|
@@ -98,6 +102,7 @@ describe Browser do
|
|
|
98
102
|
@browser.ua = $ua["IOS4"]
|
|
99
103
|
assert @browser.ios?
|
|
100
104
|
assert @browser.ios4?
|
|
105
|
+
refute @browser.mac?
|
|
101
106
|
end
|
|
102
107
|
|
|
103
108
|
|
|
@@ -105,18 +110,28 @@ describe Browser do
|
|
|
105
110
|
@browser.ua = $ua["IOS5"]
|
|
106
111
|
assert @browser.ios?
|
|
107
112
|
assert @browser.ios5?
|
|
113
|
+
refute @browser.mac?
|
|
108
114
|
end
|
|
109
115
|
|
|
110
116
|
it "detects ios6" do
|
|
111
117
|
@browser.ua = $ua["IOS6"]
|
|
112
118
|
assert @browser.ios?
|
|
113
119
|
assert @browser.ios6?
|
|
120
|
+
refute @browser.mac?
|
|
114
121
|
end
|
|
115
122
|
|
|
116
123
|
it "detects ios7" do
|
|
117
124
|
@browser.ua = $ua["IOS7"]
|
|
118
125
|
assert @browser.ios?
|
|
119
126
|
assert @browser.ios7?
|
|
127
|
+
refute @browser.mac?
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
it "detects ios8" do
|
|
131
|
+
@browser.ua = $ua["IOS8"]
|
|
132
|
+
assert @browser.ios?
|
|
133
|
+
assert @browser.ios8?
|
|
134
|
+
refute @browser.mac?
|
|
120
135
|
end
|
|
121
136
|
|
|
122
137
|
it "detects ie6" do
|
|
@@ -125,7 +140,7 @@ describe Browser do
|
|
|
125
140
|
assert_equal "Internet Explorer", @browser.name
|
|
126
141
|
assert @browser.ie?
|
|
127
142
|
assert @browser.ie6?
|
|
128
|
-
|
|
143
|
+
refute @browser.modern?
|
|
129
144
|
assert_equal "6.0", @browser.full_version
|
|
130
145
|
assert_equal "6", @browser.version
|
|
131
146
|
end
|
|
@@ -136,7 +151,7 @@ describe Browser do
|
|
|
136
151
|
assert_equal "Internet Explorer", @browser.name
|
|
137
152
|
assert @browser.ie?
|
|
138
153
|
assert @browser.ie7?
|
|
139
|
-
|
|
154
|
+
refute @browser.modern?
|
|
140
155
|
assert_equal "7.0", @browser.full_version
|
|
141
156
|
assert_equal "7", @browser.version
|
|
142
157
|
end
|
|
@@ -147,8 +162,8 @@ describe Browser do
|
|
|
147
162
|
assert_equal "Internet Explorer", @browser.name
|
|
148
163
|
assert @browser.ie?
|
|
149
164
|
assert @browser.ie8?
|
|
150
|
-
|
|
151
|
-
|
|
165
|
+
refute @browser.modern?
|
|
166
|
+
refute @browser.compatibility_view?
|
|
152
167
|
assert_equal "8.0", @browser.full_version
|
|
153
168
|
assert_equal "8", @browser.version
|
|
154
169
|
end
|
|
@@ -159,8 +174,8 @@ describe Browser do
|
|
|
159
174
|
assert_equal "Internet Explorer", @browser.name
|
|
160
175
|
assert @browser.ie?
|
|
161
176
|
assert @browser.ie7?
|
|
162
|
-
|
|
163
|
-
|
|
177
|
+
refute @browser.ie8?
|
|
178
|
+
refute @browser.modern?
|
|
164
179
|
assert @browser.compatibility_view?
|
|
165
180
|
assert_equal "7.0", @browser.full_version
|
|
166
181
|
assert_equal "7", @browser.version
|
|
@@ -173,7 +188,7 @@ describe Browser do
|
|
|
173
188
|
assert @browser.ie?
|
|
174
189
|
assert @browser.ie9?
|
|
175
190
|
assert @browser.modern?
|
|
176
|
-
|
|
191
|
+
refute @browser.compatibility_view?
|
|
177
192
|
assert_equal "9.0", @browser.full_version
|
|
178
193
|
assert_equal "9", @browser.version
|
|
179
194
|
end
|
|
@@ -184,8 +199,8 @@ describe Browser do
|
|
|
184
199
|
assert_equal "Internet Explorer", @browser.name
|
|
185
200
|
assert @browser.ie?
|
|
186
201
|
assert @browser.ie7?
|
|
187
|
-
|
|
188
|
-
|
|
202
|
+
refute @browser.ie9?
|
|
203
|
+
refute @browser.modern?
|
|
189
204
|
assert @browser.compatibility_view?
|
|
190
205
|
assert_equal "7.0", @browser.full_version
|
|
191
206
|
assert_equal "7", @browser.version
|
|
@@ -198,7 +213,7 @@ describe Browser do
|
|
|
198
213
|
assert @browser.ie?
|
|
199
214
|
assert @browser.ie10?
|
|
200
215
|
assert @browser.modern?
|
|
201
|
-
|
|
216
|
+
refute @browser.compatibility_view?
|
|
202
217
|
assert_equal "10.0", @browser.full_version
|
|
203
218
|
assert_equal "10", @browser.version
|
|
204
219
|
end
|
|
@@ -209,8 +224,8 @@ describe Browser do
|
|
|
209
224
|
assert_equal "Internet Explorer", @browser.name
|
|
210
225
|
assert @browser.ie?
|
|
211
226
|
assert @browser.ie7?
|
|
212
|
-
|
|
213
|
-
|
|
227
|
+
refute @browser.ie10?
|
|
228
|
+
refute @browser.modern?
|
|
214
229
|
assert @browser.compatibility_view?
|
|
215
230
|
assert_equal "7.0", @browser.full_version
|
|
216
231
|
assert_equal "7", @browser.version
|
|
@@ -223,7 +238,7 @@ describe Browser do
|
|
|
223
238
|
assert @browser.ie?
|
|
224
239
|
assert @browser.ie11?
|
|
225
240
|
assert @browser.modern?
|
|
226
|
-
|
|
241
|
+
refute @browser.compatibility_view?
|
|
227
242
|
assert_equal "11.0", @browser.full_version
|
|
228
243
|
assert_equal "11", @browser.version
|
|
229
244
|
end
|
|
@@ -233,7 +248,7 @@ describe Browser do
|
|
|
233
248
|
|
|
234
249
|
assert_equal "Opera", @browser.name
|
|
235
250
|
assert @browser.opera?
|
|
236
|
-
|
|
251
|
+
refute @browser.modern?
|
|
237
252
|
assert_equal "11.64", @browser.full_version
|
|
238
253
|
assert_equal "11", @browser.version
|
|
239
254
|
end
|
|
@@ -246,7 +261,7 @@ describe Browser do
|
|
|
246
261
|
assert @browser.opera?
|
|
247
262
|
assert @browser.webkit?
|
|
248
263
|
assert @browser.modern?
|
|
249
|
-
|
|
264
|
+
refute @browser.chrome?
|
|
250
265
|
assert_equal "28.0.1500.37", @browser.full_version
|
|
251
266
|
assert_equal "28", @browser.version
|
|
252
267
|
end
|
|
@@ -256,7 +271,7 @@ describe Browser do
|
|
|
256
271
|
|
|
257
272
|
assert_equal "Firefox", @browser.name
|
|
258
273
|
assert @browser.firefox?
|
|
259
|
-
|
|
274
|
+
refute @browser.modern?
|
|
260
275
|
assert_equal "3.8", @browser.full_version
|
|
261
276
|
assert_equal "3", @browser.version
|
|
262
277
|
end
|
|
@@ -288,7 +303,7 @@ describe Browser do
|
|
|
288
303
|
|
|
289
304
|
assert_equal "Chrome", @browser.name
|
|
290
305
|
assert @browser.chrome?
|
|
291
|
-
|
|
306
|
+
refute @browser.safari?
|
|
292
307
|
assert @browser.webkit?
|
|
293
308
|
assert @browser.modern?
|
|
294
309
|
assert_equal "5.0.375.99", @browser.full_version
|
|
@@ -300,22 +315,35 @@ describe Browser do
|
|
|
300
315
|
|
|
301
316
|
assert_equal "Chrome", @browser.name
|
|
302
317
|
assert @browser.chrome?
|
|
303
|
-
|
|
318
|
+
refute @browser.safari?
|
|
304
319
|
assert @browser.webkit?
|
|
305
320
|
assert @browser.modern?
|
|
306
321
|
assert_equal "19.0.1084.60", @browser.full_version
|
|
307
322
|
assert_equal "19", @browser.version
|
|
308
323
|
end
|
|
309
324
|
|
|
325
|
+
it "detects samsung chrome" do
|
|
326
|
+
@browser.ua = $ua["SAMSUNG_CHROME"]
|
|
327
|
+
|
|
328
|
+
assert_equal "Chrome", @browser.name
|
|
329
|
+
assert @browser.chrome?
|
|
330
|
+
assert @browser.android?
|
|
331
|
+
refute @browser.safari?
|
|
332
|
+
assert @browser.webkit?
|
|
333
|
+
assert @browser.modern?
|
|
334
|
+
assert_equal "28.0.1500.94", @browser.full_version
|
|
335
|
+
assert_equal "28", @browser.version
|
|
336
|
+
end
|
|
337
|
+
|
|
310
338
|
it "detects android" do
|
|
311
339
|
@browser.ua = $ua["ANDROID"]
|
|
312
340
|
|
|
313
341
|
assert_equal "Android", @browser.name
|
|
314
342
|
assert @browser.android?
|
|
315
|
-
|
|
343
|
+
refute @browser.safari?
|
|
316
344
|
assert @browser.webkit?
|
|
317
345
|
assert @browser.mobile?
|
|
318
|
-
|
|
346
|
+
refute @browser.tablet?
|
|
319
347
|
assert @browser.modern?
|
|
320
348
|
assert_equal "3.1.2", @browser.full_version
|
|
321
349
|
assert_equal "3", @browser.version
|
|
@@ -326,9 +354,9 @@ describe Browser do
|
|
|
326
354
|
|
|
327
355
|
assert_equal "Android", @browser.name
|
|
328
356
|
assert @browser.android?
|
|
329
|
-
|
|
357
|
+
refute @browser.safari?
|
|
330
358
|
assert @browser.webkit?
|
|
331
|
-
|
|
359
|
+
refute @browser.mobile?
|
|
332
360
|
assert @browser.tablet?
|
|
333
361
|
assert @browser.modern?
|
|
334
362
|
assert_equal "4.0", @browser.full_version
|
|
@@ -341,7 +369,7 @@ describe Browser do
|
|
|
341
369
|
assert_equal "Internet Explorer", @browser.name
|
|
342
370
|
assert @browser.surface?
|
|
343
371
|
assert @browser.ie?
|
|
344
|
-
|
|
372
|
+
refute @browser.mobile?
|
|
345
373
|
assert @browser.tablet?
|
|
346
374
|
assert @browser.modern?
|
|
347
375
|
assert_equal "10.0", @browser.full_version
|
|
@@ -353,9 +381,9 @@ describe Browser do
|
|
|
353
381
|
|
|
354
382
|
assert_equal "BlackBerry", @browser.name
|
|
355
383
|
assert @browser.blackberry?
|
|
356
|
-
|
|
384
|
+
refute @browser.tablet?
|
|
357
385
|
assert @browser.mobile?
|
|
358
|
-
|
|
386
|
+
refute @browser.modern?
|
|
359
387
|
assert_equal "4.1.0", @browser.full_version
|
|
360
388
|
assert_equal "4", @browser.version
|
|
361
389
|
end
|
|
@@ -365,9 +393,9 @@ describe Browser do
|
|
|
365
393
|
|
|
366
394
|
assert_equal "BlackBerry", @browser.name
|
|
367
395
|
assert @browser.blackberry4?
|
|
368
|
-
|
|
396
|
+
refute @browser.tablet?
|
|
369
397
|
assert @browser.mobile?
|
|
370
|
-
|
|
398
|
+
refute @browser.modern?
|
|
371
399
|
assert_equal "4.2.1", @browser.full_version
|
|
372
400
|
assert_equal "4", @browser.version
|
|
373
401
|
end
|
|
@@ -377,9 +405,9 @@ describe Browser do
|
|
|
377
405
|
|
|
378
406
|
assert_equal "BlackBerry", @browser.name
|
|
379
407
|
assert @browser.blackberry5?
|
|
380
|
-
|
|
408
|
+
refute @browser.tablet?
|
|
381
409
|
assert @browser.mobile?
|
|
382
|
-
|
|
410
|
+
refute @browser.modern?
|
|
383
411
|
assert_equal "5.0.0.93", @browser.full_version
|
|
384
412
|
assert_equal "5", @browser.version
|
|
385
413
|
end
|
|
@@ -389,7 +417,7 @@ describe Browser do
|
|
|
389
417
|
|
|
390
418
|
assert_equal "BlackBerry", @browser.name
|
|
391
419
|
assert @browser.blackberry6?
|
|
392
|
-
|
|
420
|
+
refute @browser.tablet?
|
|
393
421
|
assert @browser.mobile?
|
|
394
422
|
assert @browser.modern?
|
|
395
423
|
assert_equal "534.11", @browser.full_version
|
|
@@ -401,7 +429,7 @@ describe Browser do
|
|
|
401
429
|
|
|
402
430
|
assert_equal "BlackBerry", @browser.name
|
|
403
431
|
assert @browser.blackberry7?
|
|
404
|
-
|
|
432
|
+
refute @browser.tablet?
|
|
405
433
|
assert @browser.mobile?
|
|
406
434
|
assert @browser.modern?
|
|
407
435
|
assert_equal "534.11", @browser.full_version
|
|
@@ -413,7 +441,7 @@ describe Browser do
|
|
|
413
441
|
|
|
414
442
|
assert_equal "Safari", @browser.name
|
|
415
443
|
assert @browser.blackberry10?
|
|
416
|
-
|
|
444
|
+
refute @browser.tablet?
|
|
417
445
|
assert @browser.mobile?
|
|
418
446
|
assert @browser.modern?
|
|
419
447
|
assert_equal "10.0.9.1675", @browser.full_version
|
|
@@ -443,8 +471,8 @@ describe Browser do
|
|
|
443
471
|
|
|
444
472
|
assert_equal "PhantomJS", @browser.name
|
|
445
473
|
assert @browser.phantom_js?
|
|
446
|
-
|
|
447
|
-
|
|
474
|
+
refute @browser.tablet?
|
|
475
|
+
refute @browser.mobile?
|
|
448
476
|
assert @browser.modern?
|
|
449
477
|
assert_equal "1.9.0", @browser.full_version
|
|
450
478
|
assert_equal "1", @browser.version
|
|
@@ -469,11 +497,11 @@ describe Browser do
|
|
|
469
497
|
it "detects other mobiles" do
|
|
470
498
|
@browser.ua = "Symbian OS"
|
|
471
499
|
assert @browser.mobile?
|
|
472
|
-
|
|
500
|
+
refute @browser.tablet?
|
|
473
501
|
|
|
474
502
|
@browser.ua = "MIDP-2.0"
|
|
475
503
|
assert @browser.mobile?
|
|
476
|
-
|
|
504
|
+
refute @browser.tablet?
|
|
477
505
|
end
|
|
478
506
|
|
|
479
507
|
it "detects windows mobile" do
|
|
@@ -482,8 +510,8 @@ describe Browser do
|
|
|
482
510
|
assert @browser.mobile?
|
|
483
511
|
assert @browser.windows?
|
|
484
512
|
assert @browser.windows_mobile?
|
|
485
|
-
|
|
486
|
-
|
|
513
|
+
refute @browser.windows_phone?
|
|
514
|
+
refute @browser.tablet?
|
|
487
515
|
end
|
|
488
516
|
|
|
489
517
|
it "returns a zero version" do
|
|
@@ -516,7 +544,6 @@ describe Browser do
|
|
|
516
544
|
assert meta.include?("ios")
|
|
517
545
|
assert meta.include?("safari")
|
|
518
546
|
assert meta.include?("safari3")
|
|
519
|
-
assert meta.include?("mac")
|
|
520
547
|
assert meta.include?("modern")
|
|
521
548
|
assert meta.include?("mobile")
|
|
522
549
|
end
|
|
@@ -622,7 +649,7 @@ describe Browser do
|
|
|
622
649
|
|
|
623
650
|
assert @browser.android?
|
|
624
651
|
assert @browser.tablet?
|
|
625
|
-
|
|
652
|
+
refute @browser.mobile?
|
|
626
653
|
end
|
|
627
654
|
|
|
628
655
|
it "detects nexus tablet" do
|
|
@@ -630,15 +657,15 @@ describe Browser do
|
|
|
630
657
|
|
|
631
658
|
assert @browser.android?
|
|
632
659
|
assert @browser.tablet?
|
|
633
|
-
|
|
660
|
+
refute @browser.mobile?
|
|
634
661
|
end
|
|
635
662
|
|
|
636
663
|
it "detects blackberry playbook tablet" do
|
|
637
664
|
@browser.ua = $ua["PLAYBOOK"]
|
|
638
665
|
|
|
639
|
-
|
|
666
|
+
refute @browser.android?
|
|
640
667
|
assert @browser.tablet?
|
|
641
|
-
|
|
668
|
+
refute @browser.mobile?
|
|
642
669
|
|
|
643
670
|
assert_equal "7.2.1.0", @browser.full_version
|
|
644
671
|
assert_equal "7", @browser.version
|
|
@@ -648,7 +675,7 @@ describe Browser do
|
|
|
648
675
|
@browser.ua = $ua["OPERA_MINI"]
|
|
649
676
|
|
|
650
677
|
assert @browser.opera_mini?
|
|
651
|
-
|
|
678
|
+
refute @browser.tablet?
|
|
652
679
|
assert @browser.mobile?
|
|
653
680
|
end
|
|
654
681
|
|
|
@@ -656,7 +683,7 @@ describe Browser do
|
|
|
656
683
|
@browser.ua = $ua["OPERA_MOBI"]
|
|
657
684
|
|
|
658
685
|
assert @browser.opera?
|
|
659
|
-
|
|
686
|
+
refute @browser.tablet?
|
|
660
687
|
assert @browser.mobile?
|
|
661
688
|
end
|
|
662
689
|
|
|
@@ -667,8 +694,8 @@ describe Browser do
|
|
|
667
694
|
assert_equal "7", @browser.version
|
|
668
695
|
assert @browser.mobile?
|
|
669
696
|
assert @browser.windows_phone?
|
|
670
|
-
|
|
671
|
-
|
|
697
|
+
refute @browser.windows_mobile?
|
|
698
|
+
refute @browser.tablet?
|
|
672
699
|
end
|
|
673
700
|
|
|
674
701
|
it "detects windows phone 8" do
|
|
@@ -678,8 +705,8 @@ describe Browser do
|
|
|
678
705
|
assert_equal "10", @browser.version
|
|
679
706
|
assert @browser.mobile?
|
|
680
707
|
assert @browser.windows_phone?
|
|
681
|
-
|
|
682
|
-
|
|
708
|
+
refute @browser.windows_mobile?
|
|
709
|
+
refute @browser.tablet?
|
|
683
710
|
end
|
|
684
711
|
|
|
685
712
|
it "detects windows mobile" do
|
|
@@ -689,8 +716,8 @@ describe Browser do
|
|
|
689
716
|
assert_equal "10", @browser.version
|
|
690
717
|
assert @browser.mobile?
|
|
691
718
|
assert @browser.windows_phone?
|
|
692
|
-
|
|
693
|
-
|
|
719
|
+
refute @browser.windows_mobile?
|
|
720
|
+
refute @browser.tablet?
|
|
694
721
|
end
|
|
695
722
|
|
|
696
723
|
it "detects windows x64" do
|
|
@@ -705,8 +732,8 @@ describe Browser do
|
|
|
705
732
|
assert @browser.ie?
|
|
706
733
|
assert @browser.ie11?
|
|
707
734
|
assert @browser.modern?
|
|
708
|
-
|
|
709
|
-
|
|
735
|
+
refute @browser.compatibility_view?
|
|
736
|
+
refute @browser.windows_rt?
|
|
710
737
|
assert @browser.windows_touchscreen_desktop?
|
|
711
738
|
assert @browser.windows8?
|
|
712
739
|
assert_equal "11.0", @browser.full_version
|
|
@@ -734,7 +761,7 @@ describe Browser do
|
|
|
734
761
|
assert @browser.kindle?
|
|
735
762
|
assert @browser.webkit?
|
|
736
763
|
assert @browser.modern?
|
|
737
|
-
|
|
764
|
+
refute @browser.mobile?
|
|
738
765
|
end
|
|
739
766
|
|
|
740
767
|
it "detects kindle fire hd mobile" do
|
|
@@ -751,14 +778,14 @@ describe Browser do
|
|
|
751
778
|
@browser.ua = $ua["NOOK"]
|
|
752
779
|
|
|
753
780
|
assert @browser.tablet?
|
|
754
|
-
|
|
781
|
+
refute @browser.mobile?
|
|
755
782
|
end
|
|
756
783
|
|
|
757
784
|
it "detects samsung" do
|
|
758
785
|
@browser.ua = $ua["SAMSUNG"]
|
|
759
786
|
|
|
760
787
|
assert @browser.tablet?
|
|
761
|
-
|
|
788
|
+
refute @browser.mobile?
|
|
762
789
|
end
|
|
763
790
|
|
|
764
791
|
it "detects nintendo wii" do
|
|
@@ -831,19 +858,24 @@ describe Browser do
|
|
|
831
858
|
end
|
|
832
859
|
|
|
833
860
|
@browser.ua = $ua["CHROME"]
|
|
834
|
-
|
|
861
|
+
refute @browser.bot?
|
|
835
862
|
end
|
|
836
863
|
|
|
837
864
|
it "doesn't consider empty UA as bot" do
|
|
838
865
|
@browser.ua = ''
|
|
839
|
-
|
|
866
|
+
refute @browser.bot?
|
|
840
867
|
end
|
|
841
868
|
|
|
842
869
|
it "allows setting empty string as bots" do
|
|
843
870
|
Browser::Bots.detect_empty_ua!
|
|
844
871
|
@browser.ua = ''
|
|
845
872
|
assert @browser.bot?
|
|
846
|
-
|
|
873
|
+
end
|
|
874
|
+
|
|
875
|
+
it "doesn't consider mozilla as a bot when considerint empty UA" do
|
|
876
|
+
Browser::Bots.detect_empty_ua!
|
|
877
|
+
@browser.ua = "Mozilla"
|
|
878
|
+
refute @browser.bot?
|
|
847
879
|
end
|
|
848
880
|
|
|
849
881
|
it "detects chrome os" do
|
data/test/ua.yml
CHANGED
|
@@ -37,6 +37,7 @@ XOOM: "Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/
|
|
|
37
37
|
NEXUS_TABLET: "Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19"
|
|
38
38
|
NOOK: "Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; NOOK BNTV250A Build/GINGERBREAD 1.4.3) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1"
|
|
39
39
|
SAMSUNG: "Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; SAMSUNG-SGH-I497 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30"
|
|
40
|
+
SAMSUNG_CHROME: "Mozilla/5.0 (Linux; Android 4.4.2; en-gb; SAMSUNG GT-I9195/I9195XXUCNEA Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36"
|
|
40
41
|
OPERA_MINI: "Opera/9.80 (Android; Opera Mini/7.029952/28.2359;u; fr) Presto/2.8.119 Version/11.10"
|
|
41
42
|
OPERA_MOBI: "Opera/9.8 (Android 2.3.5; Linux; Opera Mobi/ADR-1205181138; U; en) Presto/2.10.254 Version/12.00"
|
|
42
43
|
WINDOWS_PHONE: "Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; DELL; Venue Pro)"
|
|
@@ -54,6 +55,7 @@ IOS4: "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebK
|
|
|
54
55
|
IOS5: "Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3"
|
|
55
56
|
IOS6: "Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25"
|
|
56
57
|
IOS7: "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53"
|
|
58
|
+
IOS8: "Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12A365 Safari/600.1.4"
|
|
57
59
|
PLAYBOOK: "Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML, like Gecko) Version/7.2.1.0 Safari/536.2+"
|
|
58
60
|
NINTENDO_WII: "Opera/9.00 (Nintendo Wii; U; ; 1309-9; en)"
|
|
59
61
|
NINTENDO_WIIU: "Mozilla/5.0 (Nintendo WiiU) AppleWebKit/534.52 (KHTML, like Gecko) NX/2.1.0.8.23 NintendoBrowser/1.1.0.7579.EU"
|
|
@@ -77,3 +79,4 @@ YAHOO_SLURP: "Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/
|
|
|
77
79
|
ASK: "Mozilla/2.0 (compatible; Ask Jeeves/Teoma; +http://sp.ask.com/docs/about/tech_crawling.html)"
|
|
78
80
|
BINGBOT: "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
|
|
79
81
|
DUCKDUCKGO: "DuckDuckBot/1.0; (+http://duckduckgo.com/duckduckbot.html)"
|
|
82
|
+
ANDROID_WITH_SAFARI: 'Mozilla/5.0 (Linux; U; Android 4.3; en-us; SCH-I535 Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: browser
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.7.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Nando Vieira
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-
|
|
11
|
+
date: 2014-09-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|