Files
dify-plugin-daemon/internal/service/invoke_oauth.go
Yeuoly d80630acd5 feat: implement OAuth functionality (#245)
* 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.
2025-04-27 13:59:57 +08:00

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()),
)
}