Exemple #1
0
        public void ThreadPage2ndTest()
        {
            var processor = new PageProcessor();
            MillResult <ForumThread> result = processor.ProcessThreadPage(new MillRequest
            {
                Url         = "index.php?action=thread&tid=6834324&page=2&vt=1&tp=100&pp=100&sc=1&vf=0&sm=0&iam=notop-nolight-noattach&css=default",
                HtmlContent = File.ReadAllText("ThreadPage2nd.htm")
            });

            Assert.IsNotNull(result.NextPageUrl);
            Assert.AreEqual(21043731, result.Result.Posts[0].Id);
            Assert.AreEqual(2, result.Result.CurrentPageIndex);
        }
Exemple #2
0
 public static MillStatus TryProcessPage <T>(this IPageProcessor pageProcessor, MillRequest request, out MillResult <T> result)
     where T : class
 {
     result = new MillResult <T> {
         Url = request.Url, HumanReadableDescription = request.HumanReadableDescription
     };
     try
     {
         if (typeof(T) == typeof(List <ThreadHeader>))
         {
             result = pageProcessor.ProcessForumPage(request) as MillResult <T>;
         }
         else if (typeof(T) == typeof(ForumThread))
         {
             result = pageProcessor.ProcessThreadPage(request) as MillResult <T>;
         }
         else
         {
             throw new NotSupportedException();
         }
         return(MillStatus.Success);
     }
     catch (NotSignedInException ne)
     {
         Logger.Info("解析网页时发现未登录,URL: {0}\r\n 内容:{1}", ne.Request.Url, ne.Request.HtmlContent);
         return(MillStatus.NotSignedIn);
     }
     catch (PermissionDeniedException pde)
     {
         Logger.Info("解析网页时发现没有权限,URL: {0}\r\n 内容:{1}", pde.Request.Url, pde.Request.HtmlContent);
         return(MillStatus.PermissionDenied);
     }
     catch (ProcessFaultException pfe)
     {
         Logger.Info("解析网页时发生错误,错误信息:{0}\r\n URL: {1}\r\n 内容:{2}\r\n 内部异常:{3}\r\n", pfe.Message, pfe.Request.Url,
                     pfe.Request.HtmlContent, pfe.InnerException);
         return(MillStatus.FormatError);
     }
     catch (Exception e)
     {
         Logger.Info("Error URL:{0}\r\n{1}\r\n{2}", request.Url, e, request.HtmlContent);
         return(MillStatus.FormatError);
     }
 }
Exemple #3
0
        public void ThreadPageNoReplyTest()
        {
            var processor = new PageProcessor();
            MillResult <ForumThread> result = processor.ProcessThreadPage(new MillRequest
            {
                Url         = "index.php?action=thread&tid=7023798&vt=1&tp=100&pp=100&sc=1&vf=0&sm=0&iam=notop-nolight-noattach&css=default",
                HtmlContent = File.ReadAllText("ThreadPageNoReply.htm")
            });

            Assert.IsNull(result.NextPageUrl);
            Assert.IsNotNull(result.Result.Title);
            Assert.AreEqual(7023798, result.Result.Id);
            Assert.AreEqual("bobykid", result.Result.UserName);
            Assert.AreEqual(1, result.Result.Posts.Count);
            Assert.AreEqual("bobykid", result.Result.Posts[0].UserName);
            Assert.AreEqual(1, result.Result.Posts[0].Order);
            Assert.AreEqual(21010841, result.Result.Posts[0].Id);
            Assert.AreEqual(DateTime.Parse("2014-12-15 14:20"), result.Result.Posts[0].CreateDate);
        }
Exemple #4
0
        public void ProcessForumPageTest()
        {
            var          pageProcessor = new PageProcessor();
            const string url           =
                "index.php?action=forum&fid=59&sid=&vt=1&tp=100&pp=100&sc=1&vf=0&sm=0&iam=notop-nolight-noattach&css=default&verify=&page=1";
            MillResult <List <ThreadHeader> > millResult = pageProcessor.ProcessForumPage(new MillRequest
            {
                Url         = url,
                HtmlContent = File.ReadAllText("ForumPageFirst.htm")
            });

            Assert.AreEqual(millResult.Url, url);
            Assert.IsNotNull(millResult.Result);
            Assert.AreEqual(100, millResult.Result.Count);
            Assert.AreEqual(url.Replace("page=1", "page=2"), millResult.NextPageUrl);

            var firstThreadHeader = millResult.Result.First();

            Assert.AreEqual("fffhxy", firstThreadHeader.UserName);
            Assert.AreEqual(5, firstThreadHeader.ReplyCount);
        }
Exemple #5
0
        public void AnonymousUserTest()
        {
            var processor = new PageProcessor();
            MillResult <ForumThread> result = processor.ProcessThreadPage(new MillRequest
            {
                Url         = "url",
                HtmlContent = File.ReadAllText("Anonymous.htm")
            });

            Assert.AreEqual("匿名", result.Result.UserName);
            Assert.AreEqual("匿名", result.Result.Posts.First().UserName);

            result = processor.ProcessThreadPage(new MillRequest
            {
                Url         = "url",
                HtmlContent = File.ReadAllText("AnonymousInReplies.htm")
            });

            Assert.AreEqual("匿名", result.Result.Posts[47].UserName);
            Assert.AreEqual(48, result.Result.Posts[47].Order);
            Assert.AreEqual("rocky", result.Result.Posts[1].UserName);
            Assert.AreEqual(2, result.Result.Posts[1].Order);
        }