Class: OpenC3::Secrets

Inherits:
Object show all
Defined in:
lib/openc3/utilities/secrets.rb

Direct Known Subclasses

RedisSecrets

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeSecrets

Returns a new instance of Secrets.



18
19
20
# File 'lib/openc3/utilities/secrets.rb', line 18

def initialize
  @local_secrets = {}
end

Class Method Details

.getClientObject



22
23
24
25
26
27
# File 'lib/openc3/utilities/secrets.rb', line 22

def self.getClient
  raise 'OPENC3_SECRET_BACKEND environment variable is required' unless ENV['OPENC3_SECRET_BACKEND']
  secrets_class = ENV['OPENC3_SECRET_BACKEND'].capitalize + 'Secrets'
  klass = OpenC3.require_class('openc3/utilities/' + secrets_class.class_name_to_filename)
  klass.new
end

Instance Method Details

#delete(key, secret_store: nil, scope:) ⇒ Object

Raises:

  • (NotImplementedError)


41
42
43
# File 'lib/openc3/utilities/secrets.rb', line 41

def delete(key, secret_store: nil, scope:)
  raise NotImplementedError, "#{self.class} has not implemented method '#{__method__}'"
end

#get(key, secret_store: nil, scope:) ⇒ Object



33
34
35
# File 'lib/openc3/utilities/secrets.rb', line 33

def get(key, secret_store: nil, scope:)
  return @local_secrets[key]
end

#keys(secret_store: nil, scope:) ⇒ Object

Raises:

  • (NotImplementedError)


29
30
31
# File 'lib/openc3/utilities/secrets.rb', line 29

def keys(secret_store: nil, scope:)
  raise NotImplementedError, "#{self.class} has not implemented method '#{__method__}'"
end

#set(key, value, secret_store: nil, scope:) ⇒ Object

Raises:

  • (NotImplementedError)


37
38
39
# File 'lib/openc3/utilities/secrets.rb', line 37

def set(key, value, secret_store: nil, scope:)
  raise NotImplementedError, "#{self.class} has not implemented method '#{__method__}'"
end

#setup(secrets) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/openc3/utilities/secrets.rb', line 45

def setup(secrets)
  secrets.each do |secret|
    if secret.length < 3
      raise ArgumentError, "Secret must have at least 3 items (type, key, data), got #{secret.length}"
    end
    type, key, data, _secret_store = secret
    case type
    when 'ENV'
      @local_secrets[key] = ENV[data]
    when 'FILE'
      @local_secrets[key] = File.read(data)
    else
      raise "Unknown secret type: #{type}"
    end
  end
end