mirror of
https://github.com/langgenius/dify-plugin-daemon.git
synced 2026-07-22 17:56:00 -04:00
bace3bfb58
* feat(oauth): implement refresh credentials functionality - Added RefreshCredentials endpoint to handle OAuth credential refresh requests. - Introduced RequestOAuthRefreshCredentials structure for request validation. - Updated access types and actions to include refresh credentials. - Enhanced server routing and controller logic to support the new functionality. - Updated OAuth entities to include expiration handling for refreshed credentials. * feat(oauth): add metadata field to OAuthGetCredentialsResult --------- Co-authored-by: Harry <xh001x@hotmail.com>
54 lines
1.9 KiB
Python
54 lines
1.9 KiB
Python
from typing import Any
|
|
|
|
from dify_plugin import ToolProvider
|
|
from dify_plugin.errors.tool import ToolProviderCredentialValidationError
|
|
|
|
|
|
class {{ .PluginName | SnakeToCamel }}Provider(ToolProvider):
|
|
|
|
def _validate_credentials(self, credentials: dict[str, Any]) -> None:
|
|
try:
|
|
"""
|
|
IMPLEMENT YOUR VALIDATION HERE
|
|
"""
|
|
except Exception as e:
|
|
raise ToolProviderCredentialValidationError(str(e))
|
|
|
|
#########################################################################################
|
|
# If OAuth is supported, uncomment the following functions.
|
|
# Warning: please make sure that the sdk version is 0.4.2 or higher.
|
|
#########################################################################################
|
|
# def _oauth_get_authorization_url(self, redirect_uri: str, system_credentials: Mapping[str, Any]) -> str:
|
|
# """
|
|
# Generate the authorization URL for {{ .PluginName }} OAuth.
|
|
# """
|
|
# try:
|
|
# """
|
|
# IMPLEMENT YOUR AUTHORIZATION URL GENERATION HERE
|
|
# """
|
|
# except Exception as e:
|
|
# raise ToolProviderOAuthError(str(e))
|
|
# return ""
|
|
|
|
# def _oauth_get_credentials(
|
|
# self, redirect_uri: str, system_credentials: Mapping[str, Any], request: Request
|
|
# ) -> Mapping[str, Any]:
|
|
# """
|
|
# Exchange code for access_token.
|
|
# """
|
|
# try:
|
|
# """
|
|
# IMPLEMENT YOUR CREDENTIALS EXCHANGE HERE
|
|
# """
|
|
# except Exception as e:
|
|
# raise ToolProviderOAuthError(str(e))
|
|
# return dict()
|
|
|
|
# def _oauth_refresh_credentials(
|
|
# self, redirect_uri: str, system_credentials: Mapping[str, Any], credentials: Mapping[str, Any]
|
|
# ) -> OAuthCredentials:
|
|
# """
|
|
# Refresh the credentials
|
|
# """
|
|
# return OAuthCredentials(credentials=credentials, expires_at=-1)
|