browserino 2.3.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 73da860bb3eb32ad2dc1eb37512027bb88d7e543
4
- data.tar.gz: 0a96818c4f592bb6e08271cf782d6b8c9446acc7
3
+ metadata.gz: 4b5620248b55bb700730a80e4d7276148081f686
4
+ data.tar.gz: 99d49e62bed9ddecd80d47e0ba16cf929b85624c
5
5
  SHA512:
6
- metadata.gz: 2a981d94ecdd13a05fd56c13040daead3bc787d038d513bc32d2e1b0dcf64d9d15a7a129420ae6cbf2d2381d23f9f52b3512b4b0df6777fdc0212aeed2e7a727
7
- data.tar.gz: 72837977011f86c73ff3431fd7c42b02311fcba52d1e293b8a286d8883855deacc8c1d9e9822fd139a4a68487600b0affa8dd8e0514f7cd12e28ec199f012a97
6
+ metadata.gz: 120db10d8fae325502dec215a8c2e960afac7bd4f37c663b53a1b13d9a4ecc3deed381c9fd23e3009cac333eb06d11f4ad677b1edc6f791afa9fb3b8c1176aca
7
+ data.tar.gz: c209b683298709e503ce623a5d4e02010a333c95befbf49f5ae2152185557e50abd4d9e877327ffa7ac32f0aa29d1245408b1bc09545878c80f442fed7b5a534
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ .DS_Store
data/.travis.yml CHANGED
@@ -1,6 +1,8 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - 2.2.1
4
+ - 2.1.0
5
+ - 2.0.0
4
6
  - 1.9.3
5
7
  before_install: gem install bundler -v 1.10.5
6
8
 
data/CHANGELOG.md CHANGED
@@ -1,6 +1,14 @@
1
1
  ## CHANGELOG
2
2
  _dates are in dd-mm-yyyy format_
3
3
 
4
+ #### 04-01-2016 VERSION 2.1.0
5
+
6
+ - Small restructuring of test suite
7
+ - Added bot detection
8
+ - Added `#bot?` method
9
+ - Added dynamic method support for bots
10
+ - Added support for the seamonkey browser
11
+
4
12
  #### 03-01-2016 VERSION 2.0.0
5
13
 
6
14
  - **IMPORTANT** Changed behaviour of all dynamic methods to include version as an argument rather than in the method name.
data/README.md CHANGED
@@ -10,6 +10,10 @@ This gem aims to provide information about the browser that your visitor is usin
10
10
  _dates are in dd-mm-yyyy format_
11
11
  _older changes can be found in the [CHANGELOG.md](https://github.com/SidOfc/browserino/blob/master/CHANGELOG.md)_
12
12
 
13
+ #### 10-01-2016 VERSION 2.4.0
14
+
15
+ - Added rails integration
16
+
13
17
  #### 06-01-2016 VERSION 2.3.0
14
18
 
15
19
  - Added `#compat?` method to test if IE is in compatibility mode
@@ -22,14 +26,6 @@ _older changes can be found in the [CHANGELOG.md](https://github.com/SidOfc/brow
22
26
  - Added more bots
23
27
  - `#bot?` method can now take a bot name as argument to check for an exact bot
24
28
 
25
- #### 04-01-2016 VERSION 2.1.0
26
-
27
- - Small restructuring of test suite
28
- - Added bot detection
29
- - Added `#bot?` method
30
- - Added dynamic method support for bots
31
- - Added support for the seamonkey browser
32
-
33
29
  ## Installation
34
30
 
35
31
  *supports ruby 1.9.3+*
@@ -60,14 +56,18 @@ Afterwards you can simply call
60
56
  ```ruby
61
57
  Browserino::parse('<user agent>')
62
58
  ```
63
- Optionally if you're using a version _>=_ than _1.1.2_ you can set a return value in place of `nil` when running `::parse(...)`.
64
- If you want any unknown properties to return the string `unknown` you could do so like this:
59
+
60
+ Or if you're using Rails *(>= 3.2.0)*, in your controllers you'll have access to an `agent` object
65
61
 
66
62
  ```ruby
67
- Browserino::parse('<user agent>', 'unknown')
63
+ class HomeController < ApplicationController
64
+ def index
65
+ render json: agent
66
+ end
67
+ end
68
68
  ```
69
69
 
70
- Without specifying the second argument the value for unknown properties will always be `nil`
70
+ The return value will always be `nil` if a value isn't found
71
71
 
72
72
  `Browserino::parse()` will return a `Browserino::Agent` object containing all the information parsed out of the supplied user agent.
73
73
  On this object there are a few method calls you can do to retrieve information.
@@ -162,6 +162,7 @@ agent.to_a
162
162
  # [:system_name, 'macintosh'],
163
163
  # [:system_version, '10'],
164
164
  # [:system_architecture, nil],
165
+ # [:locale, nil],
165
166
  # [:bot_name, nil]
166
167
  # ]
167
168
 
@@ -174,6 +175,7 @@ agent.to_h
174
175
  # system_name: 'macintosh',
175
176
  # system_version: '10',
176
177
  # system_architecture: nil,
178
+ # locale: nil,
177
179
  # bot_name: nil
178
180
  # }
179
181
  ```
@@ -192,22 +194,32 @@ Browsers can also accept a float / integer to check for a specific version.
192
194
 
193
195
  ```ruby
194
196
  agent.android?
197
+
195
198
  # check for android jellybean
196
199
  # agent.android?(:jellybean) or agent.android?('jellybean') or agent.android?(4.1)
200
+
197
201
  agent.ios?
198
- # check version of iOS (v1.x.x)
202
+
203
+ # check version of iOS (>= 1.0.0)
199
204
  # agent.ios9?
200
- # check version of iOS (v2.x.x)
205
+
206
+ # check version of iOS (>= 2.0.0)
201
207
  # agent.ios?(9)
208
+
202
209
  agent.windows?
203
- # check for windows Vista (v1.x.x)
210
+
211
+ # check for windows Vista (>= 1.0.0)
204
212
  # agent.windows60?
205
- # check for windows Vista (v2.x.x)
213
+
214
+ # check for windows Vista (>= 2.0.0)
206
215
  # agent.windows?(6) - based on NT version
207
216
  # agent.windows?(6.0) - based on NT version
208
217
  # agent.windows?(:vista) or agent.windows?('vista')
218
+
209
219
  agent.macintosh?
220
+
210
221
  agent.blackberry?
222
+
211
223
  agent.linux?
212
224
  ```
213
225
 
@@ -215,22 +227,32 @@ You could also invert these questions by using the `.not` method
215
227
 
216
228
  ```ruby
217
229
  agent.not.android?
230
+
218
231
  # check for android jellybean
219
232
  # agent.not.android?(:jelly_bean) or agent.not.android?('jelly bean') or agent.not.android?(4.1)
233
+
220
234
  agent.not.ios?
221
- # check if iOS version isn't 9 (v1.4.0+)
235
+
236
+ # check if iOS version isn't 9 (>= 1.4.0)
222
237
  # agent.not.ios9?
223
- # check if iOS version isn't 9 (v2.x.x)
238
+
239
+ # check if iOS version isn't 9 (>= 2.0.0)
224
240
  # agent.not.ios?(9)
241
+
225
242
  agent.not.windows?
226
- # check if not windows vista (v1.4.0+)
243
+
244
+ # check if not windows vista (>= 1.4.0)
227
245
  # agent.not.windows60?
246
+
228
247
  # check if not windows vista (v2.x.x)
229
248
  # agent.not.windows?(6) - based on NT version
230
249
  # agent.not.windows?(6.0) - based on NT version
231
250
  # agent.not.windows?(:vista) or agent.not.windows?('vista')
251
+
232
252
  agent.not.macintosh?
253
+
233
254
  agent.not.blackberry?
255
+
234
256
  agent.not.linux?
235
257
  ```
236
258
 
@@ -240,40 +262,62 @@ The `#windows?`, `#macintosh?` and `#blackberry?` each have a shortcut method to
240
262
 
241
263
  ```ruby
242
264
  agent.opera?
265
+
243
266
  agent.opera_mini?
267
+
244
268
  agent.bolt?
269
+
245
270
  agent.ucbrowser?
271
+
246
272
  agent.maxthon?
273
+
247
274
  agent.edge?
275
+
248
276
  agent.ie?
277
+
249
278
  agent.firefox?
279
+
250
280
  agent.chrome?
281
+
251
282
  agent.seamonkey?
283
+
252
284
  agent.safari?
253
285
 
254
- # or with the .not method (v1.4.0+)
286
+ # or with the .not method (>= 1.4.0)
255
287
 
256
288
  agent.not.opera?
289
+
257
290
  agent.not.maxthon?
291
+
258
292
  # etc etc...
259
293
  ```
260
294
 
261
295
  ##### Supported bots
262
296
  ```ruby
263
297
  agent.msnbot?
298
+
264
299
  agent.yahoo_slurp?
300
+
265
301
  agent.googlebot?
302
+
266
303
  agent.bingbot?
304
+
267
305
  agent.baiduspider?
306
+
268
307
  agent.yandexbot?
308
+
269
309
  agent.sosospider?
310
+
270
311
  agent.exabot?
312
+
271
313
  agent.sogou_spider?
272
314
 
273
- # or with the .not method (v1.4.0+)
315
+ # or with the .not method (>= v1.4.0)
274
316
 
275
317
  agent.not.msnbot?
318
+
276
319
  agent.not.yahoo_slurp?
320
+
277
321
  # etc etc...
278
322
  ```
279
323
 
@@ -299,6 +343,7 @@ module UserAgents
299
343
  system_name: ['windows', '7'],
300
344
  system_version: '6.1',
301
345
  system_architecture: 'x64',
346
+ locale: nil,
302
347
  x64?: true,
303
348
  x32?: false,
304
349
  known?: true,
@@ -315,33 +360,52 @@ Valid browser names are defined by __/lib/browserino/patterns.rb__ (the keys are
315
360
  #### browser_name examples
316
361
  ```ruby
317
362
  'ie'
363
+
318
364
  'firefox'
365
+
319
366
  'chrome'
367
+
320
368
  'opera'
369
+
321
370
  'opera_mini'
371
+
322
372
  'bolt'
373
+
323
374
  'ucbrowser'
375
+
324
376
  'seamonkey'
377
+
325
378
  'maxthon'
326
379
  ```
327
380
 
328
381
  #### engine_name examples
329
382
  ```ruby
383
+
330
384
  'gecko'
385
+
331
386
  'webkit'
387
+
332
388
  'trident'
333
389
  ```
334
390
 
335
391
  #### bot_name examples
336
392
  ```ruby
337
393
  'googlebot'
394
+
338
395
  'yahoo_slurp'
396
+
339
397
  'msnbot'
398
+
340
399
  'bingbot'
400
+
341
401
  'baiduspider'
402
+
342
403
  'yandexbot'
404
+
343
405
  'sosospider'
406
+
344
407
  'exabot'
408
+
345
409
  'sogou_spider'
346
410
  ```
347
411
 
@@ -349,19 +413,28 @@ Valid browser names are defined by __/lib/browserino/patterns.rb__ (the keys are
349
413
 
350
414
  ```ruby
351
415
  'windows'
416
+
352
417
  'win'
418
+
353
419
  'macintosh'
420
+
354
421
  'osx'
422
+
355
423
  'blackberry'
424
+
356
425
  'bb'
426
+
357
427
  'android'
428
+
358
429
  'ios'
430
+
359
431
  'linux' # => doesn't have versions
360
432
  ```
361
433
 
362
434
  #### system_architecture examples
363
435
  ```ruby
364
436
  'x32'
437
+
365
438
  'x64'
366
439
  ```
367
440
 
@@ -0,0 +1,11 @@
1
+ require 'action_controller/railtie'
2
+
3
+ module Browserino
4
+ class ActionController
5
+ module Base
6
+ def agent
7
+ Browserino::parse request.headers['User-Agent']
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ require 'rails/railtie'
2
+ require_relative 'action_controller'
3
+
4
+ module Browserino
5
+ class Railtie < ::Rails::Railtie
6
+ initializer 'browserino.init_on_action_controller' do
7
+ ActiveSupport.on_load :action_controller do
8
+ include Browserino::ActionController::Base
9
+ end
10
+ end
11
+ end
12
+ end
@@ -1,3 +1,3 @@
1
1
  module Browserino
2
- VERSION = "2.3.0"
2
+ VERSION = "2.4.0"
3
3
  end
data/lib/browserino.rb CHANGED
@@ -5,6 +5,8 @@ require "browserino/maps/linux"
5
5
  require "browserino/maps/android"
6
6
  require "browserino/maps/windows"
7
7
 
8
+ require "browserino/integrate/rails" if defined?(::Rails)
9
+
8
10
  require "browserino/unknown"
9
11
  require "browserino/agent"
10
12
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: browserino
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sidney Liebrand
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-01-06 00:00:00.000000000 Z
11
+ date: 2016-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -134,6 +134,8 @@ files:
134
134
  - lib/browserino/alias.rb
135
135
  - lib/browserino/browser.rb
136
136
  - lib/browserino/engine.rb
137
+ - lib/browserino/integrate/action_controller.rb
138
+ - lib/browserino/integrate/rails.rb
137
139
  - lib/browserino/maps/android.rb
138
140
  - lib/browserino/maps/blackberry.rb
139
141
  - lib/browserino/maps/ios.rb