browserino 2.1.0 → 2.2.0
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 +12 -0
- data/README.md +33 -23
- data/lib/browserino/agent.rb +6 -2
- data/lib/browserino/browser.rb +2 -2
- data/lib/browserino/engine.rb +2 -2
- data/lib/browserino/operating_system.rb +3 -3
- data/lib/browserino/patterns.rb +6 -1
- data/lib/browserino/version.rb +1 -1
- data/lib/browserino.rb +9 -1
- metadata +1 -2
- data/lib/browserino/match_extractor.rb +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5ffc66c9e3aa3d291234c23f01ccffaae0384be2
|
4
|
+
data.tar.gz: 92c2d7b5580f8ff7dc6923d65f79b5a563bb8fb2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0250cbb22fc938da833a6785158789354f68f409ae03148ecf926c8ae9a30a71ea365e5c5a40e415b7fd1328943c2a66c750e605e2b48f10994c4152f75c4f64
|
7
|
+
data.tar.gz: 9c19e483f50275de5dd1f6c972a3c40bc2187b57d88b173c17ae49dc47920ca858d061b0b3a4417cec1d74081022cc0abae7990c612cd8877f4ea73cf3cb8000
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,18 @@
|
|
1
1
|
## CHANGELOG
|
2
2
|
_dates are in dd-mm-yyyy format_
|
3
3
|
|
4
|
+
#### 03-01-2016 VERSION 1.6.0
|
5
|
+
|
6
|
+
- Added more tests
|
7
|
+
- Added more browsers to check: *(bolt, opera mini and ucbrowser)*
|
8
|
+
- Added `#known?` method to check if the agent is known
|
9
|
+
- Added a `#ua` method to return the User Agent string as given to `Browserino::parse()`
|
10
|
+
- Added `#x64?` and `#x32?` convenience methods to check system architecture
|
11
|
+
- Added `#mobile?` to check wether or not a user agent is mobile
|
12
|
+
- Moved older changelogs to its own [CHANGELOG.md](https://github.com/SidOfc/browserino/blob/master/CHANGELOG.md) file
|
13
|
+
- Changed `#to_s` to add dashes (`-`) between browser names if they have a space
|
14
|
+
- `#to_s` now has an optional (`sep = ''`) parameter that allows info and version numbers to be seperated
|
15
|
+
|
4
16
|
#### 31-12-2015 VERSION 1.5.3
|
5
17
|
|
6
18
|
- Added blackberry support
|
data/README.md
CHANGED
@@ -10,6 +10,11 @@ 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
|
+
#### 04-01-2016 VERSION 2.2.0
|
14
|
+
|
15
|
+
- Added more bots
|
16
|
+
- `#bot?` method can now take a bot name as argument to check for an exact bot
|
17
|
+
|
13
18
|
#### 04-01-2016 VERSION 2.1.0
|
14
19
|
|
15
20
|
- Small restructuring of test suite
|
@@ -25,18 +30,6 @@ _older changes can be found in the [CHANGELOG.md](https://github.com/SidOfc/brow
|
|
25
30
|
- Changed tests to reflect new behaviour
|
26
31
|
- Added convenience methods `#win?`, `#osx?` and `#bb?`
|
27
32
|
|
28
|
-
#### 03-01-2016 VERSION 1.6.0
|
29
|
-
|
30
|
-
- Added more tests
|
31
|
-
- Added more browsers to check: *(bolt, opera mini and ucbrowser)*
|
32
|
-
- Added `#known?` method to check if the agent is known
|
33
|
-
- Added a `#ua` method to return the User Agent string as given to `Browserino::parse()`
|
34
|
-
- Added `#x64?` and `#x32?` convenience methods to check system architecture
|
35
|
-
- Added `#mobile?` to check wether or not a user agent is mobile
|
36
|
-
- Moved older changelogs to its own [CHANGELOG.md](https://github.com/SidOfc/browserino/blob/master/CHANGELOG.md) file
|
37
|
-
- Changed `#to_s` to add dashes (`-`) between browser names if they have a space
|
38
|
-
- `#to_s` now has an optional (`sep = ''`) parameter that allows info and version numbers to be seperated
|
39
|
-
|
40
33
|
## Installation
|
41
34
|
|
42
35
|
*supports ruby 1.9.3+*
|
@@ -100,7 +93,8 @@ agent.x32? # => true for 32bit UA's
|
|
100
93
|
agent.x64? # => true for 64bit UA's
|
101
94
|
|
102
95
|
agent.bot_name # => name of bot if the UA was identified as bot
|
103
|
-
agent.bot? # => returns true
|
96
|
+
agent.bot? # => returns true if the agent is a bot
|
97
|
+
agent.bot? :googlebot # => returns true if the agent is the specified bot
|
104
98
|
|
105
99
|
agent.known? # => true if browser_name or bot_name present
|
106
100
|
agent.mobile? # => true if agent is a mobile device
|
@@ -117,7 +111,8 @@ agent.to_a # => [
|
|
117
111
|
# [:engine_version, '537.75.14'],
|
118
112
|
# [:system_name, 'macintosh'],
|
119
113
|
# [:system_version, '10'],
|
120
|
-
# [:system_architecture, nil]
|
114
|
+
# [:system_architecture, nil],
|
115
|
+
# [:bot_name, nil]
|
121
116
|
# ]
|
122
117
|
agent.to_h # => {
|
123
118
|
# browser_name: 'safari',
|
@@ -126,12 +121,13 @@ agent.to_h # => {
|
|
126
121
|
# engine_version: '537.75.14',
|
127
122
|
# system_name: 'macintosh',
|
128
123
|
# system_version: '10',
|
129
|
-
# system_architecture: nil
|
124
|
+
# system_architecture: nil,
|
125
|
+
# bot_name: nil
|
130
126
|
# }
|
131
127
|
```
|
132
128
|
|
133
129
|
It is now also possible to call methods to determine a specific OS or browser if it's supported, a `noMethodError` will be thrown otherwise
|
134
|
-
The function uses the names of the `Browserino::Mapping
|
130
|
+
The function uses the names of the `Browserino::Mapping` constants and the `Browserino::PATTERNS` hashes `:browser` and `:bot` output to identify wether or not to throw this exception.
|
135
131
|
Versions are also supported as an argument to the function, for operating systems versions could include a string, symbol or float / integer to indicate a version.
|
136
132
|
_(examples given for windows, android and ios, for a full list of versions check the **maps** folder)_
|
137
133
|
Browsers can also accept a float / integer to check for a specific version.
|
@@ -200,6 +196,7 @@ agent.edge?
|
|
200
196
|
agent.ie?
|
201
197
|
agent.firefox?
|
202
198
|
agent.chrome?
|
199
|
+
agent.seamonkey?
|
203
200
|
agent.safari?
|
204
201
|
|
205
202
|
# or with the .not method (v1.4.0+)
|
@@ -215,8 +212,14 @@ agent.msnbot?
|
|
215
212
|
agent.yahoo_slurp?
|
216
213
|
agent.googlebot?
|
217
214
|
agent.bingbot?
|
215
|
+
agent.baiduspider?
|
216
|
+
agent.yandexbot?
|
217
|
+
agent.sosospider?
|
218
|
+
agent.exabot?
|
219
|
+
agent.sogou_spider?
|
218
220
|
|
219
221
|
# or with the .not method (v1.4.0+)
|
222
|
+
|
220
223
|
agent.not.msnbot?
|
221
224
|
agent.not.yahoo_slurp?
|
222
225
|
# etc etc...
|
@@ -283,18 +286,25 @@ Valid browser names are defined by __/lib/browserino/patterns.rb__ (the keys are
|
|
283
286
|
'yahoo_slurp'
|
284
287
|
'msnbot'
|
285
288
|
'bingbot'
|
289
|
+
'baiduspider'
|
290
|
+
'yandexbot'
|
291
|
+
'sosospider'
|
292
|
+
'exabot'
|
293
|
+
'sogou_spider'
|
286
294
|
```
|
287
295
|
|
288
296
|
#### system_name examples
|
289
297
|
|
290
|
-
_The main reason for not having Linux distro's / versions is because of the fact that there are MANY different distro's with no real structured release system. The best I can do here is allow a `linux?` system to be found atleast_
|
291
|
-
|
292
298
|
```ruby
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
299
|
+
'windows'
|
300
|
+
'win'
|
301
|
+
'macintosh'
|
302
|
+
'osx'
|
303
|
+
'blackberry'
|
304
|
+
'bb'
|
305
|
+
'android'
|
306
|
+
'ios'
|
307
|
+
'linux' # => doesn't have versions
|
298
308
|
```
|
299
309
|
|
300
310
|
#### system_architecture examples
|
data/lib/browserino/agent.rb
CHANGED
@@ -17,9 +17,11 @@ module Browserino
|
|
17
17
|
system_architecture: OperatingSystem::architecture(cleansed_ua),
|
18
18
|
bot_name: nil
|
19
19
|
}
|
20
|
+
|
20
21
|
if Browserino::PATTERNS[:bot].include? name
|
21
22
|
info.merge!({browser_name: nil, browser_version: nil, bot_name: name})
|
22
23
|
end
|
24
|
+
|
23
25
|
@info = Browserino::check_for_aliases(info)
|
24
26
|
end
|
25
27
|
|
@@ -109,8 +111,10 @@ module Browserino
|
|
109
111
|
allow_inverted_return blackberry?(*arg)
|
110
112
|
end
|
111
113
|
|
112
|
-
def bot?
|
113
|
-
|
114
|
+
def bot?(name = nil)
|
115
|
+
is_bot = (bot_name.nil? ? false : true)
|
116
|
+
is_name = (name.nil? ? true : (name.to_s.downcase.gsub(/_/, ' ') == bot_name))
|
117
|
+
allow_inverted_return(is_bot && is_name)
|
114
118
|
end
|
115
119
|
|
116
120
|
def method_missing(method_sym, *args, &block)
|
data/lib/browserino/browser.rb
CHANGED
@@ -2,9 +2,9 @@ module Browserino
|
|
2
2
|
module Browser
|
3
3
|
def self.version(ua, patterns)
|
4
4
|
if patterns
|
5
|
-
|
5
|
+
Browserino::extract_match(ua.match(patterns[:version]), :version)
|
6
6
|
else
|
7
|
-
|
7
|
+
UNKNOWN
|
8
8
|
end
|
9
9
|
end
|
10
10
|
end
|
data/lib/browserino/engine.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
module Browserino
|
2
2
|
module Engine
|
3
3
|
def self.name(ua)
|
4
|
-
|
4
|
+
Browserino::extract_match(ua.match(PATTERNS[:engine][:name]), :name) || UNKNOWN
|
5
5
|
end
|
6
6
|
|
7
7
|
def self.version(ua)
|
8
|
-
|
8
|
+
Browserino::extract_match(ua.match(PATTERNS[:engine][:version]), :version) || UNKNOWN
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
@@ -1,15 +1,15 @@
|
|
1
1
|
module Browserino
|
2
2
|
module OperatingSystem
|
3
3
|
def self.name(ua)
|
4
|
-
|
4
|
+
Browserino::extract_match(ua.match(PATTERNS[:operating_system][:name]), :name) || UNKNOWN
|
5
5
|
end
|
6
6
|
|
7
7
|
def self.version(ua)
|
8
|
-
|
8
|
+
Browserino::extract_match(ua.match(PATTERNS[:operating_system][:version]), :version) || UNKNOWN
|
9
9
|
end
|
10
10
|
|
11
11
|
def self.architecture(ua)
|
12
|
-
|
12
|
+
Browserino::extract_match(ua.match(PATTERNS[:operating_system][:architecture]), :architecture) || UNKNOWN
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
data/lib/browserino/patterns.rb
CHANGED
@@ -61,7 +61,12 @@ module Browserino
|
|
61
61
|
googlebot: { name: /(?<name>googlebot)/i },
|
62
62
|
yahoo_slurp: { name: /(?<name>yahoo\!\sslurp)/i },
|
63
63
|
msnbot: { name: /(?<name>msnbot)/i },
|
64
|
-
bingbot: { name: /(?<name>bingbot)/i }
|
64
|
+
bingbot: { name: /(?<name>bingbot)/i },
|
65
|
+
baiduspider: { name: /(?<name>baiduspider)/i },
|
66
|
+
yandexbot: { name: /(?<name>yandexbot)/i },
|
67
|
+
sosospider: { name: /(?<name>sosospider)/i },
|
68
|
+
exabot: { name: /(?<name>exabot)/i },
|
69
|
+
sogou_spider: { name: /(?<name>sogou\s?spider)/i }
|
65
70
|
},
|
66
71
|
|
67
72
|
engine: {
|
data/lib/browserino/version.rb
CHANGED
data/lib/browserino.rb
CHANGED
@@ -10,7 +10,6 @@ require "browserino/agent"
|
|
10
10
|
|
11
11
|
require "browserino/alias"
|
12
12
|
require "browserino/version"
|
13
|
-
require "browserino/match_extractor"
|
14
13
|
require "browserino/patterns"
|
15
14
|
require "browserino/browser"
|
16
15
|
require "browserino/engine"
|
@@ -58,4 +57,13 @@ module Browserino
|
|
58
57
|
end
|
59
58
|
name ||= Browserino::UNKNOWN
|
60
59
|
end
|
60
|
+
|
61
|
+
def self.extract_match(match, sym, trim = true)
|
62
|
+
if match && match.names.map(&:to_sym).include?(sym)
|
63
|
+
match[sym].strip! if trim
|
64
|
+
match[sym].to_s.downcase
|
65
|
+
else
|
66
|
+
Browserino::UNKNOWN
|
67
|
+
end
|
68
|
+
end
|
61
69
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: browserino
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sidney Liebrand
|
@@ -140,7 +140,6 @@ files:
|
|
140
140
|
- lib/browserino/maps/linux.rb
|
141
141
|
- lib/browserino/maps/macintosh.rb
|
142
142
|
- lib/browserino/maps/windows.rb
|
143
|
-
- lib/browserino/match_extractor.rb
|
144
143
|
- lib/browserino/operating_system.rb
|
145
144
|
- lib/browserino/patterns.rb
|
146
145
|
- lib/browserino/unknown.rb
|