Beispiel #1
0
        public async Task GetRssFeedFromSubPagesOfFirstPageOfFirstSpace()
        {
            //Connect to the Notion account
            var sessionInfo   = TestUtils.CreateUnofficialNotionSessionInfo();
            var notionSession = new NotionSession(sessionInfo);

            //Get first notion "space"
            var userContent = await notionSession.LoadUserContent();

            var spacePages = userContent.RecordMap.Space.First().Value.Pages;

            //Get sub-pages of the "public blog" page, which makes the content of the blog
            var blogId    = spacePages.First(pageId => userContent.RecordMap.Block[pageId].Title == "Public blog");
            var blog      = userContent.RecordMap.Block[blogId];
            var blogPages = blog.Content;

            //Convert the blogPages into a RSS feed
            var feed = await notionSession.GetSyndicationFeed(blogPages, maxBlocks : 100);

            feed.Title = new TextSyndicationContent(blog.Title);

            Assert.IsNotNull(feed);
            Assert.IsTrue(feed.Items.Any());
            Assert.IsFalse(feed.Items.Any(item => item.Title?.Text == "Work In Progress"));
        }
        public async Task TestGetUsers()
        {
            var session = new NotionSession(TestUtils.CreateOfficialNotionSessionInfo());
            var users   = session.GetUsers();

            Assert.IsNotNull(users);
            int i, iBot, iPerson;

            i = iBot = iPerson = 0;
            await foreach (var user in users)
            {
                i++;
                if (user.UserType == UserTypeConst.Bot)
                {
                    iBot++;
                }
                if (user.UserType == UserTypeConst.Person)
                {
                    iPerson++;
                }
            }

            Assert.AreEqual(2, i);
            Assert.AreEqual(1, iBot);
            Assert.AreEqual(1, iPerson);
        }
        public async Task RefreshNotionData()
        {
            if (isRefreshing)
            {
                return;
            }
            isRefreshing = true;

            try
            {
                var notionSession = new NotionSession(new NotionSessionInfo {
                    TokenV2 = notionOptions.Key, NotionBrowserId = notionOptions.BrowserId, NotionUserId = notionOptions.UserId
                });
                var userContent = await notionSession.LoadUserContent().ConfigureAwait(false);

                var spacePages = userContent.RecordMap.Space.First().Value.Pages;

                //Refresh CMS
                var cmsPageId = spacePages.First(pageId => userContent.RecordMap.Block.TryGetValue(pageId, out var page) && page.Title == notionOptions.CmsPageTitle);
                var cmsPages  = userContent.RecordMap.Block[cmsPageId].Content;
                var cmsItems  = await notionSession.GetSyndicationFeed(cmsPages, maxBlocks : 100, stopBeforeFirstSubHeader : false).ConfigureAwait(false);

                CmsTitle = userContent.RecordMap.Block[cmsPageId].Title;
                CmsArticles.OnNext(cmsItems.Items.ToList());
            }
            catch (Exception e)
            {
                logger.LogError(e, "Can't update notion data");
            }
            finally
            {
                isRefreshing = false;
            }
        }
        public async Task TestGetPublicBlogContent()
        {
            var session = new NotionSession(TestUtils.CreateOfficialNotionSessionInfo());
            var pages   = await session.GetTopLevelPages().ToListAsync();

            Assert.IsNotNull(pages);
            Assert.AreNotEqual(0, pages.Count);
            Assert.IsNotNull(pages[0].Title.Title[0].PlainText);
        }
Beispiel #5
0
        public async Task GetRssFeedFromRootPagesOfFirstSpace()
        {
            var sessionInfo = TestUtils.CreateUnofficialNotionSessionInfo();
            var session     = new NotionSession(sessionInfo);

            var feed = await session.GetSyndicationFeed();

            Assert.IsNotNull(feed);
            Assert.IsTrue(feed.Items.Any());
        }
Beispiel #6
0
        public async Task TestLoadPageChunkResult()
        {
            var sessionInfo = TestUtils.CreateUnofficialNotionSessionInfo();
            var session     = new NotionSession(sessionInfo);

            var pageChunk = await session.LoadPageChunk(Guid.Parse("4e4999b4-161a-449d-bbd1-bdbce690c7cb"), 0, 50);

            Assert.IsNotNull(pageChunk);
            Assert.IsTrue(pageChunk.RecordMap.Block.Count > 0);
        }
        public async Task TestGetUser()
        {
            var session = new NotionSession(TestUtils.CreateOfficialNotionSessionInfo());
            var user1a  = await session.GetUsers().FirstAsync();

            Assert.IsNotNull(user1a);

            var user1b = await session.GetUser(user1a.Id);

            Assert.IsTrue(user1a.Equals(user1b));
        }
        public async Task TestGetHtml()
        {
            var session = new NotionSession(TestUtils.CreateOfficialNotionSessionInfo());
            var page    = await session.Search(filterOptions : FilterOptions.ObjectPage)
                          .FirstAsync(p => p.Title?.Title?.FirstOrDefault().PlainText == "Procrastination");

            Assert.IsNotNull(page);

            var html = await session.GetHtml(page);

            Assert.IsFalse(string.IsNullOrWhiteSpace(html));
        }
        public async Task TestSearch()
        {
            var session = new NotionSession(TestUtils.CreateOfficialNotionSessionInfo());

            var         totalItems = 0;
            List <Page> pages      = new ();

            await foreach (var item in session.Search(pageSize: 2))
            {
                totalItems++;
                pages.Add(item);
            }

            Assert.AreEqual(4, totalItems);
        }
        public async Task TestGetSyndicationFeed()
        {
            var session = new NotionSession(TestUtils.CreateOfficialNotionSessionInfo());
            var pages   = await session.GetTopLevelPages().ToListAsync();

            Assert.IsNotNull(pages);
            var page = pages.Where(p => p.Title?.Title?.FirstOrDefault().PlainText == "Public blog").FirstOrDefault();

            Assert.IsNotNull(page);

            var feed = await session.GetSyndicationFeed(page);

            Assert.IsNotNull(feed?.Items);
            Assert.AreNotEqual(0, feed.Items.Count());
        }
Beispiel #11
0
        public async Task TestGetUserTasks()
        {
            var sessionInfo = TestUtils.CreateUnofficialNotionSessionInfo();
            var session     = new NotionSession(sessionInfo);

            var userTasks = await session.GetUserTasks(new object());

            Assert.IsNotNull(userTasks);

            var clientExperiments = await session.GetClientExperiments(Guid.Parse("53d14533-94b9-4e87-aec8-9378b2bcedcc"));

            Assert.IsNotNull(clientExperiments);
            Assert.IsTrue(clientExperiments.Experiments.Count > 0);

            var userContent = await session.LoadUserContent();

            Assert.IsNotNull(userContent);
        }
        public async Task TestGetBlock()
        {
            var session = new NotionSession(TestUtils.CreateOfficialNotionSessionInfo());
            var blockId = "18dfbe55-5d7c-416e-9485-7855d4a3949e"; //from TestGetPage()

            await foreach (var block in session.GetBlockChildren(blockId))
            {
                Assert.IsNotNull(block.Type);
                switch (block.Type)
                {
                case BlockTypes.Paragraph:
                    Assert.IsNotNull(block.Paragraph);
                    break;

                case BlockTypes.ChildPage:
                    Assert.IsNotNull(block.ChildPage);
                    break;

                default:
                    break;
                }
            }
        }
        public async Task TestGetPage()
        {
            var session = new NotionSession(TestUtils.CreateOfficialNotionSessionInfo());
            //Get any page returned by search
            var page = await session.Search(pageSize : 1, filterOptions : FilterOptions.ObjectPage).FirstAsync();

            Assert.IsNotNull(page);

            Assert.IsNotNull(page.Id);

            //Get the page details
            var pageProperties = await session.GetPage(page.Id);

            Assert.IsNotNull(pageProperties);
            Assert.IsNotNull(pageProperties.Parent);
            Assert.IsNotNull(pageProperties.Properties);
            var title = pageProperties.Title;

            Assert.IsNotNull(title);
            Assert.IsNotNull(title.Title);
            Assert.AreNotEqual(0, title.Title.Count);
            var id = pageProperties.Id;
        }
        public async Task TestSearchPaged()
        {
            var session = new NotionSession(TestUtils.CreateOfficialNotionSessionInfo());

            var pagingOptions = new PagingOptions {
                PageSize = 2
            };
            var searchResult = await session.SearchPaged(pagingOptions : pagingOptions);

            Assert.IsNotNull(searchResult?.Results);

            var totalItems = searchResult.Results.Count;
            var i          = 10;

            while (searchResult.HasMore && i-- > 0)
            {
                pagingOptions.StartCursor = searchResult.NextCursor;
                searchResult = await session.SearchPaged(pagingOptions : pagingOptions);

                totalItems += searchResult.Results.Count;
            }
            Assert.AreNotEqual(0, i);
            Assert.AreEqual(4, totalItems);
        }