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

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

Raises:

  • (NotImplementedError)


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

Raises:

  • (NotImplementedError)


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

Raises:

  • (NotImplementedError)


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