Class: RapidVaults
- Inherits:
-
Object
- Object
- RapidVaults
- Defined in:
- lib/rapid-vaults.rb
Overview
interfaces from cli/api, validates settings, and then distributes actions to appropriate classes
Defined Under Namespace
Class Method Summary collapse
-
.process(settings) ⇒ Object
method for processing the settings and inputs.
Instance Method Summary collapse
-
#main(settings) ⇒ Object
main runner for software.
Class Method Details
.process(settings) ⇒ Object
method for processing the settings and inputs
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/rapid-vaults.rb', line 22 def self.process(settings) # check for problems with arguments if settings[:algorithm] == :gpgme case settings[:action] when :generate raise 'GPG params file argument required for generation.' unless settings.key?(:gpgparams) return when :decrypt, :encrypt raise 'File and password arguments required for encryption or decryption.' unless settings.key?(:file) && settings.key?(:pw) else raise 'Action must be one of generate, encrypt, or decrypt.' end else case settings[:action] when :generate then return when :encrypt raise 'File, key, and nonce arguments are required for encryption.' unless settings.key?(:file) && settings.key?(:key) && settings.key?(:nonce) when :decrypt raise 'File, key, nonce, and tag arguments are required for decryption.' unless settings.key?(:file) && settings.key?(:key) && settings.key?(:nonce) && settings.key?(:tag) else raise 'Action must be one of generate, encrypt, or decrypt.' end end # check for problems with inputs and read in files raise 'Password must be a string.' if settings.key?(:pw) && !settings[:pw].is_a?(String) File.file?(settings[:file]) ? settings[:file] = File.read(settings[:file]) : (raise 'Input file is not an existing file.') # gnugp only uses password and file return if settings[:algorithm] == :gpgme File.file?(settings[:key]) ? settings[:key] = File.read(settings[:key]) : (raise 'Input key is not an existing file.') File.file?(settings[:nonce]) ? settings[:nonce] = File.read(settings[:nonce]) : (raise 'Input nonce is not an existing file.') # only decrypt needs a tag input return unless settings[:action] == :decrypt File.file?(settings[:tag]) ? settings[:tag] = File.read(settings[:tag]) : (raise 'Input tag is not an existing file.') end |
Instance Method Details
#main(settings) ⇒ Object
main runner for software
8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/rapid-vaults.rb', line 8 def main(settings) # process settings self.class.process(settings) # execute desired action and algorithm via dynamic call # public_send("#{settings[:action].capitalize}.#{settings[:algorithm]}".to_sym) case settings[:action] when :generate then Generate.public_send(settings[:algorithm], settings) when :encrypt then Encrypt.public_send(settings[:algorithm], settings) when :decrypt then Decrypt.public_send(settings[:algorithm], settings) end end |