示例#1
0
 public AistantSaver(AistantSettings settings, ILogger logger)
 {
     _service = new AistantKbService(settings, logger);
 }
示例#2
0
        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");
            }
        }
示例#3
0
 public AistantArticlePublisher(AistantSettings settings, ILogger logger)
 {
     _service = new AistantKbService(settings, logger);
 }