browser 3.0.3 → 5.3.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 +1 -1
- data/.github/workflows/tests.yml +57 -0
- data/.prettierignore +1 -0
- data/.rubocop.yml +12 -0
- data/CHANGELOG.md +101 -19
- data/FUNDING.yml +3 -0
- data/README.md +104 -67
- data/bots.yml +299 -294
- data/browser.gemspec +5 -2
- data/gemfiles/{rails6.gemfile → rails6_0.gemfile} +0 -0
- data/gemfiles/{rails5.gemfile → rails6_1.gemfile} +1 -1
- data/lib/browser/accept_language.rb +4 -4
- data/lib/browser/alipay.rb +1 -1
- data/lib/browser/base.rb +80 -21
- data/lib/browser/blackberry.rb +1 -1
- data/lib/browser/bot/keyword_matcher.rb +1 -1
- data/lib/browser/browser.rb +26 -26
- data/lib/browser/chrome.rb +13 -3
- data/lib/browser/device/android.rb +1 -1
- data/lib/browser/device/blackberry_playbook.rb +1 -1
- data/lib/browser/device/ipad.rb +1 -1
- data/lib/browser/device/iphone.rb +1 -1
- data/lib/browser/device/ipod_touch.rb +1 -1
- data/lib/browser/device/kindle.rb +1 -1
- data/lib/browser/device/kindle_fire.rb +1 -1
- data/lib/browser/device/playstation3.rb +1 -1
- data/lib/browser/device/playstation4.rb +1 -1
- data/lib/browser/device/psp.rb +1 -1
- data/lib/browser/device/psvita.rb +1 -1
- data/lib/browser/device/samsung.rb +33 -0
- data/lib/browser/device/surface.rb +1 -1
- data/lib/browser/device/switch.rb +1 -1
- data/lib/browser/device/tv.rb +1 -1
- data/lib/browser/device/unknown.rb +1 -1
- data/lib/browser/device/wii.rb +1 -1
- data/lib/browser/device/wiiu.rb +1 -1
- data/lib/browser/device/xbox_360.rb +1 -1
- data/lib/browser/device/xbox_one.rb +1 -1
- data/lib/browser/device.rb +12 -5
- data/lib/browser/duck_duck_go.rb +22 -0
- data/lib/browser/edge.rb +3 -3
- data/lib/browser/electron.rb +1 -1
- data/lib/browser/facebook.rb +1 -1
- data/lib/browser/firefox.rb +1 -1
- data/lib/browser/google_search_app.rb +21 -0
- data/lib/browser/huawei_browser.rb +21 -0
- data/lib/browser/instagram.rb +1 -1
- data/lib/browser/internet_explorer.rb +2 -2
- data/lib/browser/maxthon.rb +21 -0
- data/lib/browser/meta/base.rb +0 -1
- data/lib/browser/meta.rb +0 -1
- data/lib/browser/micro_messenger.rb +1 -1
- data/lib/browser/miui_browser.rb +21 -0
- data/lib/browser/nokia.rb +1 -1
- data/lib/browser/opera.rb +1 -1
- data/lib/browser/otter.rb +1 -1
- data/lib/browser/phantom_js.rb +1 -1
- data/lib/browser/platform/adobe_air.rb +1 -1
- data/lib/browser/platform/android.rb +1 -1
- data/lib/browser/platform/base.rb +3 -2
- data/lib/browser/platform/blackberry.rb +1 -1
- data/lib/browser/platform/chrome_os.rb +1 -1
- data/lib/browser/platform/firefox_os.rb +1 -1
- data/lib/browser/platform/ios.rb +2 -2
- data/lib/browser/platform/kai_os.rb +23 -0
- data/lib/browser/platform/linux.rb +1 -1
- data/lib/browser/platform/mac.rb +5 -3
- data/lib/browser/platform/{other.rb → unknown.rb} +3 -3
- data/lib/browser/platform/windows.rb +2 -2
- data/lib/browser/platform/windows_mobile.rb +1 -1
- data/lib/browser/platform/windows_phone.rb +1 -1
- data/lib/browser/platform.rb +22 -16
- data/lib/browser/qq.rb +1 -1
- data/lib/browser/safari.rb +16 -1
- data/lib/browser/samsung_browser.rb +21 -0
- data/lib/browser/snapchat.rb +1 -1
- data/lib/browser/sougou_browser.rb +24 -0
- data/lib/browser/sputnik.rb +1 -1
- data/lib/browser/uc_browser.rb +1 -1
- data/lib/browser/{generic.rb → unknown.rb} +3 -3
- data/lib/browser/version.rb +1 -1
- data/lib/browser/weibo.rb +1 -1
- data/lib/browser/yandex.rb +1 -1
- data/samsung.yml +138 -0
- data/test/browser_test.rb +37 -6
- data/test/ua.yml +23 -1
- data/test/ua_bots.yml +8 -3
- data/test/unit/adobe_air_test.rb +1 -1
- data/test/unit/alipay_test.rb +6 -0
- data/test/unit/bots_test.rb +1 -1
- data/test/unit/console_test.rb +2 -2
- data/test/unit/device_test.rb +30 -3
- data/test/unit/duck_duck_go_test.rb +37 -0
- data/test/unit/edge_test.rb +34 -2
- data/test/unit/google_search_app_test.rb +54 -0
- data/test/unit/huawei_browser_test.rb +25 -0
- data/test/unit/kai_os_test.rb +31 -0
- data/test/unit/maxthon_test.rb +25 -0
- data/test/unit/meta_test.rb +10 -1
- data/test/unit/micro_messenger_test.rb +21 -6
- data/test/unit/miui_browser_test.rb +25 -0
- data/test/unit/opera_test.rb +1 -0
- data/test/unit/platform_test.rb +13 -8
- data/test/unit/qq_test.rb +12 -0
- data/test/unit/safari_test.rb +12 -7
- data/test/unit/samsung_browser_test.rb +23 -0
- data/test/unit/sougou_browser_test.rb +41 -0
- metadata +47 -19
- data/.travis.yml +0 -23
- data/lib/browser/meta/modern.rb +0 -11
|
@@ -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
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "test_helper"
|
|
4
|
+
|
|
5
|
+
class MaxthonTest < Minitest::Test
|
|
6
|
+
test "detects Maxthon" do
|
|
7
|
+
browser = Browser.new(Browser["MAXTHON"])
|
|
8
|
+
assert browser.maxthon?
|
|
9
|
+
refute browser.safari?
|
|
10
|
+
refute browser.chrome?
|
|
11
|
+
assert_equal "Maxthon", browser.name
|
|
12
|
+
assert_equal :maxthon, browser.id
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
test "detects correct version" do
|
|
16
|
+
browser = Browser.new(Browser["MAXTHON"])
|
|
17
|
+
assert_equal "5.3.8.2000", browser.full_version
|
|
18
|
+
assert_equal "5", browser.version
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
test "detects version by range" do
|
|
22
|
+
browser = Browser.new(Browser["MAXTHON"])
|
|
23
|
+
assert browser.maxthon?(%w[>=5 <6])
|
|
24
|
+
end
|
|
25
|
+
end
|
data/test/unit/meta_test.rb
CHANGED
|
@@ -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
|
|
8
|
+
"custom" if /Custom/.match?(browser.ua)
|
|
9
9
|
end
|
|
10
10
|
end
|
|
11
11
|
|
|
@@ -45,4 +45,13 @@ class MetaTest < Minitest::Test
|
|
|
45
45
|
assert meta.include?("blackberry")
|
|
46
46
|
assert meta.include?("mobile")
|
|
47
47
|
end
|
|
48
|
+
|
|
49
|
+
test "returns string representation for unknown platform/device/browser" do
|
|
50
|
+
browser = Browser.new("Unknown")
|
|
51
|
+
meta = browser.to_s
|
|
52
|
+
|
|
53
|
+
assert meta.include?("unknown_platform")
|
|
54
|
+
assert meta.include?("unknown_device")
|
|
55
|
+
assert meta.include?("unknown_browser")
|
|
56
|
+
end
|
|
48
57
|
end
|
|
@@ -3,18 +3,33 @@
|
|
|
3
3
|
require "test_helper"
|
|
4
4
|
|
|
5
5
|
class MicroMessengerTest < Minitest::Test
|
|
6
|
-
test "detects micro messenger
|
|
7
|
-
browser = Browser.new(Browser["
|
|
6
|
+
test "detects micro messenger 7.0.10 on iOS" do
|
|
7
|
+
browser = Browser.new(Browser["MICRO_MESSENGER_IOS"])
|
|
8
8
|
|
|
9
9
|
assert browser.micro_messenger?
|
|
10
10
|
assert browser.wechat?
|
|
11
|
-
assert_equal "
|
|
11
|
+
assert_equal "7.0.10", browser.full_version
|
|
12
12
|
assert_equal "MicroMessenger", browser.name
|
|
13
13
|
assert_equal :micro_messenger, browser.id
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
-
test "detects version by range" do
|
|
17
|
-
browser = Browser.new(Browser["
|
|
18
|
-
assert browser.wechat?(%w[>=
|
|
16
|
+
test "detects version by range on iOS" do
|
|
17
|
+
browser = Browser.new(Browser["MICRO_MESSENGER_IOS"])
|
|
18
|
+
assert browser.wechat?(%w[>=7 <8])
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
test "detects micro messenger 7.0.13.1640 on Android" do
|
|
22
|
+
browser = Browser.new(Browser["MICRO_MESSENGER_ANDROID"])
|
|
23
|
+
|
|
24
|
+
assert browser.micro_messenger?
|
|
25
|
+
assert browser.wechat?
|
|
26
|
+
assert_equal "7.0.13.1640", browser.full_version
|
|
27
|
+
assert_equal "MicroMessenger", browser.name
|
|
28
|
+
assert_equal :micro_messenger, browser.id
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
test "detects version by range on Android" do
|
|
32
|
+
browser = Browser.new(Browser["MICRO_MESSENGER_ANDROID"])
|
|
33
|
+
assert browser.wechat?(%w[>=7 <8])
|
|
19
34
|
end
|
|
20
35
|
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "test_helper"
|
|
4
|
+
|
|
5
|
+
class MiuiBrowserTest < Minitest::Test
|
|
6
|
+
test "detects Miui Browser" do
|
|
7
|
+
browser = Browser.new(Browser["MIUI_BROWSER"])
|
|
8
|
+
assert browser.miui_browser?
|
|
9
|
+
refute browser.safari?
|
|
10
|
+
refute browser.chrome?
|
|
11
|
+
assert_equal "Miui Browser", browser.name
|
|
12
|
+
assert_equal :miui_browser, browser.id
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
test "detects correct version" do
|
|
16
|
+
browser = Browser.new(Browser["MIUI_BROWSER"])
|
|
17
|
+
assert_equal "12.3.3", browser.full_version
|
|
18
|
+
assert_equal "12", browser.version
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
test "detects version by range" do
|
|
22
|
+
browser = Browser.new(Browser["MIUI_BROWSER"])
|
|
23
|
+
assert browser.miui_browser?(%w[>=12 <13])
|
|
24
|
+
end
|
|
25
|
+
end
|
data/test/unit/opera_test.rb
CHANGED
data/test/unit/platform_test.rb
CHANGED
|
@@ -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
|
|
8
|
+
ua.include?("Custom")
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
def id
|
|
@@ -20,7 +20,7 @@ class PlatformTest < Minitest::Test
|
|
|
20
20
|
|
|
21
21
|
Browser::Platform.matchers.shift
|
|
22
22
|
platform = Browser::Platform.new("Custom")
|
|
23
|
-
assert_equal :
|
|
23
|
+
assert_equal :unknown_platform, platform.id
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
test "implements to_s" do
|
|
@@ -35,13 +35,13 @@ class PlatformTest < Minitest::Test
|
|
|
35
35
|
refute platform == :android
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
-
test "detect
|
|
39
|
-
platform = Browser::Platform.new("
|
|
38
|
+
test "detect unknown platforms" do
|
|
39
|
+
platform = Browser::Platform.new("Unknown")
|
|
40
40
|
|
|
41
|
-
assert_equal "
|
|
42
|
-
assert_equal :
|
|
41
|
+
assert_equal "Unknown", platform.name
|
|
42
|
+
assert_equal :unknown_platform, platform.id
|
|
43
43
|
assert_equal "0", platform.version
|
|
44
|
-
assert platform.
|
|
44
|
+
assert platform.unknown?
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
test "detect ios (iPhone)" do
|
|
@@ -104,7 +104,7 @@ class PlatformTest < Minitest::Test
|
|
|
104
104
|
test "detect mac" do
|
|
105
105
|
platform = Browser::Platform.new(Browser["SAFARI"])
|
|
106
106
|
|
|
107
|
-
assert_equal "
|
|
107
|
+
assert_equal "Mac OS X", platform.name
|
|
108
108
|
assert_equal :mac, platform.id
|
|
109
109
|
assert platform.mac?
|
|
110
110
|
assert_equal "10.6.4", platform.version
|
|
@@ -116,6 +116,11 @@ class PlatformTest < Minitest::Test
|
|
|
116
116
|
assert_equal "0", platform.version
|
|
117
117
|
end
|
|
118
118
|
|
|
119
|
+
test "detect mac names" do
|
|
120
|
+
assert_equal "Mac OS X", Browser::Platform.new(Browser["MAC_OSX"]).name
|
|
121
|
+
assert_equal "macOS", Browser::Platform.new(Browser["MAC_OS"]).name
|
|
122
|
+
end
|
|
123
|
+
|
|
119
124
|
test "detect firefox os" do
|
|
120
125
|
platform = Browser::Platform.new(Browser["FIREFOX_OS"])
|
|
121
126
|
|
data/test/unit/qq_test.rb
CHANGED
|
@@ -9,6 +9,9 @@ class QQTest < Minitest::Test
|
|
|
9
9
|
assert_equal "6.3.3.432", browser.full_version
|
|
10
10
|
assert_equal "QQ Browser", browser.name
|
|
11
11
|
assert_equal :qq, browser.id
|
|
12
|
+
|
|
13
|
+
refute browser.chrome?
|
|
14
|
+
refute browser.safari?
|
|
12
15
|
end
|
|
13
16
|
|
|
14
17
|
test "detects QQ browser for Android" do
|
|
@@ -17,6 +20,9 @@ class QQTest < Minitest::Test
|
|
|
17
20
|
assert_equal "6.2", browser.full_version
|
|
18
21
|
assert_equal "QQ Browser", browser.name
|
|
19
22
|
assert_equal :qq, browser.id
|
|
23
|
+
|
|
24
|
+
refute browser.chrome?
|
|
25
|
+
refute browser.safari?
|
|
20
26
|
end
|
|
21
27
|
|
|
22
28
|
test "detects QQ browser for Mac" do
|
|
@@ -25,6 +31,9 @@ class QQTest < Minitest::Test
|
|
|
25
31
|
assert_equal "4.2.4753.400", browser.full_version
|
|
26
32
|
assert_equal "QQ Browser", browser.name
|
|
27
33
|
assert_equal :qq, browser.id
|
|
34
|
+
|
|
35
|
+
refute browser.chrome?
|
|
36
|
+
refute browser.safari?
|
|
28
37
|
end
|
|
29
38
|
|
|
30
39
|
test "detects QQ browser lite for Mac" do
|
|
@@ -33,5 +42,8 @@ class QQTest < Minitest::Test
|
|
|
33
42
|
assert_equal "1.0.4", browser.full_version
|
|
34
43
|
assert_equal "QQ Browser", browser.name
|
|
35
44
|
assert_equal :qq, browser.id
|
|
45
|
+
|
|
46
|
+
refute browser.chrome?
|
|
47
|
+
refute browser.safari?
|
|
36
48
|
end
|
|
37
49
|
end
|
data/test/unit/safari_test.rb
CHANGED
|
@@ -7,7 +7,7 @@ class SafariTest < Minitest::Test
|
|
|
7
7
|
browser = Browser.new(Browser["SAFARI3"])
|
|
8
8
|
|
|
9
9
|
assert browser.safari?
|
|
10
|
-
assert browser.safari?(3)
|
|
10
|
+
assert browser.safari?("~>3.0")
|
|
11
11
|
assert_equal "3", browser.version
|
|
12
12
|
assert_equal "3.0.3", browser.full_version
|
|
13
13
|
end
|
|
@@ -16,7 +16,7 @@ class SafariTest < Minitest::Test
|
|
|
16
16
|
browser = Browser.new(Browser["SAFARI4"])
|
|
17
17
|
|
|
18
18
|
assert browser.safari?
|
|
19
|
-
assert browser.safari?(4)
|
|
19
|
+
assert browser.safari?("~>4.0")
|
|
20
20
|
assert_equal "4", browser.version
|
|
21
21
|
assert_equal "4.0.3", browser.full_version
|
|
22
22
|
end
|
|
@@ -25,7 +25,7 @@ class SafariTest < Minitest::Test
|
|
|
25
25
|
browser = Browser.new(Browser["SAFARI5"])
|
|
26
26
|
|
|
27
27
|
assert browser.safari?
|
|
28
|
-
assert browser.safari?(5)
|
|
28
|
+
assert browser.safari?("~>5.0")
|
|
29
29
|
assert_equal "5", browser.version
|
|
30
30
|
assert_equal "5.0.3", browser.full_version
|
|
31
31
|
end
|
|
@@ -34,7 +34,7 @@ class SafariTest < Minitest::Test
|
|
|
34
34
|
browser = Browser.new(Browser["SAFARI6"])
|
|
35
35
|
|
|
36
36
|
assert browser.safari?
|
|
37
|
-
assert browser.safari?(6)
|
|
37
|
+
assert browser.safari?("~>6.0")
|
|
38
38
|
assert_equal "6", browser.version
|
|
39
39
|
assert_equal "6.0", browser.full_version
|
|
40
40
|
end
|
|
@@ -43,7 +43,7 @@ class SafariTest < Minitest::Test
|
|
|
43
43
|
browser = Browser.new(Browser["SAFARI7"])
|
|
44
44
|
|
|
45
45
|
assert browser.safari?
|
|
46
|
-
assert browser.safari?(7)
|
|
46
|
+
assert browser.safari?("~>7.0")
|
|
47
47
|
assert_equal "7", browser.version
|
|
48
48
|
assert_equal "7.0", browser.full_version
|
|
49
49
|
end
|
|
@@ -52,7 +52,7 @@ class SafariTest < Minitest::Test
|
|
|
52
52
|
browser = Browser.new(Browser["SAFARI8"])
|
|
53
53
|
|
|
54
54
|
assert browser.safari?
|
|
55
|
-
assert browser.safari?(8)
|
|
55
|
+
assert browser.safari?("~>8.0")
|
|
56
56
|
assert_equal "8", browser.version
|
|
57
57
|
assert_equal "8.0", browser.full_version
|
|
58
58
|
end
|
|
@@ -61,7 +61,7 @@ class SafariTest < Minitest::Test
|
|
|
61
61
|
browser = Browser.new(Browser["SAFARI9"])
|
|
62
62
|
|
|
63
63
|
assert browser.safari?
|
|
64
|
-
assert browser.safari?(9)
|
|
64
|
+
assert browser.safari?("~>9.0")
|
|
65
65
|
assert_equal "9", browser.version
|
|
66
66
|
assert_equal "9.0.2", browser.full_version
|
|
67
67
|
end
|
|
@@ -88,4 +88,9 @@ class SafariTest < Minitest::Test
|
|
|
88
88
|
browser = Browser.new(Browser["SAFARI9"])
|
|
89
89
|
assert browser.webkit?(%w[>=601 <602])
|
|
90
90
|
end
|
|
91
|
+
|
|
92
|
+
test "detects safari version by range" do
|
|
93
|
+
browser = Browser.new(Browser["SAFARI9"])
|
|
94
|
+
assert browser.safari?(%w[>=9.0 <10])
|
|
95
|
+
end
|
|
91
96
|
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "test_helper"
|
|
4
|
+
|
|
5
|
+
class SamsungBrowserTest < Minitest::Test
|
|
6
|
+
test "detects samsung browser" do
|
|
7
|
+
browser = Browser.new(Browser["SAMSUNG_BROWSER"])
|
|
8
|
+
|
|
9
|
+
assert browser.webkit?
|
|
10
|
+
assert browser.samsung_browser?
|
|
11
|
+
assert_equal "11", browser.version
|
|
12
|
+
assert_equal :samsung_browser, browser.id
|
|
13
|
+
assert_equal "11.1", browser.full_version
|
|
14
|
+
assert_equal "Samsung Browser", browser.name
|
|
15
|
+
refute browser.chrome?
|
|
16
|
+
refute browser.safari?
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
test "detects version by range" do
|
|
20
|
+
browser = Browser.new(Browser["SAMSUNG_BROWSER"])
|
|
21
|
+
assert browser.samsung_browser?(%w[>=11 <12])
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "test_helper"
|
|
4
|
+
|
|
5
|
+
class SougouBrowserTest < Minitest::Test
|
|
6
|
+
test "detects Sougou Browser on desktop device" do
|
|
7
|
+
browser = Browser.new(Browser["SOUGOU_BROWSER"])
|
|
8
|
+
assert browser.sougou_browser?
|
|
9
|
+
refute browser.safari?
|
|
10
|
+
refute browser.chrome?
|
|
11
|
+
assert_equal "Sougou Browser", browser.name
|
|
12
|
+
assert_equal :sougou_browser, browser.id
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
test "detects correct version on desktop device" do
|
|
16
|
+
browser = Browser.new(Browser["SOUGOU_BROWSER"])
|
|
17
|
+
assert_equal "0.0", browser.full_version
|
|
18
|
+
assert_equal "0", browser.version
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
test "detects Sougou Browser on mobile device" do
|
|
22
|
+
browser = Browser.new(Browser["SOUGOU_BROWSER_MOBILE"])
|
|
23
|
+
assert browser.sougou_browser?
|
|
24
|
+
assert browser.device.mobile?
|
|
25
|
+
refute browser.safari?
|
|
26
|
+
refute browser.chrome?
|
|
27
|
+
assert_equal "Sougou Browser", browser.name
|
|
28
|
+
assert_equal :sougou_browser, browser.id
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
test "detects correct version on mobile device" do
|
|
32
|
+
browser = Browser.new(Browser["SOUGOU_BROWSER_MOBILE"])
|
|
33
|
+
assert_equal "5.28.12", browser.full_version
|
|
34
|
+
assert_equal "5", browser.version
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
test "detects version by range on mobile device" do
|
|
38
|
+
browser = Browser.new(Browser["SOUGOU_BROWSER_MOBILE"])
|
|
39
|
+
assert browser.sougou_browser?(%w[>=5 <6])
|
|
40
|
+
end
|
|
41
|
+
end
|
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: 3.
|
|
4
|
+
version: 5.3.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Nando Vieira
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-02-22 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
|
|
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
|
|
152
|
+
version: '0'
|
|
153
153
|
- !ruby/object:Gem::Dependency
|
|
154
154
|
name: simplecov
|
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -172,10 +172,12 @@ extensions: []
|
|
|
172
172
|
extra_rdoc_files: []
|
|
173
173
|
files:
|
|
174
174
|
- ".github/ISSUE_TEMPLATE.md"
|
|
175
|
+
- ".github/workflows/tests.yml"
|
|
175
176
|
- ".gitignore"
|
|
177
|
+
- ".prettierignore"
|
|
176
178
|
- ".rubocop.yml"
|
|
177
|
-
- ".travis.yml"
|
|
178
179
|
- CHANGELOG.md
|
|
180
|
+
- FUNDING.yml
|
|
179
181
|
- Gemfile
|
|
180
182
|
- README.md
|
|
181
183
|
- Rakefile
|
|
@@ -183,8 +185,8 @@ files:
|
|
|
183
185
|
- bots.yml
|
|
184
186
|
- browser.gemspec
|
|
185
187
|
- config.ru
|
|
186
|
-
- gemfiles/
|
|
187
|
-
- gemfiles/
|
|
188
|
+
- gemfiles/rails6_0.gemfile
|
|
189
|
+
- gemfiles/rails6_1.gemfile
|
|
188
190
|
- languages.yml
|
|
189
191
|
- lib/browser.rb
|
|
190
192
|
- lib/browser/accept_language.rb
|
|
@@ -213,6 +215,7 @@ files:
|
|
|
213
215
|
- lib/browser/device/playstation4.rb
|
|
214
216
|
- lib/browser/device/psp.rb
|
|
215
217
|
- lib/browser/device/psvita.rb
|
|
218
|
+
- lib/browser/device/samsung.rb
|
|
216
219
|
- lib/browser/device/surface.rb
|
|
217
220
|
- lib/browser/device/switch.rb
|
|
218
221
|
- lib/browser/device/tv.rb
|
|
@@ -221,13 +224,16 @@ files:
|
|
|
221
224
|
- lib/browser/device/wiiu.rb
|
|
222
225
|
- lib/browser/device/xbox_360.rb
|
|
223
226
|
- lib/browser/device/xbox_one.rb
|
|
227
|
+
- lib/browser/duck_duck_go.rb
|
|
224
228
|
- lib/browser/edge.rb
|
|
225
229
|
- lib/browser/electron.rb
|
|
226
230
|
- lib/browser/facebook.rb
|
|
227
231
|
- lib/browser/firefox.rb
|
|
228
|
-
- lib/browser/
|
|
232
|
+
- lib/browser/google_search_app.rb
|
|
233
|
+
- lib/browser/huawei_browser.rb
|
|
229
234
|
- lib/browser/instagram.rb
|
|
230
235
|
- lib/browser/internet_explorer.rb
|
|
236
|
+
- lib/browser/maxthon.rb
|
|
231
237
|
- lib/browser/meta.rb
|
|
232
238
|
- lib/browser/meta/base.rb
|
|
233
239
|
- lib/browser/meta/device.rb
|
|
@@ -236,7 +242,6 @@ files:
|
|
|
236
242
|
- lib/browser/meta/ie.rb
|
|
237
243
|
- lib/browser/meta/ios.rb
|
|
238
244
|
- lib/browser/meta/mobile.rb
|
|
239
|
-
- lib/browser/meta/modern.rb
|
|
240
245
|
- lib/browser/meta/platform.rb
|
|
241
246
|
- lib/browser/meta/proxy.rb
|
|
242
247
|
- lib/browser/meta/safari.rb
|
|
@@ -247,6 +252,7 @@ files:
|
|
|
247
252
|
- lib/browser/middleware/context.rb
|
|
248
253
|
- lib/browser/middleware/context/additions.rb
|
|
249
254
|
- lib/browser/middleware/context/url_methods.rb
|
|
255
|
+
- lib/browser/miui_browser.rb
|
|
250
256
|
- lib/browser/nokia.rb
|
|
251
257
|
- lib/browser/opera.rb
|
|
252
258
|
- lib/browser/otter.rb
|
|
@@ -259,22 +265,27 @@ files:
|
|
|
259
265
|
- lib/browser/platform/chrome_os.rb
|
|
260
266
|
- lib/browser/platform/firefox_os.rb
|
|
261
267
|
- lib/browser/platform/ios.rb
|
|
268
|
+
- lib/browser/platform/kai_os.rb
|
|
262
269
|
- lib/browser/platform/linux.rb
|
|
263
270
|
- lib/browser/platform/mac.rb
|
|
264
|
-
- lib/browser/platform/
|
|
271
|
+
- lib/browser/platform/unknown.rb
|
|
265
272
|
- lib/browser/platform/windows.rb
|
|
266
273
|
- lib/browser/platform/windows_mobile.rb
|
|
267
274
|
- lib/browser/platform/windows_phone.rb
|
|
268
275
|
- lib/browser/qq.rb
|
|
269
276
|
- lib/browser/rails.rb
|
|
270
277
|
- lib/browser/safari.rb
|
|
278
|
+
- lib/browser/samsung_browser.rb
|
|
271
279
|
- lib/browser/snapchat.rb
|
|
280
|
+
- lib/browser/sougou_browser.rb
|
|
272
281
|
- lib/browser/sputnik.rb
|
|
273
282
|
- lib/browser/testing.rb
|
|
274
283
|
- lib/browser/uc_browser.rb
|
|
284
|
+
- lib/browser/unknown.rb
|
|
275
285
|
- lib/browser/version.rb
|
|
276
286
|
- lib/browser/weibo.rb
|
|
277
287
|
- lib/browser/yandex.rb
|
|
288
|
+
- samsung.yml
|
|
278
289
|
- search_engines.yml
|
|
279
290
|
- test/browser_test.rb
|
|
280
291
|
- test/middleware_test.rb
|
|
@@ -295,18 +306,24 @@ files:
|
|
|
295
306
|
- test/unit/chrome_test.rb
|
|
296
307
|
- test/unit/console_test.rb
|
|
297
308
|
- test/unit/device_test.rb
|
|
309
|
+
- test/unit/duck_duck_go_test.rb
|
|
298
310
|
- test/unit/edge_test.rb
|
|
299
311
|
- test/unit/electron_test.rb
|
|
300
312
|
- test/unit/facebook_test.rb
|
|
301
313
|
- test/unit/firefox_test.rb
|
|
302
314
|
- test/unit/generic_test.rb
|
|
315
|
+
- test/unit/google_search_app_test.rb
|
|
316
|
+
- test/unit/huawei_browser_test.rb
|
|
303
317
|
- test/unit/instagram_test.rb
|
|
304
318
|
- test/unit/internet_explorer_test.rb
|
|
305
319
|
- test/unit/ios_app_test.rb
|
|
306
320
|
- test/unit/ios_test.rb
|
|
321
|
+
- test/unit/kai_os_test.rb
|
|
307
322
|
- test/unit/kindle_test.rb
|
|
323
|
+
- test/unit/maxthon_test.rb
|
|
308
324
|
- test/unit/meta_test.rb
|
|
309
325
|
- test/unit/micro_messenger_test.rb
|
|
326
|
+
- test/unit/miui_browser_test.rb
|
|
310
327
|
- test/unit/nokia_test.rb
|
|
311
328
|
- test/unit/opera_test.rb
|
|
312
329
|
- test/unit/otter_test.rb
|
|
@@ -314,18 +331,21 @@ files:
|
|
|
314
331
|
- test/unit/proxy_test.rb
|
|
315
332
|
- test/unit/qq_test.rb
|
|
316
333
|
- test/unit/safari_test.rb
|
|
334
|
+
- test/unit/samsung_browser_test.rb
|
|
317
335
|
- test/unit/snapchat_test.rb
|
|
336
|
+
- test/unit/sougou_browser_test.rb
|
|
318
337
|
- test/unit/sputnik_test.rb
|
|
319
338
|
- test/unit/uc_browser_test.rb
|
|
320
339
|
- test/unit/weibo_test.rb
|
|
321
340
|
- test/unit/windows_phone_test.rb
|
|
322
341
|
- test/unit/windows_test.rb
|
|
323
342
|
- test/unit/yandex_test.rb
|
|
324
|
-
homepage:
|
|
343
|
+
homepage: https://github.com/fnando/browser
|
|
325
344
|
licenses:
|
|
326
345
|
- MIT
|
|
327
|
-
metadata:
|
|
328
|
-
|
|
346
|
+
metadata:
|
|
347
|
+
changelog_uri: https://github.com/fnando/browser/blob/main/CHANGELOG.md
|
|
348
|
+
post_install_message:
|
|
329
349
|
rdoc_options: []
|
|
330
350
|
require_paths:
|
|
331
351
|
- lib
|
|
@@ -333,15 +353,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
333
353
|
requirements:
|
|
334
354
|
- - ">="
|
|
335
355
|
- !ruby/object:Gem::Version
|
|
336
|
-
version:
|
|
356
|
+
version: 2.5.0
|
|
337
357
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
338
358
|
requirements:
|
|
339
359
|
- - ">="
|
|
340
360
|
- !ruby/object:Gem::Version
|
|
341
361
|
version: '0'
|
|
342
362
|
requirements: []
|
|
343
|
-
rubygems_version: 3.
|
|
344
|
-
signing_key:
|
|
363
|
+
rubygems_version: 3.2.3
|
|
364
|
+
signing_key:
|
|
345
365
|
specification_version: 4
|
|
346
366
|
summary: Do some browser detection with Ruby.
|
|
347
367
|
test_files:
|
|
@@ -364,18 +384,24 @@ test_files:
|
|
|
364
384
|
- test/unit/chrome_test.rb
|
|
365
385
|
- test/unit/console_test.rb
|
|
366
386
|
- test/unit/device_test.rb
|
|
387
|
+
- test/unit/duck_duck_go_test.rb
|
|
367
388
|
- test/unit/edge_test.rb
|
|
368
389
|
- test/unit/electron_test.rb
|
|
369
390
|
- test/unit/facebook_test.rb
|
|
370
391
|
- test/unit/firefox_test.rb
|
|
371
392
|
- test/unit/generic_test.rb
|
|
393
|
+
- test/unit/google_search_app_test.rb
|
|
394
|
+
- test/unit/huawei_browser_test.rb
|
|
372
395
|
- test/unit/instagram_test.rb
|
|
373
396
|
- test/unit/internet_explorer_test.rb
|
|
374
397
|
- test/unit/ios_app_test.rb
|
|
375
398
|
- test/unit/ios_test.rb
|
|
399
|
+
- test/unit/kai_os_test.rb
|
|
376
400
|
- test/unit/kindle_test.rb
|
|
401
|
+
- test/unit/maxthon_test.rb
|
|
377
402
|
- test/unit/meta_test.rb
|
|
378
403
|
- test/unit/micro_messenger_test.rb
|
|
404
|
+
- test/unit/miui_browser_test.rb
|
|
379
405
|
- test/unit/nokia_test.rb
|
|
380
406
|
- test/unit/opera_test.rb
|
|
381
407
|
- test/unit/otter_test.rb
|
|
@@ -383,7 +409,9 @@ test_files:
|
|
|
383
409
|
- test/unit/proxy_test.rb
|
|
384
410
|
- test/unit/qq_test.rb
|
|
385
411
|
- test/unit/safari_test.rb
|
|
412
|
+
- test/unit/samsung_browser_test.rb
|
|
386
413
|
- test/unit/snapchat_test.rb
|
|
414
|
+
- test/unit/sougou_browser_test.rb
|
|
387
415
|
- test/unit/sputnik_test.rb
|
|
388
416
|
- test/unit/uc_browser_test.rb
|
|
389
417
|
- test/unit/weibo_test.rb
|
data/.travis.yml
DELETED
|
@@ -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=
|