private Uri MakeSafeFolderLocation(Uri location)
{
var path = location.GetComponents(UriComponents.Path, CompareFormat);
if (string.IsNullOrEmpty(path))
{
return location;
}
if (path.EndsWith("/", StringComparison.OrdinalIgnoreCase))
{
return location;
}
// Check for a file name
var folderIndex = path.LastIndexOf("/", StringComparison.OrdinalIgnoreCase);
if (folderIndex > -1)
{
var finalPart = path.Substring(folderIndex + 1);
if (finalPart.IndexOf(".", StringComparison.OrdinalIgnoreCase) > -1)
{
// This looks like a file so this location should not be converted
return location;
}
}
var originalLocation = location.ToString();
var updatedLocation = originalLocation.Replace(path, path + "/");
return new Uri(updatedLocation);
}