lib/omnivault/abstract_vault.rb in omnivault-0.1.2 vs lib/omnivault/abstract_vault.rb in omnivault-0.2.0

- old
+ new

@@ -1,22 +1,62 @@ module Omnivault class AbstractVault - def self.from_env + def self.from_env(name = 'default') case ENV['VAULT'] - when 'apple', 'AppleKeychain' - AppleKeychain.new + when 'apple', 'keychain', 'AppleKeychain' + AppleKeychain.new(name) when 'pws', 'PWS' - PWS.new + PWS.new(name) end end - def self.for_platform + def self.for_platform(name = 'default') if (/darwin/ =~ RUBY_PLATFORM).nil? - PWS.new + PWS.new(name) else - AppleKeychain.new + AppleKeychain.new(name) end - rescue LoadError - PWS.new + rescue LoadError => e + puts e.message + puts e.backtrace + PWS.new(name) + end + + # Either aws-sdk and/or aws-sdk-v1 must be required BEFORE calling + # Omnivault::AbstractVault#configure_aws! + def configure_aws! + if defined?(Aws) + require_relative 'v2_credential_provider' + + provider = V2CredentialProvider.new(self) + Aws.config[:credentials] = provider + end + + if defined?(AWS) + require_relative 'v1_credential_provider' + + provider = V1CredentialProvider.new(self) + AWS.config(credential_provider: provider) + end + end + + def initialize(_name = 'default') + raise NotImplementedError, 'Must invoke from subclass' + end + + def entries + raise NotImplementedError, 'Must invoke from subclass' + end + + def fetch(key) + entries[key] + end + + def store(_key, _value) + raise NotImplementedError, 'Must invoke from subclass' + end + + def remove(_key) + raise NotImplementedError, 'Must invoke from subclass' end end end