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