Source code for worldline.connect.sdk.webhooks.in_memory_secret_key_store
from .secret_key_not_available_exception import SecretKeyNotAvailableException
from .secret_key_store import SecretKeyStore
[docs]
class InMemorySecretKeyStore(SecretKeyStore):
"""
An in-memory secret key store.
This implementation can be used in applications where secret keys can be
specified at application startup.
"""
[docs]
@staticmethod
def instance() -> 'InMemorySecretKeyStore':
return _IN_MEMORY_SECRET_KEY_CACHE_INSTANCE
__store = {}
[docs]
def get_secret_key(self, key_id: str) -> str:
try:
secret_key = self.__store[key_id]
except KeyError:
raise SecretKeyNotAvailableException("could not find secret key for key id " + key_id, key_id)
return secret_key
[docs]
def store_secret_key(self, key_id: str, secret_key: str) -> None:
"""
Stores the given secret key for the given key ID.
"""
if key_id is None or not key_id.strip():
raise ValueError("key_id is required")
elif secret_key is None or not secret_key.strip():
raise ValueError("secret_key is required")
self.__store[key_id] = secret_key
[docs]
def remove_secret_key(self, key_id: str) -> None:
"""
Removes the secret key for the given key ID.
"""
self.__store.pop(key_id)
[docs]
def clear(self) -> None:
"""
Removes all stored secret keys.
"""
self.__store.clear()
_IN_MEMORY_SECRET_KEY_CACHE_INSTANCE = InMemorySecretKeyStore()