/// <summary> /// Get the number of packages in the CKAN group. /// </summary> /// <returns></returns> public static int GetPackageCount() { var searchParameters = new PackageSearchParameters(); searchParameters.Groups.Add(SettingsHelper.GetCatalogGroup()); searchParameters.Limit = 0; int count = CkanHelper.GetClient().SearchPackages <string>(searchParameters, new CacheSettings(SettingsHelper.GetPackageCountCacheDuration(), SettingsHelper.GetPackageCountCacheBackgroundUpdate())).Count; return(count); }
/// <summary> /// Get all packages from the CKAN group. /// </summary> /// <returns></returns> public static List <Package> GetAllPackages() { CacheSettings settings = new CacheSettings(SettingsHelper.GetAllPackagesCacheDuration(), SettingsHelper.GetAllPackagesCacheBackgroundUpdate()); // Create the CKAN search parameters var searchParameters = new PackageSearchParameters(); searchParameters.Groups.Add(SettingsHelper.GetCatalogGroup()); searchParameters.Limit = GetPackageCount(); // Collect the results PackageSearchResponse <Package> response = CkanHelper.GetClient().SearchPackages <Package>(searchParameters, settings); return(response.Results); }
/// <summary> /// Get search suggestions for all packages in the catalog group. Uses the all packages cache /// to build a search index that is also cached for performance. /// </summary> /// <param name="prefix"></param> /// <returns></returns> public static List <string> GetPackageSearchSuggestions(string prefix) { CacheSettings settings = new CacheSettings(SettingsHelper.GetAllPackagesCacheDuration(), SettingsHelper.GetAllPackagesCacheBackgroundUpdate()); // Create the CKAN search parameters to get all packages in the group var searchParameters = new PackageSearchParameters(); searchParameters.Groups.Add(SettingsHelper.GetCatalogGroup()); searchParameters.Limit = GetPackageCount(); // Get a list of search suggestions List <string> suggestions = CkanHelper.GetClient().GetPackageSearchSuggestions(prefix, searchParameters, settings); return(suggestions); }
/// <summary> /// Provides support for auto-start. See /// http://weblogs.asp.net/scottgu/archive/2009/09/15/auto-start-asp-net-applications-vs-2010-and-net-4-0-series.aspx /// </summary> /// <param name="parameters"></param> public void Preload(string[] parameters) { // Configure log4net log4net.Config.XmlConfigurator.Configure(); log.Debug("Preloading application."); // Start caching of auto-cached CKAN requests if we aren't in offline mode try { if (!SettingsHelper.GetOfflineEnabled()) { log.Debug("Preloading package count cache."); if (SettingsHelper.GetPackageCountCacheBackgroundUpdate()) { CkanHelper.GetPackageCount(); } log.Debug("Preloading all packages cache."); if (SettingsHelper.GetAllPackagesCacheBackgroundUpdate()) { CkanHelper.GetAllPackages(); } log.Debug("Preloading all licenses cache."); if (SettingsHelper.GetAllLicensesCacheBackgroundUpdate()) { CkanHelper.GetLicenses(); } } else { log.Debug("Application is offline. Cache will not be preloaded."); } } catch (Exception ex) { // If any errors occur while trying to start caching, log this and clear the error. // Any new page request will re-attempt to start the caching process log.Error("Unable to starting background caching on preload", ex); } log.Debug("Preloading application complete."); }
/// <summary> /// Get all tags from the CKAN group. /// </summary> /// <returns></returns> public static List <Tag> GetAllTags(int limit) { CacheSettings settings = new CacheSettings(SettingsHelper.GetAllPackagesCacheDuration(), SettingsHelper.GetAllPackagesCacheBackgroundUpdate()); // Create the CKAN search parameters var searchParameters = new PackageSearchParameters(); searchParameters.Groups.Add(SettingsHelper.GetCatalogGroup()); // Collect the results List <Tag> tags = CkanHelper.GetClient().SearchPackagesGetTagCounts(searchParameters, settings); // Remove filtered tags tags = TagHelper.FilterTags(tags); if (limit > 0) { tags = TagHelper.LimitTags(tags, limit); } return(tags); }
/// <summary> /// Get the licenses from the repository. Caches /// the licenses for 1 hour as these don't update frequently. /// TODO: Implement common caching proxy for cachable requests. /// </summary> /// <returns></returns> public static List <License> GetLicenses() { CacheSettings settings = new CacheSettings(SettingsHelper.GetAllLicensesCacheDuration(), SettingsHelper.GetAllLicensesCacheBackgroundUpdate()); return(CkanHelper.GetClient().GetLicenses(settings)); }