Module: KeeperSecretsManager::Storage::KeyValueStorage
- Included in:
- CachingStorage, EnvironmentStorage, FileStorage, InMemoryStorage
- Defined in:
- lib/keeper_secrets_manager/storage.rb
Overview
Base storage interface
Instance Method Summary collapse
- #contains?(key) ⇒ Boolean
- #delete(_key) ⇒ Object
- #get_bytes(key) ⇒ Object
- #get_string(_key) ⇒ Object
- #save_bytes(key, value) ⇒ Object
- #save_string(_key, _value) ⇒ Object
Instance Method Details
#contains?(key) ⇒ Boolean
46 47 48 |
# File 'lib/keeper_secrets_manager/storage.rb', line 46 def contains?(key) !get_string(key).nil? end |
#delete(_key) ⇒ Object
42 43 44 |
# File 'lib/keeper_secrets_manager/storage.rb', line 42 def delete(_key) raise NotImplementedError, 'Subclass must implement delete' end |
#get_bytes(key) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/keeper_secrets_manager/storage.rb', line 17 def get_bytes(key) data = get_string(key) return nil unless data # Handle both standard and URL-safe base64 begin # First try standard base64 Base64.strict_decode64(data) rescue ArgumentError begin # Try URL-safe base64 with padding padding = 4 - (data.length % 4) padding = 0 if padding == 4 Base64.urlsafe_decode64(data + '=' * padding) rescue StandardError => e # Last resort - try with decode64 which is more lenient Base64.decode64(data) end end end |
#get_string(_key) ⇒ Object
9 10 11 |
# File 'lib/keeper_secrets_manager/storage.rb', line 9 def get_string(_key) raise NotImplementedError, 'Subclass must implement get_string' end |
#save_bytes(key, value) ⇒ Object
38 39 40 |
# File 'lib/keeper_secrets_manager/storage.rb', line 38 def save_bytes(key, value) save_string(key, Base64.strict_encode64(value)) end |
#save_string(_key, _value) ⇒ Object
13 14 15 |
# File 'lib/keeper_secrets_manager/storage.rb', line 13 def save_string(_key, _value) raise NotImplementedError, 'Subclass must implement save_string' end |