Skip to content

Commit 1876036

Browse files
committed
Add sector umbra as replay source
1 parent 5a00dd3 commit 1876036

File tree

8 files changed

+85
-27
lines changed

8 files changed

+85
-27
lines changed

ReplayBrowser/Data/RegexList.cs

Lines changed: 0 additions & 10 deletions
This file was deleted.

ReplayBrowser/Data/StorageUrl.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
namespace ReplayBrowser.Data;
1+
using System.Text.RegularExpressions;
2+
3+
namespace ReplayBrowser.Data;
24

35
public class StorageUrl
46
{
@@ -8,6 +10,18 @@ public class StorageUrl
810
public required string FallBackServerName { get; set; }
911
public required string FallBackServerId { get; set; }
1012

13+
public required string ReplayRegex { get; set; }
14+
public required string ServerNameRegex { get; set; }
15+
16+
public Regex ReplayRegexCompiled { get; set; }
17+
public Regex ServerNameRegexCompiled { get; set; }
18+
19+
public void CompileRegex()
20+
{
21+
ReplayRegexCompiled = new Regex(ReplayRegex);
22+
ServerNameRegexCompiled = new Regex(ServerNameRegex);
23+
}
24+
1125
public override string ToString()
1226
{
1327
return Url;

ReplayBrowser/Pages/Changelog.razor

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
@page "/changelog"
22
<h3>Changelog</h3>
33

4+
<p>05.06.2024</p>
5+
<ul>
6+
<li>Added Sector-Umbra (Whitelisted HRP) as a replay source</li>
7+
</ul>
48
<p>04.06.2024</p>
59
<ul>
610
<li>Added ability to delete account and purge all replays</li>

ReplayBrowser/Pages/Shared/ReplayDetails.razor

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
@using System.Text.RegularExpressions
22
@using ReplayBrowser.Data
33
@using ReplayBrowser.Data.Models
4+
@using ReplayBrowser.Services.ReplayParser
5+
@inject ReplayParserService ReplayParserService
46

57
@if(Replay != null)
68
{
@@ -204,8 +206,10 @@
204206
{
205207
return;
206208
}
207-
var matchName = RegexList.ServerNameRegex.Match(fileName);
208-
var matchDate = RegexList.ReplayRegex.Match(fileName);
209+
210+
var storageUrl = ReplayParserService.GetStorageUrlFromReplayLink(Replay.Link);
211+
var matchName = storageUrl.ServerNameRegexCompiled.Match(fileName);
212+
var matchDate = storageUrl.ReplayRegexCompiled.Match(fileName);
209213
if (matchName.Success && matchDate.Success)
210214
{
211215
NameFormatted = $"{matchName.Groups[1].Value} - {matchDate.Groups[1].Value.Replace("_","-")}";

ReplayBrowser/Pages/Shared/ReplayDisplay.razor

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@
33
@using ReplayBrowser.Data.Models
44
@using ReplayBrowser.Helpers
55
@using ReplayBrowser.Services
6+
@using ReplayBrowser.Services.ReplayParser
67
@inject AuthenticationStateProvider AuthenticationStateProvider
78
@inject ReplayHelper ReplayHelper
89
@inject AccountService AccountService
10+
@inject ReplayParserService ReplayParserService
911

1012
<div class="card" style="width: 18rem; margin-top: 1rem">
1113
<div class="card-body">
@@ -68,11 +70,20 @@
6870
{
6971
return;
7072
}
71-
var matchName = RegexList.ServerNameRegex.Match(fileName);
72-
var matchDate = RegexList.ReplayRegex.Match(fileName);
73+
var storageUrl = ReplayParserService.GetStorageUrlFromReplayLink(ReplayData.Link);
74+
var matchName = storageUrl.ServerNameRegexCompiled.Match(fileName);
75+
var matchDate = storageUrl.ReplayRegexCompiled.Match(fileName);
7376
if (matchName.Success && matchDate.Success)
7477
{
75-
_nameFormatted = $"{matchName.Groups[1].Value} - {matchDate.Groups[1].Value}";
78+
if (string.IsNullOrWhiteSpace(matchName.Groups[1].Value))
79+
{
80+
// wut? Fallback to server id
81+
_nameFormatted = $"{ReplayData.ServerId} - {matchDate.Groups[1].Value}";
82+
}
83+
else
84+
{
85+
_nameFormatted = $"{matchName.Groups[1].Value} - {matchDate.Groups[1].Value}";
86+
}
7687
}
7788
else
7889
{

ReplayBrowser/Services/ReplayParser/ReplayParserService.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,8 @@ private async Task ConsumeQueue(CancellationToken token)
161161
}
162162
// See if the link matches the date regex, if it does set the date
163163
var replayFileName = Path.GetFileName(replay);
164-
var match = RegexList.ReplayRegex.Match(replayFileName);
164+
var storageUrl = GetStorageUrlFromReplayLink(replay);
165+
var match = storageUrl.ReplayRegexCompiled.Match(replayFileName);
165166
if (match.Success)
166167
{
167168
var date = DateTime.ParseExact(match.Groups[1].Value, "yyyy_MM_dd-HH_mm", CultureInfo.InvariantCulture);
@@ -257,11 +258,20 @@ private Replay ParseReplay(Stream stream, string replayLink)
257258
return replay;
258259
}
259260

261+
public StorageUrl GetStorageUrlFromReplayLink(string replayLink)
262+
{
263+
var replayUrls = _configuration.GetSection("ReplayUrls").Get<StorageUrl[]>()!;
264+
var fetched = replayUrls.First(x => replayLink.Contains(x.Url));
265+
fetched.CompileRegex();
266+
return fetched;
267+
}
268+
260269
public async Task AddReplayToQueue(string replay)
261270
{
262271
// Use regex to check and retrieve the date from the file name.
272+
var storageUrl = GetStorageUrlFromReplayLink(replay);
263273
var fileName = Path.GetFileName(replay);
264-
var match = RegexList.ReplayRegex.Match(fileName);
274+
var match = storageUrl.ReplayRegexCompiled.Match(fileName);
265275
if (match.Success)
266276
{
267277
var date = DateTime.ParseExact(match.Groups[1].Value, "yyyy_MM_dd-HH_mm", CultureInfo.InvariantCulture);

ReplayBrowser/Startup.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,9 @@ public void ConfigureServices(IServiceCollection services)
7272
services.AddSingleton<Ss14ApiHelper>();
7373
services.AddSingleton<AccountService>();
7474
services.AddSingleton<LeaderboardService>();
75+
services.AddSingleton<ReplayParserService>();
7576

76-
services.AddHostedService<ReplayParserService>();
77+
services.AddHostedService<BackgroundServiceStarter<ReplayParserService>>();
7778
services.AddHostedService<BackgroundServiceStarter<AccountService>>();
7879
services.AddHostedService<BackgroundServiceStarter<LeaderboardService>>();
7980

ReplayBrowser/appsettings.json

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,53 +7,77 @@
77
},
88
"AllowedHosts": "*",
99
"ReplayUrls": [
10+
{
11+
"url": "https://sector-umbra.net/replays/",
12+
"provider": "caddy",
13+
"fallBackServerName": "Sector Umbra",
14+
"fallBackServerId": "sector-umbra",
15+
"replayRegex": "(\\d{4}-\\d{2}-\\d{2})-round_\\d+\\.zip",
16+
"serverNameRegex": ""
17+
},
1018
{
1119
"url": "https://axolotl.yuniiworks.de/replays/",
1220
"provider": "nginx",
1321
"fallBackServerName": "axolotl",
14-
"fallBackServerId": "axolotl"
22+
"fallBackServerId": "axolotl",
23+
"replayRegex": "^[a-zA-Z0-9-]+-(\\d{4}_\\d{2}_\\d{2}-\\d{2}_\\d{2})-round_\\d+\\.zip$",
24+
"serverNameRegex": "(^[a-zA-Z0-9-]+)-\\d{4}_\\d{2}_\\d{2}-\\d{2}_\\d{2}-round_\\d+\\.zip$"
1525
},
1626
{
1727
"url": "https://moon.spacestation14.com/replays/leviathan/",
1828
"provider": "nginx",
1929
"fallBackServerName": "leviathan",
20-
"fallBackServerId": "wizards"
30+
"fallBackServerId": "wizards",
31+
"replayRegex": "^[a-zA-Z0-9-]+-(\\d{4}_\\d{2}_\\d{2}-\\d{2}_\\d{2})-round_\\d+\\.zip$",
32+
"serverNameRegex": "(^[a-zA-Z0-9-]+)-\\d{4}_\\d{2}_\\d{2}-\\d{2}_\\d{2}-round_\\d+\\.zip$"
2133
},
2234
{
2335
"url": "https://moon.spacestation14.com/replays/lizard/",
2436
"provider": "nginx",
2537
"fallBackServerName": "lizard",
26-
"fallBackServerId": "wizards"
38+
"fallBackServerId": "wizards",
39+
"replayRegex": "^[a-zA-Z0-9-]+-(\\d{4}_\\d{2}_\\d{2}-\\d{2}_\\d{2})-round_\\d+\\.zip$",
40+
"serverNameRegex": "(^[a-zA-Z0-9-]+)-\\d{4}_\\d{2}_\\d{2}-\\d{2}_\\d{2}-round_\\d+\\.zip$"
2741
},
2842
{
2943
"url": "https://moon.spacestation14.com/replays/miros/",
3044
"provider": "nginx",
3145
"fallBackServerName": "miros",
32-
"fallBackServerId": "wizards"
46+
"fallBackServerId": "wizards",
47+
"replayRegex": "^[a-zA-Z0-9-]+-(\\d{4}_\\d{2}_\\d{2}-\\d{2}_\\d{2})-round_\\d+\\.zip$",
48+
"serverNameRegex": "(^[a-zA-Z0-9-]+)-\\d{4}_\\d{2}_\\d{2}-\\d{2}_\\d{2}-round_\\d+\\.zip$"
3349
},
3450
{
3551
"url": "https://moon.spacestation14.com/replays/salamander/",
3652
"provider": "nginx",
3753
"fallBackServerName": "salamander",
38-
"fallBackServerId": "wizards"
54+
"fallBackServerId": "wizards",
55+
"replayRegex": "^[a-zA-Z0-9-]+-(\\d{4}_\\d{2}_\\d{2}-\\d{2}_\\d{2})-round_\\d+\\.zip$",
56+
"serverNameRegex": "(^[a-zA-Z0-9-]+)-\\d{4}_\\d{2}_\\d{2}-\\d{2}_\\d{2}-round_\\d+\\.zip$"
3957
},
4058
{
4159
"url": "https://moon.spacestation14.com/replays/vulture/",
4260
"provider": "nginx",
4361
"fallBackServerName": "vulture",
44-
"fallBackServerId": "wizards"
62+
"fallBackServerId": "wizards",
63+
"replayRegex": "^[a-zA-Z0-9-]+-(\\d{4}_\\d{2}_\\d{2}-\\d{2}_\\d{2})-round_\\d+\\.zip$",
64+
"serverNameRegex": "(^[a-zA-Z0-9-]+)-\\d{4}_\\d{2}_\\d{2}-\\d{2}_\\d{2}-round_\\d+\\.zip$"
4565
},
4666
{
4767
"url": "https://replays.delta-v.org/apoapsis/",
4868
"provider": "nginx",
4969
"fallBackServerName": "Server 1",
50-
"fallBackServerId": "deltav"
70+
"fallBackServerId": "deltav",
71+
"replayRegex": "^[a-zA-Z0-9-]+-(\\d{4}_\\d{2}_\\d{2}-\\d{2}_\\d{2})-round_\\d+\\.zip$",
72+
"serverNameRegex": "(^[a-zA-Z0-9-]+)-\\d{4}_\\d{2}_\\d{2}-\\d{2}_\\d{2}-round_\\d+\\.zip$"
5173
},
5274
{
5375
"url": "https://replays.delta-v.org/periapsis/",
5476
"provider": "nginx",
5577
"fallBackServerName": "Server 2",
56-
"fallBackServerId": "deltav"
78+
"fallBackServerId": "deltav",
79+
"replayRegex": "^[a-zA-Z0-9-]+-(\\d{4}_\\d{2}_\\d{2}-\\d{2}_\\d{2})-round_\\d+\\.zip$",
80+
"serverNameRegex": "(^[a-zA-Z0-9-]+)-\\d{4}_\\d{2}_\\d{2}-\\d{2}_\\d{2}-round_\\d+\\.zip$"
5781
}
5882
]
5983
}

0 commit comments

Comments
 (0)