Class: OpenC3::Secrets
Direct Known Subclasses
Class Method Summary collapse
Instance Method Summary collapse
- #delete(key, secret_store: nil, scope:) ⇒ Object
- #get(key, secret_store: nil, scope:) ⇒ Object
-
#initialize ⇒ Secrets
constructor
A new instance of Secrets.
- #keys(secret_store: nil, scope:) ⇒ Object
- #set(key, value, secret_store: nil, scope:) ⇒ Object
- #setup(secrets) ⇒ Object
Constructor Details
#initialize ⇒ Secrets
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
.getClient ⇒ Object
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
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
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
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 |