Update: Disco ICT Online Services - Plugin Library

Migrate plugin library to https://services.discoict.com.au
This commit is contained in:
Gary Sharp
2014-07-28 15:02:33 +10:00
parent 1cc7e94646
commit 3358d9e320
37 changed files with 729 additions and 763 deletions
@@ -1,33 +1,43 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Disco.Models.BI.Interop.Community;
using Disco.Models.Services.Interop.DiscoServices;
using Disco.Services.Interop.DiscoServices;
using Disco.Services.Plugins;
using Disco.Services.Plugins.Features.Other;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Disco.Web.Areas.Config.Models.Plugins
{
public class IndexViewModel
{
public List<PluginManifest> PluginManifests { get; set; }
public PluginLibraryUpdateResponse Catalogue { get; set; }
public PluginLibraryManifestV2 PluginLibrary { get; set; }
private Dictionary<PluginManifest, PluginLibraryItem> _PluginUpdates;
public Dictionary<PluginManifest, PluginLibraryItem> PluginUpdates
private Dictionary<PluginManifest, Tuple<PluginLibraryItemV2, PluginLibraryItemReleaseV2>> _PluginUpdates;
public Dictionary<PluginManifest, Tuple<PluginLibraryItemV2, PluginLibraryItemReleaseV2>> PluginUpdates
{
get
{
if (_PluginUpdates == null)
{
if (Catalogue == null || Catalogue.Plugins == null || Catalogue.Plugins.Count == 0 ||
if (PluginLibrary == null || PluginLibrary.Plugins == null || PluginLibrary.Plugins.Count == 0 ||
PluginManifests == null || PluginManifests.Count == 0)
{
_PluginUpdates = new Dictionary<PluginManifest, PluginLibraryItem>(); // No Updates
_PluginUpdates = new Dictionary<PluginManifest,Tuple<PluginLibraryItemV2,PluginLibraryItemReleaseV2>>(); // No Updates
}
else
{
_PluginUpdates = PluginManifests.Join((IEnumerable<PluginLibraryItem>)Catalogue.Plugins, manifest => manifest.Id, update => update.Id, (manifest, update) => new Tuple<PluginManifest, PluginLibraryItem>(manifest, update)).Where(i => Version.Parse(i.Item2.LatestVersion) > i.Item1.Version).ToDictionary(i => i.Item1, i => i.Item2);
var libraryIncompatibility = PluginLibrary.LoadIncompatibilityData();
_PluginUpdates = PluginManifests
.Join(
PluginLibrary.Plugins,
manifest => manifest.Id,
libraryItem => libraryItem.Id,
(manifest, libraryItem) => Tuple.Create(manifest, libraryItem, libraryItem.LatestCompatibleRelease(libraryIncompatibility)),
StringComparer.OrdinalIgnoreCase)
.Where(i => i.Item3 != null && Version.Parse(i.Item3.Version) > i.Item1.Version)
.ToDictionary(i => i.Item1, i => Tuple.Create(i.Item2, i.Item3));
}
}
return _PluginUpdates;
@@ -1,13 +1,29 @@
using System;
using Disco.Models.Services.Interop.DiscoServices;
using Disco.Services.Interop.DiscoServices;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Disco.Models.BI.Interop.Community;
namespace Disco.Web.Areas.Config.Models.Plugins
{
public class InstallModel
{
public PluginLibraryUpdateResponse Catalogue { get; set; }
public PluginLibraryManifestV2 Library { get; set; }
public List<Tuple<string, List<Tuple<PluginLibraryItemV2, PluginLibraryItemReleaseV2>>>> AvailablePlugins
{
get
{
var incompatibility = Library.LoadIncompatibilityData();
return Library.Plugins
.Select(p => Tuple.Create(p, p.LatestCompatibleRelease(incompatibility)))
.Where(p => p.Item2 != null)
.GroupBy(p => p.Item1.PrimaryFeatureCategory)
.Select(p => Tuple.Create(p.Key, p.OrderBy(r => r.Item1.Name).ToList()))
.OrderBy(g => g.Item1)
.ToList();
}
}
}
}
@@ -1,8 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Disco.Services.Plugins;
using Disco.Services.Plugins;
using System;
namespace Disco.Web.Areas.Config.Models.Plugins
{