コード例 #1
0
        public async Task <List <Thread> > GetForumThreadListAsync(Forum forum, int page)
        {
            var pageUrl = string.Format(EndPoints.ForumPage, forum.ForumId) + string.Format(EndPoints.PageNumber, page);
            var result  = await _webManager.GetDataAsync(pageUrl);

            var document = await _webManager.Parser.ParseAsync(result.ResultHtml);

            ForumHandler.GetForumPageInfo(document, forum);
            return(ThreadHandler.ParseForumThreadList(document, forum.ForumId));
        }
コード例 #2
0
        /// <summary>
        /// Gets the list of threads in a given Forum.
        /// </summary>
        /// <param name="forumId">The Forum Id.</param>
        /// <param name="page">The page of the forum to get.</param>
        /// <param name="token">A CancellationToken.</param>
        /// <returns>A ThreadList.</returns>
        public async Task <ThreadList> GetForumThreadListAsync(int forumId, int page, CancellationToken token = default)
        {
            var pageUrl = string.Format(CultureInfo.InvariantCulture, EndPoints.ForumPage, forumId) + string.Format(CultureInfo.InvariantCulture, EndPoints.PageNumber, page);
            var result  = await this.webManager.GetDataAsync(pageUrl, token).ConfigureAwait(false);

            var document = await this.webManager.Parser.ParseDocumentAsync(result.ResultHtml, token).ConfigureAwait(false);

            var threadList = new ThreadList();

            ForumHandler.GetForumPageInfo(document, threadList);
            threadList.Threads.AddRange(ThreadHandler.ParseForumThreadList(document));
            return(threadList);
        }
コード例 #3
0
        public async Task <List <Thread> > GetBookmarkList(int page)
        {
            if (!_webManager.IsAuthenticated)
            {
                throw new Exception("User must be authenticated before using this method.");
            }
            string url = EndPoints.BookmarksUrl;

            if (page >= 0)
            {
                url = EndPoints.BookmarksUrl + string.Format(EndPoints.PageNumber, page);
            }
            var result = await _webManager.GetDataAsync(url);

            var document = await _webManager.Parser.ParseAsync(result.ResultHtml);

            return(ThreadHandler.ParseForumThreadList(document, 0));
        }
コード例 #4
0
        /// <summary>
        /// Gets a single page of Bookmarked Threads for the authenticated user.
        /// </summary>
        /// <param name="page">The bookmark page number.</param>
        /// <param name="perPage">Amount of bookmarked threads to gather, default is 40.</param>
        /// <param name="token">A CancellationToken.</param>
        /// <returns>List of Threads.</returns>
        public async Task <List <Models.Threads.Thread> > GetBookmarkListAsync(int page, int perPage = 40, CancellationToken token = default)
        {
            if (!this.webManager.IsAuthenticated)
            {
                throw new UserAuthenticationException(Awful.Core.Resources.ExceptionMessages.UserAuthenticationError);
            }

            string url = EndPoints.BookmarksUrl;

            if (page >= 0)
            {
                url = string.Format(CultureInfo.InvariantCulture, EndPoints.BookmarksUrl, perPage) + string.Format(CultureInfo.InvariantCulture, EndPoints.PageNumber, page);
            }

            var result = await this.webManager.GetDataAsync(url, token).ConfigureAwait(false);

            var document = await this.webManager.Parser.ParseDocumentAsync(result.ResultHtml, token).ConfigureAwait(false);

            return(ThreadHandler.ParseForumThreadList(document));
        }