class ClientBlacklist
Public Class Methods
agent_blacklisted?(user_agent_string)
click to toggle source
# File lib/kill_switch/client_blacklist.rb, line 28 def self.agent_blacklisted?(user_agent_string) agent = UserAgent.new(user_agent_string) raise RuntimeError, "User Agent Invalid" unless agent.valid? base_rules = rules.fetch("blacklist", {}).fetch(agent.app_version, {}).fetch(agent.device_platform, nil) # no rules found for version and device return false if base_rules.nil? if device_os_version_rules = base_rules[agent.device_os_version] if device_os_version_rules.empty? # No further criteria to match on. Found final match on device_os_version return true end if device_os_version_rules[agent.device_model] # Found a match on the nested device model return true end end if base_rules[agent.device_model] # 3 rules, excluding devise_os_version return true end if base_rules.any? # this means we have nested rules, not just the version and platform return false # we have nested rules, nothing matched - good to go end return true # If we made it this far, we matched on the base_rules only end
clear_rules()
click to toggle source
# File lib/kill_switch/client_blacklist.rb, line 16 def self.clear_rules instance.instance_variable_set(:@rules, {}) end
configure() { |instance| ... }
click to toggle source
# File lib/kill_switch/client_blacklist.rb, line 7 def self.configure(&block) raise ArgumentError, "Block not provided" unless block_given? yield instance end
rules()
click to toggle source
# File lib/kill_switch/client_blacklist.rb, line 12 def self.rules instance.rules end
user_agent_valid?(user_agent_string)
click to toggle source
# File lib/kill_switch/client_blacklist.rb, line 24 def self.user_agent_valid?(user_agent_string) UserAgent.new(user_agent_string).valid? end
Public Instance Methods
blacklist(app_version, device_platform, device_os_version = nil, device_model = nil)
click to toggle source
# File lib/kill_switch/client_blacklist.rb, line 59 def blacklist(app_version, device_platform, device_os_version = nil, device_model = nil) rules["blacklist"] ||= {} rules["blacklist"][app_version] ||= {} rules["blacklist"][app_version][device_platform] ||= {} if device_os_version rules["blacklist"][app_version][device_platform][device_os_version] ||= {} end if device_model if device_os_version # all 4 rules included - nest under device_os_version rules["blacklist"][app_version][device_platform][device_os_version][device_model] ||= {} else # device_os_version excluded - rule is to exclude a particular device_platform rules["blacklist"][app_version][device_platform][device_model] ||= {} end end end
rules()
click to toggle source
# File lib/kill_switch/client_blacklist.rb, line 20 def rules @rules ||= {} end