Class: Portunus::StorageAdaptors::Environment

Inherits:
Object
  • Object
show all
Defined in:
lib/portunus/storage_adaptors/environment.rb

Class Method Summary collapse

Class Method Details

.for(data_encryption_key) ⇒ Object



4
5
6
# File 'lib/portunus/storage_adaptors/environment.rb', line 4

def self.for(data_encryption_key)
  self.lookup(data_encryption_key.master_keyname)
end

.key_mapObject



8
9
10
# File 'lib/portunus/storage_adaptors/environment.rb', line 8

def self.key_map
  @@key_map ||= {}
end

.listObject



49
50
51
52
53
54
55
56
57
58
59
60
# 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

.loadObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 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) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
# 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_mapObject



12
13
14
# File 'lib/portunus/storage_adaptors/environment.rb', line 12

def self.reset_key_map
  @@key_map = {}
end