This is an automated email from the ASF dual-hosted git repository.
lynwee pushed a commit to branch dev-1
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git
The following commit(s) were added to refs/heads/dev-1 by this push:
new 8b2d024b1 feat(blueprint): add new api to check connection tokens
8b2d024b1 is described below
commit 8b2d024b11ac6ab66730c009512116b2b11d6059
Author: d4x1 <[email protected]>
AuthorDate: Wed Sep 25 13:22:14 2024 +0800
feat(blueprint): add new api to check connection tokens
---
backend/core/models/blueprint.go | 9 +++++++++
backend/core/models/project.go | 12 +-----------
backend/server/api/blueprints/blueprints.go | 24 ++++++++++++++++++++++++
backend/server/api/project/project.go | 12 ------------
backend/server/api/router.go | 1 +
backend/server/services/blueprint.go | 24 ++++++++++++++++++++++++
backend/server/services/project.go | 26 --------------------------
7 files changed, 59 insertions(+), 49 deletions(-)
diff --git a/backend/core/models/blueprint.go b/backend/core/models/blueprint.go
index f30adec9f..9dc468822 100644
--- a/backend/core/models/blueprint.go
+++ b/backend/core/models/blueprint.go
@@ -92,3 +92,12 @@ type SyncPolicy struct {
TimeAfter *time.Time `json:"timeAfter"`
TriggerSyncPolicy
}
+
+type ConnectionTokenCheckResult struct {
+ PluginName string `json:"pluginName" mapstructure:"pluginName"`
+ ConnectionID uint64 `json:"connectionId" mapstructure:"connectionId"`
+ Success bool `json:"success" mapstructure:"success"`
+ Message string `json:"message" mapstructure:"message"`
+}
+
+type ApiBlueprintConnectionTokenCheck []ConnectionTokenCheckResult
diff --git a/backend/core/models/project.go b/backend/core/models/project.go
index 6acafe27f..99c61785d 100644
--- a/backend/core/models/project.go
+++ b/backend/core/models/project.go
@@ -73,19 +73,9 @@ type ApiOutputProject struct {
}
type ApiProjectCheck struct {
- Exist bool `json:"exist" mapstructure:"exist"`
- Tokens *ApiProjectCheckToken `json:"tokens,omitempty"
mapstructure:"tokens"`
+ Exist bool `json:"exist" mapstructure:"exist"`
}
-type TokenResultSuccessAndMessage struct {
- PluginName string `json:"pluginName" mapstructure:"pluginName"`
- ConnectionID uint64 `json:"connectionId" mapstructure:"connectionId"`
- Success bool `json:"success" mapstructure:"success"`
- Message string `json:"message" mapstructure:"message"`
-}
-
-type ApiProjectCheckToken []TokenResultSuccessAndMessage
-
type Store struct {
StoreKey string `gorm:"primaryKey;type:varchar(255)"`
StoreValue json.RawMessage `gorm:"type:json;serializer:json"`
diff --git a/backend/server/api/blueprints/blueprints.go
b/backend/server/api/blueprints/blueprints.go
index 23383d468..17376d2c8 100644
--- a/backend/server/api/blueprints/blueprints.go
+++ b/backend/server/api/blueprints/blueprints.go
@@ -18,6 +18,7 @@ limitations under the License.
package blueprints
import (
+ "github.com/spf13/cast"
"net/http"
"strconv"
@@ -226,6 +227,29 @@ func GetBlueprintPipelines(c *gin.Context) {
shared.ApiOutputSuccess(c, shared.ResponsePipelines{Pipelines:
pipelines, Count: count}, http.StatusOK)
}
+// @Summary get connection token check by blueprint id
+// @Description get connection token check by blueprint id
+// @Tags framework/blueprints
+// @Accept application/json
+// @Param blueprintId path int true "blueprint id"
+// @Success 200 {object} models.ApiBlueprintConnectionTokenCheck
+// @Failure 400 {object} shared.ApiBody "Bad Request"
+// @Failure 500 {object} shared.ApiBody "Internal Error"
+// @Router /blueprints/{blueprintId}/connections-token-check [get]
+func GetBlueprintConnectionTokenCheck(c *gin.Context) {
+ blueprintId, err := cast.ToUint64E(c.Param("blueprintId"))
+ if err != nil {
+ shared.ApiOutputError(c, errors.BadInput.Wrap(err, "bad
blueprintID format supplied"))
+ return
+ }
+ resp, err := services.CheckBlueprintConnectionTokens(blueprintId)
+ if err != nil {
+ shared.ApiOutputError(c, errors.Default.Wrap(err, "error
getting blue print connection token check"))
+ return
+ }
+ shared.ApiOutputSuccess(c, resp, http.StatusOK)
+}
+
// @Summary delete blueprint by id
// @Description delete blueprint by id
// @Tags framework/blueprints
diff --git a/backend/server/api/project/project.go
b/backend/server/api/project/project.go
index 43687da73..fd5c14ebb 100644
--- a/backend/server/api/project/project.go
+++ b/backend/server/api/project/project.go
@@ -58,14 +58,12 @@ func GetProject(c *gin.Context) {
// @Tags framework/projects
// @Accept application/json
// @Param projectName path string true "project name"
-// @Param check_token query int false "need to check token validity or not"
// @Success 200 {object} models.ApiProjectCheck
// @Failure 400 {string} errcode.Error "Bad Request"
// @Failure 500 {string} errcode.Error "Internal Error"
// @Router /projects/{projectName}/check [get]
func GetProjectCheck(c *gin.Context) {
projectName := c.Param("projectName")
-
projectOutputCheck := &models.ApiProjectCheck{}
_, err := services.GetProject(projectName)
if err != nil {
@@ -73,16 +71,6 @@ func GetProjectCheck(c *gin.Context) {
} else {
projectOutputCheck.Exist = true
}
-
- if c.Query("check_token") == "1" {
- checkTokenResult, err :=
services.CheckProjectTokens(projectName)
- if err != nil {
- shared.ApiOutputError(c, errors.Default.Wrap(err,
"error check project tokens"))
- return
- }
- projectOutputCheck.Tokens = checkTokenResult
- }
-
shared.ApiOutputSuccess(c, projectOutputCheck, http.StatusOK) //
//shared.ApiOutputSuccess(c, projectOutputCheck, http.StatusOK)
}
diff --git a/backend/server/api/router.go b/backend/server/api/router.go
index 721517cf5..226eb3035 100644
--- a/backend/server/api/router.go
+++ b/backend/server/api/router.go
@@ -59,6 +59,7 @@ func RegisterRouter(r *gin.Engine, basicRes context.BasicRes)
{
r.GET("/blueprints/:blueprintId", blueprints.Get)
r.POST("/blueprints/:blueprintId/trigger", blueprints.Trigger)
r.GET("/blueprints/:blueprintId/pipelines",
blueprints.GetBlueprintPipelines)
+ r.GET("/blueprints/:blueprintId/connections-token-check",
blueprints.GetBlueprintConnectionTokenCheck)
r.POST("/tasks/:taskId/rerun", task.PostRerun)
diff --git a/backend/server/services/blueprint.go
b/backend/server/services/blueprint.go
index ff88211dd..aced9eeea 100644
--- a/backend/server/services/blueprint.go
+++ b/backend/server/services/blueprint.go
@@ -117,6 +117,30 @@ func GetBlueprint(blueprintId uint64, shouldSanitize bool)
(*models.Blueprint, e
return blueprint, nil
}
+func CheckBlueprintConnectionTokens(blueprintId uint64)
(*models.ApiBlueprintConnectionTokenCheck, errors.Error) {
+ blueprint, err := GetBlueprint(blueprintId, false)
+ if err != nil {
+ return nil, err
+ }
+ var ret models.ApiBlueprintConnectionTokenCheck
+ for _, connection := range blueprint.Connections {
+ pluginName := connection.PluginName
+ connectionId := connection.ConnectionId
+ connectionTokenResult := models.ConnectionTokenCheckResult{
+ PluginName: pluginName,
+ ConnectionID: connectionId,
+ Success: true,
+ Message: "success",
+ }
+ if err := checkConnectionToken(logger, *connection); err != nil
{
+ connectionTokenResult.Success = false
+ connectionTokenResult.Message = err.Error()
+ }
+ ret = append(ret, connectionTokenResult)
+ }
+ return &ret, nil
+}
+
// GetBlueprintByProjectName returns the detail of a given ProjectName
func GetBlueprintByProjectName(projectName string) (*models.Blueprint,
errors.Error) {
if projectName == "" {
diff --git a/backend/server/services/project.go
b/backend/server/services/project.go
index 96afb6bf4..614f10680 100644
--- a/backend/server/services/project.go
+++ b/backend/server/services/project.go
@@ -193,32 +193,6 @@ func GetProject(name string) (*models.ApiOutputProject,
errors.Error) {
return makeProjectOutput(project, false)
}
-func CheckProjectTokens(name string) (*models.ApiProjectCheckToken,
errors.Error) {
- blueprint, err := GetBlueprintByProjectName(name)
- if err != nil {
- return nil, err
- }
- var ret models.ApiProjectCheckToken
- for _, connection := range blueprint.Connections {
- pluginName := connection.PluginName
- connectionId := connection.ConnectionId
- connectionTokenResult := models.TokenResultSuccessAndMessage{
- PluginName: pluginName,
- ConnectionID: connectionId,
- Success: true,
- Message: "success",
- }
- if err := checkConnectionToken(logger, *connection); err != nil
{
- connectionTokenResult.Success = false
- connectionTokenResult.Message = err.Error()
-
- }
- ret = append(ret, connectionTokenResult)
- }
-
- return &ret, nil
-}
-
// PatchProject FIXME ...
func PatchProject(name string, body map[string]interface{})
(*models.ApiOutputProject, errors.Error) {
projectInput := &models.ApiInputProject{}