/Repository/Tools.cs |
@@ -10,6 +10,7 @@ |
using System.Net; |
using System.Threading.Tasks; |
using wasDAVClient; |
using wasDAVClient.Helpers; |
using wasSharp; |
using wasSharp.Linq; |
using wasSharp.Web.Utilities; |
@@ -28,39 +29,47 @@ |
/// <returns>a list of Corrade files contained in the repository</returns> |
public static async Task<IEnumerable<string>> GetReleaseFiles(string server, Version release, int timeout) |
{ |
using (var client = new Client(new NetworkCredential()) |
try |
{ |
Timeout = timeout, |
UserAgent = STITCH_CONSTANTS.USER_AGENT.Product.Name, |
UserAgentVersion = STITCH_CONSTANTS.USER_AGENT.Product.Version, |
Server = server, |
BasePath = string.Join(@"/", STITCH_CONSTANTS.UPDATE_PATH, |
STITCH_CONSTANTS.PROGRESSIVE_PATH) |
}) |
{ |
return (await client |
.List( |
string.Join( |
Constants.DIRECTORY_SEPARATOR, |
$"{release.Major}.{release.Minor}", |
STITCH_CONSTANTS.UPDATE_DATA_PATH), |
Constants.DavDepth.ALL) |
) |
.Select(o => string.Join(Constants.DIRECTORY_SEPARATOR, |
o.Href.PathSplit(Constants.DIRECTORY_SEPARATOR.First()) |
.Select(part => |
part.Trim(Constants.DIRECTORY_SEPARATOR.First()).URLUnescapeDataString() |
) |
.Where(part => !string.IsNullOrEmpty(part)) |
.SequenceExceptAny(new[] { |
STITCH_CONSTANTS.UPDATE_PATH, |
STITCH_CONSTANTS.PROGRESSIVE_PATH, |
using (var client = new Client(new NetworkCredential()) |
{ |
Timeout = timeout, |
UserAgent = STITCH_CONSTANTS.USER_AGENT.Product.Name, |
UserAgentVersion = STITCH_CONSTANTS.USER_AGENT.Product.Version, |
Server = server, |
BasePath = string.Join(@"/", STITCH_CONSTANTS.UPDATE_PATH, |
STITCH_CONSTANTS.PROGRESSIVE_PATH) |
}) |
{ |
return (await client |
.List( |
string.Join( |
Constants.DIRECTORY_SEPARATOR, |
$"{release.Major}.{release.Minor}", |
STITCH_CONSTANTS.UPDATE_DATA_PATH |
}) |
STITCH_CONSTANTS.UPDATE_DATA_PATH), |
Constants.DavDepth.ALL) |
) |
); |
.Select(o => string.Join(Constants.DIRECTORY_SEPARATOR, |
o.Href.PathSplit(Constants.DIRECTORY_SEPARATOR.First()) |
.Select(part => |
part.Trim(Constants.DIRECTORY_SEPARATOR.First()).URLUnescapeDataString() |
) |
.Where(part => !string.IsNullOrEmpty(part)) |
.SequenceExceptAny(new[] |
{ |
STITCH_CONSTANTS.UPDATE_PATH, |
STITCH_CONSTANTS.PROGRESSIVE_PATH, |
$"{release.Major}.{release.Minor}", |
STITCH_CONSTANTS.UPDATE_DATA_PATH |
}) |
) |
); |
} |
} |
catch (wasDAVConflictException ex) |
{ |
throw new StitchException(ex); |
} |
} |
|
/// <summary> |
@@ -72,38 +81,48 @@ |
/// <returns>a list of Corrade files contained in the repository</returns> |
public static IEnumerable<KeyValuePair<string, string>> GetReleaseFileHashes(string server, Version release, int timeout) |
{ |
using (var client = new Client(new NetworkCredential()) |
try |
{ |
Timeout = timeout, |
UserAgent = STITCH_CONSTANTS.USER_AGENT.Product.Name, |
UserAgentVersion = STITCH_CONSTANTS.USER_AGENT.Product.Version, |
Server = server, |
BasePath = string.Join(@"/", STITCH_CONSTANTS.UPDATE_PATH, |
STITCH_CONSTANTS.PROGRESSIVE_PATH) |
}) |
{ |
return client |
.List( |
string.Join( |
Constants.DIRECTORY_SEPARATOR, |
$"{release.Major}.{release.Minor}", |
STITCH_CONSTANTS.UPDATE_DATA_PATH), |
using (var client = new Client(new NetworkCredential()) |
{ |
Timeout = timeout, |
UserAgent = STITCH_CONSTANTS.USER_AGENT.Product.Name, |
UserAgentVersion = STITCH_CONSTANTS.USER_AGENT.Product.Version, |
Server = server, |
BasePath = string.Join(@"/", STITCH_CONSTANTS.UPDATE_PATH, |
STITCH_CONSTANTS.PROGRESSIVE_PATH) |
}) |
{ |
return client |
.List( |
string.Join( |
Constants.DIRECTORY_SEPARATOR, |
$"{release.Major}.{release.Minor}", |
STITCH_CONSTANTS.UPDATE_DATA_PATH), |
Constants.DavDepth.ALL) |
.Result |
.AsParallel() |
.Where(item => !item.IsCollection) |
.ToDictionary(o => string.Join(Constants.DIRECTORY_SEPARATOR, |
.Result |
.AsParallel() |
.Where(item => !item.IsCollection) |
.ToDictionary(o => string.Join(Constants.DIRECTORY_SEPARATOR, |
o.Href.PathSplit(Constants.DIRECTORY_SEPARATOR.First()) |
.Select(part => part.Trim(Constants.DIRECTORY_SEPARATOR.First()).URLUnescapeDataString() |
) |
.Where(part => !string.IsNullOrEmpty(part)) |
.SequenceExceptAny(new[] { |
.Select(part => part.Trim(Constants.DIRECTORY_SEPARATOR.First()) |
.URLUnescapeDataString() |
) |
.Where(part => !string.IsNullOrEmpty(part)) |
.SequenceExceptAny(new[] |
{ |
STITCH_CONSTANTS.UPDATE_PATH, |
STITCH_CONSTANTS.PROGRESSIVE_PATH, |
$"{release.Major}.{release.Minor}", |
STITCH_CONSTANTS.UPDATE_DATA_PATH |
})), o => System.Security.Cryptography.SHA1.Create().ToHex(client.Download(o.Href).Result)); |
})), |
o => System.Security.Cryptography.SHA1.Create().ToHex(client.Download(o.Href).Result)); |
} |
} |
catch (wasDAVException ex) |
{ |
throw new StitchException(ex); |
} |
} |
} |
} |