class ApiValve::Proxy

Constants

FORWARDER_OPTIONS

Attributes

forwarder[R]
middleware[R]
request[R]
route_set[R]
router[R]

Public Class Methods

new(forwarder) click to toggle source
# File lib/api_valve/proxy.rb, line 19
def initialize(forwarder)
  @forwarder = forwarder
  @route_set = RouteSet.new
  @middleware = Middleware.new
  use Middleware::Router, route_set
end

Public Instance Methods

call(env) click to toggle source
# File lib/api_valve/proxy.rb, line 26
def call(env)
  to_app.call(env)
rescue ApiValve::Error::Client, ApiValve::Error::Server => e
  render_error e
end
deny(methods, path_regexp = nil, with: 'Error::Forbidden') click to toggle source
# File lib/api_valve/proxy.rb, line 46
def deny(methods, path_regexp = nil, with: 'Error::Forbidden')
  route_set.append(methods, path_regexp, {}) { raise ApiValve.const_get(with) }
end
forward(methods, path_regexp = nil, options = {}) click to toggle source
# File lib/api_valve/proxy.rb, line 35
def forward(methods, path_regexp = nil, options = {})
  options = options.with_indifferent_access
  route_set.append(methods, path_regexp, options.except(:request)) do |request, match_data|
    forwarder.call request, {'match_data' => match_data}.merge(options[:request] || {}).with_indifferent_access
  end
end
forward_all(options = {}) click to toggle source
# File lib/api_valve/proxy.rb, line 42
def forward_all(options = {})
  forward(RouteSet::METHODS, nil, options)
end

Protected Instance Methods

render_error(error) click to toggle source
# File lib/api_valve/proxy.rb, line 52
def render_error(error)
  self.class.const_get(ApiValve.error_responder).new(error).call
end
to_app() click to toggle source
# File lib/api_valve/proxy.rb, line 56
def to_app
  @to_app ||= @middleware.to_app(Runner.new)
end