Guest User

Untitled

a guest
Jul 17th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.28 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using Lunar;
  6. using System.Dynamic;
  7.  
  8. namespace NekoVampire
  9. {
  10. public class StreamList
  11. {
  12. public StreamList(string userName, string listName)
  13. {
  14. this.userName = userName;
  15. this.listName = listName;
  16. }
  17.  
  18. private string userName;
  19. private string listName;
  20. private IEnumerable<User> members;
  21.  
  22. /// <summary>
  23. /// range で指定された範囲の項目を取得します。
  24. /// </summary>
  25. /// <param name="client">クライアント</param>
  26. /// <param name="range">範囲</param>
  27. /// <returns>エントリーのリスト</returns>
  28. public IEnumerable<IEntry> GetStatuses(TwitterClient client, StatusRange range)
  29. {
  30. //var statuses = client.StatusCache.GetStatuses();
  31. var statuses = client.Statuses.HomeTimeline();
  32.  
  33. if(members == null)
  34. members = client.Lists.Members(userName, listName);
  35.  
  36. return statuses.AsParallel()
  37. .Where(x => range.SinceID != 0 ? x.StatusID >= range.SinceID : true && range.MaxID != 0 ? x.StatusID <= range.MaxID : true)
  38. .Where(x => members.Contains(x.User))
  39. .OrderByDescending(x => x.StatusID)
  40. .Skip(range.Page * range.Count)
  41. .Take(range.Count);
  42. }
  43.  
  44. /// <summary>
  45. /// User Streams で受信した entry がこのソースで取得できるものと同等であるかを取得します。
  46. /// </summary>
  47. /// <param name="entry"></param>
  48. /// <returns></returns>
  49. public bool StreamEntryMatches(IEntry entry)
  50. {
  51. return members.Select(x => x.Name).Contains(entry.UserName);
  52. }
  53.  
  54. /// <summary>
  55. /// ページごとに取得し、スクロールで次のページが取得できるかどうかを定義します。
  56. /// </summary>
  57. public bool Pagable
  58. {
  59. get
  60. {
  61. return true;
  62. }
  63. }
  64.  
  65. /// <summary>
  66. /// 任意のデータを保存できます。設定ファイルに記録されます。
  67. /// </summary>
  68. public ExpandoObject LocalData { private get; set; }
  69. }
  70. }
Add Comment
Please, Sign In to add comment