68 lines
2.0 KiB
C#
Executable File
68 lines
2.0 KiB
C#
Executable File
using System;
|
|
using System.IO;
|
|
using System.Web;
|
|
using System.Web.Caching;
|
|
using ThoughtWorks.CruiseControl.Core.Reporting.Dashboard.Navigation;
|
|
using ThoughtWorks.CruiseControl.WebDashboard.Configuration;
|
|
using ThoughtWorks.CruiseControl.WebDashboard.MVC;
|
|
using ThoughtWorks.CruiseControl.WebDashboard.Plugins.BuildReport;
|
|
|
|
namespace ThoughtWorks.CruiseControl.WebDashboard.IO
|
|
{
|
|
public class InMemoryResponseCache : IResponseCache
|
|
{
|
|
private readonly DashboardCacheDependency cacheDependency;
|
|
private static readonly Cache cache = HttpRuntime.Cache;
|
|
|
|
public InMemoryResponseCache(DashboardCacheDependency dashboardCacheDependency)
|
|
{
|
|
cacheDependency = dashboardCacheDependency;
|
|
}
|
|
|
|
public IResponse Get(IRequest request)
|
|
{
|
|
return (IResponse) cache.Get(request.RawUrl);
|
|
}
|
|
|
|
public void Insert(IRequest request, IResponse response)
|
|
{
|
|
cache.Insert(request.RawUrl, response, new CacheDependency(cacheDependency.Filenames), AbsoluteExpirationTime(), LastAccessExpirationTime());
|
|
}
|
|
|
|
private static TimeSpan LastAccessExpirationTime()
|
|
{
|
|
return new TimeSpan(1, 0, 0);
|
|
}
|
|
|
|
private static DateTime AbsoluteExpirationTime()
|
|
{
|
|
return DateTime.MaxValue;
|
|
}
|
|
}
|
|
|
|
public class DashboardCacheDependency
|
|
{
|
|
private readonly IPluginConfiguration config;
|
|
private readonly IPhysicalApplicationPathProvider physicalApplicationPathProvider;
|
|
|
|
public DashboardCacheDependency(IPluginConfiguration config, IPhysicalApplicationPathProvider physicalApplicationPathProvider)
|
|
{
|
|
this.config = config;
|
|
this.physicalApplicationPathProvider = physicalApplicationPathProvider;
|
|
}
|
|
|
|
public string[] Filenames
|
|
{
|
|
get
|
|
{
|
|
BuildReportBuildPlugin plugin = (BuildReportBuildPlugin) config.BuildPlugins[0];
|
|
string[] xslFilenames = new string[plugin.XslFileNames.Length];
|
|
for (int i = 0; i < xslFilenames.Length; i++)
|
|
{
|
|
xslFilenames[i] = physicalApplicationPathProvider.GetFullPathFor(plugin.XslFileNames[i]);
|
|
}
|
|
return xslFilenames;
|
|
}
|
|
}
|
|
}
|
|
} |