browser 5.1.0 → 5.2.0

Sign up to get free protection for your applications and to get access to all the features.
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=