public void DownloadAssetTest() { var instance = new ProjectsApi(); var proj = instance.GetProject(Helper.CurrentUser.Username, "demo"); var runApi = new Api.RunsApi(); // energy simu var run = runApi.GetRun(Helper.CurrentUser.Username, "demo", "908adb92-6339-4e34-8f01-7ddb55c52da2"); var runInfo = new RunInfo(proj, run); var assets = runInfo.GetOutputAssets("grasshopper").OfType <RunAssetBase>().ToList(); var inputs = runInfo.GetInputAssets(); assets.AddRange(inputs); var task = runInfo.DownloadRunAssetsAsync(assets, useCached: false); var downloaded = task.Result; // download cached. var task2 = runInfo.DownloadRunAssetsAsync(assets, useCached: true); var downloadedCached = task2.Result; var allDownloaded = downloaded.Zip(downloadedCached, (d, dc) => new { nonCached = d, Cached = dc }); foreach (var savedAsset in allDownloaded) { var item = savedAsset.nonCached; var itemCached = savedAsset.Cached; if (item.IsPathAsset()) { Console.WriteLine($"Is Saved {item.Name}:{item.IsSaved()} to {item.LocalPath}"); Console.WriteLine($"Is Saved (cached) {itemCached.Name}:{itemCached.IsSaved()} to {itemCached.LocalPath}"); Assert.IsTrue(item.IsSaved()); Assert.IsTrue(item.LocalPath == itemCached.LocalPath); } else { var v = string.Join(",", item.Value); var v2 = string.Join(",", itemCached.Value); Console.WriteLine($"Value {item.Name}: {v}"); Console.WriteLine($"Value(cached) {itemCached.Name}: {v2}"); Assert.IsTrue(!string.IsNullOrEmpty(v)); Assert.IsTrue(v == v2); } } }
private static void DownloadAssets(Project proj) { var runApi = new PollinationSDK.Api.RunsApi(); var firstRun = runApi.ListRuns(proj.Owner.Name, proj.Name, page: 1, perPage: 1).Resources.First(); var runInfo = new RunInfo(proj, firstRun); // get all output assets to download var assets = runInfo.GetOutputAssets("grasshopper").OfType <RunAssetBase>().ToList(); var inputAssets = runInfo.GetInputAssets(); assets = assets.Concat(inputAssets).ToList(); var savedPath = System.IO.Path.GetTempPath(); var task = Task.Run(async() => await DownloadAsync(runInfo, assets, savedPath)); var filePaths = task.GetAwaiter().GetResult(); foreach (var item in filePaths) { Console.WriteLine($"Asset: {item.Name}\nSaved Path: {item.LocalPath}"); } }