class Browser::Base

Attributes

accept_language[R]

Return an array with all preferred languages that this browser accepts.

ua[R]

Public Class Methods

new(ua, accept_language: nil) click to toggle source
# File lib/browser/base.rb, line 11
def initialize(ua, accept_language: nil)
  @ua = ua
  @accept_language = AcceptLanguage.parse(accept_language)
end

Public Instance Methods

alipay?(expected_version = nil) click to toggle source
# File lib/browser/base.rb, line 167
def alipay?(expected_version = nil)
  Alipay.new(ua).match? && detect_version?(full_version, expected_version)
end
bot() click to toggle source

Return the bot info.

# File lib/browser/base.rb, line 38
def bot
  @bot ||= Bot.new(ua)
end
bot?() click to toggle source

Detect if current user agent is from a bot.

# File lib/browser/base.rb, line 43
def bot?
  bot.bot?
end
chrome?(expected_version = nil) click to toggle source

Detect if browser is Chrome.

# File lib/browser/base.rb, line 130
def chrome?(expected_version = nil)
  Chrome.new(ua).match? && detect_version?(full_version, expected_version)
end
compatibility_view?() click to toggle source
# File lib/browser/base.rb, line 68
def compatibility_view?
  false
end
core_media?(expected_version = nil) click to toggle source

Detect if browser is Apple CoreMedia.

# File lib/browser/base.rb, line 105
def core_media?(expected_version = nil)
  ua =~ /CoreMedia/ && detect_version?(full_version, expected_version)
end
device() click to toggle source

Return the device info.

# File lib/browser/base.rb, line 48
def device
  @device ||= Device.new(ua)
end
edge?(expected_version = nil) click to toggle source

Detect if browser is Microsoft Edge.

# File lib/browser/base.rb, line 64
def edge?(expected_version = nil)
  Edge.new(ua).match? && detect_version?(full_version, expected_version)
end
electron?(expected_version = nil) click to toggle source

Detect if the browser is Electron.

# File lib/browser/base.rb, line 190
def electron?(expected_version = nil)
  Electron.new(ua).match? && detect_version?(full_version, expected_version)
end
facebook?(expected_version = nil) click to toggle source

Detect if browser if Facebook.

# File lib/browser/base.rb, line 81
def facebook?(expected_version = nil)
  Facebook.new(ua).match? &&
    detect_version?(full_version, expected_version)
end
firefox?(expected_version = nil) click to toggle source

Detect if browser is Firefox.

# File lib/browser/base.rb, line 125
def firefox?(expected_version = nil)
  Firefox.new(ua).match? && detect_version?(full_version, expected_version)
end
ie?(expected_version = nil) click to toggle source

Detect if browser is Microsoft Internet Explorer.

# File lib/browser/base.rb, line 58
def ie?(expected_version = nil)
  InternetExplorer.new(ua).match? &&
    detect_version?(full_version, expected_version)
end
known?() click to toggle source
# File lib/browser/base.rb, line 180
def known?
  id != :generic
end
meta() click to toggle source

Return a meta info about this browser.

# File lib/browser/base.rb, line 17
def meta
  Meta.get(self)
end
Also aliased as: to_a
micro_messenger?(expected_version = nil) click to toggle source

Detect if browser is MicroMessenger.

# File lib/browser/base.rb, line 156
def micro_messenger?(expected_version = nil)
  MicroMessenger.new(ua).match? &&
    detect_version?(full_version, expected_version)
end
Also aliased as: wechat?
modern?() click to toggle source

Return true if browser is modern (Webkit, Firefox 17+, IE9+, Opera 12+).

# File lib/browser/base.rb, line 53
def modern?
  Browser.modern_rules.any? {|rule| rule === self } # rubocop:disable Metrics/LineLength, Style/CaseEquality
end
msie_full_version() click to toggle source
# File lib/browser/base.rb, line 72
def msie_full_version
  "0.0"
end
msie_version() click to toggle source
# File lib/browser/base.rb, line 76
def msie_version
  "0"
end
nokia?(expected_version = nil) click to toggle source

Detect if browser is Nokia S40 Ovi Browser.

# File lib/browser/base.rb, line 151
def nokia?(expected_version = nil)
  Nokia.new(ua).match? && detect_version?(full_version, expected_version)
end
opera?(expected_version = nil) click to toggle source

Detect if browser is Opera.

# File lib/browser/base.rb, line 135
def opera?(expected_version = nil)
  Opera.new(ua).match? && detect_version?(full_version, expected_version)
end
opera_mini?(expected_version = nil) click to toggle source

Detect if browser is Opera Mini.

# File lib/browser/base.rb, line 172
def opera_mini?(expected_version = nil)
  ua =~ /Opera Mini/ && detect_version?(full_version, expected_version)
end
otter?(expected_version = nil) click to toggle source

Detect if browser is Otter.

# File lib/browser/base.rb, line 87
def otter?(expected_version = nil)
  Otter.new(ua).match? &&
    detect_version?(full_version, expected_version)
end
phantom_js?(expected_version = nil) click to toggle source

Detect if browser is PhantomJS

# File lib/browser/base.rb, line 110
def phantom_js?(expected_version = nil)
  PhantomJS.new(ua).match? &&
    detect_version?(full_version, expected_version)
end
platform() click to toggle source

Return the platform.

# File lib/browser/base.rb, line 33
def platform
  @platform ||= Platform.new(ua)
end
proxy?() click to toggle source

Detect if browser is a proxy browser.

# File lib/browser/base.rb, line 185
def proxy?
  nokia? || uc_browser? || opera_mini?
end
quicktime?(expected_version = nil) click to toggle source

Detect if browser is QuickTime

# File lib/browser/base.rb, line 100
def quicktime?(expected_version = nil)
  ua =~ /QuickTime/i && detect_version?(full_version, expected_version)
end
safari?(expected_version = nil) click to toggle source

Detect if browser is Safari.

# File lib/browser/base.rb, line 116
def safari?(expected_version = nil)
  Safari.new(ua).match? && detect_version?(version, expected_version)
end
safari_webapp_mode?() click to toggle source
# File lib/browser/base.rb, line 120
def safari_webapp_mode?
  (device.ipad? || device.iphone?) && ua =~ /AppleWebKit/
end
to_a()
Alias for: meta
to_s() click to toggle source

Return meta representation as string.

# File lib/browser/base.rb, line 24
def to_s
  meta.to_a.join(" ")
end
uc_browser?(expected_version = nil) click to toggle source

Detect if browser is UCBrowser.

# File lib/browser/base.rb, line 145
def uc_browser?(expected_version = nil)
  UCBrowser.new(ua).match? &&
    detect_version?(full_version, expected_version)
end
version() click to toggle source
# File lib/browser/base.rb, line 28
def version
  full_version.split(".").first
end
webkit?(expected_version = nil) click to toggle source

Detect if browser is WebKit-based.

# File lib/browser/base.rb, line 93
def webkit?(expected_version = nil)
  ua =~ /AppleWebKit/i &&
    !edge? &&
    detect_version?(webkit_full_version, expected_version)
end
webkit_full_version() click to toggle source
# File lib/browser/base.rb, line 176
def webkit_full_version
  ua[%r[AppleWebKit/([\d.]+)], 1] || "0.0"
end
wechat?(expected_version = nil)
Alias for: micro_messenger?
weibo?(expected_version = nil) click to toggle source
# File lib/browser/base.rb, line 163
def weibo?(expected_version = nil)
  Weibo.new(ua).match? && detect_version?(full_version, expected_version)
end
yandex?(expected_version = nil) click to toggle source

Detect if browser is Yandex.

# File lib/browser/base.rb, line 140
def yandex?(expected_version = nil)
  ua =~ /YaBrowser/ && detect_version?(full_version, expected_version)
end