Exemple #1
0
        public WikiPageResponse GetWikiPageByIdAndSubPages()
        {
            VssConnection  connection = this.Context.Connection;
            WikiHttpClient wikiClient = connection.GetClient <WikiHttpClient>();

            WikiV2 wiki       = Helpers.FindOrCreateProjectWiki(this.Context);
            int    somePageId = Helpers.GetAnyWikiPageId(this.Context, wiki);

            WikiPageResponse rootPageResponse = wikiClient.GetPageByIdAsync(
                project: wiki.ProjectId,
                wikiIdentifier: wiki.Id,
                id: somePageId,
                recursionLevel: VersionControlRecursionType.OneLevel).SyncResult();

            if (rootPageResponse.Page.SubPages.Count() == 0)
            {
                WikiPageResponse wikiPageResponse1 = Helpers.CreatePage(this.Context, wiki, rootPageResponse.Page.Path + "/SubPage" + new Random().Next(1, 999));
                WikiPageResponse wikiPageResponse2 = Helpers.CreatePage(this.Context, wiki, rootPageResponse.Page.Path + "/SubPage" + new Random().Next(1, 999));

                rootPageResponse = wikiClient.GetPageByIdAsync(
                    project: wiki.ProjectId,
                    wikiIdentifier: wiki.Id,
                    id: somePageId,
                    recursionLevel: VersionControlRecursionType.OneLevel).SyncResult();
            }

            Context.Log("Retrieved the following subpages for the root page:");
            foreach (WikiPage subPage in rootPageResponse.Page.SubPages)
            {
                Context.Log("Sub-page : '{0}'", subPage.Path);
            }

            return(rootPageResponse);
        }
Exemple #2
0
        public static int GetAnyWikiPageId(VssConnection connection, WikiV2 wiki)
        {
            string path       = GetAnyWikiPagePath(connection, wiki);
            var    wikiClient = connection.GetClient <WikiHttpClient>();

            var anyPage = wikiClient.GetPageAsync(
                project: wiki.ProjectId,
                wikiIdentifier: wiki.Id,
                path: path,
                recursionLevel: VersionControlRecursionType.OneLevel).SyncResult().Page;

            if (!anyPage.Id.HasValue)
            {
                WikiPageCreateOrUpdateParameters parameters = new WikiPageCreateOrUpdateParameters()
                {
                    Content = "Wiki page content"
                };

                WikiPageResponse wikiPageResponse = wikiClient.CreateOrUpdatePageAsync(
                    parameters,
                    project: wiki.ProjectId,
                    wikiIdentifier: wiki.Id,
                    path: "SamplePage" + new Random().Next(1, 999),
                    Version: null).SyncResult();

                Console.WriteLine("Create page '{0}' in wiki '{1}'", wikiPageResponse.Page.Path, wiki.Name);

                anyPage = wikiPageResponse.Page;
            }

            return(anyPage.Id.Value);
        }
        public WikiPageMoveResponse ReorderWikiPage()
        {
            VssConnection  connection = this.Context.Connection;
            WikiHttpClient wikiClient = connection.GetClient <WikiHttpClient>();

            WikiV2 wiki = Helpers.FindOrCreateProjectWiki(this.Context);

            var pageCreateParameters = new WikiPageCreateOrUpdateParameters()
            {
                Content = "Wiki page content",
            };

            var randomNumber = new Random().Next(1, 999);
            // First page
            string           firstPagePath     = "SamplePage" + randomNumber;
            WikiPageResponse firstPageResponse = wikiClient.CreateOrUpdatePageAsync(
                pageCreateParameters,
                project: wiki.ProjectId,
                wikiIdentifier: wiki.Name,
                path: firstPagePath,
                Version: null).SyncResult();

            Context.Log("Created page '{0}' in wiki '{1}'", firstPageResponse.Page.Path, wiki.Name);

            // Second page
            string           secondPagePath     = "SamplePage" + (randomNumber + 1);
            WikiPageResponse secondPageResponse = wikiClient.CreateOrUpdatePageAsync(
                pageCreateParameters,
                project: wiki.ProjectId,
                wikiIdentifier: wiki.Name,
                path: secondPagePath,
                Version: null).SyncResult();

            Context.Log("Created page '{0}' in wiki '{1}'", secondPageResponse.Page.Path, wiki.Name);

            var pageMoveParameters = new WikiPageMoveParameters()
            {
                Path     = firstPagePath,
                NewPath  = firstPagePath,
                NewOrder = 0
            };

            WikiPageMoveResponse pageMoveResponse = wikiClient.CreatePageMoveAsync(
                pageMoveParameters: pageMoveParameters,
                project: wiki.ProjectId,
                wikiIdentifier: wiki.Name).SyncResult();

            Context.Log("Page '{0}' moved to order '{1}'", pageMoveResponse.PageMove.Path, pageMoveResponse.PageMove.NewOrder);

            // Cleanup
            ClientSampleHttpLogger.SetSuppressOutput(this.Context, true);
            wikiClient.DeletePageAsync(wiki.ProjectId, wiki.Id, firstPagePath).SyncResult();
            wikiClient.DeletePageAsync(wiki.ProjectId, wiki.Id, secondPagePath).SyncResult();

            return(pageMoveResponse);
        }
Exemple #4
0
        public WikiPageResponse CreateWikiPage()
        {
            WikiV2 wiki = Helpers.FindOrCreateProjectWiki(this.Context);

            WikiPageResponse wikiPageResponse = Helpers.CreatePage(this.Context, wiki, "SamplePage" + new Random().Next(1, 999));

            Context.Log("Create page '{0}' in wiki '{1}'", wikiPageResponse.Page.Path, wiki.Name);

            return(wikiPageResponse);
        }
Exemple #5
0
        public WikiPageResponse GetWikiPageMetadata()
        {
            VssConnection  connection = this.Context.Connection;
            WikiHttpClient wikiClient = connection.GetClient <WikiHttpClient>();

            WikiV2 wiki         = Helpers.FindOrCreateProjectWiki(this.Context);
            string somePagePath = Helpers.GetAnyWikiPagePath(this.Context, wiki);

            WikiPageResponse somePageResponse = wikiClient.GetPageAsync(
                project: wiki.ProjectId,
                wikiIdentifier: wiki.Name,
                path: somePagePath).SyncResult();

            Context.Log("Retrieved page '{0}' metadata in wiki '{1}'", somePagePath, wiki.Name);

            return(somePageResponse);
        }
Exemple #6
0
        public WikiPageResponse DeleteWikiPageById()
        {
            VssConnection  connection = this.Context.Connection;
            WikiHttpClient wikiClient = connection.GetClient <WikiHttpClient>();

            WikiV2 wiki       = Helpers.FindOrCreateProjectWiki(this.Context);
            int    somePageId = Helpers.GetAnyWikiPageId(this.Context, wiki);

            WikiPageResponse somePageResponse = wikiClient.DeletePageByIdAsync(
                project: wiki.ProjectId,
                wikiIdentifier: wiki.Id,
                id: somePageId).SyncResult();

            Context.Log("Deleted page with Id : '{0}' from wiki '{1}'", somePageId, wiki.Name);

            return(somePageResponse);
        }
Exemple #7
0
        public static WikiPageResponse CreatePage(VssConnection connection, WikiV2 wiki, string path)
        {
            var wikiClient = connection.GetClient <WikiHttpClient>();

            var parameters = new WikiPageCreateOrUpdateParameters
            {
                Content = "# Wiki page content"
            };

            WikiPageResponse wikiPageResponse = wikiClient.CreateOrUpdatePageAsync(
                parameters,
                project: wiki.ProjectId,
                wikiIdentifier: wiki.Id,
                path: path,
                Version: null).SyncResult();

            return(wikiPageResponse);
        }
Exemple #8
0
        public IEnumerable <WikiPageResponse> GetReportByPage(IEnumerable <FileContentEntity> filesContent)
        {
            var list = new List <WikiPageResponse>();

            foreach (var item in filesContent)
            {
                var wikiResponse = new WikiPageResponse
                {
                    page      = item.pageTitle,
                    period    = (Int32.Parse(item.period)) > 12 ? (Int32.Parse(item.period) - 12).ToString() + "PM" : item.period + "AM",
                    viewCount = item.viewCount
                };

                list.Add(wikiResponse);
            }

            return(list);
        }
Exemple #9
0
        public WikiPageResponse GetWikiPageByIdMetadataWithContent()
        {
            VssConnection  connection = this.Context.Connection;
            WikiHttpClient wikiClient = connection.GetClient <WikiHttpClient>();

            WikiV2 wiki       = Helpers.FindOrCreateProjectWiki(this.Context);
            int    somePageId = Helpers.GetAnyWikiPageId(this.Context, wiki);

            WikiPageResponse WikiPageResponse = wikiClient.GetPageByIdAsync(
                project: wiki.ProjectId,
                wikiIdentifier: wiki.Id,
                id: somePageId,
                includeContent: true).SyncResult();

            Context.Log("Retrieved page with id : '{0}' metadata in wiki '{1}' with content '{2}'", WikiPageResponse.Page.Path, wiki.Name, WikiPageResponse.Page.Content);

            return(WikiPageResponse);
        }
Exemple #10
0
        public WikiPageResponse GetWikiPageAndSubPages()
        {
            VssConnection  connection = this.Context.Connection;
            WikiHttpClient wikiClient = connection.GetClient <WikiHttpClient>();

            WikiV2           wiki             = Helpers.FindOrCreateProjectWiki(this.Context);
            WikiPageResponse rootPageResponse = wikiClient.GetPageAsync(
                project: wiki.ProjectId,
                wikiIdentifier: wiki.Name,
                path: "/",
                recursionLevel: VersionControlRecursionType.OneLevel).SyncResult();

            Context.Log("Retrieved the following subpages for the root page:");
            foreach (WikiPage subPage in rootPageResponse.Page.SubPages)
            {
                Context.Log("Sub-page : '{0}'", subPage.Path);
            }

            return(rootPageResponse);
        }
Exemple #11
0
        public WikiPageResponse EditWikiPage()
        {
            VssConnection  connection = this.Context.Connection;
            WikiHttpClient wikiClient = connection.GetClient <WikiHttpClient>();

            WikiV2 wiki         = Helpers.FindOrCreateProjectWiki(this.Context);
            string somePagePath = Helpers.GetAnyWikiPagePath(this.Context, wiki);

            WikiPageResponse pageResponse = wikiClient.GetPageAsync(
                project: wiki.ProjectId,
                wikiIdentifier: wiki.Name,
                path: somePagePath,
                includeContent: true).SyncResult();

            WikiPage somePage = pageResponse.Page;

            Context.Log("Retrieved page '{0}' as JSON in wiki '{1}' with content '{2}'", somePage.Path, wiki.Name, somePage.Content);

            var originalContent = somePage.Content;
            var originalVersion = pageResponse.ETag.ToList()[0];

            WikiPageCreateOrUpdateParameters parameters = new WikiPageCreateOrUpdateParameters()
            {
                Content = "New content for page"
            };

            WikiPageResponse editedPageResponse = wikiClient.CreateOrUpdatePageAsync(
                parameters: parameters,
                project: wiki.ProjectId,
                wikiIdentifier: wiki.Name,
                path: somePagePath,
                Version: originalVersion).SyncResult();

            var updatedContent = editedPageResponse.Page.Content;
            var updatedVersion = editedPageResponse.ETag.ToList()[0];

            Context.Log("Before editing --> Page path: {0}, version: {1}, content: {2}", somePage.Path, originalVersion, originalContent);
            Context.Log("After editing --> Page path: {0}, version: {1}, content: {2}", somePage.Path, updatedVersion, updatedContent);

            return(editedPageResponse);
        }
Exemple #12
0
        public WikiPageResponse CreateWikiPage()
        {
            VssConnection  connection = this.Context.Connection;
            WikiHttpClient wikiClient = connection.GetClient <WikiHttpClient>();

            WikiV2 wiki = Helpers.FindOrCreateProjectWiki(this.Context);
            WikiPageCreateOrUpdateParameters parameters = new WikiPageCreateOrUpdateParameters()
            {
                Content = "Wiki page content"
            };

            WikiPageResponse wikiPageResponse = wikiClient.CreateOrUpdatePageAsync(
                parameters,
                project: wiki.ProjectId,
                wikiIdentifier: wiki.Id,
                path: "SamplePage" + new Random().Next(1, 999),
                Version: null).SyncResult();

            Context.Log("Create page '{0}' in wiki '{1}'", wikiPageResponse.Page.Path, wiki.Name);

            return(wikiPageResponse);
        }
Exemple #13
0
        public async Task Run(string input, ILogger log)
#endif
        {
            string sb = await GenerateReleaseNotesMarkdown();

            string iterationName = await GetCurrentIterationName();

            using (WikiHttpClient wikiHttpClient = new WikiHttpClient(_uri, credentials))
            {
                try
                {
                    WikiPageResponse wikiPage = await wikiHttpClient.GetPageAsync(_project, _wikiName, $"/{iterationName}");

                    await wikiHttpClient.CreateOrUpdatePageAsync(new WikiPageCreateOrUpdateParameters()
                    {
                        Content = sb.ToString()
                    }, _project, _wikiName, $"/{iterationName}", wikiPage.ETag.First().ToString(), $"Updated on release notes on {DateTime.UtcNow}(UTC)");
                }
                catch (VssServiceException ex)
                {
                    /*
                     * What an ugly pattern to code with!
                     * Had to do this since the GetPageAsync call throws exception if page is not found.
                     * Hopefully, I fix this in the future.
                     */
                    log.LogInformation("Service exception raised. Assumed that the wiki page does not exist. Trying to create one.");
                    await wikiHttpClient.CreateOrUpdatePageAsync(new WikiPageCreateOrUpdateParameters()
                    {
                        Content = sb.ToString()
                    }, _project, _wikiName, $"/{iterationName}", null, $"Added release notes for {iterationName}");
                }
                catch
                {
                    throw;
                }
            }
            log.LogInformation("Completed execution. Please check your wiki for your release notes.");
        }