class Escher::Keypool

Constants

VERSION

Public Class Methods

new() click to toggle source
# File lib/escher-keypool.rb, line 8
def initialize
  @keys = JSON.parse(ENV['KEY_POOL'])
end

Public Instance Methods

get_active_key(service_id) click to toggle source
# File lib/escher-keypool.rb, line 14
def get_active_key(service_id)
  key_id_env_key = service_id.upcase + '_KEYID'
  key_id = ENV[key_id_env_key]

  if not key_id
    raise "the " + key_id_env_key + " environment variable is not found"
  end

  service_keys = @keys.select { |key| key['keyId'].start_with?(key_id) }
  if service_keys.length == 0
    raise "key not found for " + service_id
  end

  candidate_keys = service_keys.select { |key| key['acceptOnly'] == 0 }
  if candidate_keys.length == 0
    raise "active key not found for " + service_id
  end
  if candidate_keys.length > 1
    raise "ambigous active key for " + service_id
  end

  { api_key_id: candidate_keys[0]['keyId'], api_secret: candidate_keys[0]['secret'] }
end
get_key_db() click to toggle source
# File lib/escher-keypool.rb, line 40
def get_key_db
  Hash[@keys.collect { |key| [key['keyId'], key['secret']] }]
end