class RabbitMQHttpAuthBackend::Resolver

Attributes

params[R]
resolver[R]

Public Class Methods

new(params, resolver) click to toggle source
# File lib/rabbitmq_http_auth_backend/resolver.rb, line 13
def initialize(params, resolver)
  @params = params
  @resolver = resolver || raise(NoResolverError)
end

Public Instance Methods

call() click to toggle source
# File lib/rabbitmq_http_auth_backend/resolver.rb, line 18
def call
  response = generate_response!
  validate_response!(response)
  response
end

Private Instance Methods

build_response(runtime) click to toggle source
# File lib/rabbitmq_http_auth_backend/resolver.rb, line 45
def build_response(runtime)
  symbol = runtime.allowed? ? :allow : :deny
  tags = runtime.tags
  [symbol, tags].compact
end
generate_response!() click to toggle source
# File lib/rabbitmq_http_auth_backend/resolver.rb, line 26
def generate_response!
  if resolver.is_a?(Proc) && resolver.arity.zero?
    runtime = Runtime.new(params)
    runtime.instance_eval(&resolver)
    build_response(runtime)
  elsif resolver.respond_to?(:call)
    Array(resolver.call(params))
  else
    raise(NonCallableResolverError)
  end
end
validate_response!(response) click to toggle source
# File lib/rabbitmq_http_auth_backend/resolver.rb, line 38
def validate_response!(response)
  raise(InvalidResponseError) unless response.is_a?(Array)
  raise(InvalidResponseError) unless %I[allow deny].include?(response.first)

  true
end