__init__.py 1.0 KB

123456789101112131415161718192021222324252627282930313233
  1. from collections.abc import Mapping
  2. from typing import Any
  3. from core.plugin.entities.request import RequestInvokeEncrypt
  4. from core.tools.utils.configuration import ProviderConfigEncrypter
  5. from models.account import Tenant
  6. class PluginEncrypter:
  7. @classmethod
  8. def invoke_encrypt(cls, tenant: Tenant, payload: RequestInvokeEncrypt) -> dict:
  9. encrypter = ProviderConfigEncrypter(
  10. tenant_id=tenant.id,
  11. config=payload.data,
  12. provider_type=payload.namespace,
  13. provider_identity=payload.identity,
  14. )
  15. if payload.opt == "encrypt":
  16. return {
  17. "data": encrypter.encrypt(payload.data),
  18. }
  19. elif payload.opt == "decrypt":
  20. return {
  21. "data": encrypter.decrypt(payload.data),
  22. }
  23. elif payload.opt == "clear":
  24. return {
  25. "data": encrypter.delete_tool_credentials_cache(),
  26. }
  27. else:
  28. raise ValueError(f"Invalid opt: {payload.opt}")