/// <summary>
        /// Gets a CKAN client for the configured repository.
        /// </summary>
        /// <returns></returns>
        public static CkanClient GetClient()
        {
            CkanClient client = new CkanClient(SettingsHelper.GetRepositoryHost());

            client.Timeout = SettingsHelper.GetRepositoryRequestTimeout();
            return(client);
        }
        public void ShouldReturnRevisionIds()
        {
            CkanClient client = CkanApiHelper.GetCkanClient();

            List <string> revisionIds = client.GetRevisionIds();

            Console.WriteLine("Revision ids found: {0}", revisionIds.Count);

            Assert.NotEmpty(revisionIds);
        }
        public void ShouldReturnGroupIds()
        {
            CkanClient client = CkanApiHelper.GetCkanClient();

            List <string> groups = client.GetGroupIds();

            Console.WriteLine("Groups found: {0}", groups.Count);

            Assert.NotEmpty(groups);
        }
        public void ShouldReturnPackageIds()
        {
            CkanClient client = CkanApiHelper.GetCkanClient();

            List <string> packageIds = client.GetPackageIds();

            Console.WriteLine("Package ids found: {0}", packageIds.Count);

            Assert.NotEmpty(packageIds);
        }
        public void ShouldReturnLicenses()
        {
            CkanClient client = CkanApiHelper.GetCkanClient();

            List <License> licenses = client.GetLicenses();

            Console.WriteLine("Licenses found: {0}", licenses.Count);

            Assert.NotEmpty(licenses);
        }
        public void ShouldReturnRevisionById()
        {
            CkanClient client = CkanApiHelper.GetCkanClient();

            List <string> revisionIds = client.GetRevisionIds();

            Revision revision = client.GetRevision(revisionIds[0]);

            Assert.NotNull(revision);
        }
        public void ShouldReturnTags()
        {
            CkanClient client = CkanApiHelper.GetCkanClient();

            List <string> tags = client.GetTags();

            Console.WriteLine("Groups found: {0}", tags.Count);

            Assert.NotEmpty(tags);
        }
Пример #8
0
        public void ShouldReturnPackagesWithTag()
        {
            CkanClient client = CkanApiHelper.GetCkanClient();

            PackageSearchParameters parameters = new PackageSearchParameters();

            parameters.Tags.Add("colorado");

            PackageSearchResponse <Package> response = client.SearchPackages <Package>(parameters);

            Assert.NotEmpty(response.Results);
        }
Пример #9
0
        public void ShouldReturnPackageIdsWithQuery()
        {
            CkanClient client = CkanApiHelper.GetCkanClient();

            PackageSearchParameters parameters = new PackageSearchParameters();

            parameters.Query = "bike";

            PackageSearchResponse <string> response = client.SearchPackages <string>(parameters);

            Assert.NotEmpty(response.Results);
        }
Пример #10
0
        public void ShouldReturnResourcesIds()
        {
            CkanClient client = CkanApiHelper.GetCkanClient();

            var parameters = new ResourceSearchParameters();

            parameters.Description = "city";

            var response = client.SearchResources <string>(parameters);

            Assert.NotEmpty(response.Results);
        }
Пример #11
0
        public void ShouldReturnSinglePackagesWithQueryLimit()
        {
            CkanClient client = CkanApiHelper.GetCkanClient();

            PackageSearchParameters parameters = new PackageSearchParameters();

            parameters.Query  = "bike";
            parameters.Offset = 0;
            parameters.Limit  = 1;

            PackageSearchResponse <Package> response = client.SearchPackages <Package>(parameters);

            Assert.True(response.Results.Count == 1);
        }
        public void ShouldReturnPackageByIdAndName()
        {
            CkanClient client = CkanApiHelper.GetCkanClient();

            List <string> packageIds = client.GetPackageIds();

            Package package = client.GetPackage(packageIds[0]);

            Assert.NotNull(package);

            package = client.GetPackage(package.Name);

            Assert.NotNull(package);
        }
        public void ShouldReturnGroupByIdAndName()
        {
            CkanClient client = CkanApiHelper.GetCkanClient();

            List <string> groups = client.GetGroupIds();

            Group group = client.GetGroup(groups[0]);

            Assert.NotNull(group);

            group = client.GetGroup(group.Name);

            Assert.NotNull(group);
        }
Пример #14
0
        public void ShouldReturnResourcesWithLimitAndOffset()
        {
            CkanClient client = CkanApiHelper.GetCkanClient();

            var parameters = new ResourceSearchParameters();

            parameters.Limit       = 1;
            parameters.Offset      = 1;
            parameters.Description = "city";

            var response = client.SearchResources <Resource>(parameters);

            Assert.True(response.Results.Count == 1);
        }
Пример #15
0
        public void ShouldReturnResourcesByDescription()
        {
            CkanClient client = CkanApiHelper.GetCkanClient();

            var parameters = new ResourceSearchParameters();

            parameters.Description = "city";

            var response = client.SearchResources <Resource>(parameters);

            Assert.NotEmpty(response.Results);

            Assert.Contains("city", response.Results[0].Description, StringComparison.InvariantCultureIgnoreCase);
        }
Пример #16
0
        public void ShouldReturnPackagesWithGroup()
        {
            CkanClient client = CkanApiHelper.GetCkanClient();

            PackageSearchParameters parameters = new PackageSearchParameters();

            parameters.Groups.Add("arvada");

            PackageSearchResponse <Package> response = client.SearchPackages <Package>(parameters);

            Assert.NotEmpty(response.Results);

            foreach (var result in response.Results)
            {
                Assert.Contains <string>("arvada", result.Groups);
            }
        }
Пример #17
0
        public void ShouldReturnResourcesByFormat()
        {
            CkanClient client = CkanApiHelper.GetCkanClient();

            var parameters = new ResourceSearchParameters();

            parameters.Format = "kml";

            var response = client.SearchResources <Resource>(parameters);

            Assert.NotEmpty(response.Results);

            foreach (var result in response.Results)
            {
                Assert.Contains("kml", result.Format, StringComparison.InvariantCultureIgnoreCase);
            }
        }
        public ActionResult Clear(string token, string id)
        {
            CheckToken(token);

            CkanClient client = CkanHelper.GetClient();

            if (String.IsNullOrEmpty(id))
            {
                client.ClearCache();
            }
            else
            {
                client.ClearCache(id);
            }

            return(RedirectToAction("Index", new { token = token }));
        }
        //
        // GET: /Cache/
        public ActionResult Index(string token)
        {
            CheckToken(token);

            CkanClient client      = CkanHelper.GetClient();
            var        cachedItems = client.GetCachedRequests();

            // Set up the breadcrumbs for this action
            var breadCrumbs = new BreadCrumbs();

            breadCrumbs.Add(new BreadCrumb(SettingsHelper.GetCatalogBreadcrumbsBaseLabel(), "Index", "Home"));
            breadCrumbs.Add(new BreadCrumb("Admin"));
            breadCrumbs.Add(new BreadCrumb("Cache"));
            ViewData["BreadCrumbs"] = breadCrumbs;

            // Disable analytics on admin pages
            ViewData["DisableAnalytics"] = true;

            return(View(cachedItems));
        }
        /// <summary>
        /// Gets a trie of package search suggestions a package search.
        /// If cached, the trie will be returned from the
        /// cache, otherwise it will be created and cached.
        /// </summary>
        /// <param name="client"></param>
        /// <param name="searchParameters"></param>
        /// <param name="cacheSettings"></param>
        /// <returns></returns>
        public static Trie GetTrie(CkanClient client, PackageSearchParameters searchParameters, CacheSettings cacheSettings)
        {
            Trie trie = null;

            // Get the trie from the cache
            string key = CkanClient.CacheKeyPrefix + "AutoComplete";

            // Get the memorycache
            MemoryCache cache = MemoryCache.Default;

            // Get the cached entry if it exists
            CacheEntry cacheEntry = cache[key] as CacheEntry;

            if (cacheEntry == null)
            {
                // Generate the trie
                trie = GenerateTrie(client, searchParameters, cacheSettings);

                cacheEntry            = new CacheEntry();
                cacheEntry.Data       = trie;
                cacheEntry.Label      = "Autocomplete index";
                cacheEntry.LastCached = DateTime.Now;
                cacheEntry.Duration   = cacheSettings.Duration;

                CacheItemPolicy policy = new CacheItemPolicy();
                policy.AbsoluteExpiration = DateTimeOffset.Now.Add(cacheSettings.Duration);

                // Add the trie to the cache
                cache.Set(key, cacheEntry, policy);
            }
            else
            {
                // Get the trie from the cache
                trie = (Trie)cacheEntry.Data;
            }

            return(trie);
        }
        /// <summary>
        /// Generates a trie of suggestions based on attributes of packages in the catalog
        /// </summary>
        /// <param name="client"></param>
        /// <param name="searchParameters"></param>
        /// <param name="cacheSettings"></param>
        /// <returns></returns>
        private static Trie GenerateTrie(CkanClient client, PackageSearchParameters searchParameters, CacheSettings cacheSettings)
        {
            // Create an empty trie
            Trie trie = new Trie();

            // Run the search to get all packages
            PackageSearchResponse<Package> response = client.SearchPackages<Package>(searchParameters, cacheSettings);

            // Add the entrys to the trie
            foreach (var package in response.Results)
	        {
                // Add the package title
                trie.Add(package.Title);

                // Add the package tags (removing hyphens which represent spaces)
                foreach (var tag in package.Tags)
                {
                    trie.Add(tag.Replace("-"," "));
                }
	        }

            return trie;
        }
        /// <summary>
        /// Generates a trie of suggestions based on attributes of packages in the catalog
        /// </summary>
        /// <param name="client"></param>
        /// <param name="searchParameters"></param>
        /// <param name="cacheSettings"></param>
        /// <returns></returns>
        private static Trie GenerateTrie(CkanClient client, PackageSearchParameters searchParameters, CacheSettings cacheSettings)
        {
            // Create an empty trie
            Trie trie = new Trie();

            // Run the search to get all packages
            PackageSearchResponse <Package> response = client.SearchPackages <Package>(searchParameters, cacheSettings);

            // Add the entrys to the trie
            foreach (var package in response.Results)
            {
                // Add the package title
                trie.Add(package.Title);

                // Add the package tags (removing hyphens which represent spaces)
                foreach (var tag in package.Tags)
                {
                    trie.Add(tag.Replace("-", " "));
                }
            }

            return(trie);
        }
        /// <summary>
        /// Gets a trie of package search suggestions a package search.  
        /// If cached, the trie will be returned from the 
        /// cache, otherwise it will be created and cached.
        /// </summary>
        /// <param name="client"></param>
        /// <param name="searchParameters"></param>
        /// <param name="cacheSettings"></param>
        /// <returns></returns>
        public static Trie GetTrie(CkanClient client, PackageSearchParameters searchParameters, CacheSettings cacheSettings)
        {
            Trie trie = null;

            // Get the trie from the cache
            string key = CkanClient.CacheKeyPrefix + "AutoComplete";

            // Get the memorycache
            MemoryCache cache = MemoryCache.Default;

            // Get the cached entry if it exists
            CacheEntry cacheEntry = cache[key] as CacheEntry;
            if (cacheEntry == null) {
                // Generate the trie
                trie = GenerateTrie(client, searchParameters, cacheSettings);

                cacheEntry = new CacheEntry();
                cacheEntry.Data = trie;
                cacheEntry.Label = "Autocomplete index";
                cacheEntry.LastCached = DateTime.Now;
                cacheEntry.Duration = cacheSettings.Duration;

                CacheItemPolicy policy = new CacheItemPolicy();
                policy.AbsoluteExpiration = DateTimeOffset.Now.Add(cacheSettings.Duration);

                // Add the trie to the cache
                cache.Set(key, cacheEntry, policy);
            }
            else
            {
                // Get the trie from the cache
                trie = (Trie)cacheEntry.Data;
            }

            return trie;
        }
 /// <summary>
 /// Gets a CKAN client for the configured repository.
 /// </summary>
 /// <returns></returns>
 public static CkanClient GetClient()
 {
     CkanClient client = new CkanClient(SettingsHelper.GetRepositoryHost());
     client.Timeout = SettingsHelper.GetRepositoryRequestTimeout();
     return client;
 }