refactor: add manifest into upload interfaces

This commit is contained in:
Yeuoly 2024-10-21 18:48:03 +08:00
parent ccbe42eb5f
commit 7b62b5578e
No known key found for this signature in database
GPG Key ID: A66E7E320FB19F61
4 changed files with 18 additions and 13 deletions

View File

@ -69,7 +69,8 @@ class PluginUploadPkgApi(Resource):
tenant_id = user.current_tenant_id
file = request.files["pkg"]
content = file.read()
return {"plugin_unique_identifier": PluginService.upload_pkg(tenant_id, content)}
return jsonable_encoder(PluginService.upload_pkg(tenant_id, content))
class PluginUploadFromPkgApi(Resource):
@ -92,9 +93,7 @@ class PluginUploadFromPkgApi(Resource):
content = file.read()
response = PluginService.upload_pkg(tenant_id, content)
return {
"plugin_unique_identifier": response,
}
return jsonable_encoder(response)
class PluginUploadFromGithubApi(Resource):
@ -143,7 +142,7 @@ class PluginInstallFromPkgApi(Resource):
response = PluginService.install_from_local_pkg(tenant_id, args["plugin_unique_identifiers"])
return response.model_dump()
return jsonable_encoder(response)
class PluginInstallFromGithubApi(Resource):
@ -172,7 +171,7 @@ class PluginInstallFromGithubApi(Resource):
args["package"],
)
return response.model_dump()
return jsonable_encoder(response)
class PluginInstallFromMarketplaceApi(Resource):
@ -197,7 +196,7 @@ class PluginInstallFromMarketplaceApi(Resource):
response = PluginService.install_from_marketplace_pkg(tenant_id, args["plugin_unique_identifiers"])
return response.model_dump()
return jsonable_encoder(response)
class PluginFetchManifestApi(Resource):

View File

@ -7,6 +7,7 @@ from pydantic import BaseModel, ConfigDict, Field
from core.model_runtime.entities.model_entities import AIModelEntity
from core.model_runtime.entities.provider_entities import ProviderEntity
from core.plugin.entities.base import BasePluginEntity
from core.plugin.entities.plugin import PluginDeclaration
from core.tools.entities.tool_entities import ToolProviderEntityWithPlugin
T = TypeVar("T", bound=(BaseModel | dict | list | bool | str))
@ -133,3 +134,8 @@ class PluginInstallTask(BasePluginEntity):
class PluginInstallTaskStartResponse(BaseModel):
all_installed: bool = Field(description="Whether all plugins are installed.")
task_id: str = Field(description="The ID of the install task.")
class PluginUploadResponse(BaseModel):
unique_identifier: str = Field(description="The unique identifier of the plugin.")
manifest: PluginDeclaration

View File

@ -3,7 +3,7 @@ from collections.abc import Sequence
from pydantic import BaseModel
from core.plugin.entities.plugin import PluginDeclaration, PluginEntity, PluginInstallationSource
from core.plugin.entities.plugin_daemon import PluginInstallTask, PluginInstallTaskStartResponse
from core.plugin.entities.plugin_daemon import PluginInstallTask, PluginInstallTaskStartResponse, PluginUploadResponse
from core.plugin.manager.base import BasePluginManager
@ -33,7 +33,7 @@ class PluginInstallationManager(BasePluginManager):
tenant_id: str,
pkg: bytes,
verify_signature: bool = False,
) -> str:
) -> PluginUploadResponse:
"""
Upload a plugin package and return the plugin unique identifier.
"""
@ -48,7 +48,7 @@ class PluginInstallationManager(BasePluginManager):
return self._request_with_plugin_daemon_response(
"POST",
f"plugin/{tenant_id}/management/install/upload",
str,
PluginUploadResponse,
files=body,
data=data,
)

View File

@ -5,7 +5,7 @@ from configs import dify_config
from core.helper.download import download_with_size_limit
from core.helper.marketplace import download_plugin_pkg
from core.plugin.entities.plugin import PluginDeclaration, PluginEntity, PluginInstallationSource
from core.plugin.entities.plugin_daemon import PluginInstallTask
from core.plugin.entities.plugin_daemon import PluginInstallTask, PluginUploadResponse
from core.plugin.manager.asset import PluginAssetManager
from core.plugin.manager.debugging import PluginDebuggingManager
from core.plugin.manager.plugin import PluginInstallationManager
@ -67,7 +67,7 @@ class PluginService:
return manager.delete_plugin_installation_task(tenant_id, task_id)
@staticmethod
def upload_pkg(tenant_id: str, pkg: bytes, verify_signature: bool = False) -> str:
def upload_pkg(tenant_id: str, pkg: bytes, verify_signature: bool = False) -> PluginUploadResponse:
"""
Upload plugin package files
@ -79,7 +79,7 @@ class PluginService:
@staticmethod
def upload_pkg_from_github(
tenant_id: str, repo: str, version: str, package: str, verify_signature: bool = False
) -> str:
) -> PluginUploadResponse:
"""
Install plugin from github release package files,
returns plugin_unique_identifier