75 lines
1.8 KiB
C#
Executable File
75 lines
1.8 KiB
C#
Executable File
using System.Web;
|
|
using ThoughtWorks.CruiseControl.Core;
|
|
using ThoughtWorks.CruiseControl.Core.Reporting.Dashboard.Navigation;
|
|
using ThoughtWorks.CruiseControl.WebDashboard.MVC;
|
|
|
|
namespace ThoughtWorks.CruiseControl.WebDashboard.IO
|
|
{
|
|
public class RequestWrappingCruiseRequest : ICruiseRequest
|
|
{
|
|
private readonly IRequest request;
|
|
|
|
public RequestWrappingCruiseRequest(IRequest request)
|
|
{
|
|
this.request = request;
|
|
}
|
|
|
|
public string ServerName
|
|
{
|
|
get { return FindRESTSpecifiedResource(DefaultCruiseUrlBuilder.ServerRESTSpecifier); }
|
|
}
|
|
|
|
public string ProjectName
|
|
{
|
|
get { return FindRESTSpecifiedResource(DefaultCruiseUrlBuilder.ProjectRESTSpecifier); }
|
|
}
|
|
|
|
public string BuildName
|
|
{
|
|
get { return FindRESTSpecifiedResource(DefaultCruiseUrlBuilder.BuildRESTSpecifier); }
|
|
}
|
|
|
|
private string FindRESTSpecifiedResource(string specifier)
|
|
{
|
|
string[] subFolders = request.SubFolders;
|
|
|
|
for (int i = 0; i < subFolders.Length; i += 2)
|
|
{
|
|
if (subFolders[i] == specifier)
|
|
{
|
|
if (i < subFolders.Length)
|
|
{
|
|
return HttpUtility.UrlDecode(subFolders[i + 1]);
|
|
}
|
|
else
|
|
{
|
|
throw new CruiseControlException(
|
|
string.Format("unexpected URL format - found {0} REST Specifier, but no following value", specifier));
|
|
}
|
|
}
|
|
}
|
|
|
|
return "";
|
|
}
|
|
|
|
public IServerSpecifier ServerSpecifier
|
|
{
|
|
get { return new DefaultServerSpecifier(ServerName); }
|
|
}
|
|
|
|
public IProjectSpecifier ProjectSpecifier
|
|
{
|
|
get { return new DefaultProjectSpecifier(ServerSpecifier, ProjectName); }
|
|
}
|
|
|
|
public IBuildSpecifier BuildSpecifier
|
|
{
|
|
get { return new DefaultBuildSpecifier(ProjectSpecifier, BuildName); }
|
|
}
|
|
|
|
public IRequest Request
|
|
{
|
|
get { return request; }
|
|
}
|
|
}
|
|
} |