您不能選擇超過 %s 個話題 話題必須以字母或數字為開頭,可包含連接號 ('-') 且最長為 35 個字
 
 
 

83 行
1.7 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using SUISS.Scheduling;
  4. using SUISS.Storage;
  5. public class LikeRegistrar
  6. {
  7. private static Dictionary<string, object> storage
  8. {
  9. get
  10. {
  11. return Storage.Get(StorageLifecycle.Forever).GetDictionary("LikeRegistrar");
  12. }
  13. }
  14. public static int VotesLeft
  15. {
  16. get
  17. {
  18. return 10 - LikeRegistrar.Cleanup();
  19. }
  20. }
  21. public static bool HaveVotedFor(string installUuid)
  22. {
  23. LikeRegistrar.Cleanup();
  24. return LikeRegistrar.storage.ContainsKey(installUuid);
  25. }
  26. public static void SaveVoteFor(string installUuid)
  27. {
  28. LikeRegistrar.storage[installUuid] = Timing.UtcNow;
  29. }
  30. public static void SaveNumberOfLikes(string installUuid, int likes)
  31. {
  32. LikeRegistrar.storage[installUuid + "likes"] = likes;
  33. }
  34. public static int GetNumberOfLikes(string installUuid)
  35. {
  36. LikeRegistrar.Cleanup();
  37. if (LikeRegistrar.storage.ContainsKey(installUuid + "likes"))
  38. {
  39. return (int)LikeRegistrar.storage[installUuid + "likes"];
  40. }
  41. return 0;
  42. }
  43. private static int Cleanup()
  44. {
  45. List<string> list = new List<string>(LikeRegistrar.storage.Keys);
  46. double utcNow = Timing.UtcNow;
  47. int num = 0;
  48. foreach (string text in list)
  49. {
  50. if (!text.EndsWith("likes"))
  51. {
  52. object obj = LikeRegistrar.storage[text];
  53. if (obj is double)
  54. {
  55. double num2 = utcNow - (double)obj;
  56. if (num2 > 86400.0)
  57. {
  58. LikeRegistrar.storage.Remove(text);
  59. }
  60. else
  61. {
  62. num++;
  63. }
  64. }
  65. }
  66. }
  67. return num;
  68. }
  69. private const string StorageKey = "LikeRegistrar";
  70. private const double LikeExpireTimeSeconds = 86400.0;
  71. private const int VotesAvailable = 10;
  72. }