48 lines
1.2 KiB
C#
Executable File
48 lines
1.2 KiB
C#
Executable File
using System.Web;
|
|
using ThoughtWorks.CruiseControl.WebDashboard.IO;
|
|
|
|
namespace ThoughtWorks.CruiseControl.WebDashboard.MVC
|
|
{
|
|
public class HtmlFragmentResponse : IResponse
|
|
{
|
|
private readonly string htmlFragment;
|
|
private ConditionalGetFingerprint serverFingerprint;
|
|
|
|
public HtmlFragmentResponse(string htmlFragment)
|
|
{
|
|
this.htmlFragment = htmlFragment;
|
|
}
|
|
|
|
public string ResponseFragment
|
|
{
|
|
get { return htmlFragment; }
|
|
}
|
|
|
|
public void Process(HttpResponse response)
|
|
{
|
|
if (IsClientSideCacheable())
|
|
{
|
|
AddHeadersToEnable403Cacheing(response);
|
|
}
|
|
response.Write(htmlFragment);
|
|
}
|
|
|
|
private void AddHeadersToEnable403Cacheing(HttpResponse response)
|
|
{
|
|
response.AppendHeader("Last-Modified", serverFingerprint.LastModifiedTime.ToString("r"));
|
|
response.AppendHeader("ETag", serverFingerprint.ETag);
|
|
response.AppendHeader("Cache-Control", "private, max-age=0");
|
|
}
|
|
|
|
private bool IsClientSideCacheable()
|
|
{
|
|
return !(ConditionalGetFingerprint.NOT_AVAILABLE.Equals(ServerFingerprint));
|
|
}
|
|
|
|
public ConditionalGetFingerprint ServerFingerprint
|
|
{
|
|
get { return serverFingerprint; }
|
|
set { serverFingerprint = value; }
|
|
}
|
|
}
|
|
} |