using EgwCoreLib.Lux.Core.RestPayload; using EgwCoreLib.Lux.Data.Services; using EgwMultiEngineManager.Data; using Microsoft.AspNetCore.Mvc; using NLog; using System.Diagnostics; namespace Lux.API.Controllers { [Route("api/[controller]")] [ApiController] public class GenericController : ControllerBase { #region Public Constructors public GenericController(IConfiguration config, IRedisService redisService, ImageCacheService imgServ) { _config = config; _redisService = redisService; _imgService = imgServ; pubChannel = _config.GetValue("ServerConf:PubChannel") ?? ""; } #endregion Public Constructors #region Public Methods /// /// Chiamata POST: specificando il tipo di richiesta + dizionario parametri esegue chiamata /// PUT: api/generic/calc/00000000-0000-0000-0000-000000000000 /// /// id oggetto /// [HttpPost("calc/{id}")] public async Task> calc(string id, [FromBody] CalcRequestDTO currReq) { Stopwatch sw = new Stopwatch(); sw.Start(); string svgContent = ""; // se contiene ".svg" lo levo... if (id.EndsWith(".svg")) { id = id.Replace(".svg", ""); } // ...se ricevo percorso --> leggo jwd/svg cablato if (currReq != null) { Dictionary DictExec = currReq.DictExec; // controllo se mancassero parametri... if (!DictExec.ContainsKey("Mode")) { DictExec.Add("Mode", "1"); } if (!DictExec.ContainsKey("UID")) { DictExec.Add("UID", id); } int nId = 1; // da modificare con tipo richiesta... QuestionDTO currArgs = new QuestionDTO(nId, currReq.EnvType, DictExec); await _redisService.PublishAsync(pubChannel, currArgs.sProcessArgs); svgContent = "DONE"; } sw.Stop(); Log.Info($"calcSvg | {sw.Elapsed.TotalMilliseconds:N3} ms"); return Ok(svgContent); } #endregion Public Methods #region Private Fields private static Logger Log = LogManager.GetCurrentClassLogger(); private readonly IRedisService _redisService; private readonly string pubChannel = ""; private IConfiguration _config; #endregion Private Fields #region Private Properties private ImageCacheService _imgService { get; set; } #endregion Private Properties } }