Module: NuclearSecrets
- Defined in:
- lib/nuclear_secrets.rb,
lib/nuclear_secrets/engine.rb,
lib/nuclear_secrets/errors.rb,
lib/nuclear_secrets/version.rb
Defined Under Namespace
Classes: Engine, ExtraSecretsError, InvalidRequiredSecretValue, MismatchedSecretType, NuclearSecretError, RequiredSecretsListMissing, SecretsMissingError
Constant Summary
collapse
- VERSION =
"1.0.2".freeze
Class Attribute Summary collapse
Class Method Summary
collapse
Class Attribute Details
.required_secrets ⇒ Object
Returns the value of attribute required_secrets.
6
7
8
|
# File 'lib/nuclear_secrets.rb', line 6
def required_secrets
@required_secrets
end
|
Class Method Details
.build_assertions(secrets, existing_keys) ⇒ Object
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/nuclear_secrets.rb', line 30
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),
],
)
end
end
end
|
.build_pairs(keys, secrets) ⇒ Object
24
25
26
27
28
|
# File 'lib/nuclear_secrets.rb', line 24
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) ⇒ Object
secrets: hash of given secrets required_values: hash of required secrets key: key to build tuple for returns [key, required_type, given_type]
20
21
22
|
# File 'lib/nuclear_secrets.rb', line 20
def build_secret_tuple(secrets, required_values, key)
[key, required_values[key], secrets[key]]
end
|
.check_assertions(secrets, assertions) ⇒ Object
46
47
48
49
50
51
52
53
54
55
56
57
58
|
# File 'lib/nuclear_secrets.rb', line 46
def check_assertions(secrets, assertions)
secrets.to_a.zip(assertions).select do |pair|
result = pair.last.call(pair.first[1])
if !result
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) ⇒ Object
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
# File 'lib/nuclear_secrets.rb', line 60
def check_secrets(secrets)
raise NuclearSecrets::RequiredSecretsListMissing if required_secrets.nil?
req_keys = required_secrets.keys
existing_keys = secrets.keys
missing_keys = req_keys - existing_keys
= existing_keys - req_keys
missing_pairs = build_pairs(missing_keys, secrets)
= build_pairs(, secrets)
raise SecretsMissingError.new(missing_pairs) unless missing_keys.empty?
raise .new() unless .empty?
assertions = build_assertions(secrets, existing_keys)
error_pairs = check_assertions(secrets, assertions)
raise MismatchedSecretType.new(error_pairs) if !error_pairs.empty?
end
|
8
9
10
|
# File 'lib/nuclear_secrets.rb', line 8
def configure
yield self if block_given?
end
|
.make_type_check(type) ⇒ Object
12
13
14
|
# File 'lib/nuclear_secrets.rb', line 12
def make_type_check(type)
Proc.new { |item| item.class == type }
end
|