class RooOnRails::Concerns::RequireApiKey::ClientApiKeys

Constants

CLIENT_KEY_NAME_SUFFIX_REGEX

Public Class Methods

new() click to toggle source
# File lib/roo_on_rails/concerns/require_api_key.rb, line 77
def initialize
  @cache = ENV.select { |key| key =~ CLIENT_KEY_NAME_SUFFIX_REGEX }
              .map { |k, v| [service_name(k), parse_client_keys(v)] }
              .to_h
              .freeze
end

Public Instance Methods

valid?(service_name, client_key) click to toggle source
# File lib/roo_on_rails/concerns/require_api_key.rb, line 84
def valid?(service_name, client_key)
  return false if service_name.to_s.empty? || client_key.to_s.empty?

  client_keys = @cache[normalize(service_name)]
  return false unless client_keys
  client_keys.include?(client_key)
end

Private Instance Methods

normalize(service_name) click to toggle source
# File lib/roo_on_rails/concerns/require_api_key.rb, line 98
def normalize(service_name)
  service_name.upcase.gsub(/[^A-Z0-9]+/, '_')
end
parse_client_keys(str) click to toggle source
# File lib/roo_on_rails/concerns/require_api_key.rb, line 102
def parse_client_keys(str)
  (str || '').split(',').map(&:strip).to_set.freeze
end
service_name(client_key_name) click to toggle source
# File lib/roo_on_rails/concerns/require_api_key.rb, line 94
def service_name(client_key_name)
  normalize(client_key_name.sub(CLIENT_KEY_NAME_SUFFIX_REGEX, ''))
end