from core.plugin.entities.request import RequestInvokeEncrypt from core.tools.utils.configuration import ProviderConfigEncrypter from models.account import Tenant class PluginEncrypter: @classmethod def invoke_encrypt(cls, tenant: Tenant, payload: RequestInvokeEncrypt) -> dict: encrypter = ProviderConfigEncrypter( tenant_id=tenant.id, config=payload.config, provider_type=payload.namespace, provider_identity=payload.identity, ) if payload.opt == "encrypt": return { "data": encrypter.encrypt(payload.data), } elif payload.opt == "decrypt": return { "data": encrypter.decrypt(payload.data), } elif payload.opt == "clear": encrypter.delete_tool_credentials_cache() return { "data": {}, } else: raise ValueError(f"Invalid opt: {payload.opt}")