using Microsoft.AspNetCore.Mvc; using SharedLibraryCore; using SharedLibraryCore.Interfaces; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; namespace WebfrontCore.Controllers { [Route("dynamic")] public class DynamicFileController : BaseController { private static readonly IDictionary _fileCache = new Dictionary(); public DynamicFileController(IManager manager) : base(manager) { } [Route("css/{fileName}")] public async Task Css(string fileName) { if (fileName.EndsWith(".css")) { if (Utilities.IsDevelopment) { var path = Path.Join(Utilities.OperatingDirectory, "..", "..", "..", "..", "WebfrontCore", "wwwroot", "css", fileName); string cssData = await System.IO.File.ReadAllTextAsync(path); cssData = await Manager.MiddlewareActionHandler.Execute(cssData, "custom_css_accent"); return Content(cssData, "text/css"); } if (!_fileCache.ContainsKey(fileName)) { string path = $"wwwroot{Path.DirectorySeparatorChar}css{Path.DirectorySeparatorChar}{fileName}"; string data = await System.IO.File.ReadAllTextAsync(path); data = await Manager.MiddlewareActionHandler.Execute(data, "custom_css_accent"); _fileCache.Add(fileName, data); } return Content(_fileCache[fileName], "text/css"); } return StatusCode(400); } } }