public AistantSaver(AistantSettings settings, ILogger logger) { _service = new AistantKbService(settings, logger); }
private void PublishToAistant(ProjectSettings project, Changelog changelog, string releaseNotes) { var version = new Version(Version); var service = new AistantKbService(_aistantSettings, null); var article = service.GetArticleAsync(changelog.Uri, loadById: true).Result; if (article != null) { var changeLogPattern = "<div(.*?)id=\"changelog-start\"></div>"; var divVerPattern = "<div(.*?)id=\"{0}/{1}\"(.*?)(data-released=\"(.*?)\")?(.*?)></div>"; var changelogPatternMatch = Regex.Match(article.Content, changeLogPattern); if (changelogPatternMatch.Success) { var divCurrVerMatch = Regex.Match(article.Content, string.Format(divVerPattern, project.Tag, version.GetVersionWithourPreRelease())); var indexForNextVerSearch = (divCurrVerMatch.Success) ? divCurrVerMatch.Index + divCurrVerMatch.Length : changelogPatternMatch.Index + changelogPatternMatch.Length; Match divNextVerMatch = Regex.Match(article.Content.Substring(indexForNextVerSearch), string.Format(divVerPattern, "(.*?)", "(.*?)")); var startIndex = divCurrVerMatch.Success ? divCurrVerMatch.Index : changelogPatternMatch.Index + changelogPatternMatch.Length; var endIndex = divNextVerMatch.Success ? divNextVerMatch.Index + indexForNextVerSearch : article.Content.Length; var result = article.Content.Substring(0, startIndex); result += '\n'; result += $"<div id=\"{project.Tag}/{version.GetVersionWithourPreRelease()}\" data-released=\"{DateTime.UtcNow.ToString("yyyy-MM-dd")}\"></div>\n\n"; result += releaseNotes; if (endIndex != article.Content.Length) { result += article.Content.Substring(endIndex); } article.Content = result; } else { var sb = new StringBuilder(article.Content) .AppendLine() .AppendLine("<div id=\"changelog-start\"></div>") .AppendLine($"<div id=\"{project.Tag}/{version.GetVersionWithourPreRelease()}\" data-released=\"{DateTime.UtcNow.ToString("yyyy-MM-dd")}\"></div>\n") .Append(releaseNotes); article.Content = sb.ToString(); } } else { var sb = new StringBuilder() .AppendLine("<div id=\"changelog-start\"></div>") .AppendLine($"<div id=\"{project.Tag}/{version.GetVersionWithourPreRelease()}\" data-released=\"{DateTime.UtcNow.ToString("yyyy-MM-dd")}\"></div>\n") .Append(releaseNotes); article = new Aistant.KbService.Models.AistantArticle { Title = "Changelog", Content = sb.ToString(), Excerpt = "" }; } var successed = service.UploadArticleAsync(changelog.Uri, "Changelog", article.Content, article.Excerpt).Result; if (!successed) { throw new Exception("Article was not published"); } }
public AistantArticlePublisher(AistantSettings settings, ILogger logger) { _service = new AistantKbService(settings, logger); }