browser 5.1.0 → 5.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.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/tests.yml +57 -0
  3. data/.rubocop.yml +3 -0
  4. data/CHANGELOG.md +5 -0
  5. data/README.md +3 -3
  6. data/browser.gemspec +3 -3
  7. data/lib/browser/accept_language.rb +4 -4
  8. data/lib/browser/alipay.rb +1 -1
  9. data/lib/browser/base.rb +12 -8
  10. data/lib/browser/blackberry.rb +1 -1
  11. data/lib/browser/bot/keyword_matcher.rb +1 -1
  12. data/lib/browser/browser.rb +1 -2
  13. data/lib/browser/chrome.rb +2 -2
  14. data/lib/browser/device.rb +4 -4
  15. data/lib/browser/device/android.rb +1 -1
  16. data/lib/browser/device/blackberry_playbook.rb +1 -1
  17. data/lib/browser/device/ipad.rb +1 -1
  18. data/lib/browser/device/iphone.rb +1 -1
  19. data/lib/browser/device/ipod_touch.rb +1 -1
  20. data/lib/browser/device/kindle.rb +1 -1
  21. data/lib/browser/device/kindle_fire.rb +1 -1
  22. data/lib/browser/device/playstation3.rb +1 -1
  23. data/lib/browser/device/playstation4.rb +1 -1
  24. data/lib/browser/device/psp.rb +1 -1
  25. data/lib/browser/device/psvita.rb +1 -1
  26. data/lib/browser/device/surface.rb +1 -1
  27. data/lib/browser/device/switch.rb +1 -1
  28. data/lib/browser/device/tv.rb +1 -1
  29. data/lib/browser/device/wii.rb +1 -1
  30. data/lib/browser/device/wiiu.rb +1 -1
  31. data/lib/browser/device/xbox_360.rb +1 -1
  32. data/lib/browser/device/xbox_one.rb +1 -1
  33. data/lib/browser/duck_duck_go.rb +1 -1
  34. data/lib/browser/edge.rb +2 -2
  35. data/lib/browser/electron.rb +1 -1
  36. data/lib/browser/facebook.rb +1 -1
  37. data/lib/browser/firefox.rb +1 -1
  38. data/lib/browser/google_search_app.rb +1 -1
  39. data/lib/browser/huawei_browser.rb +1 -1
  40. data/lib/browser/instagram.rb +1 -1
  41. data/lib/browser/internet_explorer.rb +2 -2
  42. data/lib/browser/maxthon.rb +1 -1
  43. data/lib/browser/micro_messenger.rb +1 -1
  44. data/lib/browser/miui_browser.rb +1 -1
  45. data/lib/browser/nokia.rb +1 -1
  46. data/lib/browser/opera.rb +1 -1
  47. data/lib/browser/otter.rb +1 -1
  48. data/lib/browser/phantom_js.rb +1 -1
  49. data/lib/browser/platform.rb +17 -11
  50. data/lib/browser/platform/adobe_air.rb +1 -1
  51. data/lib/browser/platform/android.rb +1 -1
  52. data/lib/browser/platform/blackberry.rb +1 -1
  53. data/lib/browser/platform/chrome_os.rb +1 -1
  54. data/lib/browser/platform/firefox_os.rb +1 -1
  55. data/lib/browser/platform/ios.rb +1 -1
  56. data/lib/browser/platform/kai_os.rb +23 -0
  57. data/lib/browser/platform/linux.rb +1 -1
  58. data/lib/browser/platform/mac.rb +1 -1
  59. data/lib/browser/platform/windows.rb +1 -1
  60. data/lib/browser/platform/windows_mobile.rb +1 -1
  61. data/lib/browser/platform/windows_phone.rb +1 -1
  62. data/lib/browser/qq.rb +1 -1
  63. data/lib/browser/safari.rb +2 -2
  64. data/lib/browser/samsung_browser.rb +1 -1
  65. data/lib/browser/snapchat.rb +1 -1
  66. data/lib/browser/sougou_browser.rb +1 -1
  67. data/lib/browser/sputnik.rb +1 -1
  68. data/lib/browser/uc_browser.rb +1 -1
  69. data/lib/browser/version.rb +1 -1
  70. data/lib/browser/weibo.rb +1 -1
  71. data/lib/browser/yandex.rb +1 -1
  72. data/test/ua.yml +2 -0
  73. data/test/unit/bots_test.rb +1 -1
  74. data/test/unit/device_test.rb +1 -1
  75. data/test/unit/kai_os_test.rb +31 -0
  76. data/test/unit/meta_test.rb +1 -1
  77. data/test/unit/platform_test.rb +1 -1
  78. metadata +12 -9
  79. data/.travis.yml +0 -23
@@ -15,7 +15,7 @@ module Browser
15
15
  end
16
16
 
17
17
  def match?
18
- ua =~ /Snapchat/
18
+ ua.include?("Snapchat")
19
19
  end
20
20
  end
21
21
  end
@@ -18,7 +18,7 @@ module Browser
18
18
  # SogouMobileBrowser for mobile device
19
19
  # SE for desktop device
20
20
  def match?
21
- ua =~ /SogouMobileBrowser/i || ua =~ / SE /
21
+ ua.match?(/SogouMobileBrowser/i) || ua.match?(/\bSE\b/)
22
22
  end
23
23
  end
24
24
  end
@@ -15,7 +15,7 @@ module Browser
15
15
  end
16
16
 
17
17
  def match?
18
- ua =~ /SputnikBrowser/
18
+ ua.include?("SputnikBrowser")
19
19
  end
20
20
  end
21
21
  end
@@ -15,7 +15,7 @@ module Browser
15
15
  end
16
16
 
17
17
  def match?
18
- ua =~ /UCBrowser/
18
+ ua.include?("UCBrowser")
19
19
  end
20
20
  end
21
21
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Browser
4
- VERSION = "5.1.0"
4
+ VERSION = "5.2.0"
5
5
  end
@@ -15,7 +15,7 @@ module Browser
15
15
  end
16
16
 
17
17
  def match?
18
- ua =~ /__weibo__/i
18
+ ua.match?(/__weibo__/i)
19
19
  end
20
20
  end
21
21
  end
@@ -15,7 +15,7 @@ module Browser
15
15
  end
16
16
 
17
17
  def match?
18
- ua =~ /YaBrowser/
18
+ ua.include?("YaBrowser")
19
19
  end
20
20
  end
21
21
  end
@@ -78,6 +78,7 @@ IOS_WEBVIEW: Mozilla/5.0 (iPhone; CPU iPhone OS 8_4 like Mac OS X) AppleWebKit/6
78
78
  IPAD: "Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B367 Safari/531.21.10"
79
79
  IPHONE: "Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/1A542a Safari/419.3"
80
80
  IPOD: "Mozilla/5.0 (iPod; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3A100a Safari/419.3"
81
+ JIOPHONE_2: "Mozilla/5.0 (Mobile; LYF/F300B/LYF-F300B-001-01-15-130718-i;Android; rv:48.0) Gecko/48.0 Firefox/48.0 KAIOS/2.5"
81
82
  KINDLE: "Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) Version/4.0 Kindle/3.0 (screen 600×800; rotate)"
82
83
  KINDLE_FIRE: "Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Kindle Fire Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"
83
84
  KINDLE_FIRE_HD: "Mozilla/5.0 (Linux; U; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.4 Safari/535.19 Silk-Accelerated=true"
@@ -103,6 +104,7 @@ NINTENDO_SWITCH: "Mozilla/5.0 (Nintendo Switch; WifiWebAuthApplet) AppleWebKit/6
103
104
  NINTENDO_WII: "Opera/9.00 (Nintendo Wii; U; ; 1309-9; en)"
104
105
  NINTENDO_WIIU: "Mozilla/5.0 (Nintendo WiiU) AppleWebKit/534.52 (KHTML, like Gecko) NX/2.1.0.8.23 NintendoBrowser/1.1.0.7579.EU"
105
106
  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"
107
+ NOKIA_8110: "Mozilla/5.0 (Mobile; Nokia_8110_4G; rv:48.0) Gecko/48.0 Firefox/48.0 KAIOS/2.5"
106
108
  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"
107
109
  OPERA: "Opera/9.80 (Macintosh; Intel Mac OS X 10.7.4; U; en) Presto/2.10.229 Version/11.64"
108
110
  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"
@@ -86,7 +86,7 @@ class BotsTest < Minitest::Test
86
86
  end
87
87
 
88
88
  test "adds custom bot matcher" do
89
- Browser::Bot.matchers << ->(ua, _) { ua =~ /some-script/ }
89
+ Browser::Bot.matchers << ->(ua, _) { ua.match?(/some-script/) }
90
90
  browser = Browser.new("some-script")
91
91
 
92
92
  assert browser.bot?
@@ -5,7 +5,7 @@ require "test_helper"
5
5
  class DeviceTest < Minitest::Test
6
6
  class CustomDevice < Browser::Device::Base
7
7
  def match?
8
- ua =~ /Custom/
8
+ ua.include?("Custom")
9
9
  end
10
10
 
11
11
  def id
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ class KaiOSTest < Minitest::Test
6
+ test "detects KaiOS" do
7
+ browser = Browser.new(Browser["NOKIA_8110"])
8
+
9
+ assert browser.firefox?
10
+ assert_equal "48", browser.version
11
+ assert_equal "48.0", browser.full_version
12
+ assert_equal "Firefox", browser.name
13
+ assert browser.platform.kai_os?
14
+ assert_equal "KaiOS", browser.platform.name
15
+ assert_equal "2.5", browser.platform.version
16
+ refute browser.platform.android?
17
+ end
18
+
19
+ test "detects KaiOS with Android string in user-agent " do
20
+ browser = Browser.new(Browser["JIOPHONE_2"])
21
+
22
+ assert browser.firefox?
23
+ assert_equal "48", browser.version
24
+ assert_equal "48.0", browser.full_version
25
+ assert_equal "Firefox", browser.name
26
+ assert browser.platform.kai_os?
27
+ assert_equal "KaiOS", browser.platform.name
28
+ assert_equal "2.5", browser.platform.version
29
+ refute browser.platform.android?
30
+ end
31
+ end
@@ -5,7 +5,7 @@ require "test_helper"
5
5
  class MetaTest < Minitest::Test
6
6
  class CustomRule < Browser::Meta::Base
7
7
  def meta
8
- "custom" if browser.ua =~ /Custom/
8
+ "custom" if /Custom/.match?(browser.ua)
9
9
  end
10
10
  end
11
11
 
@@ -5,7 +5,7 @@ require "test_helper"
5
5
  class PlatformTest < Minitest::Test
6
6
  class CustomPlatform < Browser::Platform::Base
7
7
  def match?
8
- ua =~ /Custom/
8
+ ua.include?("Custom")
9
9
  end
10
10
 
11
11
  def id
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: 5.1.0
4
+ version: 5.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nando Vieira
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-03 00:00:00.000000000 Z
11
+ date: 2020-12-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -140,16 +140,16 @@ dependencies:
140
140
  name: rubocop-fnando
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - "~>"
143
+ - - ">="
144
144
  - !ruby/object:Gem::Version
145
- version: 0.0.3
145
+ version: '0'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - "~>"
150
+ - - ">="
151
151
  - !ruby/object:Gem::Version
152
- version: 0.0.3
152
+ version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: simplecov
155
155
  requirement: !ruby/object:Gem::Requirement
@@ -172,10 +172,10 @@ extensions: []
172
172
  extra_rdoc_files: []
173
173
  files:
174
174
  - ".github/ISSUE_TEMPLATE.md"
175
+ - ".github/workflows/tests.yml"
175
176
  - ".gitignore"
176
177
  - ".prettierignore"
177
178
  - ".rubocop.yml"
178
- - ".travis.yml"
179
179
  - CHANGELOG.md
180
180
  - FUNDING.yml
181
181
  - Gemfile
@@ -265,6 +265,7 @@ files:
265
265
  - lib/browser/platform/chrome_os.rb
266
266
  - lib/browser/platform/firefox_os.rb
267
267
  - lib/browser/platform/ios.rb
268
+ - lib/browser/platform/kai_os.rb
268
269
  - lib/browser/platform/linux.rb
269
270
  - lib/browser/platform/mac.rb
270
271
  - lib/browser/platform/unknown.rb
@@ -317,6 +318,7 @@ files:
317
318
  - test/unit/internet_explorer_test.rb
318
319
  - test/unit/ios_app_test.rb
319
320
  - test/unit/ios_test.rb
321
+ - test/unit/kai_os_test.rb
320
322
  - test/unit/kindle_test.rb
321
323
  - test/unit/maxthon_test.rb
322
324
  - test/unit/meta_test.rb
@@ -342,7 +344,7 @@ homepage: https://github.com/fnando/browser
342
344
  licenses:
343
345
  - MIT
344
346
  metadata:
345
- changelog_uri: https://github.com/fnando/browser/blob/master/CHANGELOG.md
347
+ changelog_uri: https://github.com/fnando/browser/blob/main/CHANGELOG.md
346
348
  post_install_message:
347
349
  rdoc_options: []
348
350
  require_paths:
@@ -358,7 +360,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
358
360
  - !ruby/object:Gem::Version
359
361
  version: '0'
360
362
  requirements: []
361
- rubygems_version: 3.1.4
363
+ rubygems_version: 3.2.0
362
364
  signing_key:
363
365
  specification_version: 4
364
366
  summary: Do some browser detection with Ruby.
@@ -394,6 +396,7 @@ test_files:
394
396
  - test/unit/internet_explorer_test.rb
395
397
  - test/unit/ios_app_test.rb
396
398
  - test/unit/ios_test.rb
399
+ - test/unit/kai_os_test.rb
397
400
  - test/unit/kindle_test.rb
398
401
  - test/unit/maxthon_test.rb
399
402
  - test/unit/meta_test.rb
@@ -1,23 +0,0 @@
1
- ---
2
- language: ruby
3
- cache: bundler
4
- rvm:
5
- - 2.7
6
- - 2.6
7
- - 2.5
8
- gemfile:
9
- - Gemfile
10
- - gemfiles/rails5.gemfile
11
- - gemfiles/rails6.gemfile
12
- script: bundle exec rake
13
- notifications:
14
- email: false
15
- before_script:
16
- - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
17
- - chmod +x ./cc-test-reporter
18
- - "./cc-test-reporter before-build"
19
- after_script:
20
- - "./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT"
21
- env:
22
- global:
23
- secure: LrxynbbiJMX5vy/UVPfQsnT21oUpqpuHbUM9YOy0+ZYfDCjprvM/UGxFgjM+unRzyPI0mrNyU65ohpj8R1//tvdFW+xYau6QmFgSTU6OAQrckW/n+jqwQZV37a38wEGV0QvA6A0HW9pTrJfatUBmpaAeHAxcaBMk51tEgX/8poA=