class Portunus::StorageAdaptors::Environment

Attributes

data_encryption_key[R]

Public Class Methods

for(data_encryption_key) click to toggle source
# File lib/portunus/storage_adaptors/environment.rb, line 4
def self.for(data_encryption_key)
  self.lookup(data_encryption_key.master_keyname)
end
key_map() click to toggle source
# File lib/portunus/storage_adaptors/environment.rb, line 8
def self.key_map
  @@key_map ||= {}
end
list() click to toggle source
# File lib/portunus/storage_adaptors/environment.rb, line 49
def self.list
  # Select only enabled keys
  key_names = self.key_map.keys.map do |keyname|
    keyname if self.key_map[keyname][:ENABLED] == "true"
  end.compact

  if key_names.length == 0
    raise ::Portunus::Error.new("No valid master keys configured")
  end

  key_names
end
load() click to toggle source
# File lib/portunus/storage_adaptors/environment.rb, line 16
def self.load
  key_names = ENV.keys.select { |key| key.start_with?("PORTUNUS_") }

  key_names.map do |name|
    _portunus, key_name, key_type  = name.split("_")

    if self.key_map[key_name.to_sym].blank?
      self.key_map[key_name.to_sym] = {}
    end

    self.key_map[key_name.to_sym][key_type.to_sym] = ENV.fetch(name)
  end

  true
rescue StandardError => error
  raise ::Portunus::Error.new(
    "Portunus: Master keys failed to load: #{error.full_message}"
  )
end
lookup(key_name) click to toggle source
# File lib/portunus/storage_adaptors/environment.rb, line 36
def self.lookup(key_name)
  master_key = self.key_map[key_name.to_sym]

  MasterKey.new(
    enabled: master_key[:ENABLED],
    name: key_name,
    value: master_key[:KEY],
    created_at: master_key[:CREATED]
  )
rescue StandardError
  raise ::Portunus::Error.new("Portunus: Master key not found")
end
reset_key_map() click to toggle source
# File lib/portunus/storage_adaptors/environment.rb, line 12
def self.reset_key_map
  @@key_map = {}
end