//=================================================== // License: Apache-2.0 // Contributors: yiyungent@gmail.com // Project: https://moeci.com/PluginCore // GitHub: https://github.com/yiyungent/PluginCore //=================================================== using PluginCore.AspNetCore.ResponseModel; using PluginCore.Interfaces; using PluginCore.IPlugins; namespace PluginCore.AspNetCore.Controllers { [Route("api/plugincore/[controller]/[action]")] [ApiController] [NonUnify] public class PluginWidgetController : ControllerBase { #region Fields private readonly IPluginFinder _pluginFinder; #endregion #region Ctor public PluginWidgetController(IPluginFinder pluginFinder) { _pluginFinder = pluginFinder; } #endregion #region Actions #region Widget /// /// Widget /// /// [HttpGet, HttpPost] //public async Task> Widget(string widgetKey, string extraPars = "") public async Task Widget(string widgetKey, string extraPars = "") { BaseResponseModel responseModel = new ResponseModel.BaseResponseModel(); string responseData = ""; widgetKey = widgetKey.Trim('"', '\''); string[] extraParsArr = null; if (!string.IsNullOrEmpty(extraPars)) { extraParsArr = extraPars.Split(",", StringSplitOptions.RemoveEmptyEntries); extraParsArr = extraParsArr.Select(m => m.Trim('"', '\'')).ToArray(); } StringBuilder sb = new StringBuilder(); sb.AppendLine($""); try { List plugins = this._pluginFinder.EnablePlugins().ToList(); foreach (var item in plugins) { string widgetStr = await item.Widget(widgetKey, extraParsArr); if (!string.IsNullOrEmpty(widgetStr)) { // TODO: 配合 PluginCoreConfig.PluginWidgetDebug // TODO: PluginCoreConfig 改为 Options 模式, 避免手动反复读取文件 效率低 //sb.AppendLine($""); sb.AppendLine(widgetStr); } } } catch (Exception ex) { Utils.LogUtil.Error(ex.ToString()); sb.AppendLine($""); } sb.AppendLine($""); responseData = sb.ToString(); responseModel.Code = 1; responseModel.Message = "Load Widget Success"; responseModel.Data = responseData; //return await Task.FromResult(responseModel); return Content(responseData, "text/html;charset=utf-8"); } #endregion #endregion } }