private async Task <Graph> GenerateDatasetGraphAsync(string csvPath, JObject metadataJson, Uri metadataUri) { var parser = new JsonMetadataParser(null, metadataUri); var tableGroup = new TableGroup(); try { var tableMeta = parser.ParseTable(tableGroup, metadataJson); if (tableMeta == null) { throw new WorkerException("CSV Conversion failed. Unable to read CSV table metadata."); } } catch (MetadataParseException ex) { Log.Error(ex, "Invalid CSV table metadata: " + ex.Message); throw new WorkerException(ex, "CSV conversion failed. Invalid CSV table metadata: " + ex.Message); } var graph = new Graph(); ProgressLog.Info("Running CSV to RDF conversion"); var graphHandler = new GraphHandler(graph); var tableResolver = new LocalTableResolver(tableGroup.Tables[0].Url, csvPath); var converter = new Converter(graphHandler, tableResolver, ConverterMode.Minimal, (msg) => ProgressLog.Error(msg), this, reportInterval: CsvConversionReportInterval); await converter.ConvertAsync(tableGroup); if (converter.Errors.Any()) { foreach (var e in converter.Errors) { ProgressLog.Error(e); } throw new WorkerException("One or more errors where encountered during the CSV to RDF conversion."); } return(graph); }
private async Task <ContactInfo> GetPublisherContactInfo(string ownerId, string repoId) { try { ProgressLog.Info("Attempting to retrieve publisher contact information from repository settings"); // get repoSettings var repoSettings = await RepoSettingsStore.GetRepoSettingsAsync(ownerId, repoId); if (repoSettings?.DefaultPublisher != null) { ProgressLog.Info("Returning publisher from repository settings"); return(repoSettings.DefaultPublisher); } // no repo settings publisher, try at owner level ProgressLog.Info("No publisher info found in repository settings"); if (ownerId != null) { ProgressLog.Info("Attempting to retrieve publisher contact information from repository owner's settings"); var ownerSettings = await OwnerSettingsStore.GetOwnerSettingsAsync(ownerId); if (ownerSettings?.DefaultPublisher != null) { ProgressLog.Info("Returning publisher from repository owner's settings"); return(ownerSettings.DefaultPublisher); } } // no settings / publisher found for that repo ProgressLog.Info("No publisher info found in repository owner's settings"); return(null); } catch (Exception) { ProgressLog.Error("Error when attempting to retrieve publisher contact information from repository/owner settings"); return(null); } }
private async Task <PortalInfoDrop> GetPortalSettingsInfo(string ownerId, string repoId, string authenticationToken) { try { ProgressLog.Info("Attempting to retrieve portal settings information from owner settings"); if (ownerId != null) { var portalInfo = new PortalInfoDrop { OwnerId = ownerId, RepositoryName = repoId }; ProgressLog.Info("Attempting to retrieve publisher contact information from repository owner's settings"); var ownerSettings = await OwnerSettingsStore.GetOwnerSettingsAsync(ownerId); if (ownerSettings != null) { portalInfo.IsOrg = ownerSettings.IsOrg; portalInfo.ShowDashboardLink = ownerSettings.DisplayDataDockLink; if (!string.IsNullOrEmpty(ownerSettings.TwitterHandle)) { portalInfo.Twitter = ownerSettings.TwitterHandle; } var client = GitHubClientFactory.CreateClient(authenticationToken); if (ownerSettings.IsOrg) { var org = await client.Organization.Get(ownerId); if (org == null) { return(portalInfo); } portalInfo.OwnerDisplayName = org.Name ?? ownerId; if (ownerSettings.DisplayGitHubBlogUrl) { portalInfo.Website = org.Blog; } if (ownerSettings.DisplayGitHubAvatar) { portalInfo.LogoUrl = org.AvatarUrl; } if (ownerSettings.DisplayGitHubDescription) { portalInfo.Description = org.Bio; } if (ownerSettings.DisplayGitHubBlogUrl) { portalInfo.Website = org.Blog; } if (ownerSettings.DisplayGitHubLocation) { portalInfo.Location = org.Location; } if (ownerSettings.DisplayGitHubIssuesLink) { portalInfo.GitHubHtmlUrl = org.HtmlUrl; } } else { var user = await client.User.Get(ownerId); if (user == null) { return(portalInfo); } portalInfo.OwnerDisplayName = user.Name ?? ownerId; if (ownerSettings.DisplayGitHubBlogUrl) { portalInfo.Website = user.Blog; } if (ownerSettings.DisplayGitHubAvatar) { portalInfo.LogoUrl = user.AvatarUrl; } if (ownerSettings.DisplayGitHubDescription) { portalInfo.Description = user.Bio; } if (ownerSettings.DisplayGitHubBlogUrl) { portalInfo.Website = user.Blog; } if (ownerSettings.DisplayGitHubLocation) { portalInfo.Location = user.Location; } if (ownerSettings.DisplayGitHubIssuesLink) { portalInfo.GitHubHtmlUrl = user.HtmlUrl; } } } ProgressLog.Info("Looking up repository portal search buttons from settings for {0} repository.", repoId); var repoSettings = await RepoSettingsStore.GetRepoSettingsAsync(ownerId, repoId); var repoSearchButtons = repoSettings?.SearchButtons; if (!string.IsNullOrEmpty(repoSearchButtons)) { portalInfo.RepoSearchButtons = GetSearchButtons(repoSearchButtons); } return(portalInfo); } // no settings ProgressLog.Info("No owner settings found"); return(null); } catch (Exception) { ProgressLog.Error("Error when attempting to retrieve portal information from owner settings"); return(null); } }