public static StaticFile Create(string urlRoot, string path)
{
if (string.IsNullOrEmpty(urlRoot))
{
throw new ArgumentNullException("urlRoot", "urlRoot must contain a value.");
}
if (string.IsNullOrEmpty(path))
{
throw new ArgumentNullException("path", "path must contain a value.");
}
if (Regex.IsMatch(urlRoot, "^~/"))
{
urlRoot = urlRoot.Substring(1);
}
if (urlRoot.LastIndexOf("/", StringComparison.Ordinal) == urlRoot.Length - 1)
{
urlRoot = urlRoot.Substring(0, urlRoot.Length - 1);
}
if (Regex.IsMatch(path, "^~/"))
{
path = path.Substring(2);
}
path = path.ToLowerInvariant();
string[] pathParts = path.Split('/');
string ext = System.IO.Path.GetExtension(path);
return new StaticFile()
{
ContentType = GetContentType(ext),
Extension = ext,
OriginalPath = path,
Name = System.IO.Path.GetFileNameWithoutExtension(path),
Path = pathParts.Length > 1 ? string.Join("/", pathParts.Take(pathParts.Length - 1).ToArray()) : string.Empty,
ResourceName = string.Concat("BlueCollar.Dashboard.Static.", string.Join(".", pathParts)),
UrlRoot = urlRoot.ToLowerInvariant()
};
}