wasStitchNET

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 2  →  ?path2? @ 3
/Repository/Tools.cs
@@ -74,7 +74,7 @@
/// <param name="release">the release to list files for</param>
/// <param name="timeout">the timeout connecting to the Stitch repository</param>
/// <returns>a list of Corrade files contained in the repository</returns>
public static async Task<IEnumerable<KeyValuePair<string, string>>> GetReleaseFileHashes(string server, Version release, int timeout)
public static IEnumerable<KeyValuePair<string, string>> GetReleaseFileHashes(string server, Version release, int timeout)
{
using (var client = new Client(new NetworkCredential())
{
@@ -86,8 +86,7 @@
STITCH_CONSTANTS.PROGRESSIVE_PATH)
})
{
Console.WriteLine($"{release.Major}.{release.Minor}");
return (await client
return client
.List(
string.Join(
Constants.DIRECTORY_SEPARATOR,
@@ -94,34 +93,22 @@
$"{release.Major}.{release.Minor}",
STITCH_CONSTANTS.UPDATE_DATA_PATH),
Constants.DavDepth.ALL)
)
.Select(async o =>
{
using (var memoryStream = new MemoryStream())
{
using (var stream = client.Download(o.Href).Result)
{
await stream.CopyToAsync(memoryStream);
}
return new KeyValuePair<string, string>(
string.Join(Constants.DIRECTORY_SEPARATOR,
o.Href.PathSplit(Constants.DIRECTORY_SEPARATOR.First())
.Select(part =>
WebExtensions.URLUnescapeDataString(
part.Trim(Constants.DIRECTORY_SEPARATOR.First())
)
)
.Where(part => !string.IsNullOrEmpty(part))
.SequenceExceptAny(new[] {
.Result
.AsParallel()
.Where(item => !item.IsCollection)
.ToDictionary(o => string.Join(Constants.DIRECTORY_SEPARATOR,
o.Href.PathSplit(Constants.DIRECTORY_SEPARATOR.First())
.Select(part => WebExtensions.URLUnescapeDataString(
part.Trim(Constants.DIRECTORY_SEPARATOR.First())
)
)
.Where(part => !string.IsNullOrEmpty(part))
.SequenceExceptAny(new[] {
STITCH_CONSTANTS.UPDATE_PATH,
STITCH_CONSTANTS.PROGRESSIVE_PATH,
$"{release.Major}.{release.Minor}",
STITCH_CONSTANTS.UPDATE_DATA_PATH
})
), System.Security.Cryptography.SHA1.Create().ToHex(memoryStream));
}
}
).Select(o => o.Result).OfType<KeyValuePair<string, string>>();
})), o => System.Security.Cryptography.SHA1.Create().ToHex(client.Download(o.Href).Result));
}
}
}