in CommandLine/XblConfig/Program.cs [119:172]
private static async Task<int> GetDocumentsAsync(GetDocumentsOptions options)
{
if (options.DocumentType == DocumentType.Sandbox && string.IsNullOrEmpty(options.Sandbox))
{
throw new ArgumentException("Sandbox must be specified when obtaining sandbox documents.");
}
if (options.DocumentType == DocumentType.Sandbox && options.Scid == Guid.Empty)
{
throw new ArgumentException("SCID must be specified when obtaining sandbox documents.");
}
if (options.DocumentType == DocumentType.Account)
{
options.Sandbox = null;
}
EnsureDirectory(options.Destination);
Task<DocumentsResponse> documentsTask;
if (options.DocumentType == DocumentType.Sandbox)
{
Console.WriteLine("Obtaining sandbox documents.");
documentsTask = ConfigurationManager.GetSandboxDocumentsAsync(options.Scid, options.Sandbox);
}
else
{
Console.WriteLine("Obtaining account documents.");
documentsTask = ConfigurationManager.GetAccountDocumentsAsync(options.AccountId);
}
using (DocumentsResponse documents = await documentsTask)
{
Console.WriteLine($"ETag: {documents.ETag}");
Console.WriteLine($"Version: {documents.Version}");
Console.WriteLine("Files: ");
foreach (ConfigFileStream file in documents.Documents)
{
string path = Path.Combine(options.Destination, file.Name);
using (FileStream fileStream = File.Create(path))
{
await file.Stream.CopyToAsync(fileStream);
}
Console.WriteLine($" - {file.Name}");
}
SaveETag(documents.ETag, options.Destination, options.Sandbox);
Console.WriteLine($"Saved {documents.Documents.Count()} files to {options.Destination}.");
}
return 0;
}