browser 2.0.0.rc1 → 2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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.
|