device_detector 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +5 -4
  3. data/CHANGELOG.md +4 -4
  4. data/README.md +6 -8
  5. data/lib/device_detector.rb +2 -2
  6. data/lib/device_detector/version.rb +1 -1
  7. data/regexes/bots.yml +461 -10
  8. data/regexes/client/browser_engine.yml +4 -1
  9. data/regexes/client/browsers.yml +167 -17
  10. data/regexes/client/feed_readers.yml +30 -0
  11. data/regexes/client/libraries.yml +38 -0
  12. data/regexes/client/mediaplayers.yml +4 -0
  13. data/regexes/client/mobile_apps.yml +82 -1
  14. data/regexes/client/pim.yml +4 -0
  15. data/regexes/device/mobiles.yml +1761 -138
  16. data/regexes/device/portable_media_player.yml +2 -4
  17. data/regexes/device/televisions.yml +16 -2
  18. data/regexes/oss.yml +25 -4
  19. data/spec/device_detector/detector_fixtures_spec.rb +51 -11
  20. data/spec/device_detector_spec.rb +20 -0
  21. data/spec/fixtures/client/browser.yml +446 -11
  22. data/spec/fixtures/client/feed_reader.yml +25 -1
  23. data/spec/fixtures/client/library.yml +55 -1
  24. data/spec/fixtures/client/mediaplayer.yml +6 -0
  25. data/spec/fixtures/client/mobile_app.yml +81 -1
  26. data/spec/fixtures/client/pim.yml +7 -1
  27. data/spec/fixtures/detector/bots.yml +668 -108
  28. data/spec/fixtures/detector/camera.yml +14 -8
  29. data/spec/fixtures/detector/car_browser.yml +4 -3
  30. data/spec/fixtures/detector/console.yml +38 -24
  31. data/spec/fixtures/detector/desktop.yml +981 -687
  32. data/spec/fixtures/detector/feature_phone.yml +82 -41
  33. data/spec/fixtures/detector/feed_reader.yml +37 -0
  34. data/spec/fixtures/detector/mobile_apps.yml +257 -0
  35. data/spec/fixtures/detector/phablet.yml +569 -163
  36. data/spec/fixtures/detector/portable_media_player.yml +24 -16
  37. data/spec/fixtures/detector/smart_display.yml +8 -5
  38. data/spec/fixtures/detector/smartphone-1.yml +4698 -4235
  39. data/spec/fixtures/detector/smartphone-2.yml +4804 -4256
  40. data/spec/fixtures/detector/smartphone-3.yml +5060 -4603
  41. data/spec/fixtures/detector/smartphone-4.yml +6803 -2637
  42. data/spec/fixtures/detector/smartphone-5.yml +7044 -0
  43. data/spec/fixtures/detector/smartphone.yml +4380 -3904
  44. data/spec/fixtures/detector/tablet-1.yml +4530 -4036
  45. data/spec/fixtures/detector/tablet-2.yml +4875 -25
  46. data/spec/fixtures/detector/tablet.yml +3266 -2764
  47. data/spec/fixtures/detector/tv.yml +563 -206
  48. data/spec/fixtures/detector/unknown.yml +1033 -863
  49. data/spec/fixtures/parser/oss.yml +114 -2
  50. data/spec/fixtures/parser/vendorfragments.yml +2 -2
  51. metadata +5 -3
@@ -27,4 +27,7 @@
27
27
  name: 'Gecko'
28
28
 
29
29
  - regex: 'KHTML'
30
- name: 'KHTML'
30
+ name: 'KHTML'
31
+
32
+ - regex: 'NetSurf'
33
+ name: 'NetSurf'
@@ -12,6 +12,20 @@
12
12
  engine:
13
13
  default: 'Edge'
14
14
 
15
+ # Microsoft Edge for iOS
16
+ - regex: 'EdgiOS[ /](\d+[\.\d]+)'
17
+ name: 'Microsoft Edge'
18
+ version: '$1'
19
+ engine:
20
+ default: 'WebKit'
21
+
22
+ # Microsoft Edge for Android
23
+ - regex: 'EdgA[ /](\d+[\.\d]+)'
24
+ name: 'Microsoft Edge'
25
+ version: '$1'
26
+ engine:
27
+ default: 'Blink'
28
+
15
29
  # 360 Browser
16
30
  - regex: 'QIHU 360[ES]E'
17
31
  name: '360 Browser'
@@ -45,6 +59,25 @@
45
59
  engine:
46
60
  default: 'Gecko'
47
61
 
62
+ # Waterfox
63
+ - regex: 'Waterfox(?:/(\d+[\.\d]+))?'
64
+ name: 'Waterfox'
65
+ version: '$1'
66
+ engine:
67
+ default: 'Gecko'
68
+
69
+ #AlohaBrowser
70
+ - regex: 'AlohaBrowser(?:/(\d+[\.\d]+))?'
71
+ name: 'Aloha Browser'
72
+ version: '$1'
73
+
74
+ #Epic
75
+ - regex: 'Epic(?:/(\d+[\.\d]+))?'
76
+ name: 'Epic'
77
+ version: '$1'
78
+ engine:
79
+ default: 'Gecko'
80
+
48
81
  #Fennec (Firefox for mobile)
49
82
  - regex: 'Fennec(?:/(\d+[\.\d]+))?'
50
83
  name: 'Fennec'
@@ -103,6 +136,11 @@
103
136
  engine:
104
137
  default: 'Blink'
105
138
 
139
+ #Iridium
140
+ - regex: 'Iridium(?:/(\d+[\.\d]+))?'
141
+ name: 'Iridium'
142
+ version: '$1'
143
+
106
144
  #Iceweasel
107
145
  - regex: 'Iceweasel(?:/(\d+[\.\d]+))?'
108
146
  name: 'Iceweasel'
@@ -167,6 +205,18 @@
167
205
  engine:
168
206
  default: 'Gecko'
169
207
 
208
+ #Firefox Focus / Firefox Klar
209
+ - regex: '(?:Focus|Klar)(?:/(\d+[\.\d]+))?'
210
+ name: 'Firefox Focus'
211
+ version: '$1'
212
+
213
+ #Cyberfox
214
+ - regex: 'Cyberfox(?:/(\d+[\.\d]+))?'
215
+ name: 'Cyberfox'
216
+ version: '$1'
217
+ engine:
218
+ default: 'Gecko'
219
+
170
220
  #Swiftfox
171
221
  - regex: 'Firefox/(\d+[\.\d]+).*\(Swiftfox\)'
172
222
  name: 'Swiftfox'
@@ -174,6 +224,13 @@
174
224
  engine:
175
225
  default: 'Gecko'
176
226
 
227
+ #Firefox Mobile
228
+ - regex: '(Mobile|Tablet).*Firefox(?:/(\d+[\.\d]+))?'
229
+ name: 'Firefox Mobile'
230
+ version: '$2'
231
+ engine:
232
+ default: 'Gecko'
233
+
177
234
  #Firefox
178
235
  - regex: 'Firefox(?:/(\d+[\.\d]+))?'
179
236
  name: 'Firefox'
@@ -186,7 +243,7 @@
186
243
  engine:
187
244
  default: 'Gecko'
188
245
  - regex: 'FxiOS/(\d+[\.\d]+)'
189
- name: 'Firefox'
246
+ name: 'Firefox Mobile'
190
247
  version: 'iOS $1'
191
248
  engine:
192
249
  default: 'WebKit'
@@ -230,6 +287,21 @@
230
287
  engine:
231
288
  default: '' # Mosaic in the first versions, then Gecko
232
289
 
290
+ #Polarity
291
+ - regex: '(?:Polarity)(?:[/ ](\d+[\.\d]+))?'
292
+ name: 'Polarity'
293
+ version: '$1'
294
+
295
+ #QupZilla
296
+ - regex: '(?:QupZilla)(?:[/ ](\d+[\.\d]+))?'
297
+ name: 'QupZilla'
298
+ version: '$1'
299
+
300
+ #Dooble
301
+ - regex: '(?:Dooble)(?:[/ ](\d+[\.\d]+))?'
302
+ name: 'Dooble'
303
+ version: '$1'
304
+
233
305
  #Opera
234
306
  - regex: '(?:Opera Tablet.*Version|Opera/.+Opera Mobi.+Version|Mobile.+OPR)/(\d+[\.\d]+)'
235
307
  name: 'Opera Mobile'
@@ -238,7 +310,19 @@
238
310
  default: 'Presto'
239
311
  versions:
240
312
  15: 'Blink'
241
- - regex: 'Opera Mini/(?:att/)?(\d+[\.\d]+)'
313
+ - regex: 'Opera/(\d+[\.\d]+).+Opera Mobi'
314
+ name: 'Opera Mobile'
315
+ version: '$1'
316
+ engine:
317
+ default: 'Presto'
318
+ versions:
319
+ 15: 'Blink'
320
+ - regex: 'Opera ?Mini/(?:att/)?(\d+[\.\d]+)'
321
+ name: 'Opera Mini'
322
+ version: '$1'
323
+ engine:
324
+ default: 'Presto'
325
+ - regex: 'Opera ?Mini.+Version/(\d+[\.\d]+)'
242
326
  name: 'Opera Mini'
243
327
  version: '$1'
244
328
  engine:
@@ -257,13 +341,13 @@
257
341
  default: 'Presto'
258
342
  versions:
259
343
  15: 'Blink'
260
- - regex: '(?:Opera|OPR)[/ ]?(?:9.80.*Version/)?(\d+[\.\d]+)'
344
+ - regex: '(?:Opera[/ ]?|OPR[/ ])(?:9.80.*Version/)?(\d+[\.\d]+)'
261
345
  name: 'Opera'
262
346
  version: '$1'
263
347
  engine:
264
348
  default: ''
265
349
  versions:
266
- 3.5: 'Elektra'
350
+ '3.5': 'Elektra'
267
351
  7: 'Presto'
268
352
  15: 'Blink'
269
353
 
@@ -385,15 +469,15 @@
385
469
  versions:
386
470
  28: 'Blink'
387
471
 
388
- #Epiphany
472
+ #GNOME Web
389
473
  - regex: 'Epiphany(?:/(\d+[\.\d]+))?'
390
- name: 'Epiphany'
474
+ name: 'GNOME Web'
391
475
  version: '$1'
392
476
  engine:
393
477
  default: 'Gecko'
394
478
  versions:
395
- 2.9.16: '' # multi engine
396
- 2.28: 'WebKit'
479
+ '2.9.16': '' # multi engine
480
+ '2.28': 'WebKit'
397
481
 
398
482
  # Liebao
399
483
  - regex: 'LBBrowser(?:[ /](\d+[\.\d]+))?'
@@ -433,6 +517,32 @@
433
517
  name: 'Samsung Browser'
434
518
  version: '$1'
435
519
 
520
+ #Streamy
521
+ #This browser is built on top of Chromium.
522
+ #It should be checked first.
523
+ - regex: 'Streamy(?:/(\d+[\.\d]+))?'
524
+ name: 'Streamy'
525
+ version: '$1'
526
+ engine:
527
+ default: 'WebKit'
528
+
529
+ #Isivioo
530
+ #Andorid version of the browser is built on top of Chrome Mobile.
531
+ #It should be checked first.
532
+ - regex: 'isivioo'
533
+ name: 'Isivioo'
534
+ version: ''
535
+ engine:
536
+ default: 'WebKit'
537
+
538
+ #UC Browser
539
+ - regex: 'UC[ ]?Browser(?:[ /]?(\d+[\.\d]+))?'
540
+ name: 'UC Browser'
541
+ version: '$1'
542
+ - regex: 'UCWEB(?:[ /]?(\d+[\.\d]+))?'
543
+ name: 'UC Browser'
544
+ version: '$1'
545
+
436
546
  #Chrome
437
547
  - regex: 'CrMo(?:/(\d+[\.\d]+))?'
438
548
  name: 'Chrome Mobile'
@@ -473,14 +583,6 @@
473
583
  versions:
474
584
  28: 'Blink'
475
585
 
476
- #UC Browser
477
- - regex: 'UC[ ]?Browser(?:[ /]?(\d+[\.\d]+))?'
478
- name: 'UC Browser'
479
- version: '$1'
480
- - regex: 'UCWEB(?:[ /]?(\d+[\.\d]+))?'
481
- name: 'UC Browser'
482
- version: '$1'
483
-
484
586
  #Tizen Browser
485
587
  - regex: '(?:Tizen|SLP) Browser(?:/(\d+[\.\d]+))?'
486
588
  name: 'Tizen Browser'
@@ -560,6 +662,13 @@
560
662
  engine:
561
663
  default: 'Gecko'
562
664
 
665
+ #B-Line
666
+ - regex: 'bline(?:/(\d+[\.\d]+))?'
667
+ name: 'B-Line'
668
+ version: '$1'
669
+ engine:
670
+ default: 'WebKit'
671
+
563
672
  #BrowseX
564
673
  - regex: 'BrowseX \((\d+[\.\d]+)'
565
674
  name: 'BrowseX'
@@ -575,6 +684,13 @@
575
684
  name: 'Cheshire'
576
685
  version: '$1'
577
686
 
687
+ #dbrowser
688
+ - regex: 'dbrowser'
689
+ name: 'dbrowser'
690
+ version: ''
691
+ engine:
692
+ default: 'WebKit'
693
+
578
694
  #Dillo
579
695
  - regex: 'Dillo(?:/(\d+[\.\d]+))?'
580
696
  name: 'Dillo'
@@ -639,6 +755,13 @@
639
755
  name: 'IBrowse'
640
756
  version: '$1'
641
757
 
758
+ #iCabMobile
759
+ - regex: 'iCabMobile(?:[ /](\d+[\.\d]+))?'
760
+ name: 'iCab Mobile'
761
+ version: '$1'
762
+ engine:
763
+ default: 'WebKit'
764
+
642
765
  #iCab
643
766
  - regex: 'iCab(?:[ /](\d+[\.\d]+))?'
644
767
  name: 'iCab'
@@ -905,6 +1028,11 @@
905
1028
  name: 'BlackBerry Browser'
906
1029
  version: ''
907
1030
 
1031
+ #BriskBard
1032
+ - regex: 'BriskBard(?:/(\d+[\.\d]+))?'
1033
+ name: 'BriskBard'
1034
+ version: '$1'
1035
+
908
1036
  #Android Browser
909
1037
  - regex: 'Android'
910
1038
  name: 'Android Browser'
@@ -912,13 +1040,23 @@
912
1040
  engine:
913
1041
  default: 'WebKit'
914
1042
 
1043
+ #Coast
1044
+ - regex: 'Coast(?:/(\d+[\.\d]+))?'
1045
+ name: 'Coast'
1046
+ version: '$1'
1047
+
1048
+ #Qutebrowser
1049
+ - regex: 'qutebrowser(?:/(\d+[\.\d]+))?'
1050
+ name: 'Qutebrowser'
1051
+ version: '$1'
1052
+
915
1053
  #Safari
916
1054
  - regex: '(?:(?:iPod|iPad|iPhone).+Version|MobileSafari)/(\d+[\.\d]+)'
917
1055
  name: 'Mobile Safari'
918
1056
  version: '$1'
919
1057
  engine:
920
1058
  default: 'WebKit'
921
- - regex: 'Version/(\d+[\.\d]+).*Mobile.*Safari/'
1059
+ - regex: '(?:Version/(\d+[\.\d]+).*)?Mobile.*Safari/'
922
1060
  name: 'Mobile Safari'
923
1061
  version: '$1'
924
1062
  engine:
@@ -933,3 +1071,15 @@
933
1071
  version: '$1'
934
1072
  engine:
935
1073
  default: 'WebKit'
1074
+
1075
+ #Dorado
1076
+ - regex: 'Dorado WAP-Browser[/ ](\d+[\.\d]+)'
1077
+ name: 'Dorado'
1078
+ version: '$1'
1079
+
1080
+ #NetSurf
1081
+ - regex: 'NetSurf(?:/(\d+[\.\d]+))?'
1082
+ name: 'NetSurf'
1083
+ version: '$1'
1084
+ engine:
1085
+ default: 'NetSurf'
@@ -17,6 +17,18 @@
17
17
  url: 'https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/pubsub.1.html'
18
18
  type: 'Feed Reader'
19
19
 
20
+ - regex: 'BashPodder'
21
+ name: 'BashPodder'
22
+ version: ''
23
+ url: 'http://lincgeek.org/bashpodder/'
24
+ type: 'Feed Reader'
25
+
26
+ - regex: 'Downcast/([\d\.]+)'
27
+ name: 'Downcast'
28
+ version: '$1'
29
+ url: 'http://downcastapp.com/'
30
+ type: 'Feed Reader App'
31
+
20
32
  - regex: 'FeedDemon(?:/(\d+[\.\d]+))?'
21
33
  name: 'FeedDemon'
22
34
  version: '$1'
@@ -29,6 +41,18 @@
29
41
  url: 'http://www.chebinliu.com/projects/iphone/feeddler-rss-reader/'
30
42
  type: 'Feed Reader App'
31
43
 
44
+ - regex: 'gPodder/([\d\.]+)'
45
+ name: 'gPodder'
46
+ version: '$1'
47
+ url: 'http://gpodder.org/'
48
+ type: 'Feed Reader App'
49
+
50
+ - regex: 'Instacast/(\d+) CFNetwork/([\d\.]+)'
51
+ name: 'Instacast'
52
+ version: '$1'
53
+ url: 'http://vemedio.com/products/instacast-mac'
54
+ type: 'Feed Reader App'
55
+
32
56
  - regex: 'JetBrains Omea Reader(?:[/ ](\d+[\.\d]+))?'
33
57
  name: 'JetBrains Omea Reader'
34
58
  version: '$1'
@@ -65,6 +89,12 @@
65
89
  url: 'http://www.newsbeuter.org/'
66
90
  type: 'Feed Reader'
67
91
 
92
+ - regex: 'PritTorrent/([\d\.]+)'
93
+ name: 'PritTorrent'
94
+ version: '$1'
95
+ url: 'http://bitlove.org'
96
+ type: 'Feed Reader'
97
+
68
98
  - regex: 'Pulp(?:[/ ](\d+[\.\d]+))?'
69
99
  name: 'Pulp'
70
100
  version: '$1'
@@ -31,4 +31,42 @@
31
31
 
32
32
  - regex: '(?:perlclient|libwww-perl)(?:/?(\d+[\.\d]+))?'
33
33
  name: 'Perl'
34
+ version: '$1'
35
+
36
+ - regex: 'okhttp/([\d\.]+)'
37
+ name: 'OkHttp'
38
+ version: '$1'
39
+
40
+ - regex: 'HTTP_Request2(?:/(\d+[\.\d]+))?'
41
+ name: 'HTTP_Request2'
42
+ version: '$1'
43
+
44
+ - regex: 'HTTP_Request2(?:/(\d+[\.\d]+))?'
45
+ name: 'HTTP_Request2'
46
+ version: '$1'
47
+ url: 'http://pear.php.net/package/http_request2'
48
+
49
+ - regex: 'Mechanize(?:/(\d+[\.\d]+))?'
50
+ name: 'Mechanize'
51
+ version: '$1'
52
+ url: 'http://github.com/sparklemotion/mechanize/'
53
+
54
+ - regex: 'aiohttp(?:/(\d+[\.\d]+))?'
55
+ name: 'aiohttp'
56
+ version: '$1'
57
+
58
+ - regex: 'Google-HTTP-Java-Client(?:/(\d+[\.\d\w-]+))?'
59
+ name: 'Google HTTP Java Client'
60
+ version: '$1'
61
+
62
+ - regex: 'WWW-Mechanize(?:/(\d+[\.\d]+))?'
63
+ name: 'WWW-Mechanize'
64
+ version: '$1'
65
+
66
+ - regex: 'Faraday(?: v(\d+[\.\d]+))?'
67
+ name: 'Faraday'
68
+ version: '$1'
69
+
70
+ - regex: '(?:Go-http-client|Go )/?(?:(\d+[\.\d]+))?(?: package http)?'
71
+ name: 'Go-http-client'
34
72
  version: '$1'
@@ -24,6 +24,10 @@
24
24
  - regex: 'FlyCast(?:/([\d\.]+))?'
25
25
  name: 'FlyCast'
26
26
  version: '$1'
27
+
28
+ - regex: 'foobar2000(?:/([\d\.]+))?'
29
+ name: 'Foobar2000'
30
+ version: '$1'
27
31
 
28
32
  - regex: 'MediaMonkey(?:[ /](\d+[\.\d]+))?'
29
33
  name: 'MediaMonkey'
@@ -10,6 +10,20 @@
10
10
  name: 'AndroidDownloadManager'
11
11
  version: '$1'
12
12
 
13
+ # Apple News
14
+ - regex: '(?:Apple)?News(?:[ /][\d\.]+)? Version(?:[ /]([\d\.]+))?'
15
+ name: 'Apple News'
16
+ version: '$1'
17
+
18
+ - regex: 'bPod'
19
+ name: 'bPod'
20
+ version: ''
21
+
22
+ # Facebook Messenger
23
+ - regex: '(?:MessengerForiOS|MESSENGER).(?:FBAV)(?:[ /]([\d\.]+))?'
24
+ name: 'Facebook Messenger'
25
+ version: '$1'
26
+
13
27
  # Facebook
14
28
  - regex: '(?:FBAV|com.facebook.katana)(?:[ /]([\d\.]+))?'
15
29
  name: 'Facebook'
@@ -45,6 +59,11 @@
45
59
  name: 'Pinterest'
46
60
  version: '$1'
47
61
 
62
+ # Podcatcher Deluxe
63
+ - regex: 'Podcatcher Deluxe'
64
+ name: 'Podcatcher Deluxe'
65
+ version: ''
66
+
48
67
  # YouTube
49
68
  - regex: 'com.google.android.youtube(?:/([\d\.]+))?'
50
69
  name: 'YouTube'
@@ -63,4 +82,66 @@
63
82
  # Line
64
83
  - regex: 'Line(?:[ /]([\d\.]+))'
65
84
  name: 'Line'
66
- version: '$1'
85
+ version: '$1'
86
+
87
+ # Instacast
88
+ - regex: 'Instacast(?:HD)?/(\d\.[\d\.abc]+) CFNetwork/([\d\.]+) Darwin/([\d\.]+)'
89
+ name: 'Instacast'
90
+ version: '$1'
91
+ -
92
+ regex: 'Podcasts/([\d\.]+)'
93
+ name: 'Podcasts'
94
+ version: '$1'
95
+ -
96
+ regex: 'Pocket Casts(?:, (?:Android|iOS) v([\d\.]+))?'
97
+ name: 'Pocket Casts'
98
+ version: '$1'
99
+ -
100
+ regex: 'Podcat/([\d\.]+)'
101
+ name: 'Podcat'
102
+ version: '$1'
103
+
104
+ -
105
+ regex: 'BeyondPod'
106
+ name: 'BeyondPod'
107
+ version:
108
+ -
109
+ regex: 'AntennaPod/?([\d\.]+)?'
110
+ name: 'AntennaPod'
111
+ version: '$1'
112
+ -
113
+ regex: 'Overcast/([\d\.]+)'
114
+ name: 'Overcast'
115
+ version: '$1'
116
+ -
117
+ regex: 'Player FM'
118
+ name: 'Player FM'
119
+ version: ''
120
+ -
121
+ regex: 'Podkicker(?: Pro)?/([\d\.]+)'
122
+ name: 'Podkicker'
123
+ version: '$1'
124
+ -
125
+ regex: 'Castro/(\d+)'
126
+ name: 'Castro'
127
+ version: '$1'
128
+ -
129
+ regex: 'Castro 2 ([\d\.]+)/[\d]+ Like iTunes'
130
+ name: 'Castro 2'
131
+ version: '$1'
132
+ -
133
+ regex: 'Castro 2'
134
+ name: 'Castro 2'
135
+ version: ''
136
+ -
137
+ regex: 'DoggCatcher'
138
+ name: 'DoggCatcher'
139
+ version:
140
+ -
141
+ regex: 'Podcat/([\d]+) CFNetwork/([\d\.]+) Darwin/([\d\.]+)'
142
+ name: 'Podcat'
143
+ version: '$1'
144
+ -
145
+ regex: 'i[cC]atcher[^\d]+([\d\.]+)'
146
+ name: 'iCatcher'
147
+ version: '$1'