device_detector 1.0.2 → 1.0.6

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.
Files changed (112) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +49 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +5 -6
  5. data/CHANGELOG.md +11 -0
  6. data/README.md +8 -7
  7. data/Rakefile +7 -4
  8. data/device_detector.gemspec +1 -0
  9. data/lib/device_detector/bot.rb +2 -2
  10. data/lib/device_detector/browser.rb +364 -0
  11. data/lib/device_detector/client.rb +11 -2
  12. data/lib/device_detector/device.rb +1168 -22
  13. data/lib/device_detector/memory_cache.rb +5 -5
  14. data/lib/device_detector/metadata_extractor.rb +7 -8
  15. data/lib/device_detector/model_extractor.rb +3 -3
  16. data/lib/device_detector/name_extractor.rb +2 -2
  17. data/lib/device_detector/os.rb +148 -116
  18. data/lib/device_detector/parser.rb +22 -9
  19. data/lib/device_detector/version.rb +1 -1
  20. data/lib/device_detector/version_extractor.rb +10 -2
  21. data/lib/device_detector.rb +73 -40
  22. data/regexes/bots.yml +909 -59
  23. data/regexes/client/browser_engine.yml +14 -2
  24. data/regexes/client/browsers.yml +1356 -241
  25. data/regexes/client/feed_readers.yml +10 -10
  26. data/regexes/client/libraries.yml +75 -1
  27. data/regexes/client/mediaplayers.yml +39 -3
  28. data/regexes/client/mobile_apps.yml +524 -45
  29. data/regexes/client/pim.yml +55 -2
  30. data/regexes/device/cameras.yml +6 -6
  31. data/regexes/device/car_browsers.yml +23 -3
  32. data/regexes/device/consoles.yml +9 -3
  33. data/regexes/device/mobiles.yml +16903 -3199
  34. data/regexes/device/notebooks.yml +114 -0
  35. data/regexes/device/portable_media_player.yml +20 -3
  36. data/regexes/device/shell_tv.yml +117 -0
  37. data/regexes/device/televisions.yml +440 -35
  38. data/regexes/oss.yml +603 -165
  39. data/regexes/vendorfragments.yml +6 -2
  40. data/spec/device_detector/concrete_user_agent_spec.rb +38 -51
  41. data/spec/device_detector/detector_fixtures_spec.rb +36 -37
  42. data/spec/device_detector/device_spec.rb +52 -56
  43. data/spec/device_detector/memory_cache_spec.rb +19 -19
  44. data/spec/device_detector/model_extractor_spec.rb +3 -3
  45. data/spec/device_detector/version_extractor_spec.rb +5 -6
  46. data/spec/device_detector_spec.rb +26 -26
  47. data/spec/fixtures/client/browser.yml +2617 -555
  48. data/spec/fixtures/client/feed_reader.yml +34 -52
  49. data/spec/fixtures/client/library.yml +129 -38
  50. data/spec/fixtures/client/mediaplayer.yml +59 -28
  51. data/spec/fixtures/client/mobile_app.yml +589 -20
  52. data/spec/fixtures/client/pim.yml +92 -19
  53. data/spec/fixtures/detector/bots.yml +1749 -458
  54. data/spec/fixtures/detector/camera.yml +30 -24
  55. data/spec/fixtures/detector/car_browser.yml +199 -3
  56. data/spec/fixtures/detector/console.yml +107 -45
  57. data/spec/fixtures/detector/desktop.yml +3216 -758
  58. data/spec/fixtures/detector/feature_phone.yml +935 -181
  59. data/spec/fixtures/detector/feed_reader.yml +181 -193
  60. data/spec/fixtures/detector/mediaplayer.yml +157 -60
  61. data/spec/fixtures/detector/mobile_apps.yml +914 -136
  62. data/spec/fixtures/detector/peripheral.yml +271 -0
  63. data/spec/fixtures/detector/phablet.yml +5593 -1533
  64. data/spec/fixtures/detector/portable_media_player.yml +398 -32
  65. data/spec/fixtures/detector/smart_display.yml +183 -9
  66. data/spec/fixtures/detector/smart_speaker.yml +60 -0
  67. data/spec/fixtures/detector/smartphone-1.yml +3930 -4239
  68. data/spec/fixtures/detector/smartphone-10.yml +3985 -7366
  69. data/spec/fixtures/detector/smartphone-11.yml +5083 -3784
  70. data/spec/fixtures/detector/smartphone-12.yml +8989 -0
  71. data/spec/fixtures/detector/smartphone-13.yml +9412 -0
  72. data/spec/fixtures/detector/smartphone-14.yml +9477 -0
  73. data/spec/fixtures/detector/smartphone-15.yml +9281 -0
  74. data/spec/fixtures/detector/smartphone-16.yml +9678 -0
  75. data/spec/fixtures/detector/smartphone-17.yml +9965 -0
  76. data/spec/fixtures/detector/smartphone-18.yml +9806 -0
  77. data/spec/fixtures/detector/smartphone-19.yml +9965 -0
  78. data/spec/fixtures/detector/smartphone-2.yml +6670 -4375
  79. data/spec/fixtures/detector/smartphone-20.yml +9710 -0
  80. data/spec/fixtures/detector/smartphone-21.yml +8693 -0
  81. data/spec/fixtures/detector/smartphone-22.yml +10178 -0
  82. data/spec/fixtures/detector/smartphone-23.yml +9453 -0
  83. data/spec/fixtures/detector/smartphone-24.yml +9843 -0
  84. data/spec/fixtures/detector/smartphone-25.yml +9703 -0
  85. data/spec/fixtures/detector/smartphone-26.yml +10007 -0
  86. data/spec/fixtures/detector/smartphone-27.yml +4927 -0
  87. data/spec/fixtures/detector/smartphone-3.yml +4656 -4711
  88. data/spec/fixtures/detector/smartphone-4.yml +3518 -4479
  89. data/spec/fixtures/detector/smartphone-5.yml +3805 -4803
  90. data/spec/fixtures/detector/smartphone-6.yml +3745 -4693
  91. data/spec/fixtures/detector/smartphone-7.yml +3721 -4645
  92. data/spec/fixtures/detector/smartphone-8.yml +4564 -4699
  93. data/spec/fixtures/detector/smartphone-9.yml +3897 -4888
  94. data/spec/fixtures/detector/smartphone.yml +3154 -4141
  95. data/spec/fixtures/detector/tablet-1.yml +4742 -4576
  96. data/spec/fixtures/detector/tablet-2.yml +3803 -4731
  97. data/spec/fixtures/detector/tablet-3.yml +6210 -2309
  98. data/spec/fixtures/detector/tablet-4.yml +9062 -0
  99. data/spec/fixtures/detector/tablet-5.yml +9273 -0
  100. data/spec/fixtures/detector/tablet-6.yml +4588 -0
  101. data/spec/fixtures/detector/tablet.yml +3629 -4613
  102. data/spec/fixtures/detector/tv-1.yml +2501 -0
  103. data/spec/fixtures/detector/tv.yml +8856 -2064
  104. data/spec/fixtures/detector/unknown.yml +412 -587
  105. data/spec/fixtures/detector/wearable.yml +915 -0
  106. data/spec/fixtures/device/camera.yml +4 -3
  107. data/spec/fixtures/device/car_browser.yml +9 -2
  108. data/spec/fixtures/device/console.yml +15 -14
  109. data/spec/fixtures/device/notebook.yml +7 -0
  110. data/spec/fixtures/parser/oss.yml +1392 -21
  111. data/spec/fixtures/parser/vendorfragments.yml +57 -51
  112. metadata +70 -4
@@ -23,7 +23,7 @@ describe DeviceDetector::ModelExtractor do
23
23
  let(:device_name) { 'iPhone' }
24
24
 
25
25
  it 'returns the textual portion without trailing whitespace' do
26
- extractor.call.must_equal device_name
26
+ value(extractor.call).must_equal device_name
27
27
  end
28
28
 
29
29
  end
@@ -33,7 +33,7 @@ describe DeviceDetector::ModelExtractor do
33
33
  let(:device_name) { 'iPhone 5S' }
34
34
 
35
35
  it 'returns the full device name' do
36
- extractor.call.must_equal device_name
36
+ value(extractor.call).must_equal device_name
37
37
  end
38
38
 
39
39
  end
@@ -53,7 +53,7 @@ describe DeviceDetector::ModelExtractor do
53
53
  end
54
54
 
55
55
  it 'returns the model name' do
56
- extractor.call.must_equal device_name
56
+ value(extractor.call).must_equal device_name
57
57
  end
58
58
 
59
59
  end
@@ -21,7 +21,7 @@ describe DeviceDetector::VersionExtractor do
21
21
  end
22
22
 
23
23
  it 'returns nil' do
24
- extractor.call.must_equal ''
24
+ value(extractor.call).must_equal ''
25
25
  end
26
26
 
27
27
  end
@@ -39,12 +39,12 @@ describe DeviceDetector::VersionExtractor do
39
39
  end
40
40
 
41
41
  it 'returns the correct version' do
42
- extractor.call.must_equal version
42
+ value(extractor.call).must_equal version
43
43
  end
44
44
 
45
45
  it 'removes trailing white spaces' do
46
46
  regex_meta[:version] = regex_meta[:version] + ' '
47
- extractor.call.must_equal version
47
+ value(extractor.call).must_equal version
48
48
  end
49
49
 
50
50
  end
@@ -60,7 +60,7 @@ describe DeviceDetector::VersionExtractor do
60
60
  end
61
61
 
62
62
  it 'returns the correct version' do
63
- extractor.call.must_equal '8.0'
63
+ value(extractor.call).must_equal '8.0'
64
64
  end
65
65
 
66
66
  end
@@ -71,10 +71,9 @@ describe DeviceDetector::VersionExtractor do
71
71
  let(:regex_meta) { {} }
72
72
 
73
73
  it 'returns nil' do
74
- extractor.call.must_be_nil
74
+ value(extractor.call).must_be_nil
75
75
  end
76
76
 
77
77
  end
78
78
  end
79
79
  end
80
-
@@ -13,49 +13,49 @@ describe DeviceDetector do
13
13
 
14
14
  describe '#name' do
15
15
  it 'returns the name' do
16
- client.name.must_equal 'Chrome'
16
+ value(client.name).must_equal 'Chrome'
17
17
  end
18
18
  end
19
19
 
20
20
  describe '#full_version' do
21
21
  it 'returns the full version' do
22
- client.full_version.must_equal '30.0.1599.69'
22
+ value(client.full_version).must_equal '30.0.1599.69'
23
23
  end
24
24
  end
25
25
 
26
26
  describe '#os_family' do
27
27
  it 'returns the operating system name' do
28
- client.os_family.must_equal 'Mac'
28
+ value(client.os_family).must_equal 'Mac'
29
29
  end
30
30
  end
31
31
 
32
32
  describe '#os_name' do
33
33
  it 'returns the operating system name' do
34
- client.os_name.must_equal 'Mac'
34
+ value(client.os_name).must_equal 'Mac'
35
35
  end
36
36
  end
37
37
 
38
38
  describe '#os_full_version' do
39
39
  it 'returns the operating system full version' do
40
- client.os_full_version.must_equal '10.8.5'
40
+ value(client.os_full_version).must_equal '10.8.5'
41
41
  end
42
42
  end
43
43
 
44
44
  describe '#known?' do
45
45
  it 'returns true' do
46
- client.known?.must_equal true
46
+ value(client.known?).must_equal true
47
47
  end
48
48
  end
49
49
 
50
50
  describe '#bot?' do
51
51
  it 'returns false' do
52
- client.bot?.must_equal false
52
+ value(client.bot?).must_equal false
53
53
  end
54
54
  end
55
55
 
56
56
  describe '#bot_name' do
57
57
  it 'returns nil' do
58
- client.bot_name.must_be_nil
58
+ value(client.bot_name).must_be_nil
59
59
  end
60
60
  end
61
61
  end
@@ -67,13 +67,13 @@ describe DeviceDetector do
67
67
 
68
68
  describe '#os_family' do
69
69
  it 'returns the operating system name' do
70
- client.os_family.must_equal 'GNU/Linux'
70
+ value(client.os_family).must_equal 'GNU/Linux'
71
71
  end
72
72
  end
73
73
 
74
74
  describe '#os_name' do
75
75
  it 'returns the operating system name' do
76
- client.os_name.must_equal 'Ubuntu'
76
+ value(client.os_name).must_equal 'Ubuntu'
77
77
  end
78
78
  end
79
79
  end
@@ -82,7 +82,7 @@ describe DeviceDetector do
82
82
  let(:user_agent) { 'Mozilla/5.0 (Android 7.0; Mobile; rv:53.0) Gecko/53.0 Firefox/53.0' }
83
83
 
84
84
  it 'detects smartphone' do
85
- client.device_type.must_equal 'smartphone'
85
+ value(client.device_type).must_equal 'smartphone'
86
86
  end
87
87
  end
88
88
 
@@ -90,7 +90,7 @@ describe DeviceDetector do
90
90
  let(:user_agent) { 'Mozilla/5.0 (Android 6.0.1; Tablet; rv:47.0) Gecko/47.0 Firefox/47.0' }
91
91
 
92
92
  it 'detects tablet' do
93
- client.device_type.must_equal 'tablet'
93
+ value(client.device_type).must_equal 'tablet'
94
94
  end
95
95
  end
96
96
  end
@@ -100,43 +100,43 @@ describe DeviceDetector do
100
100
 
101
101
  describe '#name' do
102
102
  it 'returns nil' do
103
- client.name.must_be_nil
103
+ value(client.name).must_be_nil
104
104
  end
105
105
  end
106
106
 
107
107
  describe '#full_version' do
108
108
  it 'returns nil' do
109
- client.full_version.must_be_nil
109
+ value(client.full_version).must_be_nil
110
110
  end
111
111
  end
112
112
 
113
113
  describe '#os_name' do
114
114
  it 'returns nil' do
115
- client.os_name.must_be_nil
115
+ value(client.os_name).must_be_nil
116
116
  end
117
117
  end
118
118
 
119
119
  describe '#os_full_version' do
120
120
  it 'returns nil' do
121
- client.os_full_version.must_be_nil
121
+ value(client.os_full_version).must_be_nil
122
122
  end
123
123
  end
124
124
 
125
125
  describe '#known?' do
126
126
  it 'returns false' do
127
- client.known?.must_equal false
127
+ value(client.known?).must_equal false
128
128
  end
129
129
  end
130
130
 
131
131
  describe '#bot?' do
132
132
  it 'returns false' do
133
- client.bot?.must_equal false
133
+ value(client.bot?).must_equal false
134
134
  end
135
135
  end
136
136
 
137
137
  describe '#bot_name' do
138
138
  it 'returns nil' do
139
- client.bot_name.must_be_nil
139
+ value(client.bot_name).must_be_nil
140
140
  end
141
141
  end
142
142
  end
@@ -146,43 +146,43 @@ describe DeviceDetector do
146
146
 
147
147
  describe '#name' do
148
148
  it 'returns nil' do
149
- client.name.must_be_nil
149
+ value(client.name).must_be_nil
150
150
  end
151
151
  end
152
152
 
153
153
  describe '#full_version' do
154
154
  it 'returns nil' do
155
- client.full_version.must_be_nil
155
+ value(client.full_version).must_be_nil
156
156
  end
157
157
  end
158
158
 
159
159
  describe '#os_name' do
160
160
  it 'returns nil' do
161
- client.os_name.must_be_nil
161
+ value(client.os_name).must_be_nil
162
162
  end
163
163
  end
164
164
 
165
165
  describe '#os_full_version' do
166
166
  it 'returns nil' do
167
- client.os_full_version.must_be_nil
167
+ value(client.os_full_version).must_be_nil
168
168
  end
169
169
  end
170
170
 
171
171
  describe '#known?' do
172
172
  it 'returns false' do
173
- client.known?.must_equal false
173
+ value(client.known?).must_equal false
174
174
  end
175
175
  end
176
176
 
177
177
  describe '#bot?' do
178
178
  it 'returns true' do
179
- client.bot?.must_equal true
179
+ value(client.bot?).must_equal true
180
180
  end
181
181
  end
182
182
 
183
183
  describe '#bot_name' do
184
184
  it 'returns the name of the bot' do
185
- client.bot_name.must_equal 'Googlebot'
185
+ value(client.bot_name).must_equal 'Googlebot'
186
186
  end
187
187
  end
188
188
  end