Class: HamburgerStore
- Inherits:
-
Object
- Object
- HamburgerStore
- Defined in:
- lib/hamburgerstore.rb
Overview
Data store for pipeline instance metadata. Nothing to do with hamburgers. Sorry.
Instance Method Summary collapse
- #check_dynamo(options) ⇒ Object
- #check_kms(options) ⇒ Object
- #decrypt(value) ⇒ Object
- #encrypt(value) ⇒ Object
-
#initialize(options = {}) ⇒ HamburgerStore
constructor
A new instance of HamburgerStore.
- #retrieve(identifier, key) ⇒ Object
- #retrieve_all(identifier) ⇒ Object
- #store(identifer, key, value) ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ HamburgerStore
Returns a new instance of HamburgerStore.
36 37 38 39 40 41 42 |
# File 'lib/hamburgerstore.rb', line 36 def initialize( = {}) check_kms() check_dynamo() fail 'need to specify table_name parameter' if [:table_name].nil? @table = @ddb.table([:table_name]) end |
Instance Method Details
#check_dynamo(options) ⇒ Object
27 28 29 30 31 32 33 34 |
# File 'lib/hamburgerstore.rb', line 27 def check_dynamo() if [:dynamo].nil? fail 'need to specify region' if [:region].nil? @ddb = Aws::DynamoDB::Resource.new region: [:region] else @ddb = [:dynamo] end end |
#check_kms(options) ⇒ Object
16 17 18 19 20 21 22 23 24 25 |
# File 'lib/hamburgerstore.rb', line 16 def check_kms() # fail 'need to specify kms key_id parameter' if options[:key_id].nil? @key_id = [:key_id] if [:kms].nil? fail 'need to specify region' if [:region].nil? @kms = Aws::KMS::Client.new region: [:region] else @kms = [:kms] end end |
#decrypt(value) ⇒ Object
11 12 13 14 |
# File 'lib/hamburgerstore.rb', line 11 def decrypt(value) encrypted_value = Base64.decode64(value) @kms.decrypt(ciphertext_blob: encrypted_value).plaintext end |
#encrypt(value) ⇒ Object
6 7 8 9 |
# File 'lib/hamburgerstore.rb', line 6 def encrypt(value) encrypted_value = @kms.encrypt(key_id: @key_id, plaintext: value).ciphertext_blob Base64.encode64(encrypted_value) end |
#retrieve(identifier, key) ⇒ Object
52 53 54 55 56 |
# File 'lib/hamburgerstore.rb', line 52 def retrieve(identifier, key) item = @table.get_item(key: { 'hamburger' => identifier }).item fail "no values for #{identifier}" if item.nil? decrypt(item[key]) end |
#retrieve_all(identifier) ⇒ Object
58 59 60 61 62 63 64 65 66 |
# File 'lib/hamburgerstore.rb', line 58 def retrieve_all(identifier) encrypted_items = @table.get_item(key: { 'hamburger' => identifier }).item hamburger = encrypted_items.delete('hamburger') result = { 'hamburger' => hamburger } encrypted_items.each_pair do |key, value| result[key] = decrypt(value) end result end |
#store(identifer, key, value) ⇒ Object
44 45 46 47 48 49 50 |
# File 'lib/hamburgerstore.rb', line 44 def store(identifer, key, value) fail 'need to specify kms key_id parameter' if @key_id.nil? item = @table.get_item(key: { 'hamburger' => identifer }).item item = { 'hamburger' => identifer } if item.nil? item[key] = encrypt(value) @table.put_item(item: item, return_values: :ALL_OLD) end |