Class: Browser::Base
- Inherits:
-
Object
- Object
- Browser::Base
- Includes:
- DetectVersion
- Defined in:
- lib/browser/base.rb
Direct Known Subclasses
Alipay, BlackBerry, Chrome, Device::PSP, Device::TV, Device::Wii, Electron, Facebook, Firefox, Generic, Instagram, InternetExplorer, Meta::IE, Meta::IOS, Meta::Id, MicroMessenger, Nokia, Opera, Otter, PhantomJS, Platform::IOS, Platform::Mac, QQ, Safari, Snapchat, Sputnik, UCBrowser, Weibo, Yandex
Instance Attribute Summary collapse
-
#accept_language ⇒ Object
readonly
Return an array with all preferred languages that this browser accepts.
-
#ua ⇒ Object
readonly
Returns the value of attribute ua.
Instance Method Summary collapse
- #alipay?(expected_version = nil) ⇒ Boolean
-
#bot ⇒ Object
Return the bot info.
-
#bot? ⇒ Boolean
Detect if current user agent is from a bot.
-
#chrome?(expected_version = nil) ⇒ Boolean
Detect if browser is Chrome.
- #compatibility_view? ⇒ Boolean
-
#core_media?(expected_version = nil) ⇒ Boolean
Detect if browser is Apple CoreMedia.
-
#device ⇒ Object
Return the device info.
-
#edge?(expected_version = nil) ⇒ Boolean
Detect if browser is Microsoft Edge.
-
#electron?(expected_version = nil) ⇒ Boolean
Detect if the browser is Electron.
-
#facebook?(expected_version = nil) ⇒ Boolean
Detect if browser if Facebook.
-
#firefox?(expected_version = nil) ⇒ Boolean
Detect if browser is Firefox.
-
#ie?(expected_version = nil) ⇒ Boolean
Detect if browser is Microsoft Internet Explorer.
-
#initialize(ua, accept_language: nil) ⇒ Base
constructor
A new instance of Base.
-
#instagram?(expected_version = nil) ⇒ Boolean
Detect if browser is Instagram.
- #known? ⇒ Boolean
-
#meta ⇒ Object
(also: #to_a)
Return a meta info about this browser.
-
#micro_messenger?(expected_version = nil) ⇒ Boolean
(also: #wechat?)
Detect if browser is MicroMessenger.
-
#modern? ⇒ Boolean
Return true if browser is modern (Webkit, Firefox 17+, IE9+, Opera 12+).
- #msie_full_version ⇒ Object
- #msie_version ⇒ Object
-
#nokia?(expected_version = nil) ⇒ Boolean
Detect if browser is Nokia S40 Ovi Browser.
-
#opera?(expected_version = nil) ⇒ Boolean
Detect if browser is Opera.
-
#opera_mini?(expected_version = nil) ⇒ Boolean
Detect if browser is Opera Mini.
-
#otter?(expected_version = nil) ⇒ Boolean
Detect if browser is Otter.
-
#phantom_js?(expected_version = nil) ⇒ Boolean
Detect if browser is PhantomJS.
-
#platform ⇒ Object
Return the platform.
-
#proxy? ⇒ Boolean
Detect if browser is a proxy browser.
-
#quicktime?(expected_version = nil) ⇒ Boolean
Detect if browser is QuickTime.
-
#safari?(expected_version = nil) ⇒ Boolean
Detect if browser is Safari.
- #safari_webapp_mode? ⇒ Boolean
-
#snapchat?(expected_version = nil) ⇒ Boolean
Detect if browser is Snapchat.
-
#sputnik?(expected_version = nil) ⇒ Boolean
Detect if browser is Sputnik.
-
#to_s ⇒ Object
Return meta representation as string.
-
#uc_browser?(expected_version = nil) ⇒ Boolean
Detect if browser is UCBrowser.
- #version ⇒ Object
-
#webkit?(expected_version = nil) ⇒ Boolean
Detect if browser is WebKit-based.
- #webkit_full_version ⇒ Object
- #weibo?(expected_version = nil) ⇒ Boolean
-
#yandex?(expected_version = nil) ⇒ Boolean
(also: #yandex_browser?)
Detect if browser is Yandex.
Constructor Details
#initialize(ua, accept_language: nil) ⇒ Base
Returns a new instance of Base.
12 13 14 15 |
# File 'lib/browser/base.rb', line 12 def initialize(ua, accept_language: nil) @ua = ua @accept_language = AcceptLanguage.parse(accept_language) end |
Instance Attribute Details
#accept_language ⇒ Object (readonly)
Return an array with all preferred languages that this browser accepts.
10 11 12 |
# File 'lib/browser/base.rb', line 10 def accept_language @accept_language end |
#ua ⇒ Object (readonly)
Returns the value of attribute ua.
7 8 9 |
# File 'lib/browser/base.rb', line 7 def ua @ua end |
Instance Method Details
#alipay?(expected_version = nil) ⇒ Boolean
186 187 188 |
# File 'lib/browser/base.rb', line 186 def alipay?(expected_version = nil) Alipay.new(ua).match? && detect_version?(full_version, expected_version) end |
#bot ⇒ Object
Return the bot info.
39 40 41 |
# File 'lib/browser/base.rb', line 39 def bot @bot ||= Bot.new(ua) end |
#bot? ⇒ Boolean
Detect if current user agent is from a bot.
44 45 46 |
# File 'lib/browser/base.rb', line 44 def bot? bot.bot? end |
#chrome?(expected_version = nil) ⇒ Boolean
Detect if browser is Chrome.
143 144 145 |
# File 'lib/browser/base.rb', line 143 def chrome?(expected_version = nil) Chrome.new(ua).match? && detect_version?(full_version, expected_version) end |
#compatibility_view? ⇒ Boolean
69 70 71 |
# File 'lib/browser/base.rb', line 69 def compatibility_view? false end |
#core_media?(expected_version = nil) ⇒ Boolean
Detect if browser is Apple CoreMedia.
118 119 120 |
# File 'lib/browser/base.rb', line 118 def core_media?(expected_version = nil) ua =~ /CoreMedia/ && detect_version?(full_version, expected_version) end |
#device ⇒ Object
Return the device info.
49 50 51 |
# File 'lib/browser/base.rb', line 49 def device @device ||= Device.new(ua) end |
#edge?(expected_version = nil) ⇒ Boolean
Detect if browser is Microsoft Edge.
65 66 67 |
# File 'lib/browser/base.rb', line 65 def edge?(expected_version = nil) Edge.new(ua).match? && detect_version?(full_version, expected_version) end |
#electron?(expected_version = nil) ⇒ Boolean
Detect if the browser is Electron.
209 210 211 |
# File 'lib/browser/base.rb', line 209 def electron?(expected_version = nil) Electron.new(ua).match? && detect_version?(full_version, expected_version) end |
#facebook?(expected_version = nil) ⇒ Boolean
Detect if browser if Facebook.
94 95 96 97 |
# File 'lib/browser/base.rb', line 94 def facebook?(expected_version = nil) Facebook.new(ua).match? && detect_version?(full_version, expected_version) end |
#firefox?(expected_version = nil) ⇒ Boolean
Detect if browser is Firefox.
138 139 140 |
# File 'lib/browser/base.rb', line 138 def firefox?(expected_version = nil) Firefox.new(ua).match? && detect_version?(full_version, expected_version) end |
#ie?(expected_version = nil) ⇒ Boolean
Detect if browser is Microsoft Internet Explorer.
59 60 61 62 |
# File 'lib/browser/base.rb', line 59 def ie?(expected_version = nil) InternetExplorer.new(ua).match? && detect_version?(full_version, expected_version) end |
#instagram?(expected_version = nil) ⇒ Boolean
Detect if browser is Instagram.
82 83 84 85 |
# File 'lib/browser/base.rb', line 82 def instagram?(expected_version = nil) Instagram.new(ua).match? && detect_version?(full_version, expected_version) end |
#known? ⇒ Boolean
199 200 201 |
# File 'lib/browser/base.rb', line 199 def known? id != :generic end |
#meta ⇒ Object Also known as: to_a
Return a meta info about this browser.
18 19 20 |
# File 'lib/browser/base.rb', line 18 def Meta.get(self) end |
#micro_messenger?(expected_version = nil) ⇒ Boolean Also known as: wechat?
Detect if browser is MicroMessenger.
175 176 177 178 |
# File 'lib/browser/base.rb', line 175 def micro_messenger?(expected_version = nil) MicroMessenger.new(ua).match? && detect_version?(full_version, expected_version) end |
#modern? ⇒ Boolean
Return true if browser is modern (Webkit, Firefox 17+, IE9+, Opera 12+).
54 55 56 |
# File 'lib/browser/base.rb', line 54 def modern? Browser.modern_rules.any? {|rule| rule === self } # rubocop:disable Style/CaseEquality end |
#msie_full_version ⇒ Object
73 74 75 |
# File 'lib/browser/base.rb', line 73 def msie_full_version "0.0" end |
#msie_version ⇒ Object
77 78 79 |
# File 'lib/browser/base.rb', line 77 def msie_version "0" end |
#nokia?(expected_version = nil) ⇒ Boolean
Detect if browser is Nokia S40 Ovi Browser.
170 171 172 |
# File 'lib/browser/base.rb', line 170 def nokia?(expected_version = nil) Nokia.new(ua).match? && detect_version?(full_version, expected_version) end |
#opera?(expected_version = nil) ⇒ Boolean
Detect if browser is Opera.
148 149 150 |
# File 'lib/browser/base.rb', line 148 def opera?(expected_version = nil) Opera.new(ua).match? && detect_version?(full_version, expected_version) end |
#opera_mini?(expected_version = nil) ⇒ Boolean
Detect if browser is Opera Mini.
191 192 193 |
# File 'lib/browser/base.rb', line 191 def opera_mini?(expected_version = nil) ua =~ /Opera Mini/ && detect_version?(full_version, expected_version) end |
#otter?(expected_version = nil) ⇒ Boolean
Detect if browser is Otter.
100 101 102 103 |
# File 'lib/browser/base.rb', line 100 def otter?(expected_version = nil) Otter.new(ua).match? && detect_version?(full_version, expected_version) end |
#phantom_js?(expected_version = nil) ⇒ Boolean
Detect if browser is PhantomJS
123 124 125 126 |
# File 'lib/browser/base.rb', line 123 def phantom_js?(expected_version = nil) PhantomJS.new(ua).match? && detect_version?(full_version, expected_version) end |
#platform ⇒ Object
Return the platform.
34 35 36 |
# File 'lib/browser/base.rb', line 34 def platform @platform ||= Platform.new(ua) end |
#proxy? ⇒ Boolean
Detect if browser is a proxy browser.
204 205 206 |
# File 'lib/browser/base.rb', line 204 def proxy? nokia? || uc_browser? || opera_mini? end |
#quicktime?(expected_version = nil) ⇒ Boolean
Detect if browser is QuickTime
113 114 115 |
# File 'lib/browser/base.rb', line 113 def quicktime?(expected_version = nil) ua =~ /QuickTime/i && detect_version?(full_version, expected_version) end |
#safari?(expected_version = nil) ⇒ Boolean
Detect if browser is Safari.
129 130 131 |
# File 'lib/browser/base.rb', line 129 def safari?(expected_version = nil) Safari.new(ua).match? && detect_version?(version, expected_version) end |
#safari_webapp_mode? ⇒ Boolean
133 134 135 |
# File 'lib/browser/base.rb', line 133 def safari_webapp_mode? (device.ipad? || device.iphone?) && ua =~ /AppleWebKit/ end |
#snapchat?(expected_version = nil) ⇒ Boolean
Detect if browser is Snapchat.
88 89 90 91 |
# File 'lib/browser/base.rb', line 88 def snapchat?(expected_version = nil) Snapchat.new(ua).match? && detect_version?(full_version, expected_version) end |
#sputnik?(expected_version = nil) ⇒ Boolean
Detect if browser is Sputnik.
153 154 155 |
# File 'lib/browser/base.rb', line 153 def sputnik?(expected_version = nil) Sputnik.new(ua) && detect_version?(full_version, expected_version) end |
#to_s ⇒ Object
Return meta representation as string.
25 26 27 |
# File 'lib/browser/base.rb', line 25 def to_s .to_a.join(" ") end |
#uc_browser?(expected_version = nil) ⇒ Boolean
Detect if browser is UCBrowser.
164 165 166 167 |
# File 'lib/browser/base.rb', line 164 def uc_browser?(expected_version = nil) UCBrowser.new(ua).match? && detect_version?(full_version, expected_version) end |
#version ⇒ Object
29 30 31 |
# File 'lib/browser/base.rb', line 29 def version full_version.split(".").first end |
#webkit?(expected_version = nil) ⇒ Boolean
Detect if browser is WebKit-based.
106 107 108 109 110 |
# File 'lib/browser/base.rb', line 106 def webkit?(expected_version = nil) ua =~ /AppleWebKit/i && (!edge? || Edge.new(ua).chrome_based?) && detect_version?(webkit_full_version, expected_version) end |
#webkit_full_version ⇒ Object
195 196 197 |
# File 'lib/browser/base.rb', line 195 def webkit_full_version ua[%r{AppleWebKit/([\d.]+)}, 1] || "0.0" end |