mirror of
https://github.com/wabbajack-tools/wabbajack.git
synced 2024-08-30 18:42:17 +00:00
Fix broken RSS feed and status html
This commit is contained in:
@ -1,9 +1,15 @@
|
|||||||
using System.Collections.Generic;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
using System.ServiceModel.Syndication;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.AspNetCore.Http.Extensions;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using MongoDB.Driver;
|
using MongoDB.Driver;
|
||||||
using MongoDB.Driver.Linq;
|
using MongoDB.Driver.Linq;
|
||||||
|
using Nettle;
|
||||||
using Wabbajack.BuildServer.Models;
|
using Wabbajack.BuildServer.Models;
|
||||||
using Wabbajack.Lib.ModListRegistry;
|
using Wabbajack.Lib.ModListRegistry;
|
||||||
|
|
||||||
@ -23,5 +29,82 @@ namespace Wabbajack.BuildServer.Controllers
|
|||||||
{
|
{
|
||||||
return await Db.ModListStatus.AsQueryable().Select(m => m.Summary).ToListAsync();
|
return await Db.ModListStatus.AsQueryable().Select(m => m.Summary).ToListAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static readonly Func<object, string> HandleGetRssFeedTemplate = NettleEngine.GetCompiler().Compile(@"
|
||||||
|
<?xml version=""1.0""?>
|
||||||
|
<rss version=""2.0"">
|
||||||
|
<channel>
|
||||||
|
<title>{{lst.Name}} - Broken Mods</title>
|
||||||
|
<link>http://build.wabbajack.org/status/{{lst.Name}}.html</link>
|
||||||
|
<description>These are mods that are broken and need updating</description>
|
||||||
|
{{ each $.failed }}
|
||||||
|
<item>
|
||||||
|
<title>{{$.Archive.Name}}</title>
|
||||||
|
<link>{{$.Archive.Name}}</link>
|
||||||
|
</item>
|
||||||
|
{{/each}}
|
||||||
|
</channel>
|
||||||
|
</rss>
|
||||||
|
");
|
||||||
|
|
||||||
|
[HttpGet]
|
||||||
|
[Route("status/{Name}/broken.rss")]
|
||||||
|
public async Task<ContentResult> HandleGetRSSFeed(string Name)
|
||||||
|
{
|
||||||
|
var lst = (await ModListStatus.ByName(Db, Name)).DetailedStatus;
|
||||||
|
var response = HandleGetRssFeedTemplate(new
|
||||||
|
{
|
||||||
|
lst,
|
||||||
|
failed = lst.Archives.Where(a => a.IsFailing).ToList(),
|
||||||
|
passed = lst.Archives.Where(a => !a.IsFailing).ToList()
|
||||||
|
});
|
||||||
|
return new ContentResult
|
||||||
|
{
|
||||||
|
ContentType = "application/rss+xml",
|
||||||
|
StatusCode = (int) HttpStatusCode.OK,
|
||||||
|
Content = response
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private static readonly Func<object, string> HandleGetListTemplate = NettleEngine.GetCompiler().Compile(@"
|
||||||
|
<html><body>
|
||||||
|
<h2>{{lst.Name}} - {{lst.Checked}} - {{ago}}min ago</h2>
|
||||||
|
<h3>Failed ({{failed.Count}}):</h3>
|
||||||
|
<ul>
|
||||||
|
{{each $.failed }}
|
||||||
|
<li>{{$.Archive.Name}}</li>
|
||||||
|
{{/each}}
|
||||||
|
</ul>
|
||||||
|
<h3>Passed ({{passed.Count}}):</h3>
|
||||||
|
<ul>
|
||||||
|
{{each $.passed }}
|
||||||
|
<li>{{$.Archive.Name}}</li>
|
||||||
|
{{/each}}
|
||||||
|
</ul>
|
||||||
|
</body></html>
|
||||||
|
");
|
||||||
|
|
||||||
|
[HttpGet]
|
||||||
|
[Route("status/{Name}.html")]
|
||||||
|
public async Task<ContentResult> HandleGetListHtml(string Name)
|
||||||
|
{
|
||||||
|
|
||||||
|
var lst = (await ModListStatus.ByName(Db, Name)).DetailedStatus;
|
||||||
|
var response = HandleGetListTemplate(new
|
||||||
|
{
|
||||||
|
lst,
|
||||||
|
ago = (DateTime.Now - lst.Checked).TotalMinutes,
|
||||||
|
failed = lst.Archives.Where(a => a.IsFailing).ToList(),
|
||||||
|
passed = lst.Archives.Where(a => !a.IsFailing).ToList()
|
||||||
|
});
|
||||||
|
return new ContentResult
|
||||||
|
{
|
||||||
|
ContentType = "text/html",
|
||||||
|
StatusCode = (int) HttpStatusCode.OK,
|
||||||
|
Content = response
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,7 @@ namespace Wabbajack.BuildServer
|
|||||||
|
|
||||||
public void StartJobRunners()
|
public void StartJobRunners()
|
||||||
{
|
{
|
||||||
|
return;
|
||||||
for (var idx = 0; idx < 2; idx++)
|
for (var idx = 0; idx < 2; idx++)
|
||||||
{
|
{
|
||||||
Task.Run(async () =>
|
Task.Run(async () =>
|
||||||
@ -70,12 +71,14 @@ namespace Wabbajack.BuildServer
|
|||||||
Utils.LogMessages.Subscribe(msg => Logger.Log(LogLevel.Information, msg.ToString()));
|
Utils.LogMessages.Subscribe(msg => Logger.Log(LogLevel.Information, msg.ToString()));
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
await KillOrphanedJobs();
|
await KillOrphanedJobs();
|
||||||
await ScheduledJob<GetNexusUpdatesJob>(TimeSpan.FromHours(2), Job.JobPriority.High);
|
await ScheduledJob<GetNexusUpdatesJob>(TimeSpan.FromHours(2), Job.JobPriority.High);
|
||||||
await ScheduledJob<UpdateModLists>(TimeSpan.FromMinutes(30), Job.JobPriority.High);
|
await ScheduledJob<UpdateModLists>(TimeSpan.FromMinutes(30), Job.JobPriority.High);
|
||||||
await ScheduledJob<EnqueueAllArchives>(TimeSpan.FromHours(2), Job.JobPriority.Low);
|
await ScheduledJob<EnqueueAllArchives>(TimeSpan.FromHours(2), Job.JobPriority.Low);
|
||||||
await ScheduledJob<EnqueueAllGameFiles>(TimeSpan.FromHours(24), Job.JobPriority.High);
|
await ScheduledJob<EnqueueAllGameFiles>(TimeSpan.FromHours(24), Job.JobPriority.High);
|
||||||
await ScheduledJob<EnqueueRecentFiles>(TimeSpan.FromHours(6), Job.JobPriority.Low);
|
await ScheduledJob<EnqueueRecentFiles>(TimeSpan.FromHours(6), Job.JobPriority.Low);
|
||||||
|
*/
|
||||||
await Task.Delay(10000);
|
await Task.Delay(10000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
<PackageReference Include="Microsoft.OpenApi" Version="1.1.4" />
|
<PackageReference Include="Microsoft.OpenApi" Version="1.1.4" />
|
||||||
<PackageReference Include="MongoDB.Driver" Version="2.10.0" />
|
<PackageReference Include="MongoDB.Driver" Version="2.10.0" />
|
||||||
<PackageReference Include="MongoDB.Driver.Core" Version="2.10.0" />
|
<PackageReference Include="MongoDB.Driver.Core" Version="2.10.0" />
|
||||||
|
<PackageReference Include="Nettle" Version="1.3.0" />
|
||||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.0.0-rc5" />
|
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.0.0-rc5" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user