class Grape::Attack::Request

Attributes

context[R]
env[R]
request[R]
throttle_options[R]

Public Class Methods

new(env) click to toggle source
# File lib/grape/attack/request.rb, line 9
def initialize(env)
  @env              = env
  @context          = env['api.endpoint']
  @request          = @context.routes.first
  @throttle_options = ::Grape::Attack::Options.new(@context.route_setting(:throttle))
end

Public Instance Methods

client_identifier() click to toggle source
# File lib/grape/attack/request.rb, line 36
def client_identifier
  self.instance_eval(&throttle_options.identifier) || env['HTTP_X_REAL_IP'] || env['REMOTE_ADDR']
end
method() click to toggle source
# File lib/grape/attack/request.rb, line 16
def method
  request.request_method
end
method_missing(method_name, *args, &block) click to toggle source
# File lib/grape/attack/request.rb, line 28
def method_missing(method_name, *args, &block)
  context.public_send(method_name, *args, &block)
end
params() click to toggle source
# File lib/grape/attack/request.rb, line 24
def params
  request.params
end
path() click to toggle source
# File lib/grape/attack/request.rb, line 20
def path
  request.path
end
respond_to_missing?(method_name, include_private = false) click to toggle source
# File lib/grape/attack/request.rb, line 32
def respond_to_missing?(method_name, include_private = false)
  context.respond_to?(method_name)
end
throttle?() click to toggle source
# File lib/grape/attack/request.rb, line 40
def throttle?
  return false unless context.route_setting(:throttle).present?
  return true if throttle_options.valid?

  fail ArgumentError.new(throttle_options.errors.full_messages)
end