35 lines
1000 B
Python
35 lines
1000 B
Python
from fastapi import FastAPI
|
|
|
|
from uvicorn.server import logger
|
|
|
|
|
|
class Plugin:
|
|
def __init__(
|
|
self, app: FastAPI, name="Unnamed Plugin", version="1.0.0", *args, **kwargs
|
|
):
|
|
self.app = app
|
|
self.name = name
|
|
self.version = version
|
|
|
|
def install(self):
|
|
pass
|
|
|
|
|
|
class PluginManager:
|
|
def __init__(self, app: FastAPI):
|
|
self.app = app
|
|
|
|
def register_plugin(self, plugin: Plugin):
|
|
plugin_name = getattr(plugin, "name", "Unnamed Plugin")
|
|
plugin_version = getattr(plugin, "version", "Unknown Version")
|
|
logger.info(f"[插件] Registering plugin: [{plugin_name} {plugin_version}] ")
|
|
try:
|
|
plugin.install()
|
|
logger.info(
|
|
f"[插件] Plugin [{plugin_name} {plugin_version}] installed successfully ✅"
|
|
)
|
|
except Exception as e:
|
|
logger.error(
|
|
f"[插件] Failed to install plugin [{plugin_name} {plugin_version}]: {e} ❌"
|
|
)
|