public override ILocation GetLocation(string path) { var parsedPath = Path.ParseWithContainer(path); // strip off the azure: /* if (parsedPath.Scheme != string.Empty && parsedPath.Scheme != AzureDriveInfo.ProviderScheme) { return AzureLocation.InvalidLocation; }*/ // is this just a empty location? if (string.IsNullOrEmpty(parsedPath.HostAndPort)) { NamespaceProvider = NamespaceProvider ?? this; return AzureNamespace; } var byAccount = AddingDrives.Union(Drives).Select(each => each as AzureDriveInfo).Where(each => each.HostAndPort == parsedPath.HostAndPort || each.ActualHostAndPort == parsedPath.HostAndPort); if (!byAccount.Any()) { return AzureLocation.UnknownLocation; } var byContainer = byAccount.Where(each => each.ContainerName == parsedPath.Container); var byFolder = byContainer.Where(each => each.Path.IsSubpath(parsedPath)).OrderByDescending(each => each.RootPath.Length); var result = byFolder.FirstOrDefault() ?? byContainer.FirstOrDefault() ?? byAccount.FirstOrDefault(); return new AzureLocation(result, parsedPath, null); }
public override ILocation GetLocation(string path) { var parsedPath = Path.ParseWithContainer(path); // strip off the azure: /* * if (parsedPath.Scheme != string.Empty && parsedPath.Scheme != AzureDriveInfo.ProviderScheme) { * return AzureLocation.InvalidLocation; * }*/ // is this just a empty location? if (string.IsNullOrEmpty(parsedPath.HostAndPort)) { NamespaceProvider = NamespaceProvider ?? this; return(AzureNamespace); } var byAccount = AddingDrives.Union(Drives).Select(each => each as AzureDriveInfo).Where(each => each.HostAndPort == parsedPath.HostAndPort || each.ActualHostAndPort == parsedPath.HostAndPort); if (!byAccount.Any()) { return(AzureLocation.UnknownLocation); } var byContainer = byAccount.Where(each => each.ContainerName == parsedPath.Container); var byFolder = byContainer.Where(each => each.Path.IsSubpath(parsedPath)).OrderByDescending(each => each.RootPath.Length); var result = byFolder.FirstOrDefault() ?? byContainer.FirstOrDefault() ?? byAccount.FirstOrDefault(); return(new AzureLocation(result, parsedPath, null)); }