public IEnumerable <SimpleDataSet> GetAllData(string indexType) { var umbContxt = EnsureUmbracoContext(); var projects = umbContxt.ContentCache.GetByXPath("//Community/Projects//Project [projectLive='1']").ToArray(); var allProjectIds = projects.Select(x => x.Id).ToArray(); var allProjectKarma = Utils.GetProjectTotalVotes(); var allProjectWikiFiles = WikiFile.CurrentFiles(allProjectIds); var allProjectDownloads = Utils.GetProjectTotalPackageDownload(); var allCompatVersions = Utils.GetProjectCompatibleVersions(); var mostRecentDownloadDate = WikiFile.GetMostRecentDownloadDate(); var downloadStats = WikiFile.GetMonthlyDownloadStatsByProject(mostRecentDownloadDate.Subtract(TimeSpan.FromDays(365))); foreach (var project in projects) { LogHelper.Debug(this.GetType(), "Indexing " + project.Name); var simpleDataSet = new SimpleDataSet { NodeDefinition = new IndexedNode(), RowData = new Dictionary <string, string>() }; var projectDownloads = allProjectDownloads.ContainsKey(project.Id) ? allProjectDownloads[project.Id] : 0; var projectKarma = allProjectKarma.ContainsKey(project.Id) ? allProjectKarma[project.Id] : 0; var projectFiles = allProjectWikiFiles.ContainsKey(project.Id) ? allProjectWikiFiles[project.Id].ToArray() : new WikiFile[] { }; var projectVersions = allCompatVersions.ContainsKey(project.Id) ? allCompatVersions[project.Id] : Enumerable.Empty <string>(); yield return(MapProjectToSimpleDataIndexItem( downloadStats, mostRecentDownloadDate, project, simpleDataSet, indexType, projectKarma, projectFiles, projectDownloads, projectVersions)); } }
private void UpdateProjectExamineIndex(IPublishedContent content, int downloads) { var simpleDataSet = new SimpleDataSet { NodeDefinition = new IndexedNode(), RowData = new Dictionary <string, string>() }; var projectVotes = Utils.GetProjectTotalVotes(content.Id); var files = WikiFile.CurrentFiles(content.Id).ToArray(); var compatVersions = Utils.GetProjectCompatibleVersions(content.Id) ?? new List <string>(); var downloadStats = WikiFile.GetMonthlyDownloadStatsByProject( content.Id, DateTime.Now.Subtract(TimeSpan.FromDays(365))); var simpleDataIndexer = (SimpleDataIndexer)ExamineManager.Instance.IndexProviderCollection["projectIndexer"]; simpleDataSet = ((ProjectNodeIndexDataService)simpleDataIndexer.DataService) .MapProjectToSimpleDataIndexItem(downloadStats, DateTime.Now, content, simpleDataSet, "project", projectVotes, files, downloads, compatVersions); if (simpleDataSet.NodeDefinition.Type == null) { simpleDataSet.NodeDefinition.Type = "project"; } var xml = simpleDataSet.RowData.ToExamineXml(simpleDataSet.NodeDefinition.NodeId, simpleDataSet.NodeDefinition.Type); simpleDataIndexer.ReIndexNode(xml, "project"); }
public IEnumerable <SimpleDataSet> GetAllData(string indexType) { var umbContxt = EnsureUmbracoContext(); var projects = umbContxt.ContentCache.GetByXPath("//Community/Projects//Project [projectLive='1']").ToArray(); var nugetService = new NugetPackageDownloadService(); var nugetDownloads = nugetService.GetNugetPackageDownloads(); var allProjectIds = projects.Select(x => x.Id).ToArray(); var allProjectKarma = Utils.GetProjectTotalVotes(); var allProjectWikiFiles = WikiFile.CurrentFiles(allProjectIds); var allProjectDownloads = Utils.GetProjectTotalPackageDownload(); var allCompatVersions = Utils.GetProjectCompatibleVersions(); var mostRecentDownloadDate = WikiFile.GetMostRecentDownloadDate(); // if most recent download date is MinValue then there is no download data to query var downloadStats = mostRecentDownloadDate == DateTime.MinValue ? new Dictionary <int, MonthlyProjectDownloads>() : WikiFile.GetMonthlyDownloadStatsByProject(mostRecentDownloadDate.Subtract(TimeSpan.FromDays(365))); foreach (var project in projects) { LogHelper.Debug(this.GetType(), "Indexing " + project.Name); var simpleDataSet = new SimpleDataSet { NodeDefinition = new IndexedNode(), RowData = new Dictionary <string, string>() }; var projectDownloads = allProjectDownloads.ContainsKey(project.Id) ? allProjectDownloads[project.Id] : 0; var projectKarma = allProjectKarma.ContainsKey(project.Id) ? allProjectKarma[project.Id] : 0; var projectFiles = allProjectWikiFiles.ContainsKey(project.Id) ? allProjectWikiFiles[project.Id].ToArray() : new WikiFile[] { }; var projectVersions = allCompatVersions.ContainsKey(project.Id) ? allCompatVersions[project.Id] : Enumerable.Empty <string>(); var nugetPackageId = nugetService.GetNuGetPackageId(project); int?dailyNugetDownLoads = null; if (!string.IsNullOrWhiteSpace(nugetPackageId)) { var packageInfo = nugetDownloads.FirstOrDefault(x => x.PackageId == nugetPackageId); if (packageInfo != null) { projectDownloads += packageInfo.TotalDownLoads; dailyNugetDownLoads = packageInfo.AverageDownloadPerDay; } } yield return(MapProjectToSimpleDataIndexItem( downloadStats, mostRecentDownloadDate, project, simpleDataSet, indexType, projectKarma, projectFiles, projectDownloads, projectVersions, dailyNugetDownLoads)); } }
private void UpdateProjectExamineIndex(IPublishedContent content, int downloads) { if (content == null) { return; } var simpleDataSet = new SimpleDataSet { NodeDefinition = new IndexedNode(), RowData = new Dictionary <string, string>() }; var projectVotes = Utils.GetProjectTotalVotes(content.Id); var files = WikiFile.CurrentFiles(content.Id).ToArray(); var compatVersions = Utils.GetProjectCompatibleVersions(content.Id) ?? new List <string>(); var downloadStats = WikiFile.GetMonthlyDownloadStatsByProject( content.Id, DateTime.Now.Subtract(TimeSpan.FromDays(365))); var nugetService = new OurUmbraco.Community.Nuget.NugetPackageDownloadService(); var nugetPackageId = nugetService.GetNuGetPackageId(content); int?dailyNugetDownLoads = null; if (!nugetPackageId.IsNullOrWhiteSpace()) { var nugetDownloads = nugetService.GetNugetPackageDownloads(); var packageInfo = nugetDownloads.FirstOrDefault(x => x.PackageId == nugetPackageId); if (packageInfo != null) { downloads += packageInfo.TotalDownLoads; dailyNugetDownLoads = packageInfo.AverageDownloadPerDay; } } var simpleDataIndexer = (SimpleDataIndexer)ExamineManager.Instance.IndexProviderCollection["projectIndexer"]; simpleDataSet = ((ProjectNodeIndexDataService)simpleDataIndexer.DataService) .MapProjectToSimpleDataIndexItem(downloadStats, DateTime.Now, content, simpleDataSet, "project", projectVotes, files, downloads, compatVersions, dailyNugetDownLoads); if (simpleDataSet.NodeDefinition.Type == null) { simpleDataSet.NodeDefinition.Type = "project"; } var xml = simpleDataSet.RowData.ToExamineXml(simpleDataSet.NodeDefinition.NodeId, simpleDataSet.NodeDefinition.Type); simpleDataIndexer.ReIndexNode(xml, "project"); }