Browse Source

feat: support check endpoint settings

Yeuoly 10 months ago
parent
commit
9bd9e32277
1 changed files with 14 additions and 4 deletions
  1. 14 4
      internal/service/setup_endpoint.go

+ 14 - 4
internal/service/setup_endpoint.go

@@ -41,6 +41,15 @@ func SetupEndpoint(
 		return entities.NewErrorResponse(-403, "permission denied")
 	}
 
+	if declaration.Endpoint == nil {
+		return entities.NewErrorResponse(-404, "plugin does not have an endpoint")
+	}
+
+	// check settings
+	if err := plugin_entities.ValidateProviderConfigs(settings, declaration.Endpoint.Settings); err != nil {
+		return entities.NewErrorResponse(-400, fmt.Sprintf("failed to validate settings: %v", err))
+	}
+
 	endpoint, err := install_service.InstallEndpoint(
 		plugin_unique_identifier,
 		installation.ID,
@@ -52,10 +61,6 @@ func SetupEndpoint(
 		return entities.NewErrorResponse(-500, fmt.Sprintf("failed to setup endpoint: %v", err))
 	}
 
-	if declaration.Endpoint == nil {
-		return entities.NewErrorResponse(-404, "plugin does not have an endpoint")
-	}
-
 	manager := plugin_manager.Manager()
 	if manager == nil {
 		return entities.NewErrorResponse(-500, "failed to get plugin manager")
@@ -173,6 +178,11 @@ func UpdateEndpoint(endpoint_id string, tenant_id string, user_id string, settin
 		}
 	}
 
+	// check settings
+	if err := plugin_entities.ValidateProviderConfigs(settings, plugin.Declaration.Endpoint.Settings); err != nil {
+		return entities.NewErrorResponse(-400, fmt.Sprintf("failed to validate settings: %v", err))
+	}
+
 	// encrypt settings
 	encrypted_settings, err := manager.BackwardsInvocation().InvokeEncrypt(
 		&dify_invocation.InvokeEncryptRequest{