@@ -64,41 +64,47 @@ async def get_adapter(adapter_id: str):
6464async def create_adapter ():
6565 """创建新的适配器"""
6666 data = await request .get_json ()
67- adapter_config = IMAdapterConfig (** data )
67+ adapter_info = IMAdapterConfig (** data )
6868
6969 config : GlobalConfig = g .container .resolve (GlobalConfig )
7070 registry : IMRegistry = g .container .resolve (IMRegistry )
7171 manager : IMManager = g .container .resolve (IMManager )
7272
7373 # 检查适配器类型是否存在
74- if adapter_config .adapter not in registry .get_all_adapters ():
74+ if adapter_info .adapter not in registry .get_all_adapters ():
7575 return jsonify ({"error" : "Invalid adapter type" }), 400
7676
7777 # 检查ID是否已存在
78- if manager .has_adapter (adapter_config .name ):
78+ if manager .has_adapter (adapter_info .name ):
7979 return jsonify ({"error" : "Adapter ID already exists" }), 400
8080
8181 # 更新配置
82- config .ims .append (adapter_config )
82+ config .ims .append (adapter_info )
83+ adapter_class = registry .get_all_adapters ()[adapter_info .adapter ]
84+ adapter_config_class = registry .get_config_class (adapter_info .adapter )
85+ adapter_config = adapter_config_class (** adapter_info .config )
86+ manager .create_adapter (adapter_info .name , adapter_class , adapter_config )
87+ manager .start_adapter (adapter_info .name , asyncio .get_event_loop ())
8388
8489 # 保存配置到文件
8590 ConfigLoader .save_config_with_backup ("config.yaml" , config )
8691
8792 return IMAdapterResponse (adapter = IMAdapterStatus (
88- name = adapter_config .name ,
89- adapter = adapter_config .adapter ,
93+ name = adapter_info .name ,
94+ adapter = adapter_info .adapter ,
9095 is_running = False ,
91- config = adapter_config .config
96+ config = adapter_info .config
9297 )).model_dump ()
9398
9499@im_bp .route ('/adapters/<adapter_id>' , methods = ['PUT' ])
95100@require_auth
96101async def update_adapter (adapter_id : str ):
97102 """更新适配器配置"""
98103 data = await request .get_json ()
99- adapter_config = IMAdapterConfig (** data )
104+ adapter_info = IMAdapterConfig (** data )
105+ registry : IMRegistry = g .container .resolve (IMRegistry )
100106
101- if adapter_id != adapter_config .name :
107+ if adapter_id != adapter_info .name :
102108 return jsonify ({"error" : "Adapter ID mismatch" }), 400
103109
104110 config : GlobalConfig = g .container .resolve (GlobalConfig )
@@ -110,8 +116,11 @@ async def update_adapter(adapter_id: str):
110116 return jsonify ({"error" : "Adapter not found" }), 404
111117
112118 # 更新配置
113- manager .update_adapter_config (adapter_id , adapter_config .config )
119+ adapter_config_class = registry .get_config_class (adapter_info .adapter )
120+ adapter_config = adapter_config_class (** adapter_info .config )
121+ manager .update_adapter_config (adapter_id , adapter_config )
114122
123+
115124 # 保存配置到文件
116125 ConfigLoader .save_config_with_backup ("config.yaml" , config )
117126
@@ -123,9 +132,10 @@ async def update_adapter(adapter_id: str):
123132
124133 return IMAdapterResponse (adapter = IMAdapterStatus (
125134 name = adapter_id ,
126- adapter = adapter_config .adapter ,
135+ adapter = adapter_info .adapter ,
127136 is_running = is_running ,
128- config = adapter_config .config
137+ config = adapter_info .config
138+
129139 )).model_dump ()
130140
131141@im_bp .route ('/adapters/<adapter_id>' , methods = ['DELETE' ])
0 commit comments