Example #1
0
        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);
        }
Example #2
0
        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;
            }));
        }