class PrxAuth::ScopeList

Constants

NAMESPACE_SEPARATOR
NO_NAMESPACE
SCOPE_SEPARATOR

Public Class Methods

new(list) click to toggle source
# File lib/prx_auth/scope_list.rb, line 7
def initialize(list)
  @string = list
end

Public Instance Methods

contains?(namespace, scope=nil) click to toggle source
# File lib/prx_auth/scope_list.rb, line 11
def contains?(namespace, scope=nil)
  scope, namespace = namespace, NO_NAMESPACE if scope.nil?

  if namespace == NO_NAMESPACE
    map[namespace].include?(symbolize(scope))
  else
    symbolized_scope = symbolize(scope)
    map[symbolize(namespace)].include?(symbolized_scope) || map[NO_NAMESPACE].include?(symbolized_scope)
  end
end
freeze() click to toggle source
# File lib/prx_auth/scope_list.rb, line 22
def freeze
  @string.freeze
  self
end

Private Instance Methods

empty_map() click to toggle source
# File lib/prx_auth/scope_list.rb, line 44
def empty_map
  @empty_map ||= Hash.new do |hash, key|
    hash[key] = []
  end
end
map() click to toggle source
# File lib/prx_auth/scope_list.rb, line 29
def map
  @parsed_map ||= empty_map.tap do |map|
    @string.split(SCOPE_SEPARATOR).each do |value|
      next if value.length < 1

      parts = value.split(NAMESPACE_SEPARATOR, 2)
      if parts.length == 2
        map[symbolize(parts[0])] << symbolize(parts[1])
      else
        map[NO_NAMESPACE] << symbolize(parts[0])
      end
    end
  end
end
symbolize(value) click to toggle source
# File lib/prx_auth/scope_list.rb, line 50
def symbolize(value)
  case value
  when Symbol then value
  when String then value.downcase.gsub('-', '_').intern
  else symbolize value.to_s
  end
end