device_detector 1.0.6 → 1.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/README.md +5 -5
- data/lib/device_detector/device.rb +82 -3
- data/lib/device_detector/os.rb +4 -2
- data/lib/device_detector/parser.rb +1 -1
- data/lib/device_detector/version.rb +1 -1
- data/lib/device_detector/version_extractor.rb +20 -1
- data/regexes/bots.yml +49 -6
- data/regexes/client/browsers.yml +170 -16
- data/regexes/client/libraries.yml +20 -1
- data/regexes/client/mediaplayers.yml +2 -2
- data/regexes/client/mobile_apps.yml +447 -13
- data/regexes/client/pim.yml +16 -1
- data/regexes/device/consoles.yml +7 -1
- data/regexes/device/mobiles.yml +3169 -912
- data/regexes/device/portable_media_player.yml +16 -6
- data/regexes/oss.yml +380 -467
- metadata +3 -164
- data/.gitignore +0 -14
- data/.rubocop.yml +0 -49
- data/.ruby-version +0 -1
- data/.travis.yml +0 -14
- data/Gemfile +0 -8
- data/Rakefile +0 -86
- data/device_detector.gemspec +0 -27
- data/spec/device_detector/bot_fixtures_spec.rb +0 -30
- data/spec/device_detector/client_fixtures_spec.rb +0 -31
- data/spec/device_detector/concrete_user_agent_spec.rb +0 -123
- data/spec/device_detector/detector_fixtures_spec.rb +0 -99
- data/spec/device_detector/device_fixtures_spec.rb +0 -36
- data/spec/device_detector/device_spec.rb +0 -147
- data/spec/device_detector/memory_cache_spec.rb +0 -148
- data/spec/device_detector/model_extractor_spec.rb +0 -63
- data/spec/device_detector/os_fixtures_spec.rb +0 -26
- data/spec/device_detector/version_extractor_spec.rb +0 -79
- data/spec/device_detector_spec.rb +0 -189
- data/spec/fixtures/client/browser.yml +0 -3935
- data/spec/fixtures/client/feed_reader.yml +0 -187
- data/spec/fixtures/client/library.yml +0 -253
- data/spec/fixtures/client/mediaplayer.yml +0 -193
- data/spec/fixtures/client/mobile_app.yml +0 -703
- data/spec/fixtures/client/pim.yml +0 -175
- data/spec/fixtures/detector/bots.yml +0 -4434
- data/spec/fixtures/detector/camera.yml +0 -127
- data/spec/fixtures/detector/car_browser.yml +0 -217
- data/spec/fixtures/detector/console.yml +0 -343
- data/spec/fixtures/detector/desktop.yml +0 -7580
- data/spec/fixtures/detector/feature_phone.yml +0 -1597
- data/spec/fixtures/detector/feed_reader.yml +0 -524
- data/spec/fixtures/detector/mediaplayer.yml +0 -306
- data/spec/fixtures/detector/mobile_apps.yml +0 -1233
- data/spec/fixtures/detector/peripheral.yml +0 -271
- data/spec/fixtures/detector/phablet.yml +0 -7366
- data/spec/fixtures/detector/portable_media_player.yml +0 -527
- data/spec/fixtures/detector/smart_display.yml +0 -235
- data/spec/fixtures/detector/smart_speaker.yml +0 -60
- data/spec/fixtures/detector/smartphone-1.yml +0 -9622
- data/spec/fixtures/detector/smartphone-10.yml +0 -8981
- data/spec/fixtures/detector/smartphone-11.yml +0 -8938
- data/spec/fixtures/detector/smartphone-12.yml +0 -8989
- data/spec/fixtures/detector/smartphone-13.yml +0 -9412
- data/spec/fixtures/detector/smartphone-14.yml +0 -9477
- data/spec/fixtures/detector/smartphone-15.yml +0 -9281
- data/spec/fixtures/detector/smartphone-16.yml +0 -9678
- data/spec/fixtures/detector/smartphone-17.yml +0 -9965
- data/spec/fixtures/detector/smartphone-18.yml +0 -9806
- data/spec/fixtures/detector/smartphone-19.yml +0 -9965
- data/spec/fixtures/detector/smartphone-2.yml +0 -12242
- data/spec/fixtures/detector/smartphone-20.yml +0 -9710
- data/spec/fixtures/detector/smartphone-21.yml +0 -8693
- data/spec/fixtures/detector/smartphone-22.yml +0 -10178
- data/spec/fixtures/detector/smartphone-23.yml +0 -9453
- data/spec/fixtures/detector/smartphone-24.yml +0 -9843
- data/spec/fixtures/detector/smartphone-25.yml +0 -9703
- data/spec/fixtures/detector/smartphone-26.yml +0 -10007
- data/spec/fixtures/detector/smartphone-27.yml +0 -4927
- data/spec/fixtures/detector/smartphone-3.yml +0 -9909
- data/spec/fixtures/detector/smartphone-4.yml +0 -8954
- data/spec/fixtures/detector/smartphone-5.yml +0 -8981
- data/spec/fixtures/detector/smartphone-6.yml +0 -8948
- data/spec/fixtures/detector/smartphone-7.yml +0 -8975
- data/spec/fixtures/detector/smartphone-8.yml +0 -9810
- data/spec/fixtures/detector/smartphone-9.yml +0 -8925
- data/spec/fixtures/detector/smartphone.yml +0 -9001
- data/spec/fixtures/detector/tablet-1.yml +0 -10155
- data/spec/fixtures/detector/tablet-2.yml +0 -9064
- data/spec/fixtures/detector/tablet-3.yml +0 -9035
- data/spec/fixtures/detector/tablet-4.yml +0 -9062
- data/spec/fixtures/detector/tablet-5.yml +0 -9273
- data/spec/fixtures/detector/tablet-6.yml +0 -4588
- data/spec/fixtures/detector/tablet.yml +0 -8979
- data/spec/fixtures/detector/tv-1.yml +0 -2501
- data/spec/fixtures/detector/tv.yml +0 -10045
- data/spec/fixtures/detector/unknown.yml +0 -3071
- data/spec/fixtures/detector/wearable.yml +0 -915
- data/spec/fixtures/device/camera.yml +0 -19
- data/spec/fixtures/device/car_browser.yml +0 -13
- data/spec/fixtures/device/console.yml +0 -79
- data/spec/fixtures/device/notebook.yml +0 -7
- data/spec/fixtures/parser/oss.yml +0 -2418
- data/spec/fixtures/parser/vendorfragments.yml +0 -168
- data/spec/spec_helper.rb +0 -9
@@ -54,6 +54,7 @@ class DeviceDetector
|
|
54
54
|
'1A' => 'Alba',
|
55
55
|
'AL' => 'Alcatel',
|
56
56
|
'20' => 'Alcor',
|
57
|
+
'XY' => 'Alps',
|
57
58
|
'7L' => 'ALDI NORD',
|
58
59
|
'6L' => 'ALDI SÜD',
|
59
60
|
'3L' => 'Alfawise',
|
@@ -69,6 +70,7 @@ class DeviceDetector
|
|
69
70
|
'AG' => 'AMGOO',
|
70
71
|
'9A' => 'Amigoo',
|
71
72
|
'AO' => 'Amoi',
|
73
|
+
'3J' => 'Amino',
|
72
74
|
'54' => 'AMCV',
|
73
75
|
'60' => 'Andowl',
|
74
76
|
'7A' => 'Anry',
|
@@ -78,6 +80,7 @@ class DeviceDetector
|
|
78
80
|
'O8' => 'AOC',
|
79
81
|
'J2' => 'AOYODKG',
|
80
82
|
'55' => 'AOpen',
|
83
|
+
'9Y' => 'Aocos',
|
81
84
|
'AP' => 'Apple',
|
82
85
|
'AR' => 'Archos',
|
83
86
|
'AB' => 'Arian Space',
|
@@ -88,6 +91,7 @@ class DeviceDetector
|
|
88
91
|
'AQ' => 'Aspera',
|
89
92
|
'40' => 'Artel',
|
90
93
|
'21' => 'Artizlee',
|
94
|
+
'59' => 'ArtLine',
|
91
95
|
'8A' => 'Asano',
|
92
96
|
'90' => 'Asanzo',
|
93
97
|
'1U' => 'Astro',
|
@@ -105,11 +109,13 @@ class DeviceDetector
|
|
105
109
|
'AY' => 'Axxion',
|
106
110
|
'XA' => 'Axioo',
|
107
111
|
'AM' => 'Azumi Mobile',
|
112
|
+
'WW' => 'Awow',
|
108
113
|
'BO' => 'BangOlufsen',
|
109
114
|
'BN' => 'Barnes & Noble',
|
110
115
|
'BB' => 'BBK',
|
111
116
|
'0B' => 'BB Mobile',
|
112
117
|
'B6' => 'BDF',
|
118
|
+
'QD' => 'BDQ',
|
113
119
|
'BE' => 'Becker',
|
114
120
|
'B5' => 'Beeline',
|
115
121
|
'B0' => 'Beelink',
|
@@ -156,6 +162,7 @@ class DeviceDetector
|
|
156
162
|
'BJ' => 'BrightSign',
|
157
163
|
'B1' => 'Bush',
|
158
164
|
'4Q' => 'Bundy',
|
165
|
+
'Y8' => 'Bubblegum',
|
159
166
|
'C9' => 'CAGI',
|
160
167
|
'CT' => 'Capitel',
|
161
168
|
'G3' => 'CG Mobile',
|
@@ -172,15 +179,16 @@ class DeviceDetector
|
|
172
179
|
'34' => 'CellAllure',
|
173
180
|
'7C' => 'Celcus',
|
174
181
|
'CE' => 'Celkon',
|
182
|
+
'CG' => 'Cellution',
|
175
183
|
'62' => 'Centric',
|
176
184
|
'C2' => 'Changhong',
|
177
185
|
'CH' => 'Cherry Mobile',
|
178
186
|
'C3' => 'China Mobile',
|
179
187
|
'CI' => 'Chico Mobile',
|
180
|
-
'HG' => 'CHIA',
|
181
188
|
'1C' => 'Chuwi',
|
182
189
|
'L8' => 'Clarmin',
|
183
190
|
'25' => 'Claresta',
|
191
|
+
'1J' => 'Cloud',
|
184
192
|
'CD' => 'Cloudfone',
|
185
193
|
'6C' => 'Cloudpad',
|
186
194
|
'C0' => 'Clout',
|
@@ -222,12 +230,14 @@ class DeviceDetector
|
|
222
230
|
'7D' => 'Datamini',
|
223
231
|
'6D' => 'Datalogic',
|
224
232
|
'D1' => 'Datsun',
|
233
|
+
'DZ' => 'Dazen',
|
225
234
|
'DB' => 'Dbtel',
|
226
235
|
'DL' => 'Dell',
|
227
236
|
'DE' => 'Denver',
|
228
237
|
'DS' => 'Desay',
|
229
238
|
'DW' => 'DeWalt',
|
230
239
|
'DX' => 'DEXP',
|
240
|
+
'8D' => 'DF',
|
231
241
|
'DG' => 'Dialog',
|
232
242
|
'DI' => 'Dicam',
|
233
243
|
'D4' => 'Digi',
|
@@ -235,6 +245,7 @@ class DeviceDetector
|
|
235
245
|
'DH' => 'Digihome',
|
236
246
|
'DD' => 'Digiland',
|
237
247
|
'Q0' => 'DIGIFORS',
|
248
|
+
'DQ' => 'DISH',
|
238
249
|
'9D' => 'Ditecma',
|
239
250
|
'D2' => 'Digma',
|
240
251
|
'1D' => 'Diva',
|
@@ -253,7 +264,9 @@ class DeviceDetector
|
|
253
264
|
'DR' => 'Doro',
|
254
265
|
'D8' => 'Droxio',
|
255
266
|
'DJ' => 'Dragon Touch',
|
267
|
+
'DY' => 'Dreamgate',
|
256
268
|
'DU' => 'Dune HD',
|
269
|
+
'UD' => 'DUNNS Mobile',
|
257
270
|
'EB' => 'E-Boda',
|
258
271
|
'EJ' => 'Engel',
|
259
272
|
'2E' => 'E-Ceros',
|
@@ -268,6 +281,7 @@ class DeviceDetector
|
|
268
281
|
'EK' => 'EKO',
|
269
282
|
'EY' => 'Einstein',
|
270
283
|
'EM' => 'Eks Mobility',
|
284
|
+
'UE' => 'Ematic',
|
271
285
|
'4K' => 'EKT',
|
272
286
|
'7E' => 'ELARI',
|
273
287
|
'03' => 'Electroneum',
|
@@ -281,6 +295,7 @@ class DeviceDetector
|
|
281
295
|
'E1' => 'Energy Sistem',
|
282
296
|
'3E' => 'Enot',
|
283
297
|
'8E' => 'Epik One',
|
298
|
+
'XP' => 'Epson',
|
284
299
|
'E7' => 'Ergo',
|
285
300
|
'EC' => 'Ericsson',
|
286
301
|
'05' => 'Erisson',
|
@@ -296,6 +311,7 @@ class DeviceDetector
|
|
296
311
|
'EV' => 'Evertek',
|
297
312
|
'E3' => 'Evolio',
|
298
313
|
'EO' => 'Evolveo',
|
314
|
+
'0Q' => 'Evoo',
|
299
315
|
'E0' => 'EvroMedia',
|
300
316
|
'XE' => 'ExMobile',
|
301
317
|
'4Z' => 'Exmart',
|
@@ -315,7 +331,9 @@ class DeviceDetector
|
|
315
331
|
'FB' => 'Fantec',
|
316
332
|
'FE' => 'Fengxiang',
|
317
333
|
'F7' => 'Fero',
|
334
|
+
'67' => 'FEONAL',
|
318
335
|
'FI' => 'FiGO',
|
336
|
+
'F9' => 'FiiO',
|
319
337
|
'F1' => 'FinePower',
|
320
338
|
'FX' => 'Finlux',
|
321
339
|
'F3' => 'FireFly Mobile',
|
@@ -352,14 +370,18 @@ class DeviceDetector
|
|
352
370
|
'Q4' => 'Geotex',
|
353
371
|
'GH' => 'Ghia',
|
354
372
|
'2C' => 'Ghong',
|
373
|
+
'GJ' => 'Ghost',
|
355
374
|
'GG' => 'Gigabyte',
|
356
375
|
'GS' => 'Gigaset',
|
357
376
|
'GZ' => 'Ginzzu',
|
358
377
|
'1G' => 'Gini',
|
359
378
|
'GI' => 'Gionee',
|
360
379
|
'G4' => 'Globex',
|
380
|
+
'38' => 'GLONYX',
|
381
|
+
'U6' => 'Glofiish',
|
361
382
|
'G7' => 'GoGEN',
|
362
383
|
'GC' => 'GOCLEVER',
|
384
|
+
'5G' => 'Gocomma',
|
363
385
|
'GB' => 'Gol Mobile',
|
364
386
|
'GL' => 'Goly',
|
365
387
|
'GX' => 'GLX',
|
@@ -375,12 +397,15 @@ class DeviceDetector
|
|
375
397
|
'GF' => 'Gretel',
|
376
398
|
'82' => 'Gresso',
|
377
399
|
'GU' => 'Grundig',
|
400
|
+
'GV' => 'Gtel',
|
401
|
+
'9Z' => 'H96',
|
378
402
|
'HF' => 'Hafury',
|
379
403
|
'HA' => 'Haier',
|
380
404
|
'HE' => 'HannSpree',
|
381
405
|
'HK' => 'Hardkernel',
|
382
406
|
'HS' => 'Hasee',
|
383
407
|
'H6' => 'Helio',
|
408
|
+
'HQ' => 'HERO',
|
384
409
|
'ZH' => 'Hezire',
|
385
410
|
'HL' => 'Hi-Level',
|
386
411
|
'3H' => 'Hi',
|
@@ -404,6 +429,7 @@ class DeviceDetector
|
|
404
429
|
'HP' => 'HP',
|
405
430
|
'HT' => 'HTC',
|
406
431
|
'HD' => 'Huadoo',
|
432
|
+
'HG' => 'Huavi',
|
407
433
|
'HU' => 'Huawei',
|
408
434
|
'HX' => 'Humax',
|
409
435
|
'HR' => 'Hurricane',
|
@@ -448,6 +474,7 @@ class DeviceDetector
|
|
448
474
|
'IQ' => 'INQ',
|
449
475
|
'QN' => 'iQ&T',
|
450
476
|
'IS' => 'Insignia',
|
477
|
+
'YI' => 'INSYS',
|
451
478
|
'IT' => 'Intek',
|
452
479
|
'IX' => 'Intex',
|
453
480
|
'IV' => 'Inverto',
|
@@ -478,6 +505,7 @@ class DeviceDetector
|
|
478
505
|
'VJ' => 'Jivi',
|
479
506
|
'JK' => 'JKL',
|
480
507
|
'JO' => 'Jolla',
|
508
|
+
'UJ' => 'Juniper Systems',
|
481
509
|
'J5' => 'Just5',
|
482
510
|
'JV' => 'JVC',
|
483
511
|
'JS' => 'Jesy',
|
@@ -490,6 +518,7 @@ class DeviceDetector
|
|
490
518
|
'K5' => 'KATV1',
|
491
519
|
'K0' => 'Kata',
|
492
520
|
'KZ' => 'Kazam',
|
521
|
+
'9K' => 'Kazuna',
|
493
522
|
'KD' => 'KDDI',
|
494
523
|
'KS' => 'Kempler & Strauss',
|
495
524
|
'K3' => 'Keneksi',
|
@@ -515,6 +544,7 @@ class DeviceDetector
|
|
515
544
|
'K2' => 'KRONO',
|
516
545
|
'KE' => 'Krüger&Matz',
|
517
546
|
'5K' => 'KREZ',
|
547
|
+
'WK' => 'KRIP',
|
518
548
|
'KH' => 'KT-Tech',
|
519
549
|
'Z6' => 'KUBO',
|
520
550
|
'K8' => 'Kuliao',
|
@@ -538,6 +568,7 @@ class DeviceDetector
|
|
538
568
|
'L1' => 'LeEco',
|
539
569
|
'4B' => 'Leff',
|
540
570
|
'L4' => 'Lemhoov',
|
571
|
+
'W9' => 'LEMFO',
|
541
572
|
'LN' => 'Lenco',
|
542
573
|
'LE' => 'Lenovo',
|
543
574
|
'LT' => 'Leotec',
|
@@ -547,10 +578,11 @@ class DeviceDetector
|
|
547
578
|
'L3' => 'Lexand',
|
548
579
|
'LX' => 'Lexibook',
|
549
580
|
'LG' => 'LG',
|
581
|
+
'39' => 'Liberton',
|
582
|
+
'5L' => 'Linsar',
|
550
583
|
'LF' => 'Lifemaxx',
|
551
|
-
'LJ' => 'L-Max',
|
552
584
|
'LI' => 'Lingwin',
|
553
|
-
'
|
585
|
+
'LJ' => 'L-Max',
|
554
586
|
'LW' => 'Linnex',
|
555
587
|
'LO' => 'Loewe',
|
556
588
|
'YL' => 'Loview',
|
@@ -568,6 +600,7 @@ class DeviceDetector
|
|
568
600
|
'XM' => 'Macoox',
|
569
601
|
'92' => 'MAC AUDIO',
|
570
602
|
'MJ' => 'Majestic',
|
603
|
+
'FQ' => 'Mafe',
|
571
604
|
'23' => 'Magnus',
|
572
605
|
'NH' => 'Manhattan',
|
573
606
|
'5M' => 'Mann',
|
@@ -584,7 +617,9 @@ class DeviceDetector
|
|
584
617
|
'M0' => 'Maze',
|
585
618
|
'YM' => 'Maze Speed',
|
586
619
|
'87' => 'Malata',
|
620
|
+
'28' => 'MBOX',
|
587
621
|
'3D' => 'MDC Store',
|
622
|
+
'1Y' => 'MDTV',
|
588
623
|
'09' => 'meanIT',
|
589
624
|
'M3' => 'Mecer',
|
590
625
|
'0M' => 'Mecool',
|
@@ -605,9 +640,11 @@ class DeviceDetector
|
|
605
640
|
'1X' => 'Minix',
|
606
641
|
'OM' => 'Mintt',
|
607
642
|
'MO' => 'Mio',
|
643
|
+
'X7' => 'Mione',
|
608
644
|
'M7' => 'Miray',
|
609
645
|
'8M' => 'Mito',
|
610
646
|
'MT' => 'Mitsubishi',
|
647
|
+
'0Y' => 'Mitsui',
|
611
648
|
'M5' => 'MIXC',
|
612
649
|
'2D' => 'MIVO',
|
613
650
|
'1Z' => 'MiXzo',
|
@@ -617,6 +654,7 @@ class DeviceDetector
|
|
617
654
|
'M6' => 'Mobiistar',
|
618
655
|
'MH' => 'Mobiola',
|
619
656
|
'MB' => 'Mobistel',
|
657
|
+
'ID' => 'MobiIoT',
|
620
658
|
'6W' => 'MobiWire',
|
621
659
|
'9M' => 'Mobo',
|
622
660
|
'M4' => 'Modecom',
|
@@ -639,17 +677,20 @@ class DeviceDetector
|
|
639
677
|
'3T' => 'MyTab',
|
640
678
|
'MG' => 'MyWigo',
|
641
679
|
'J3' => 'Mymaga',
|
680
|
+
'07' => 'MyGica',
|
642
681
|
'08' => 'Nabi',
|
643
682
|
'N7' => 'National',
|
644
683
|
'NC' => 'Navcity',
|
645
684
|
'6N' => 'Navitech',
|
646
685
|
'7V' => 'Navitel',
|
647
686
|
'N3' => 'Navon',
|
687
|
+
'7R' => 'NavRoad',
|
648
688
|
'NP' => 'Naomi Phone',
|
649
689
|
'NE' => 'NEC',
|
650
690
|
'8N' => 'Necnot',
|
651
691
|
'NF' => 'Neffos',
|
652
692
|
'1N' => 'Neomi',
|
693
|
+
'7Q' => 'Neon IQ',
|
653
694
|
'NA' => 'Netgear',
|
654
695
|
'NU' => 'NeuImage',
|
655
696
|
'NW' => 'Newgen',
|
@@ -674,6 +715,7 @@ class DeviceDetector
|
|
674
715
|
'57' => 'Nubia',
|
675
716
|
'JN' => 'NOBUX',
|
676
717
|
'NB' => 'Noblex',
|
718
|
+
'OG' => 'NOGA',
|
677
719
|
'NK' => 'Nokia',
|
678
720
|
'NM' => 'Nomi',
|
679
721
|
'2N' => 'Nomu',
|
@@ -692,6 +734,7 @@ class DeviceDetector
|
|
692
734
|
'O7' => 'Oale',
|
693
735
|
'OC' => 'OASYS',
|
694
736
|
'OB' => 'Obi',
|
737
|
+
'OQ' => 'Oculus',
|
695
738
|
'O1' => 'Odys',
|
696
739
|
'O9' => 'Ok',
|
697
740
|
'OA' => 'Okapia',
|
@@ -706,10 +749,12 @@ class DeviceDetector
|
|
706
749
|
'OO' => 'Opsson',
|
707
750
|
'OR' => 'Orange',
|
708
751
|
'O5' => 'Orbic',
|
752
|
+
'Y6' => 'Orbita',
|
709
753
|
'OS' => 'Ordissimo',
|
710
754
|
'OK' => 'Ouki',
|
711
755
|
'0O' => 'OINOM',
|
712
756
|
'QK' => 'OKWU',
|
757
|
+
'56' => 'OKSI',
|
713
758
|
'OE' => 'Oukitel',
|
714
759
|
'OU' => 'OUYA',
|
715
760
|
'OV' => 'Overmax',
|
@@ -719,11 +764,13 @@ class DeviceDetector
|
|
719
764
|
'O6' => 'Oyyu',
|
720
765
|
'OZ' => 'OzoneHD',
|
721
766
|
'7P' => 'P-UP',
|
767
|
+
'YP' => 'Paladin',
|
722
768
|
'PM' => 'Palm',
|
723
769
|
'PN' => 'Panacom',
|
724
770
|
'PA' => 'Panasonic',
|
725
771
|
'PT' => 'Pantech',
|
726
772
|
'94' => 'Packard Bell',
|
773
|
+
'H9' => 'Parrot Mobile',
|
727
774
|
'PB' => 'PCBOX',
|
728
775
|
'PC' => 'PCD',
|
729
776
|
'PD' => 'PCD Argentina',
|
@@ -750,12 +797,16 @@ class DeviceDetector
|
|
750
797
|
'0P' => 'POCO',
|
751
798
|
'PV' => 'Point of View',
|
752
799
|
'PL' => 'Polaroid',
|
800
|
+
'Q6' => 'Polar',
|
801
|
+
'97' => 'PolarLine',
|
753
802
|
'PP' => 'PolyPad',
|
754
803
|
'P5' => 'Polytron',
|
755
804
|
'P2' => 'Pomp',
|
756
805
|
'P0' => 'Poppox',
|
806
|
+
'0X' => 'POPTEL',
|
757
807
|
'PS' => 'Positivo',
|
758
808
|
'3P' => 'Positivo BGH',
|
809
|
+
'3F' => 'Porsche',
|
759
810
|
'P3' => 'PPTV',
|
760
811
|
'FP' => 'Premio',
|
761
812
|
'PR' => 'Prestigio',
|
@@ -764,15 +815,19 @@ class DeviceDetector
|
|
764
815
|
'2P' => 'Prixton',
|
765
816
|
'PF' => 'PROFiLO',
|
766
817
|
'P6' => 'Proline',
|
818
|
+
'5O' => 'Prology',
|
767
819
|
'P1' => 'ProScan',
|
768
820
|
'P7' => 'Protruly',
|
769
821
|
'R0' => 'ProVision',
|
822
|
+
'7O' => 'Polestar',
|
770
823
|
'PU' => 'PULID',
|
824
|
+
'Q7' => 'Q-Box',
|
771
825
|
'QH' => 'Q-Touch',
|
772
826
|
'QB' => 'Q.Bell',
|
773
827
|
'QI' => 'Qilive',
|
774
828
|
'QM' => 'QMobile',
|
775
829
|
'QT' => 'Qtek',
|
830
|
+
'Q9' => 'QTECH',
|
776
831
|
'QA' => 'Quantum',
|
777
832
|
'QU' => 'Quechua',
|
778
833
|
'QO' => 'Qumo',
|
@@ -791,6 +846,7 @@ class DeviceDetector
|
|
791
846
|
'R8' => 'RED',
|
792
847
|
'RD' => 'Reeder',
|
793
848
|
'Z9' => 'REGAL',
|
849
|
+
'RH' => 'Remdun',
|
794
850
|
'RP' => 'Revo',
|
795
851
|
'RI' => 'Rikomagic',
|
796
852
|
'RM' => 'RIM',
|
@@ -815,6 +871,7 @@ class DeviceDetector
|
|
815
871
|
'X5' => 'Saba',
|
816
872
|
'8L' => 'S-TELL',
|
817
873
|
'89' => 'Seatel',
|
874
|
+
'Y7' => 'Saiet',
|
818
875
|
'X1' => 'Safaricom',
|
819
876
|
'SG' => 'Sagem',
|
820
877
|
'4L' => 'Salora',
|
@@ -828,6 +885,7 @@ class DeviceDetector
|
|
828
885
|
'CZ' => 'Schneider',
|
829
886
|
'G8' => 'SEG',
|
830
887
|
'SD' => 'Sega',
|
888
|
+
'0U' => 'Selecline',
|
831
889
|
'9G' => 'Selenga',
|
832
890
|
'SV' => 'Selevision',
|
833
891
|
'SL' => 'Selfix',
|
@@ -842,6 +900,7 @@ class DeviceDetector
|
|
842
900
|
'SX' => 'SFR',
|
843
901
|
'SH' => 'Sharp',
|
844
902
|
'7S' => 'Shift Phones',
|
903
|
+
'78' => 'Shivaki',
|
845
904
|
'RS' => 'Shtrikh-M',
|
846
905
|
'3S' => 'Shuttle',
|
847
906
|
'13' => 'Sico',
|
@@ -866,6 +925,8 @@ class DeviceDetector
|
|
866
925
|
'80' => 'SMARTEC',
|
867
926
|
'SC' => 'Smartfren',
|
868
927
|
'S7' => 'Smartisan',
|
928
|
+
'3Y' => 'Smarty',
|
929
|
+
'HH' => 'Smooth Mobile',
|
869
930
|
'1Q' => 'Smotreshka',
|
870
931
|
'SF' => 'Softbank',
|
871
932
|
'9L' => 'SOLE',
|
@@ -877,6 +938,7 @@ class DeviceDetector
|
|
877
938
|
'X2' => 'Soundmax',
|
878
939
|
'8S' => 'Soyes',
|
879
940
|
'77' => 'SONOS',
|
941
|
+
'68' => 'Soho Style',
|
880
942
|
'PK' => 'Spark',
|
881
943
|
'FS' => 'SPC',
|
882
944
|
'6S' => 'Spectrum',
|
@@ -895,6 +957,7 @@ class DeviceDetector
|
|
895
957
|
'S2' => 'Stonex',
|
896
958
|
'ST' => 'Storex',
|
897
959
|
'71' => 'StrawBerry',
|
960
|
+
'96' => 'STRONG',
|
898
961
|
'69' => 'Stylo',
|
899
962
|
'9S' => 'Sugar',
|
900
963
|
'06' => 'Subor',
|
@@ -903,10 +966,12 @@ class DeviceDetector
|
|
903
966
|
'S3' => 'SunVan',
|
904
967
|
'5S' => 'Sunvell',
|
905
968
|
'5Y' => 'Sunny',
|
969
|
+
'W8' => 'SUNWIND',
|
906
970
|
'SU' => 'SuperSonic',
|
907
971
|
'79' => 'SuperTab',
|
908
972
|
'S5' => 'Supra',
|
909
973
|
'ZS' => 'Suzuki',
|
974
|
+
'2J' => 'Sunmi',
|
910
975
|
'0W' => 'Swipe',
|
911
976
|
'SS' => 'SWISSMOBILITY',
|
912
977
|
'1W' => 'Swisstone',
|
@@ -917,6 +982,8 @@ class DeviceDetector
|
|
917
982
|
'TK' => 'Takara',
|
918
983
|
'73' => 'Tambo',
|
919
984
|
'9N' => 'Tanix',
|
985
|
+
'U5' => 'Taiga System',
|
986
|
+
'7G' => 'TAG Tech',
|
920
987
|
'T5' => 'TB Touch',
|
921
988
|
'TC' => 'TCL',
|
922
989
|
'T0' => 'TD Systems',
|
@@ -935,6 +1002,7 @@ class DeviceDetector
|
|
935
1002
|
'T2' => 'Telenor',
|
936
1003
|
'TE' => 'Telit',
|
937
1004
|
'65' => 'Telia',
|
1005
|
+
'PW' => 'Telpo',
|
938
1006
|
'TD' => 'Tesco',
|
939
1007
|
'TA' => 'Tesla',
|
940
1008
|
'9T' => 'Tetratab',
|
@@ -954,6 +1022,7 @@ class DeviceDetector
|
|
954
1022
|
'0T' => 'Tone',
|
955
1023
|
'TY' => 'Tooky',
|
956
1024
|
'T9' => 'Top House',
|
1025
|
+
'DK' => 'Topelotek',
|
957
1026
|
'42' => 'Topway',
|
958
1027
|
'TO' => 'Toplux',
|
959
1028
|
'7T' => 'Torex',
|
@@ -963,6 +1032,7 @@ class DeviceDetector
|
|
963
1032
|
'T6' => 'TrekStor',
|
964
1033
|
'T3' => 'Trevi',
|
965
1034
|
'TJ' => 'Trifone',
|
1035
|
+
'Q5' => 'Trident',
|
966
1036
|
'4T' => 'Tronsmart',
|
967
1037
|
'11' => 'True',
|
968
1038
|
'JT' => 'True Slim',
|
@@ -973,6 +1043,9 @@ class DeviceDetector
|
|
973
1043
|
'TR' => 'Turbo-X',
|
974
1044
|
'5X' => 'TurboPad',
|
975
1045
|
'5T' => 'TurboKids',
|
1046
|
+
'UR' => 'Turkcell',
|
1047
|
+
'4U' => 'TuCEL',
|
1048
|
+
'2U' => 'Türk Telekom',
|
976
1049
|
'TV' => 'TVC',
|
977
1050
|
'TW' => 'TWM',
|
978
1051
|
'Z1' => 'TWZ',
|
@@ -997,12 +1070,15 @@ class DeviceDetector
|
|
997
1070
|
'3U' => 'IUNI',
|
998
1071
|
'UT' => 'UTStarcom',
|
999
1072
|
'6U' => 'UTime',
|
1073
|
+
'9U' => 'Urovo',
|
1000
1074
|
'5V' => 'VAIO',
|
1001
1075
|
'WV' => 'VAVA',
|
1002
1076
|
'VA' => 'Vastking',
|
1003
1077
|
'VP' => 'Vargo',
|
1078
|
+
'VC' => 'Vankyo',
|
1004
1079
|
'VB' => 'VC',
|
1005
1080
|
'VN' => 'Venso',
|
1081
|
+
'UV' => 'Venturer',
|
1006
1082
|
'VQ' => 'Vega',
|
1007
1083
|
'4V' => 'Verico',
|
1008
1084
|
'V4' => 'Verizon',
|
@@ -1020,6 +1096,7 @@ class DeviceDetector
|
|
1020
1096
|
'V7' => 'Vinga',
|
1021
1097
|
'V3' => 'Vinsoc',
|
1022
1098
|
'0V' => 'Vipro',
|
1099
|
+
'ZV' => 'Virzo',
|
1023
1100
|
'VI' => 'Vitelcom',
|
1024
1101
|
'8V' => 'Viumee',
|
1025
1102
|
'V5' => 'Vivax',
|
@@ -1066,6 +1143,7 @@ class DeviceDetector
|
|
1066
1143
|
'W4' => 'WIWA',
|
1067
1144
|
'WL' => 'Wolder',
|
1068
1145
|
'WG' => 'Wolfgang',
|
1146
|
+
'WQ' => 'Wolki',
|
1069
1147
|
'WO' => 'Wonu',
|
1070
1148
|
'W1' => 'Woo',
|
1071
1149
|
'WR' => 'Wortmann',
|
@@ -1114,6 +1192,7 @@ class DeviceDetector
|
|
1114
1192
|
'ZT' => 'ZTE',
|
1115
1193
|
'ZU' => 'Zuum',
|
1116
1194
|
'ZY' => 'Zync',
|
1195
|
+
'ZR' => 'Zyrex',
|
1117
1196
|
'ZQ' => 'ZYQ',
|
1118
1197
|
'Z4' => 'ZH&K',
|
1119
1198
|
'OW' => 'öwn',
|
data/lib/device_detector/os.rb
CHANGED
@@ -108,12 +108,14 @@ class DeviceDetector
|
|
108
108
|
'OS2' => 'OS/2',
|
109
109
|
'T64' => 'OSF1',
|
110
110
|
'OBS' => 'OpenBSD',
|
111
|
+
'OWR' => 'OpenWrt',
|
111
112
|
'ORD' => 'Ordissimo',
|
112
113
|
'PCL' => 'PCLinuxOS',
|
113
114
|
'PSP' => 'PlayStation Portable',
|
114
115
|
'PS3' => 'PlayStation',
|
115
116
|
'RHT' => 'Red Hat',
|
116
117
|
'ROS' => 'RISC OS',
|
118
|
+
'ROK' => 'Roku OS',
|
117
119
|
'RSO' => 'Rosa',
|
118
120
|
'REM' => 'Remix OS',
|
119
121
|
'REX' => 'REX',
|
@@ -145,7 +147,7 @@ class DeviceDetector
|
|
145
147
|
'WRT' => 'Windows RT',
|
146
148
|
'XBX' => 'Xbox',
|
147
149
|
'XBT' => 'Xubuntu',
|
148
|
-
'YNS' => '
|
150
|
+
'YNS' => 'YunOS',
|
149
151
|
'IOS' => 'iOS',
|
150
152
|
'POS' => 'palmOS',
|
151
153
|
'WOS' => 'webOS'
|
@@ -172,7 +174,7 @@ class DeviceDetector
|
|
172
174
|
LIN ARL DEB KNO MIN UBT KBT XBT LBT FED
|
173
175
|
RHT VLN MDR GNT SAB SLW SSE CES BTR SAF
|
174
176
|
ORD TOS RSO DEE FRE MAG FEN CAI PCL HAS
|
175
|
-
LOS DVK
|
177
|
+
LOS DVK ROK OWR
|
176
178
|
],
|
177
179
|
'Mac' => ['MAC'],
|
178
180
|
'Mobile Gaming Console' => %w[PSP NDS XBX],
|
@@ -85,7 +85,7 @@ class DeviceDetector
|
|
85
85
|
end
|
86
86
|
|
87
87
|
def build_regex(src)
|
88
|
-
Regexp.new('(?:^|[^A-Z0-9\-_]|[^A-Z0-9\-]_|sprd-)(?:' + src + ')', Regexp::IGNORECASE)
|
88
|
+
Regexp.new('(?:^|[^A-Z0-9\-_]|[^A-Z0-9\-]_|sprd-|MZ-)(?:' + src + ')', Regexp::IGNORECASE)
|
89
89
|
end
|
90
90
|
|
91
91
|
def from_cache(key)
|
@@ -8,11 +8,30 @@ class DeviceDetector
|
|
8
8
|
MAJOR_VERSION_8 = Gem::Version.new('8.0')
|
9
9
|
|
10
10
|
def call
|
11
|
-
super&.chomp('.')
|
11
|
+
simple_version = super&.chomp('.')
|
12
|
+
|
13
|
+
return simple_version unless simple_version&.empty?
|
14
|
+
|
15
|
+
os_version_by_regexes
|
12
16
|
end
|
13
17
|
|
14
18
|
private
|
15
19
|
|
20
|
+
def os_version_by_regexes
|
21
|
+
version_matches = regex_meta[:versions]
|
22
|
+
return '' unless version_matches
|
23
|
+
|
24
|
+
version_matches.detect do |matcher|
|
25
|
+
user_agent.match(matcher[:regex]) do |match_data|
|
26
|
+
return matcher[:version].gsub(/\$(\d)/) do
|
27
|
+
match_data[Regexp.last_match(1).to_i].to_s
|
28
|
+
end.strip
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
''
|
33
|
+
end
|
34
|
+
|
16
35
|
def metadata_string
|
17
36
|
String(regex_meta[:version])
|
18
37
|
end
|