Пример #1
0
        private IList <IPackage> GetFilteredPackageList(string filterString)
        {
            var filter = new DatabasePackageCatalogFilter(PackageCacheFilename);

            return(filter.Filter(filterString).ToList());
        }
Пример #2
0
 private IList<IPackage> GetFilteredPackageList(string filterString) {
     var filter = new DatabasePackageCatalogFilter(PackageCacheFilename);
     return filter.Filter(filterString).ToList();
 }
Пример #3
0
        public async Task<IEnumerable<IPackage>> GetCatalogPackagesAsync(string filterText, Uri registryUrl = null) {
            IEnumerable<IPackage> packages = null;
            using (var semaphore = GetDatabaseSemaphore()) {
                // Wait until file is downloaded/parsed if another download is already in session.
                // Allows user to open multiple npm windows and show progress bar without file-in-use errors.
                bool success = semaphore.WaitOne(10);
                if (!success) {
                    OnOutputLogged(Resources.ErrorCatalogInUse);
                    // Return immediately so that the user can explicitly decide to refresh on failure.
                    return null;
                }

                try {
                    registryUrl = registryUrl ?? await GetRegistryUrl();
                    RegistryFileMapping registryFileMapping = null;
                    using (var db = new SQLiteConnection(DatabaseCacheFilePath)) {
                        registryFileMapping = db.Table<RegistryFileMapping>().FirstOrDefault(info => info.RegistryUrl == registryUrl.ToString());
                    }

                    if (registryFileMapping != null) {
                        string registryFileLocation = Path.Combine(CachePath, registryFileMapping.DbFileLocation, RegistryCacheFilename);

                        var packagesEnumerable = new DatabasePackageCatalogFilter(registryFileLocation).Filter(filterText);
                        packages = await Task.Run(() => packagesEnumerable.ToList());
                    }
                } catch (Exception e) {
                    OnOutputLogged(e.ToString());
                    throw;
                } finally {
                    semaphore.Release();
                }
            }
            return packages;
        }