class Nexaas::Throttle::Guardian

Attributes

assets_extensions[R]
ignored_user_agents[R]
request[R]
token[R]

Public Class Methods

new(request, configuration) click to toggle source
# File lib/nexaas/throttle/guardian.rb, line 6
def initialize(request, configuration)
  @request = request
  @token = configuration.request_identifier.new(request).token
  @ignored_user_agents = configuration.ignored_user_agents
  @assets_extensions = configuration.assets_extensions
end

Public Instance Methods

throttle!() click to toggle source
# File lib/nexaas/throttle/guardian.rb, line 13
def throttle!
  validate { token }
end
track!() click to toggle source
# File lib/nexaas/throttle/guardian.rb, line 17
def track!
  validate { true }
end

Private Instance Methods

asset_request?() click to toggle source
# File lib/nexaas/throttle/guardian.rb, line 31
def asset_request?
  path = request.path
  path.match(%r{/assets}).present? || path.match(assets_extensions_regexp).present?
end
assets_extensions_regexp() click to toggle source
# File lib/nexaas/throttle/guardian.rb, line 36
def assets_extensions_regexp
  extensions = assets_extensions.join("|")
  /\.(#{extensions})$/
end
ignore_user_agents?() click to toggle source
# File lib/nexaas/throttle/guardian.rb, line 41
def ignore_user_agents?
  ignored_user_agents && !ignored_user_agents.map { |regexp| regexp.match(request.user_agent) }.compact.blank?
end
validate() { || ... } click to toggle source
# File lib/nexaas/throttle/guardian.rb, line 25
def validate
  return if ignore_user_agents? || asset_request? || token.blank?
  request.env["nexaas.token"] = token
  yield if block_given?
end