/// <summary> /// 分页获取个人博客文章列表。 /// </summary> /// <param name="blogapp">博主用户名。</param> /// <param name="pageIndex">第几页,从 1 开始。</param> /// <param name="pageSize">每页条数。</param> /// <returns>文章列表。</returns> /// <exception cref="ArgumentException">博主找不到。</exception> /// <exception cref="ArgumentOutOfRangeException">文章页数错误。</exception> /// <exception cref="ArgumentOutOfRangeException">文章条数错误。</exception> public static async Task <IEnumerable <Article> > ArticleAsync(string blogapp, int pageIndex, int pageSize) { if (pageIndex < 1) { throw new ArgumentOutOfRangeException(nameof(pageIndex)); } if (pageSize < 1) { throw new ArgumentOutOfRangeException(nameof(pageSize)); } var url = string.Format(CultureInfo.InvariantCulture, ArticleUrlTemplate, blogapp, pageIndex, pageSize); url = url.WithCache(); var uri = new Uri(url, UriKind.Absolute); var request = WebRequest.Create(uri); using (var response = (HttpWebResponse)await request.GetResponseAsync()) { if (response.StatusCode.HasFlag(HttpStatusCode.InternalServerError)) { throw new ArgumentException("找不到该博主", nameof(blogapp)); } var document = XDocument.Load(response.GetResponseStream()); return(ArticleHelper.Deserialize(document)); } }
/// <summary> /// 48 小时阅读排行。 /// </summary> /// <param name="itemCount">条数。</param> /// <returns>文章列表。</returns> /// <exception cref="ArgumentOutOfRangeException">条数错误。</exception> public static async Task <IEnumerable <Article> > TwoDaysTopViewAsync(int itemCount) { if (itemCount < 1) { throw new ArgumentOutOfRangeException(nameof(itemCount)); } var url = string.Format(CultureInfo.InvariantCulture, TwoDaysTopViewUrlTemplate, itemCount); url = url.WithCache(); var uri = new Uri(url, UriKind.Absolute); var request = WebRequest.Create(uri); using (var response = await request.GetResponseAsync()) { var document = XDocument.Load(response.GetResponseStream()); return(ArticleHelper.Deserialize(document)); } }
/// <summary> /// 分页获取首页文章列表。 /// </summary> /// <param name="pageIndex">第几页,从 1 开始。</param> /// <param name="pageSize">每页条数。</param> /// <returns>文章列表。</returns> /// <exception cref="ArgumentOutOfRangeException">文章页数错误。</exception> /// <exception cref="ArgumentOutOfRangeException">文章条数错误。</exception> public static async Task <IEnumerable <Article> > RecentAsync(int pageIndex, int pageSize) { if (pageIndex < 1) { throw new ArgumentOutOfRangeException(nameof(pageIndex)); } if (pageSize < 1 || pageSize > 100) { throw new ArgumentOutOfRangeException(nameof(pageSize)); } var url = string.Format(CultureInfo.InvariantCulture, RecentUrlTemplate, pageIndex, pageSize); url = url.WithCache(); var uri = new Uri(url, UriKind.Absolute); var request = WebRequest.Create(uri); using (var response = await request.GetResponseAsync()) { var document = XDocument.Load(response.GetResponseStream()); return(ArticleHelper.Deserialize(document)); } }