CheckUpdateExcutor.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using LJProxy.LJLib.Net.SPI.Server;
  2. using LJProxy.Models;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.IO;
  7. using LJLib;
  8. namespace LJProxy.Excutor
  9. {
  10. public class CheckUpdateExcutor : ExcutorBase<CheckUpdateRequest, CheckUpdateResponse>
  11. {
  12. private static object _syncRoot = new object();
  13. protected override void ExcuteInternal(CheckUpdateRequest request, object state, CheckUpdateResponse rslt)
  14. {
  15. rslt.ErrCode = "0";
  16. if (string.IsNullOrEmpty(request.CurrentVersion))
  17. {
  18. rslt.ErrMsg = "CurrentVersion can not be empty";
  19. return;
  20. }
  21. var apkDirs =@$"{AppDomain.CurrentDomain.BaseDirectory}apk\";
  22. if (!Directory.Exists(apkDirs))
  23. {
  24. rslt.ErrMsg = "apk file folder not exists";
  25. return;
  26. }
  27. //cache file version
  28. string newVersion = string.Empty;
  29. string cacheKey = "NewestApkVersion";
  30. lock (_syncRoot)
  31. {
  32. newVersion = CacheHelper.DefaultCache.Get(cacheKey) as string;
  33. if (string.IsNullOrEmpty(newVersion))
  34. {
  35. var dirinfo = new DirectoryInfo(apkDirs);
  36. var file = dirinfo.GetFiles()
  37. .Where(x => x.Name.EndsWith(".apk", StringComparison.CurrentCultureIgnoreCase))
  38. .OrderByDescending(x => x.LastWriteTime).FirstOrDefault();
  39. if (file == null)
  40. {
  41. rslt.ErrMsg = "can not found apk";
  42. return;
  43. }
  44. APKHelper apkHelper = new APKHelper();
  45. newVersion = apkHelper.GetVersionName(file.FullName);
  46. //TODO:文件夹缓存依赖不生效,待扩展
  47. CacheHelper.DefaultCache.Add(cacheKey, newVersion, CacheHelper.CreateCacheItemPolicy(null, DateTime.Now.AddMinutes(30), new List<string>() { file.FullName }));
  48. }
  49. }
  50. if (string.Compare(newVersion, request.CurrentVersion) > 0)
  51. {
  52. rslt.ErrCode = "1";
  53. rslt.NewVersion = newVersion;
  54. }
  55. }
  56. }
  57. }