wurfl_device 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +22 -0
- data/README.md +3 -0
- data/lib/wurfl_device.rb +3 -1
- data/lib/wurfl_device/cli.rb +2 -2
- data/lib/wurfl_device/user_agent_matcher.rb +103 -103
- data/lib/wurfl_device/version.rb +1 -1
- metadata +25 -25
data/LICENSE
CHANGED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2011 Allan Ralph Hutalla <ahutalla@gmail.com>
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person
|
4
|
+
obtaining a copy of this software and associated documentation
|
5
|
+
files (the "Software"), to deal in the Software without
|
6
|
+
restriction, including without limitation the rights to use,
|
7
|
+
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
copies of the Software, and to permit persons to whom the
|
9
|
+
Software is furnished to do so, subject to the following
|
10
|
+
conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be
|
13
|
+
included in all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
17
|
+
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
19
|
+
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
20
|
+
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
21
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
22
|
+
OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
data/lib/wurfl_device.rb
CHANGED
@@ -131,7 +131,9 @@ module WurflDevice
|
|
131
131
|
next if actual_device.nil?
|
132
132
|
user_agent = actual_device.user_agent
|
133
133
|
next if user_agent.nil? || user_agent.empty?
|
134
|
-
|
134
|
+
device = Device.new(device_id)
|
135
|
+
next unless device.is_valid?
|
136
|
+
db.hset(Constants::WURFL_USER_AGENTS, user_agent, Marshal::dump(device))
|
135
137
|
|
136
138
|
next if user_agent =~ /^DO_NOT_MATCH/i
|
137
139
|
matcher = UserAgentMatcher.new.get_index(user_agent)
|
data/lib/wurfl_device/cli.rb
CHANGED
@@ -42,8 +42,8 @@ module WurflDevice
|
|
42
42
|
def list
|
43
43
|
WurflDevice.get_user_agents_in_cache.each do |user_agent|
|
44
44
|
device = WurflDevice.get_device_from_ua_cache(user_agent)
|
45
|
-
device_id = ''
|
46
|
-
|
45
|
+
device_id = device.id || ''
|
46
|
+
user_agent ||= ''
|
47
47
|
WurflDevice.ui.info user_agent + ":" + device_id
|
48
48
|
end
|
49
49
|
end
|
@@ -36,7 +36,7 @@ module WurflDevice
|
|
36
36
|
last_attempts(@user_agent)
|
37
37
|
end
|
38
38
|
|
39
|
-
WurflDevice.save_device_in_ua_cache(@user_agent, @device)
|
39
|
+
WurflDevice.save_device_in_ua_cache(@user_agent, @device) if @device.is_valid?
|
40
40
|
|
41
41
|
return self
|
42
42
|
end
|
@@ -143,56 +143,56 @@ module WurflDevice
|
|
143
143
|
protected
|
144
144
|
# user agent matchers
|
145
145
|
def last_attempts(user_agent)
|
146
|
-
|
146
|
+
device_ua = case
|
147
147
|
# OpenWave
|
148
148
|
when user_agent.contains('UP.Browser/7.2')
|
149
|
-
'
|
149
|
+
'DO_NOT_MATCH_UP.Browser/7.2'
|
150
150
|
when user_agent.contains('UP.Browser/7')
|
151
|
-
'
|
151
|
+
'DO_NOT_MATCH_UP.Browser/7'
|
152
152
|
when user_agent.contains('UP.Browser/6.2')
|
153
|
-
'
|
153
|
+
'DO_NOT_MATCH_UP.Browser/6.2'
|
154
154
|
when user_agent.contains('UP.Browser/6')
|
155
|
-
'
|
155
|
+
'DO_NOT_MATCH_UP.Browser/6'
|
156
156
|
when user_agent.contains('UP.Browser/5')
|
157
|
-
'
|
157
|
+
'UP.Browser/5'
|
158
158
|
when user_agent.contains('UP.Browser/4')
|
159
|
-
'
|
159
|
+
'DO_NOT_MATCH_UP.Browser/4'
|
160
160
|
when user_agent.contains('UP.Browser/3')
|
161
|
-
'
|
161
|
+
'DO_NOT_MATCH_UP.Browser/4'
|
162
162
|
# Series 60
|
163
163
|
when user_agent.contains('Series60')
|
164
|
-
'
|
164
|
+
'DO_NOT_MATCH_NOKIA_SERIES60'
|
165
165
|
when user_agent.contains('Series80')
|
166
|
-
'
|
166
|
+
'DO_NOT_MATCH_NOKIA_SERIES80'
|
167
167
|
# Access/Net Front
|
168
168
|
when user_agent.contains(['NetFront/3.0', 'ACS-NF/3.0'])
|
169
|
-
'
|
169
|
+
'DO_NOT_MATCH_NETFRONT_3'
|
170
170
|
when user_agent.contains(['NetFront/3.1', 'ACS-NF/3.1'])
|
171
|
-
'
|
171
|
+
'DO_NOT_MATCH_NETFRONT_3_1'
|
172
172
|
when user_agent.contains(['NetFront/3.2', 'ACS-NF/3.2'])
|
173
|
-
'
|
173
|
+
'DO_NOT_MATCH_NETFRONT_3_2'
|
174
174
|
when user_agent.contains(['NetFront/3.3', 'ACS-NF/3.3'])
|
175
|
-
'
|
175
|
+
'DO_NOT_MATCH_NETFRONT_3_3'
|
176
176
|
when user_agent.contains('NetFront/3.4')
|
177
|
-
'
|
177
|
+
'DO_NOT_MATCH_NETFRONT_3_5'
|
178
178
|
when user_agent.contains('NetFront/3.5')
|
179
|
-
'
|
179
|
+
'DO_NOT_MATCH_NETFRONT_3_5'
|
180
180
|
# Contains Mozilla/, but not at the beginning of the UA
|
181
|
-
when user_agent.starts_with('Mozilla/') ||
|
182
|
-
|
181
|
+
when user_agent.starts_with('Mozilla/') || user_agent.contains('Mozilla/')
|
182
|
+
'DO_NOT_MATCH_MOZILLA'
|
183
183
|
# Obigo
|
184
184
|
when user_agent.contains(['ObigoInternetBrowser/Q03C', 'AU-MIC/2', 'AU-MIC-', 'AU-OBIGO', 'Obigo/Q03', 'Obigo/Q04', 'ObigoInternetBrowser/2', 'Teleca Q03B1'])
|
185
|
-
|
185
|
+
'DO_NOT_MATCH_MOZILLA'
|
186
186
|
# DoCoMo
|
187
|
-
when user_agent.starts_with('DoCoMo') ||
|
188
|
-
'
|
187
|
+
when user_agent.starts_with('DoCoMo') || user_agent.starts_with('KDDI')
|
188
|
+
'DO_NOT_MATCH_DOCOMO_GENERIC_JAP_1'
|
189
189
|
# Generic Mozilla
|
190
190
|
when user_agent.contains(['Mozilla/4.0', 'Mozilla/5.0', 'Mozilla/6.0'])
|
191
|
-
|
191
|
+
'DO_NOT_MATCH_GENERIC_WEB_BROWSER'
|
192
192
|
else
|
193
193
|
WurflDevice::Constants::GENERIC
|
194
194
|
end
|
195
|
-
@device = WurflDevice.
|
195
|
+
@device = WurflDevice.get_device_from_ua_cache(device_ua, true)
|
196
196
|
end
|
197
197
|
|
198
198
|
# mobile user agents
|
@@ -231,26 +231,26 @@ module WurflDevice
|
|
231
231
|
end
|
232
232
|
@device = ris_match(user_agent, tolerance)
|
233
233
|
if @device.nil?
|
234
|
-
if user_agent =~
|
234
|
+
if user_agent =~ /Black[Bb]erry[^\/\s]+\/(\d\.\d)/
|
235
235
|
versions = {
|
236
|
-
'2.'
|
237
|
-
'3.2' => '
|
238
|
-
'3.3' => '
|
239
|
-
'3.5' => '
|
240
|
-
'3.6' => '
|
241
|
-
'3.7' => '
|
242
|
-
'4.1' => '
|
243
|
-
'4.2' => '
|
244
|
-
'4.3' => '
|
245
|
-
'4.5' => '
|
246
|
-
'4.6' => '
|
247
|
-
'4.7' => '
|
248
|
-
'4.'
|
249
|
-
'5.'
|
250
|
-
'6.'
|
251
|
-
}.each_pair do |
|
252
|
-
if
|
253
|
-
@device =
|
236
|
+
'2.' => 'DO_NOT_MATCH_BLACKBERRY_2',
|
237
|
+
'3.2' => 'DO_NOT_MATCH_BLACKBERRY_3_2',
|
238
|
+
'3.3' => 'DO_NOT_MATCH_BLACKBERRY_3_3',
|
239
|
+
'3.5' => 'DO_NOT_MATCH_BLACKBERRY_3_5',
|
240
|
+
'3.6' => 'DO_NOT_MATCH_BLACKBERRY_3_6',
|
241
|
+
'3.7' => 'DO_NOT_MATCH_BLACKBERRY_3_7',
|
242
|
+
'4.1' => 'DO_NOT_MATCH_BLACKBERRY_4_1',
|
243
|
+
'4.2' => 'DO_NOT_MATCH_BLACKBERRY_4_2',
|
244
|
+
'4.3' => 'DO_NOT_MATCH_BLACKBERRY_4_3',
|
245
|
+
'4.5' => 'DO_NOT_MATCH_BLACKBERRY_4_5',
|
246
|
+
'4.6' => 'DO_NOT_MATCH_BLACKBERRY_4_6',
|
247
|
+
'4.7' => 'DO_NOT_MATCH_BLACKBERRY_4_7',
|
248
|
+
'4.' => 'DO_NOT_MATCH_BLACKBERRY_4',
|
249
|
+
'5.' => 'DO_NOT_MATCH_BLACKBERRY_5',
|
250
|
+
'6.' => 'DO_NOT_MATCH_BLACKBERRY_6',
|
251
|
+
}.each_pair do |vercode, device_ua|
|
252
|
+
if $1.index(vercode)
|
253
|
+
@device = WurflDevice.get_device_from_ua_cache(device_ua, true)
|
254
254
|
break
|
255
255
|
end
|
256
256
|
end
|
@@ -280,7 +280,7 @@ module WurflDevice
|
|
280
280
|
@device = ld_match(user_agent, tolerance)
|
281
281
|
end
|
282
282
|
if @device.nil?
|
283
|
-
@device =
|
283
|
+
@device = WurflDevice.get_device_from_ua_cache('DO_NOT_MATCH_MIB_2_2', true) if user_agent.contains('MIB/2.2') || user_agent.contains('MIB/BER2.2')
|
284
284
|
end
|
285
285
|
end
|
286
286
|
|
@@ -299,17 +299,17 @@ module WurflDevice
|
|
299
299
|
end
|
300
300
|
@device = ris_match(user_agent, tolerance)
|
301
301
|
if @device.nil?
|
302
|
-
|
302
|
+
device_ua = case
|
303
303
|
when user_agent.contains('iPod')
|
304
|
-
'
|
304
|
+
'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'
|
305
305
|
when user_agent.contains('iPad')
|
306
|
-
'
|
306
|
+
'Mozilla/5.0 (iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7D11'
|
307
307
|
when user_agent.contains('iPhone')
|
308
|
-
'
|
308
|
+
'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A538a Safari/419.3'
|
309
309
|
else
|
310
310
|
WurfDevice::Contants::GENERIC
|
311
311
|
end
|
312
|
-
@device =
|
312
|
+
@device = WurflDevice.get_device_from_ua_cache(device_ua, true)
|
313
313
|
end
|
314
314
|
end
|
315
315
|
|
@@ -328,13 +328,13 @@ module WurflDevice
|
|
328
328
|
@device = ris_match(user_agent, tolerance)
|
329
329
|
if @device.nil?
|
330
330
|
version_index = 7
|
331
|
-
|
331
|
+
device_ua = case
|
332
332
|
when user_agent[version_index] == '2'
|
333
|
-
'
|
333
|
+
'DO_NOT_MATCH_DOCOMO_GENERIC_JAP_2'
|
334
334
|
else
|
335
|
-
'
|
335
|
+
'DO_NOT_MATCH_DOCOMO_GENERIC_JAP_1'
|
336
336
|
end
|
337
|
-
@device =
|
337
|
+
@device = WurflDevice.get_device_from_ua_cache(device_ua, true)
|
338
338
|
end
|
339
339
|
end
|
340
340
|
|
@@ -361,7 +361,7 @@ module WurflDevice
|
|
361
361
|
end
|
362
362
|
@device = ris_match(user_agent, tolerance)
|
363
363
|
if @device.nil?
|
364
|
-
@device =
|
364
|
+
@device = WurflDevice.get_device_from_ua_cache('DO_NOT_MATCH_UP.Browser/6.2', true)
|
365
365
|
end
|
366
366
|
end
|
367
367
|
|
@@ -396,17 +396,17 @@ module WurflDevice
|
|
396
396
|
def matcher_nintendo(user_agent)
|
397
397
|
@device = ld_match(user_agent, tolerance)
|
398
398
|
if @device.nil?
|
399
|
-
|
399
|
+
device_ua = case
|
400
400
|
when user_agent.contains('Nintendo Wii')
|
401
|
-
'
|
401
|
+
'Opera/9.00 (Nintendo Wii; U; ; 1621; en)'
|
402
402
|
when user_agent.contains('Nintendo DSi')
|
403
|
-
'
|
403
|
+
'Opera/9.50 (Nintendo DSi; Opera/483; U; en-US)'
|
404
404
|
when user_agent.starts_with('Mozilla/') && user_agent.contains('Nitro') && user_agent.contains('Opera')
|
405
|
-
'
|
405
|
+
'Mozilla/4.0 (compatible; MSIE 6.0; Nitro) Opera 8.50 [en]'
|
406
406
|
else
|
407
|
-
'
|
407
|
+
'Opera/9.00 (Nintendo Wii; U; ; 1621; en)'
|
408
408
|
end
|
409
|
-
@device =
|
409
|
+
@device = WurflDevice.get_device_from_ua_cache(device_ua, true)
|
410
410
|
end
|
411
411
|
end
|
412
412
|
|
@@ -430,7 +430,7 @@ module WurflDevice
|
|
430
430
|
end
|
431
431
|
|
432
432
|
def matcher_portalmmm(user_agent)
|
433
|
-
@device =
|
433
|
+
@device = WurflDevice.get_device_from_ua_cache(WurflDevice::Constants::GENERIC, true)
|
434
434
|
end
|
435
435
|
|
436
436
|
def matcher_qtek(user_agent)
|
@@ -474,35 +474,35 @@ module WurflDevice
|
|
474
474
|
|
475
475
|
# mobile browsers
|
476
476
|
def matcher_android(user_agent)
|
477
|
-
|
477
|
+
device_ua = 'DO_NOT_MATCH_GENERIC_ANDROID'
|
478
478
|
if user_agent.contains('Froyo')
|
479
|
-
|
479
|
+
device_ua = 'DO_NOT_MATCH_ANDROID_2_2'
|
480
480
|
elsif user_agent =~ /#Android[\s\/](\d).(\d)#/
|
481
481
|
version = "generic_android_ver#{$1}_#{$2}"
|
482
482
|
version = 'generic_android_ver2' if version == 'generic_android_ver2_0'
|
483
|
-
|
484
|
-
'
|
485
|
-
'
|
486
|
-
'
|
487
|
-
'
|
488
|
-
'
|
489
|
-
|
490
|
-
|
483
|
+
android_uas = {
|
484
|
+
'generic_android_ver1_5' => 'DO_NOT_MATCH_ANDROID_1_5',
|
485
|
+
'generic_android_ver1_6' => 'DO_NOT_MATCH_GENERIC_ANDROID_1_6',
|
486
|
+
'generic_android_ver2' => 'DO_NOT_MATCH_GENERIC_ANDROID_2_0',
|
487
|
+
'generic_android_ver2_1' => 'DO_NOT_MATCH_GENERIC_ANDROID_2_1',
|
488
|
+
'generic_android_ver2_2' => 'DO_NOT_MATCH_ANDROID_2_2',
|
489
|
+
}
|
490
|
+
device_ua = android_uas[version] if android_uas.has_key?(version)
|
491
491
|
end
|
492
|
-
@device =
|
492
|
+
@device = WurflDevice.get_device_from_ua_cache(device_ua, true)
|
493
493
|
end
|
494
494
|
|
495
495
|
def matcher_operamini(user_agent)
|
496
496
|
tolerance = user_agent.first_slash
|
497
497
|
@device = ris_match(user_agent, tolerance)
|
498
498
|
if @device.nil?
|
499
|
-
|
499
|
+
device_ua = 'DO_NOT_MATCH_GENERIC_OPERA_MINI_VERSION_1';
|
500
500
|
if user_agent =~ /#Opera Mini\/([1-5])#/
|
501
|
-
|
501
|
+
device_ua = "DO_NOT_MATCH_BROWSER_OPERA_MINI_#{$1}_0"
|
502
502
|
elsif user_agent.contains('Opera Mobi')
|
503
|
-
|
503
|
+
device_ua = 'DO_NOT_MATCH_GENERIC_OPERA_MINI_VERSION_4'
|
504
504
|
end
|
505
|
-
@device =
|
505
|
+
@device = WurflDevice.get_device_from_ua_cache(device_ua, true)
|
506
506
|
end
|
507
507
|
end
|
508
508
|
|
@@ -510,7 +510,7 @@ module WurflDevice
|
|
510
510
|
tolerance = 3
|
511
511
|
@device = ld_match(user_agent, tolerance)
|
512
512
|
if @device.nil?
|
513
|
-
@device =
|
513
|
+
@device = WurflDevice.get_device_from_ua_cache('DO_NOT_MATCH_REMOVE_GENERIC_MS_MOBILE_BROWSER_VER1', true)
|
514
514
|
end
|
515
515
|
end
|
516
516
|
|
@@ -519,7 +519,7 @@ module WurflDevice
|
|
519
519
|
tolerance = user_agent.first_slash
|
520
520
|
@device = ris_match(user_agent, tolerance)
|
521
521
|
if @device.nil?
|
522
|
-
@device =
|
522
|
+
@device = WurflDevice.get_device_from_ua_cache('DO_NOT_MATCH_GENERIC_WEB_BROWSER', true)
|
523
523
|
end
|
524
524
|
end
|
525
525
|
|
@@ -528,21 +528,21 @@ module WurflDevice
|
|
528
528
|
if user_agent =~ /^Mozilla\/4\.0 \(compatible; MSIE (\d)\.(\d);/
|
529
529
|
version = $1.to_i
|
530
530
|
version_sub = $2.to_i
|
531
|
-
|
531
|
+
device_ua = case
|
532
532
|
when version == 7
|
533
|
-
'
|
533
|
+
'Mozilla/4.0 (compatible; MSIE 7.0;'
|
534
534
|
when version == 8
|
535
|
-
'
|
535
|
+
'Mozilla/4.0 (compatible; MSIE 8.0;'
|
536
536
|
when version == 6
|
537
|
-
'
|
537
|
+
'Mozilla/4.0 (compatible; MSIE 6.0;'
|
538
538
|
when version == 4
|
539
|
-
'
|
539
|
+
'Mozilla/4.0 (compatible; MSIE 4.0;'
|
540
540
|
when version == 5
|
541
|
-
version_sub == 5 ? '
|
541
|
+
version_sub == 5 ? 'Mozilla/4.0 (compatible; MSIE 5.5;' : 'Mozilla/4.0 (compatible; MSIE 5.0;'
|
542
542
|
else
|
543
543
|
'msie'
|
544
544
|
end
|
545
|
-
@device =
|
545
|
+
@device = WurflDevice.get_device_from_ua_cache(device_ua, true)
|
546
546
|
else
|
547
547
|
user_agent.sub!(/( \.NET CLR [\d\.]+;?| Media Center PC [\d\.]+;?| OfficeLive[a-zA-Z0-9\.\d]+;?| InfoPath[\.\d]+;?)/, '')
|
548
548
|
tolerance = user_agent.first_slash
|
@@ -550,9 +550,9 @@ module WurflDevice
|
|
550
550
|
end
|
551
551
|
if @device.nil?
|
552
552
|
if user_agent.contains(['SLCC1', 'Media Center PC', '.NET CLR', 'OfficeLiveConnector'])
|
553
|
-
@device =
|
553
|
+
@device = WurflDevice.get_device_from_ua_cache('DO_NOT_MATCH_GENERIC_WEB_BROWSER', true)
|
554
554
|
else
|
555
|
-
@device =
|
555
|
+
@device = WurflDevice.get_device_from_ua_cache(WurfDevice::Constants::GENERIC, true)
|
556
556
|
end
|
557
557
|
end
|
558
558
|
end
|
@@ -561,17 +561,17 @@ module WurflDevice
|
|
561
561
|
if user_agent =~ /Firefox\/(\d)\.(\d)/
|
562
562
|
version = $1.to_i
|
563
563
|
version_sub = $2.to_i
|
564
|
-
|
564
|
+
device_ua = case
|
565
565
|
when version == 3
|
566
|
-
version_sub == 5 ? '
|
566
|
+
version_sub == 5 ? 'Firefox/3.5' : 'Firefox/3.0'
|
567
567
|
when version == 2
|
568
568
|
'firefox_2'
|
569
569
|
when version == 1
|
570
|
-
version_sub == 5 ? '
|
570
|
+
version_sub == 5 ? 'Firefox/1.5' : 'Firefox/1.0'
|
571
571
|
else
|
572
572
|
nil
|
573
573
|
end
|
574
|
-
@device =
|
574
|
+
@device = WurflDevice.get_device_from_ua_cache(device_ua, true) unless device_ua.nil?
|
575
575
|
else
|
576
576
|
tolerance = 5
|
577
577
|
@device = ld_match(user_agent, tolerance)
|
@@ -582,7 +582,7 @@ module WurflDevice
|
|
582
582
|
tolerance = user_agent.index_of_or_length('/', user_agent.index('Chrome'))
|
583
583
|
@device = ris_match(user_agent, tolerance)
|
584
584
|
if @device.nil?
|
585
|
-
@device =
|
585
|
+
@device = WurflDevice.get_device_from_ua_cache('Chrome', true)
|
586
586
|
end
|
587
587
|
end
|
588
588
|
|
@@ -592,42 +592,42 @@ module WurflDevice
|
|
592
592
|
end
|
593
593
|
|
594
594
|
def matcher_opera(user_agent)
|
595
|
-
|
595
|
+
device_ua = case
|
596
596
|
when user_agent.contains('Opera/10')
|
597
|
-
'
|
597
|
+
'Opera/10'
|
598
598
|
when user_agent.contains('Opera/9')
|
599
|
-
'
|
599
|
+
'Opera/9'
|
600
600
|
when user_agent.contains('Opera/8')
|
601
|
-
'
|
601
|
+
'Opera/8'
|
602
602
|
when user_agent.contains('Opera/7')
|
603
|
-
'
|
603
|
+
'Opera/7'
|
604
604
|
else
|
605
605
|
nil
|
606
606
|
end
|
607
|
-
@device =
|
607
|
+
@device = WurflDevice.get_device_from_ua_cache(device_ua, true) unless device_ua.nil?
|
608
608
|
if @device.nil?
|
609
609
|
tolerance = 5
|
610
610
|
@device = ld_match(user_agent, tolerance)
|
611
611
|
end
|
612
|
-
@device =
|
612
|
+
@device = WurflDevice.get_device_from_ua_cache('Opera', true) if @device.nil?
|
613
613
|
end
|
614
614
|
|
615
615
|
def matcher_safari(user_agent)
|
616
616
|
tolerance = user_agent.first_slash
|
617
617
|
@device = ris_match(user_agent, tolerance)
|
618
618
|
if @device.nil?
|
619
|
-
|
619
|
+
device_ua = case
|
620
620
|
when user_agent.contains('Macintosh') || user_agent.contains('Windows')
|
621
|
-
|
621
|
+
'DO_NOT_MATCH_GENERIC_WEB_BROWSER'
|
622
622
|
else
|
623
623
|
WurflDevice::Constants::GENERIC
|
624
624
|
end
|
625
|
-
@device =
|
625
|
+
@device = WurflDevice.get_device_from_ua_cache(device_ua, true)
|
626
626
|
end
|
627
627
|
end
|
628
628
|
|
629
629
|
def matcher_aol(user_agent)
|
630
|
-
@device =
|
630
|
+
@device = WurflDevice.get_device_from_ua_cache('DO_NOT_MATCH_GENERIC_WEB_BROWSER', true)
|
631
631
|
end
|
632
632
|
end
|
633
633
|
end
|
data/lib/wurfl_device/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wurfl_device
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-10-
|
12
|
+
date: 2011-10-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
16
|
-
requirement: &
|
16
|
+
requirement: &34130760 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *34130760
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: nokogiri
|
27
|
-
requirement: &
|
27
|
+
requirement: &34130320 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *34130320
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: redis
|
38
|
-
requirement: &
|
38
|
+
requirement: &34129900 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *34129900
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: text
|
49
|
-
requirement: &
|
49
|
+
requirement: &34129480 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *34129480
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: bundler
|
60
|
-
requirement: &
|
60
|
+
requirement: &34128980 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 1.0.10
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *34128980
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rake
|
71
|
-
requirement: &
|
71
|
+
requirement: &34128480 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 0.9.2
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *34128480
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rspec-core
|
82
|
-
requirement: &
|
82
|
+
requirement: &34128020 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '2.0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *34128020
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: rspec-expectations
|
93
|
-
requirement: &
|
93
|
+
requirement: &34127560 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ~>
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '2.0'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *34127560
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: rr
|
104
|
-
requirement: &
|
104
|
+
requirement: &34127100 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ~>
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: '1.0'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *34127100
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: faker
|
115
|
-
requirement: &
|
115
|
+
requirement: &34126640 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ~>
|
@@ -120,10 +120,10 @@ dependencies:
|
|
120
120
|
version: '0.9'
|
121
121
|
type: :development
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *34126640
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: simplecov
|
126
|
-
requirement: &
|
126
|
+
requirement: &34126180 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - ~>
|
@@ -131,7 +131,7 @@ dependencies:
|
|
131
131
|
version: 0.5.3
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *34126180
|
135
135
|
description: Ruby client library for mobile handset detection
|
136
136
|
email:
|
137
137
|
- ahutalla@gmail.com
|
@@ -181,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
181
181
|
version: '0'
|
182
182
|
requirements: []
|
183
183
|
rubyforge_project:
|
184
|
-
rubygems_version: 1.8.
|
184
|
+
rubygems_version: 1.8.10
|
185
185
|
signing_key:
|
186
186
|
specification_version: 3
|
187
187
|
summary: Ruby client library for mobile handset detection
|