browser 2.0.0.rc1 → 2.0.1
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/.github/ISSUE_TEMPLATE.md +30 -0
- data/.rubocop.yml +3 -0
- data/.travis.yml +1 -1
- data/CHANGELOG.md +6 -1
- data/README.md +33 -3
- data/Rakefile +4 -4
- data/lib/browser.rb +1 -0
- data/lib/browser/accept_language.rb +1 -0
- data/lib/browser/action_controller.rb +3 -2
- data/lib/browser/base.rb +1 -0
- data/lib/browser/blackberry.rb +1 -0
- data/lib/browser/bot.rb +2 -1
- data/lib/browser/chrome.rb +1 -0
- data/lib/browser/detect_version.rb +1 -0
- data/lib/browser/device.rb +6 -7
- data/lib/browser/device/base.rb +1 -0
- data/lib/browser/device/blackberry_playbook.rb +1 -0
- data/lib/browser/device/ipad.rb +1 -0
- data/lib/browser/device/iphone.rb +1 -0
- data/lib/browser/device/ipod_touch.rb +1 -0
- data/lib/browser/device/kindle.rb +1 -0
- data/lib/browser/device/kindle_fire.rb +1 -0
- data/lib/browser/device/playstation3.rb +1 -0
- data/lib/browser/device/playstation4.rb +1 -0
- data/lib/browser/device/psp.rb +1 -0
- data/lib/browser/device/psvita.rb +1 -0
- data/lib/browser/device/surface.rb +2 -1
- data/lib/browser/device/tv.rb +1 -0
- data/lib/browser/device/unknown.rb +1 -0
- data/lib/browser/device/wii.rb +1 -0
- data/lib/browser/device/wiiu.rb +1 -0
- data/lib/browser/device/xbox_360.rb +1 -0
- data/lib/browser/device/xbox_one.rb +1 -0
- data/lib/browser/edge.rb +1 -0
- data/lib/browser/firefox.rb +1 -0
- data/lib/browser/generic.rb +1 -0
- data/lib/browser/internet_explorer.rb +1 -0
- data/lib/browser/meta/base.rb +1 -0
- data/lib/browser/meta/device.rb +1 -0
- data/lib/browser/meta/generic_browser.rb +1 -0
- data/lib/browser/meta/id.rb +1 -0
- data/lib/browser/meta/ie.rb +3 -2
- data/lib/browser/meta/ios.rb +1 -0
- data/lib/browser/meta/mobile.rb +1 -0
- data/lib/browser/meta/modern.rb +1 -0
- data/lib/browser/meta/platform.rb +1 -0
- data/lib/browser/meta/proxy.rb +1 -0
- data/lib/browser/meta/safari.rb +1 -0
- data/lib/browser/meta/tablet.rb +1 -0
- data/lib/browser/meta/webkit.rb +1 -0
- data/lib/browser/middleware.rb +1 -0
- data/lib/browser/middleware/context.rb +1 -0
- data/lib/browser/middleware/context/additions.rb +1 -0
- data/lib/browser/middleware/context/url_methods.rb +1 -0
- data/lib/browser/nokia.rb +1 -0
- data/lib/browser/opera.rb +1 -0
- data/lib/browser/phantom_js.rb +1 -0
- data/lib/browser/platform.rb +11 -10
- data/lib/browser/platform/adobe_air.rb +1 -0
- data/lib/browser/platform/android.rb +1 -0
- data/lib/browser/platform/base.rb +1 -0
- data/lib/browser/platform/blackberry.rb +1 -0
- data/lib/browser/platform/chrome_os.rb +1 -0
- data/lib/browser/platform/firefox_os.rb +1 -0
- data/lib/browser/platform/ios.rb +1 -0
- data/lib/browser/platform/linux.rb +1 -0
- data/lib/browser/platform/mac.rb +1 -0
- data/lib/browser/platform/other.rb +1 -0
- data/lib/browser/platform/windows.rb +1 -0
- data/lib/browser/platform/windows_mobile.rb +1 -0
- data/lib/browser/platform/windows_phone.rb +1 -0
- data/lib/browser/rails.rb +1 -0
- data/lib/browser/safari.rb +2 -1
- data/lib/browser/testing.rb +1 -0
- data/lib/browser/uc_browser.rb +1 -0
- data/lib/browser/version.rb +2 -1
- data/test/browser_test.rb +1 -0
- data/test/middleware_test.rb +1 -0
- data/test/rails_test.rb +21 -0
- data/test/sample_app.rb +9 -0
- data/test/test_helper.rb +1 -0
- data/test/ua.yml +1 -0
- data/test/unit/accept_language_test.rb +1 -0
- data/test/unit/adobe_air_test.rb +1 -0
- data/test/unit/android_test.rb +1 -0
- data/test/unit/blackberry_test.rb +1 -0
- data/test/unit/bots_test.rb +1 -0
- data/test/unit/chrome_test.rb +1 -0
- data/test/unit/console_test.rb +1 -0
- data/test/unit/device_test.rb +1 -0
- data/test/unit/firefox_test.rb +1 -0
- data/test/unit/ie_test.rb +1 -0
- data/test/unit/ios_app_test.rb +1 -0
- data/test/unit/ios_test.rb +1 -0
- data/test/unit/kindle_test.rb +1 -0
- data/test/unit/nokia_test.rb +1 -0
- data/test/unit/opera_test.rb +6 -0
- data/test/unit/platform_test.rb +1 -0
- data/test/unit/proxy_test.rb +1 -0
- data/test/unit/safari_test.rb +1 -0
- data/test/unit/uc_browser_test.rb +1 -0
- data/test/unit/windows_phone_test.rb +1 -0
- data/test/unit/windows_test.rb +1 -0
- metadata +7 -5
- data/CONTRIBUTING.md +0 -44
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: fb23db30128545d1362d657be31139c5c0d79ab1
|
|
4
|
+
data.tar.gz: dd8e2126bd5de416a2d29beb3ceff26c9ed28494
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6138595faa14527bc208ac1cdb8adb173ea3c0946988107d35846f67ad7c501e684e3f8eb28c84e71d6397156ac1259fc553bb64f78a87878fa8fd91e0586008
|
|
7
|
+
data.tar.gz: a750b44ed0eabdcaedf98755363a772772e0c58efc83fdad00ccc74f8ad5a1bc0a8c28648f31ad422934a54f3ea6f8f5595ce94b79c7999ac46a42c548e78a26
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
## Description
|
|
2
|
+
|
|
3
|
+
[Add feature/bug description here]
|
|
4
|
+
|
|
5
|
+
## How to reproduce
|
|
6
|
+
|
|
7
|
+
[Add steps on how to reproduce this issue]
|
|
8
|
+
|
|
9
|
+
## What do you expect
|
|
10
|
+
|
|
11
|
+
[Describe what do you expect to happen]
|
|
12
|
+
|
|
13
|
+
## What happened instead
|
|
14
|
+
|
|
15
|
+
[Describe the actual results]
|
|
16
|
+
|
|
17
|
+
## Software:
|
|
18
|
+
|
|
19
|
+
- Rails version: [Add rails version here]
|
|
20
|
+
- Browser gem version: [Add browser gem version here]
|
|
21
|
+
|
|
22
|
+
## Full backtrace
|
|
23
|
+
|
|
24
|
+
```text
|
|
25
|
+
[Paste full backtrace here]
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Report
|
|
29
|
+
|
|
30
|
+
[Visit <http://user-agent.herokuapp.com> and paste the URL here]
|
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## v2.0.
|
|
3
|
+
## v2.0.1
|
|
4
|
+
|
|
5
|
+
- Fix Rails integration.
|
|
6
|
+
|
|
7
|
+
## v2.0.0
|
|
4
8
|
|
|
5
9
|
- `Browser#platform` now returns instance of `Browser::Platform`, instead of a `String`. It contains information about the platform (software).
|
|
6
10
|
- `Browser#device` was added. It returns information about the device (hardware).
|
|
7
11
|
- `Browser#accept_language` now returns a list of `Browser::AcceptLanguage` objects.
|
|
8
12
|
- `Browser#bot` now returns a `Browser::Bot` instance.
|
|
9
13
|
- Safari running as web app mode is not recognized as Safari anymore.
|
|
14
|
+
- ruby-2.3+ will always activate frozen strings.
|
|
10
15
|
- [List of all commits since last release](https://github.com/fnando/browser/compare/v1.1.0...v2.0.0)
|
data/README.md
CHANGED
|
@@ -273,9 +273,33 @@ Rails.configuration.middleware.use Browser::Middleware do
|
|
|
273
273
|
end
|
|
274
274
|
```
|
|
275
275
|
|
|
276
|
+
### Migrating to v2
|
|
277
|
+
|
|
278
|
+
#### Troubleshooting
|
|
279
|
+
|
|
280
|
+
##### `TypeError: no implicit conversion of Hash into String`
|
|
281
|
+
|
|
282
|
+
The class constructor now has a different signature. Change the instantiation from `Browser.new(options)` to `Browser.new(ua, options)`, where:
|
|
283
|
+
|
|
284
|
+
- `ua`: must be a string representing the user agent.
|
|
285
|
+
- `options`: must be a hash (for now it only accepts the `accept_language` option).
|
|
286
|
+
|
|
276
287
|
## Development
|
|
277
288
|
|
|
278
|
-
|
|
289
|
+
### Writing code
|
|
290
|
+
|
|
291
|
+
Once you've made your great commits (include tests, please):
|
|
292
|
+
|
|
293
|
+
1. [Fork](http://help.github.com/forking/) browser
|
|
294
|
+
2. Create a topic branch - `git checkout -b my_branch`
|
|
295
|
+
3. Push to your branch - `git push origin my_branch`
|
|
296
|
+
4. Create a pull request
|
|
297
|
+
5. That's it!
|
|
298
|
+
|
|
299
|
+
Please respect the indentation rules and code style.
|
|
300
|
+
And use 2 spaces, not tabs. And don't touch the version thing.
|
|
301
|
+
|
|
302
|
+
## Configuring environment
|
|
279
303
|
|
|
280
304
|
To configure your environment, you must have Ruby and bundler installed. Then run `bundle install` to install all dependencies.
|
|
281
305
|
|
|
@@ -285,12 +309,16 @@ To run tests, execute `./bin/rake`.
|
|
|
285
309
|
|
|
286
310
|
Before using your time to code a new feature, open a ticket asking if it makes sense and if it's on this project's scope.
|
|
287
311
|
|
|
312
|
+
Don't forget to add a new entry to `CHANGELOG.md`.
|
|
313
|
+
|
|
288
314
|
#### Adding a new bot
|
|
289
315
|
|
|
290
316
|
1. Add the user agent to `test/ua_bots.yml`.
|
|
291
317
|
2. Add the readable name to `bots.yml`. The key must be something that matches the user agent, in lowercased text.
|
|
292
318
|
3. Run tests.
|
|
293
319
|
|
|
320
|
+
Don't forget to add a new entry to `CHANGELOG.md`.
|
|
321
|
+
|
|
294
322
|
#### Adding a new search engine
|
|
295
323
|
|
|
296
324
|
1. Add the user agent to `test/ua_search_engines.yml`.
|
|
@@ -298,9 +326,11 @@ Before using your time to code a new feature, open a ticket asking if it makes s
|
|
|
298
326
|
3. Add the readable name to `search_engines.yml`. The key must be something that matches the user agent, in lowercased text.
|
|
299
327
|
4. Run tests.
|
|
300
328
|
|
|
301
|
-
|
|
329
|
+
Don't forget to add a new entry to `CHANGELOG.md`.
|
|
330
|
+
|
|
331
|
+
#### Wrong browser/platform/device detection
|
|
302
332
|
|
|
303
|
-
|
|
333
|
+
If you know how to fix it, follow the "Writing code" above. Open an issue otherwise; make sure you fill in the issue template with all the required information.
|
|
304
334
|
|
|
305
335
|
## Maintainer
|
|
306
336
|
|
data/Rakefile
CHANGED
|
@@ -3,7 +3,7 @@ require "bundler/setup"
|
|
|
3
3
|
Bundler::GemHelper.install_tasks
|
|
4
4
|
|
|
5
5
|
require "rake/testtask"
|
|
6
|
-
Rake::TestTask.new(:
|
|
6
|
+
Rake::TestTask.new(:test) do |t|
|
|
7
7
|
t.libs << "lib"
|
|
8
8
|
t.libs << "test"
|
|
9
9
|
t.test_files = FileList["test/**/*_test.rb"]
|
|
@@ -12,14 +12,14 @@ Rake::TestTask.new(:spec) do |t|
|
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
desc "Run specs against all gemfiles"
|
|
15
|
-
task "
|
|
15
|
+
task "test:all" do
|
|
16
16
|
%w[
|
|
17
17
|
Gemfile
|
|
18
18
|
gemfiles/rails3.gemfile
|
|
19
19
|
].each do |gemfile|
|
|
20
20
|
puts "=> Running with Gemfile: #{gemfile}"
|
|
21
|
-
system "BUNDLE_GEMFILE=#{gemfile} rake
|
|
21
|
+
system "BUNDLE_GEMFILE=#{gemfile} rake test"
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
-
task default: "
|
|
25
|
+
task default: "test"
|
data/lib/browser.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require "action_controller/railtie"
|
|
2
3
|
|
|
3
4
|
module Browser
|
|
@@ -12,8 +13,8 @@ module Browser
|
|
|
12
13
|
|
|
13
14
|
def browser
|
|
14
15
|
@browser ||= Browser.new(
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
request.headers["User-Agent"],
|
|
17
|
+
accept_language: request.headers["Accept-Language"]
|
|
17
18
|
)
|
|
18
19
|
end
|
|
19
20
|
end
|
data/lib/browser/base.rb
CHANGED
data/lib/browser/blackberry.rb
CHANGED
data/lib/browser/bot.rb
CHANGED
data/lib/browser/chrome.rb
CHANGED
data/lib/browser/device.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Browser
|
|
2
3
|
class Device
|
|
3
4
|
attr_reader :ua
|
|
@@ -39,10 +40,10 @@ module Browser
|
|
|
39
40
|
# Detect if browser is tablet (currently iPad, Android, Surface or
|
|
40
41
|
# Playbook).
|
|
41
42
|
def tablet?
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
ipad? ||
|
|
44
|
+
(platform.android? && !detect_mobile?) ||
|
|
45
|
+
surface? ||
|
|
46
|
+
playbook?
|
|
46
47
|
end
|
|
47
48
|
|
|
48
49
|
# Detect if browser is mobile.
|
|
@@ -159,12 +160,10 @@ module Browser
|
|
|
159
160
|
# Regex taken from http://detectmobilebrowsers.com
|
|
160
161
|
# rubocop:disable Metrics/LineLength
|
|
161
162
|
def detect_mobile?
|
|
162
|
-
|
|
163
|
-
psp? ||
|
|
163
|
+
psp? ||
|
|
164
164
|
/zunewp7/i.match(ua) ||
|
|
165
165
|
/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.match(ua) ||
|
|
166
166
|
/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.match(ua[0..3])
|
|
167
|
-
)
|
|
168
167
|
end
|
|
169
168
|
# rubocop:enable Metrics/LineLength
|
|
170
169
|
|
data/lib/browser/device/base.rb
CHANGED
data/lib/browser/device/ipad.rb
CHANGED
data/lib/browser/device/psp.rb
CHANGED
data/lib/browser/device/tv.rb
CHANGED
data/lib/browser/device/wii.rb
CHANGED
data/lib/browser/device/wiiu.rb
CHANGED
data/lib/browser/edge.rb
CHANGED
data/lib/browser/firefox.rb
CHANGED
data/lib/browser/generic.rb
CHANGED
data/lib/browser/meta/base.rb
CHANGED
data/lib/browser/meta/device.rb
CHANGED
data/lib/browser/meta/id.rb
CHANGED
data/lib/browser/meta/ie.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Browser
|
|
2
3
|
module Meta
|
|
3
4
|
class IE < Base
|
|
@@ -8,10 +9,10 @@ module Browser
|
|
|
8
9
|
def meta
|
|
9
10
|
return unless browser.ie?
|
|
10
11
|
|
|
11
|
-
meta =
|
|
12
|
+
meta = []
|
|
12
13
|
meta << "oldie lt-ie8 lt-ie9" if version < 8
|
|
13
14
|
meta << "lt-ie9" if version == 8
|
|
14
|
-
meta
|
|
15
|
+
meta.join(" ")
|
|
15
16
|
end
|
|
16
17
|
end
|
|
17
18
|
end
|
data/lib/browser/meta/ios.rb
CHANGED
data/lib/browser/meta/mobile.rb
CHANGED
data/lib/browser/meta/modern.rb
CHANGED
data/lib/browser/meta/proxy.rb
CHANGED
data/lib/browser/meta/safari.rb
CHANGED
data/lib/browser/meta/tablet.rb
CHANGED
data/lib/browser/meta/webkit.rb
CHANGED
data/lib/browser/middleware.rb
CHANGED
data/lib/browser/nokia.rb
CHANGED
data/lib/browser/opera.rb
CHANGED
data/lib/browser/phantom_js.rb
CHANGED
data/lib/browser/platform.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Browser
|
|
2
3
|
class Platform
|
|
3
4
|
include DetectVersion
|
|
@@ -105,40 +106,40 @@ module Browser
|
|
|
105
106
|
|
|
106
107
|
# http://msdn.microsoft.com/fr-FR/library/ms537503.aspx#PltToken
|
|
107
108
|
def windows_xp?
|
|
108
|
-
windows? &&
|
|
109
|
+
windows? && ua =~ /Windows NT 5\.[12]/
|
|
109
110
|
end
|
|
110
111
|
|
|
111
112
|
def windows_vista?
|
|
112
|
-
windows? &&
|
|
113
|
+
windows? && ua =~ /Windows NT 6\.0/
|
|
113
114
|
end
|
|
114
115
|
|
|
115
116
|
def windows7?
|
|
116
|
-
windows? &&
|
|
117
|
+
windows? && ua =~ /Windows NT 6\.1/
|
|
117
118
|
end
|
|
118
119
|
|
|
119
120
|
def windows8?
|
|
120
|
-
windows? &&
|
|
121
|
+
windows? && ua =~ /Windows NT 6\.[2-3]/
|
|
121
122
|
end
|
|
122
123
|
|
|
123
124
|
def windows8_1?
|
|
124
|
-
windows? &&
|
|
125
|
+
windows? && ua =~ /Windows NT 6\.3/
|
|
125
126
|
end
|
|
126
127
|
|
|
127
128
|
def windows10?
|
|
128
|
-
windows? &&
|
|
129
|
+
windows? && ua =~ /Windows NT 10/
|
|
129
130
|
end
|
|
130
131
|
|
|
131
132
|
def windows_rt?
|
|
132
|
-
windows8? &&
|
|
133
|
+
windows8? && ua =~ /ARM/
|
|
133
134
|
end
|
|
134
135
|
|
|
135
136
|
# Detect if current platform is Windows in 64-bit architecture.
|
|
136
137
|
def windows_x64?
|
|
137
|
-
|
|
138
|
+
windows? && ua =~ /(Win64|x64|Windows NT 5\.2)/
|
|
138
139
|
end
|
|
139
140
|
|
|
140
141
|
def windows_wow64?
|
|
141
|
-
windows? &&
|
|
142
|
+
windows? && ua =~ /WOW64/i
|
|
142
143
|
end
|
|
143
144
|
|
|
144
145
|
def windows_x64_inclusive?
|
|
@@ -146,7 +147,7 @@ module Browser
|
|
|
146
147
|
end
|
|
147
148
|
|
|
148
149
|
def windows_touchscreen_desktop?
|
|
149
|
-
windows? &&
|
|
150
|
+
windows? && ua =~ /Touch/
|
|
150
151
|
end
|
|
151
152
|
end
|
|
152
153
|
end
|
data/lib/browser/platform/ios.rb
CHANGED
data/lib/browser/platform/mac.rb
CHANGED
data/lib/browser/rails.rb
CHANGED
data/lib/browser/safari.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Browser
|
|
2
3
|
class Safari < Base
|
|
3
4
|
def id
|
|
@@ -16,7 +17,7 @@ module Browser
|
|
|
16
17
|
end
|
|
17
18
|
|
|
18
19
|
def match?
|
|
19
|
-
|
|
20
|
+
ua =~ /Safari/ && ua !~ /Chrome|CriOS|PhantomJS|FxiOS/
|
|
20
21
|
end
|
|
21
22
|
end
|
|
22
23
|
end
|
data/lib/browser/testing.rb
CHANGED
data/lib/browser/uc_browser.rb
CHANGED
data/lib/browser/version.rb
CHANGED
data/test/browser_test.rb
CHANGED
data/test/middleware_test.rb
CHANGED
data/test/rails_test.rb
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require "test_helper"
|
|
3
|
+
require "browser/rails"
|
|
4
|
+
require "sample_app"
|
|
5
|
+
|
|
6
|
+
class RailsTest < Minitest::Test
|
|
7
|
+
include Rack::Test::Methods
|
|
8
|
+
|
|
9
|
+
def app
|
|
10
|
+
Rails.application
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
test "renders page" do
|
|
14
|
+
get "/home", {}, "HTTP_USER_AGENT" => Browser["CHROME"],
|
|
15
|
+
"HTTP_ACCEPT" => "text/html",
|
|
16
|
+
"HTTP_ACCEPT_LANGUAGE" => "en-US;q=0.8"
|
|
17
|
+
|
|
18
|
+
assert_equal 200, last_response.status
|
|
19
|
+
assert_equal "Chrome:en-US", last_response.body
|
|
20
|
+
end
|
|
21
|
+
end
|
data/test/sample_app.rb
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require "rails"
|
|
2
3
|
require "browser"
|
|
3
4
|
|
|
5
|
+
class PagesController < ActionController::Base
|
|
6
|
+
def home
|
|
7
|
+
render text: "#{browser.name}:#{browser.accept_language.first.full}"
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
4
11
|
class SampleApp < Rails::Application
|
|
5
12
|
config.secret_token = "99f19f08db7a37bdcb9d6701f54dca"
|
|
6
13
|
config.secret_key_base = "99f19f08db7a37bdcb9d6701f54dca"
|
|
@@ -19,6 +26,8 @@ class SampleApp < Rails::Application
|
|
|
19
26
|
get "/asset", to: proc {
|
|
20
27
|
[200, {"Content-Type" => "image/png"}, []]
|
|
21
28
|
}
|
|
29
|
+
|
|
30
|
+
get "/home", to: "pages#home"
|
|
22
31
|
end
|
|
23
32
|
|
|
24
33
|
config.middleware.use Browser::Middleware do
|
data/test/test_helper.rb
CHANGED
data/test/ua.yml
CHANGED
|
@@ -72,6 +72,7 @@ NINTENDO_WIIU: 'Mozilla/5.0 (Nintendo WiiU) AppleWebKit/534.52 (KHTML, like Geck
|
|
|
72
72
|
NOKIA: 'Mozilla/5.0 (Series40; NokiaX3-02/le6.32; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/2.0.2.62.10'
|
|
73
73
|
NOOK: 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; NOOK BNTV250A Build/GINGERBREAD 1.4.3) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1'
|
|
74
74
|
OPERA: 'Opera/9.80 (Macintosh; Intel Mac OS X 10.7.4; U; en) Presto/2.10.229 Version/11.64'
|
|
75
|
+
OPERA_ANDROID: 'Mozill/5.0 (Linux; Android 4.4.2; A1-810 Build/KOT49H) Apple/WebKit/537.36 (KHTML, like Gecko) Chrome/48.0.25 64.99 Safari/537.36 OPR/35.0.2070.100283'
|
|
75
76
|
OPERA_MINI: 'Opera/9.80 (Android; Opera Mini/7.029952/28.2359;u; fr) Presto/2.8.119 Version/11.10'
|
|
76
77
|
OPERA_MOBI: 'Opera/9.8 (Android 2.3.5; Linux; Opera Mobi/ADR-1205181138; U; en) Presto/2.10.254 Version/12.00'
|
|
77
78
|
OPERA_NEXT: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.37 Safari/537.36 OPR/15.0.1147.44 (Edition Next)'
|
data/test/unit/adobe_air_test.rb
CHANGED
data/test/unit/android_test.rb
CHANGED
data/test/unit/bots_test.rb
CHANGED
data/test/unit/chrome_test.rb
CHANGED
data/test/unit/console_test.rb
CHANGED
data/test/unit/device_test.rb
CHANGED
data/test/unit/firefox_test.rb
CHANGED
data/test/unit/ie_test.rb
CHANGED
data/test/unit/ios_app_test.rb
CHANGED
data/test/unit/ios_test.rb
CHANGED
data/test/unit/kindle_test.rb
CHANGED
data/test/unit/nokia_test.rb
CHANGED
data/test/unit/opera_test.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require "test_helper"
|
|
2
3
|
|
|
3
4
|
class OperaTest < Minitest::Test
|
|
@@ -33,4 +34,9 @@ class OperaTest < Minitest::Test
|
|
|
33
34
|
browser = Browser.new(Browser["OPERA_MOBI"])
|
|
34
35
|
assert browser.opera?
|
|
35
36
|
end
|
|
37
|
+
|
|
38
|
+
test "detects opera running in Android" do
|
|
39
|
+
browser = Browser.new(Browser["OPERA_ANDROID"])
|
|
40
|
+
assert browser.platform.android?
|
|
41
|
+
end
|
|
36
42
|
end
|
data/test/unit/platform_test.rb
CHANGED
data/test/unit/proxy_test.rb
CHANGED
data/test/unit/safari_test.rb
CHANGED
data/test/unit/windows_test.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: browser
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.0.
|
|
4
|
+
version: 2.0.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Nando Vieira
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-
|
|
11
|
+
date: 2016-02-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -130,12 +130,12 @@ extensions: []
|
|
|
130
130
|
extra_rdoc_files: []
|
|
131
131
|
files:
|
|
132
132
|
- ".bundle/config"
|
|
133
|
+
- ".github/ISSUE_TEMPLATE.md"
|
|
133
134
|
- ".gitignore"
|
|
134
135
|
- ".hound.yml"
|
|
135
136
|
- ".rubocop.yml"
|
|
136
137
|
- ".travis.yml"
|
|
137
138
|
- CHANGELOG.md
|
|
138
|
-
- CONTRIBUTING.md
|
|
139
139
|
- Gemfile
|
|
140
140
|
- README.md
|
|
141
141
|
- Rakefile
|
|
@@ -219,6 +219,7 @@ files:
|
|
|
219
219
|
- search_engines.yml
|
|
220
220
|
- test/browser_test.rb
|
|
221
221
|
- test/middleware_test.rb
|
|
222
|
+
- test/rails_test.rb
|
|
222
223
|
- test/sample_app.rb
|
|
223
224
|
- test/test_helper.rb
|
|
224
225
|
- test/ua.yml
|
|
@@ -260,9 +261,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
260
261
|
version: '2.0'
|
|
261
262
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
262
263
|
requirements:
|
|
263
|
-
- - "
|
|
264
|
+
- - ">="
|
|
264
265
|
- !ruby/object:Gem::Version
|
|
265
|
-
version:
|
|
266
|
+
version: '0'
|
|
266
267
|
requirements: []
|
|
267
268
|
rubyforge_project:
|
|
268
269
|
rubygems_version: 2.5.1
|
|
@@ -272,6 +273,7 @@ summary: Do some browser detection with Ruby.
|
|
|
272
273
|
test_files:
|
|
273
274
|
- test/browser_test.rb
|
|
274
275
|
- test/middleware_test.rb
|
|
276
|
+
- test/rails_test.rb
|
|
275
277
|
- test/sample_app.rb
|
|
276
278
|
- test/test_helper.rb
|
|
277
279
|
- test/ua.yml
|
data/CONTRIBUTING.md
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
# Contributing
|
|
2
|
-
|
|
3
|
-
## Issues
|
|
4
|
-
|
|
5
|
-
If you want to request a feature or report a bug, please use the following template.
|
|
6
|
-
|
|
7
|
-
```markdown
|
|
8
|
-
## Description
|
|
9
|
-
|
|
10
|
-
[Add feature/bug description here]
|
|
11
|
-
|
|
12
|
-
## How to reproduce
|
|
13
|
-
|
|
14
|
-
[Add steps on how to reproduce this issue]
|
|
15
|
-
|
|
16
|
-
## What do you expect
|
|
17
|
-
|
|
18
|
-
[Describe what do you expect to happen]
|
|
19
|
-
|
|
20
|
-
## What happened instead
|
|
21
|
-
|
|
22
|
-
[Describe the actual results]
|
|
23
|
-
|
|
24
|
-
## Gem version:
|
|
25
|
-
|
|
26
|
-
Browser version: [Add browser gem version here]
|
|
27
|
-
|
|
28
|
-
## Report
|
|
29
|
-
|
|
30
|
-
Visit <http://user-agent.herokuapp.com> and paste the URL here.
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## Writing code
|
|
34
|
-
|
|
35
|
-
Once you've made your great commits (include tests, please):
|
|
36
|
-
|
|
37
|
-
1. [Fork](http://help.github.com/forking/) browser
|
|
38
|
-
2. Create a topic branch - `git checkout -b my_branch`
|
|
39
|
-
3. Push to your branch - `git push origin my_branch`
|
|
40
|
-
4. [Create an Issue](http://github.com/fnando/browser/issues) with a link to your branch
|
|
41
|
-
5. That's it!
|
|
42
|
-
|
|
43
|
-
Please respect the indentation rules and code style.
|
|
44
|
-
And use 2 spaces, not tabs. And don't touch the versioning thing.
|