PackageManager.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading;
  5. using System.Threading.Tasks;
  6. using MediaBrowser.Common.Kernel;
  7. using MediaBrowser.Common.Net;
  8. using MediaBrowser.Common.Security;
  9. using MediaBrowser.Common.Updates;
  10. using MediaBrowser.Model.Serialization;
  11. using MediaBrowser.Model.Updates;
  12. namespace MediaBrowser.Common.Implementations.Updates
  13. {
  14. public class PackageManager : IPackageManager
  15. {
  16. public async Task<IEnumerable<PackageInfo>> GetAvailablePackages(IHttpClient client,
  17. INetworkManager networkManager,
  18. ISecurityManager securityManager,
  19. ResourcePool resourcePool,
  20. IJsonSerializer serializer,
  21. CancellationToken cancellationToken)
  22. {
  23. var data = new Dictionary<string, string> { { "key", securityManager.SupporterKey }, { "mac", networkManager.GetMacAddress() } };
  24. using (var json = await client.Post(Constants.Constants.MBAdminUrl + "service/package/retrieveall", data, resourcePool.Mb, cancellationToken).ConfigureAwait(false))
  25. {
  26. cancellationToken.ThrowIfCancellationRequested();
  27. var packages = serializer.DeserializeFromStream<List<PackageInfo>>(json).ToList();
  28. foreach (var package in packages)
  29. {
  30. package.versions = package.versions.Where(v => !string.IsNullOrWhiteSpace(v.sourceUrl))
  31. .OrderByDescending(v => v.version).ToList();
  32. }
  33. return packages;
  34. }
  35. }
  36. public Task InstallPackage(PackageVersionInfo package, CancellationToken cancellationToken)
  37. {
  38. throw new NotImplementedException();
  39. }
  40. }
  41. }