class SameSiteUaChecker

Generated by generate_regex_classes.rb

Generated by generate_regex_classes.rb

Generated by generate_regex_classes.rb

Generated by generate_regex_classes.rb

Generated by generate_regex_classes.rb

Constants

VERSION

Public Class Methods

call(user_agent_string) click to toggle source

@param [String] user_agent_string @return [Boolean] Browser has bug and should NOT receive SameSite=None cookie attribute

# File lib/same_site_ua_checker.rb, line 15
def self.call(user_agent_string)
  new.check(user_agent_string)
end

Public Instance Methods

check(user_agent_string) click to toggle source
# File lib/same_site_ua_checker.rb, line 19
def check(user_agent_string)
  raise ArgumentError, 'Only string argument is allowed' unless user_agent_string.is_a?(String)

  check_same_site_not_supported(user_agent_string) ||
    check_same_site_strict_bug(user_agent_string) ||
    check_same_site_none_bug(user_agent_string)
end

Private Instance Methods

check_same_site_none_bug(user_agent_string) click to toggle source
# File lib/same_site_ua_checker.rb, line 33
def check_same_site_none_bug(user_agent_string)
  # Additional check for chrome browser version
  is_chrome_based_browser = RegexListSameSiteNoneBug.new.check(user_agent_string)

  return false unless is_chrome_based_browser

  ucbrowser_version = RegexVersionUcbrowser.new.detect(user_agent_string)
  return !ucbrowser_version.at_least?(12, 13, 2)  if ucbrowser_version.major != 0

  chrome_browser_version = RegexVersionChrome.new.detect(user_agent_string)
  return chrome_browser_version.major_between_inc?(51, 66) if chrome_browser_version.major != 0

  false
end
check_same_site_not_supported(user_agent_string) click to toggle source
# File lib/same_site_ua_checker.rb, line 29
def check_same_site_not_supported(user_agent_string)
  RegexListSameSiteNotSupported.new.check(user_agent_string)
end
check_same_site_strict_bug(user_agent_string) click to toggle source
# File lib/same_site_ua_checker.rb, line 48
def check_same_site_strict_bug(user_agent_string)
  is_chrome_based_browser = RegexListSameSiteNoneBug.new.check(user_agent_string)
  return false if is_chrome_based_browser

  RegexListSameSiteStrictBug.new.check(user_agent_string)
end