device_detector 1.0.6 → 1.0.7
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/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
|