diff --git a/MediaBrowser.WebDashboard/Api/DashboardService.cs b/MediaBrowser.WebDashboard/Api/DashboardService.cs
index 34ad32111b..ce6369ec5e 100644
--- a/MediaBrowser.WebDashboard/Api/DashboardService.cs
+++ b/MediaBrowser.WebDashboard/Api/DashboardService.cs
@@ -58,6 +58,11 @@ namespace MediaBrowser.WebDashboard.Api
{
}
+ [Route("/web/cachefiles", "GET")]
+ public class GetCacheFiles
+ {
+ }
+
///
/// Class GetDashboardResource
///
@@ -140,6 +145,22 @@ namespace MediaBrowser.WebDashboard.Api
return ResultFactory.GetStaticResult(Request, page.Plugin.Version.ToString().GetMD5(), null, null, MimeTypes.GetMimeType("page.html"), () => GetPackageCreator().ModifyHtml("dummy.html", page.GetHtmlStream(), null, _appHost.ApplicationVersion.ToString(), null, false));
}
+ public object Get(GetCacheFiles request)
+ {
+ var creator = GetPackageCreator();
+ var directory = creator.DashboardUIPath;
+
+ var skipExtensions = GetUndeployedExtensions();
+
+ var allFiles =
+ Directory.GetFiles(directory, "*", SearchOption.AllDirectories)
+ .Where(i => !skipExtensions.Contains(Path.GetExtension(i) ?? string.Empty, StringComparer.OrdinalIgnoreCase))
+ .Select(i => i.Replace(directory, string.Empty, StringComparison.OrdinalIgnoreCase).Replace("\\", "/").TrimStart('/') + "?v=" + _appHost.ApplicationVersion.ToString())
+ .ToList();
+
+ return ResultFactory.GetOptimizedResult(Request, _jsonSerializer.SerializeToString(allFiles));
+ }
+
///
/// Gets the specified request.
///
@@ -274,6 +295,21 @@ namespace MediaBrowser.WebDashboard.Api
return new PackageCreator(_fileSystem, _localization, Logger, _serverConfigurationManager, _jsonSerializer);
}
+ private List GetUndeployedExtensions()
+ {
+ var list = new List();
+
+ list.Add(".log");
+ list.Add(".txt");
+ list.Add(".map");
+ list.Add(".md");
+ list.Add(".gz");
+ list.Add(".bat");
+ list.Add(".sh");
+
+ return list;
+ }
+
public async Task