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); }
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()); }
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()); }
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); }