wurfl_device 0.1.2 → 0.1.3
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.
- 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
|