public PackagesStatusResult GetPackagesStatus(IEnumerable <PackagingSource> sources) { var result = new PackagesStatusResult { Entries = new List <UpdatePackageEntry>(), Errors = new List <Exception>() }; foreach (var source in sources) { var sourceResult = GetPackages(source); result.Entries = result.Entries.Concat(sourceResult.Entries); result.Errors = result.Errors.Concat(sourceResult.Errors); } return(result); }
private PackagesStatusResult GetPackages(PackagingSource packagingSource) { return(_cacheManager.Get(packagingSource.FeedUrl, ctx => { // Refresh every minute or when signal was triggered ctx.Monitor(_clock.When(TimeSpan.FromMinutes(5))); ctx.Monitor(_signals.When("PackageUpdateService")); // We cache exception because we are calling on a network feed, and failure may // take quite some time. var result = new PackagesStatusResult { Entries = new List <UpdatePackageEntry>(), Errors = new List <Exception>() }; try { result.Entries = GetPackagesWorker(packagingSource); } catch (Exception e) { result.Errors = new[] { e }; } return result; })); }