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
@@ -0,0 +1,63 @@
using Disco.Data.Repository;
using Disco.Services.Tasks;
using Newtonsoft.Json;
using Quartz;
using System;
using System.IO;
using System.Linq;
namespace Disco.Services.Interop.DiscoServices
{
public class PluginLibraryUpdateTask : ScheduledTask
{
public override string TaskName { get { return "Disco ICT - Update Plugin Library"; } }
public override bool SingleInstanceTask { get { return true; } }
public override bool CancelInitiallySupported { get { return false; } }
public override void InitalizeScheduledTask(DiscoDataContext Database)
{
// Random time between midday and midnight.
var rnd = new Random();
var rndHour = rnd.Next(12, 23);
var rndMinute = rnd.Next(0, 59);
TriggerBuilder triggerBuilder = TriggerBuilder.Create().
WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(rndHour, rndMinute));
this.ScheduleTask(triggerBuilder);
}
protected override void ExecuteTask()
{
using (DiscoDataContext database = new DiscoDataContext())
{
Status.UpdateStatus(1, "Updating Plugin Library Manifest", "Initializing");
var manifest = PluginLibrary.UpdateManifest(database, this.Status);
Status.SetFinishedMessage("The Plugin Library Manifest was updated successfully");
}
}
public static ScheduledTaskStatus ScheduleNow()
{
var taskStatus = RunningStatus;
if (taskStatus != null)
return taskStatus;
else
{
var task = new PluginLibraryUpdateTask();
return task.ScheduleTask();
}
}
public static ScheduledTaskStatus RunningStatus
{
get
{
return ScheduledTasks.GetTaskStatuses(typeof(PluginLibraryUpdateTask)).Where(ts => ts.IsRunning).FirstOrDefault();
}
}
}
}