module NuclearSecrets
Constants
- VERSION
Attributes
required_secrets[RW]
settings[RW]
Public Class Methods
build_assertions(secrets, existing_keys)
click to toggle source
# File lib/nuclear_secrets.rb, line 43 def build_assertions(secrets, existing_keys) existing_keys.map do |key| if required_secrets[key].class == Class make_type_check(required_secrets[key]) elsif required_secrets[key].respond_to? :call required_secrets[key] else raise NuclearSecrets::InvalidRequiredSecretValue.new( [ build_secret_tuple(secrets, required_secrets, key), ], ) if @settings[:raise_on_extra_secrets] == true end end.compact end
build_pairs(keys, secrets)
click to toggle source
# File lib/nuclear_secrets.rb, line 37 def build_pairs(keys, secrets) keys.map do |k| build_secret_tuple(secrets, required_secrets, k) end end
build_secret_tuple(secrets, required_values, key)
click to toggle source
secrets: hash of given secrets required_values: hash of required secrets key: key to build tuple for returns [key, required_type, given_type]
# File lib/nuclear_secrets.rb, line 33 def build_secret_tuple(secrets, required_values, key) [key, required_values[key], secrets[key]] end
check_assertions(secrets, assertions)
click to toggle source
# File lib/nuclear_secrets.rb, line 59 def check_assertions(secrets, assertions) secrets.to_a.zip(assertions).select do |pair| result = if pair.last.present? pair.last.call(pair.first[1]) end if !result && @settings[:raise_on_extra_secrets] == true pair.first[0] else false end end.map do |pair| flat_pair = pair.flatten build_secret_tuple(secrets, required_secrets, flat_pair.first) end end
check_secrets(secrets)
click to toggle source
# File lib/nuclear_secrets.rb, line 83 def check_secrets(secrets) init_settings raise NuclearSecrets::RequiredSecretsListMissing if required_secrets.nil? req_keys = required_secrets.keys existing_keys = secrets.keys missing_keys = req_keys - existing_keys extra_keys = existing_keys - req_keys missing_pairs = build_pairs(missing_keys, secrets) extra_pairs = build_pairs(extra_keys, secrets) raise SecretsMissingError.new(missing_pairs) unless missing_keys.empty? handle_extra_keys(extra_keys, extra_pairs) assertions = build_assertions(secrets, existing_keys) error_pairs = check_assertions(secrets, assertions) raise MismatchedSecretType.new(error_pairs) if !error_pairs.empty? end
configure() { |self| ... }
click to toggle source
# File lib/nuclear_secrets.rb, line 10 def configure yield self if block_given? end
default_settings()
click to toggle source
# File lib/nuclear_secrets.rb, line 19 def default_settings { raise_on_extra_secrets: false, } end
handle_extra_keys(extra_keys, extra_pairs)
click to toggle source
# File lib/nuclear_secrets.rb, line 75 def handle_extra_keys(extra_keys, extra_pairs) raise ExtraSecretsError.new(extra_pairs) unless extra_keys.empty? rescue ExtraSecretsError => e logger = Logger.new(STDOUT) logger.warn e.message raise e if @settings[:raise_on_extra_secrets] == true end
init_settings()
click to toggle source
# File lib/nuclear_secrets.rb, line 14 def init_settings @settings = {} unless @settings.is_a? Hash @settings = default_settings.merge(@settings) end
make_type_check(type)
click to toggle source
# File lib/nuclear_secrets.rb, line 25 def make_type_check(type) Proc.new { |item| item.class == type } end