mirror of
https://github.com/langgenius/dify-plugin-daemon.git
synced 2026-07-23 10:15:22 -04:00
d80630acd5
* feat: implement OAuth functionality in plugin daemon - Added OAuth service methods for getting authorization URLs and credentials. - Updated access types to include OAuth-related actions. - Created new controller for handling OAuth requests. - Introduced entities for OAuth results and requests. - Enhanced plugin entities to support OAuth schema in tool declarations. * feat: add OAuth endpoints for authorization and credentials retrieval - Introduced new POST endpoints for obtaining authorization URLs and credentials in the OAuth controller. - Enhanced the plugin dispatch group to include these new OAuth routes, improving integration with OAuth services.
49 lines
1.6 KiB
Go
49 lines
1.6 KiB
Go
package service
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/langgenius/dify-plugin-daemon/internal/core/plugin_daemon"
|
|
"github.com/langgenius/dify-plugin-daemon/internal/core/plugin_daemon/access_types"
|
|
"github.com/langgenius/dify-plugin-daemon/internal/core/session_manager"
|
|
"github.com/langgenius/dify-plugin-daemon/internal/utils/stream"
|
|
"github.com/langgenius/dify-plugin-daemon/pkg/entities/oauth_entities"
|
|
"github.com/langgenius/dify-plugin-daemon/pkg/entities/plugin_entities"
|
|
"github.com/langgenius/dify-plugin-daemon/pkg/entities/requests"
|
|
)
|
|
|
|
func OAuthGetAuthorizationURL(
|
|
r *plugin_entities.InvokePluginRequest[requests.RequestOAuthGetAuthorizationURL],
|
|
ctx *gin.Context,
|
|
maxExecutionTimeout time.Duration,
|
|
) {
|
|
baseSSEWithSession(
|
|
func(session *session_manager.Session) (*stream.Stream[oauth_entities.OAuthGetAuthorizationURLResult], error) {
|
|
return plugin_daemon.OAuthGetAuthorizationURL(session, &r.Data)
|
|
},
|
|
access_types.PLUGIN_ACCESS_TYPE_OAUTH,
|
|
access_types.PLUGIN_ACCESS_ACTION_GET_AUTHORIZATION_URL,
|
|
r,
|
|
ctx,
|
|
int(maxExecutionTimeout.Seconds()),
|
|
)
|
|
}
|
|
|
|
func OAuthGetCredentials(
|
|
r *plugin_entities.InvokePluginRequest[requests.RequestOAuthGetCredentials],
|
|
ctx *gin.Context,
|
|
maxExecutionTimeout time.Duration,
|
|
) {
|
|
baseSSEWithSession(
|
|
func(session *session_manager.Session) (*stream.Stream[oauth_entities.OAuthGetCredentialsResult], error) {
|
|
return plugin_daemon.OAuthGetCredentials(session, &r.Data)
|
|
},
|
|
access_types.PLUGIN_ACCESS_TYPE_OAUTH,
|
|
access_types.PLUGIN_ACCESS_ACTION_GET_CREDENTIALS,
|
|
r,
|
|
ctx,
|
|
int(maxExecutionTimeout.Seconds()),
|
|
)
|
|
}
|