Skip to content

Commit f808774

Browse files
author
Moons
committed
fix(tasks): add html debug + db refresh attempt
1 parent 484d9f9 commit f808774

File tree

9 files changed

+69
-35
lines changed

9 files changed

+69
-35
lines changed

API.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@
2323

2424
<ItemGroup>
2525
<PackageReference Include="Discord.Net.Webhook" Version="3.13.0" />
26-
<PackageReference Include="DotNetBungieAPI" Version="2.12.2" />
26+
<PackageReference Include="DotNetBungieAPI" Version="2.12.3" />
2727
<PackageReference Include="DotNetBungieAPI.AspNet.Security.OAuth.Providers" Version="1.0.2" />
28-
<PackageReference Include="DotNetBungieAPI.DefinitionProvider.Sqlite" Version="1.5.3" />
28+
<PackageReference Include="DotNetBungieAPI.DefinitionProvider.Sqlite" Version="1.5.4" />
2929
<PackageReference Include="DotNetBungieAPI.HashReferences" Version="1.22.1" />
30-
<PackageReference Include="DotNetBungieAPI.Models" Version="2.11.3" />
31-
<PackageReference Include="DotNetBungieAPI.Service.Abstractions" Version="2.11.1" />
30+
<PackageReference Include="DotNetBungieAPI.Models" Version="2.11.4" />
31+
<PackageReference Include="DotNetBungieAPI.Service.Abstractions" Version="2.11.2" />
3232
<PackageReference Include="Microsoft.Data.Sqlite.Core" Version="8.0.0" />
3333
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.0">
3434
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>

Tasks/UserRefresh.cs

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using API.Util;
55
using DotNetBungieAPI.HashReferences;
66
using DotNetBungieAPI.Models.Destiny;
7+
using DotNetBungieAPI.Models.Exceptions;
78
using DotNetBungieAPI.Service.Abstractions;
89
using Microsoft.EntityFrameworkCore;
910

@@ -19,17 +20,17 @@ public class UserRefresh(
1920

2021
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
2122
{
22-
using var scope = services.CreateScope();
23-
var db =
24-
scope.ServiceProvider
25-
.GetRequiredService<DbManager>();
26-
2723
while (!stoppingToken.IsCancellationRequested)
2824
{
2925
TaskSchedulerService.Tasks.First(t => t.Name == ServiceName).IsRunning = true;
3026

3127
try
3228
{
29+
using var scope = services.CreateScope();
30+
var db =
31+
scope.ServiceProvider
32+
.GetRequiredService<DbManager>();
33+
3334
var users = await db.Users.Include(u => u.BungieProfiles).ToListAsync(stoppingToken);
3435
var bungieProfiles = users.SelectMany(u => u.BungieProfiles)
3536
// TODO: .Where(u => u.NeverExpire)
@@ -123,9 +124,23 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
123124

124125
await db.SaveChangesAsync(stoppingToken);
125126
}
127+
catch (BungieHtmlResponseErrorException e)
128+
{
129+
logger.LogError(e, "Exception in {service}", ServiceName);
130+
131+
var fileName = $"Logs/bungie-error-{DateTimeExtensions.GetCurrentTimestamp()}.html";
132+
133+
await File.WriteAllTextAsync(fileName, e.Html, stoppingToken);
134+
135+
await DiscordTools.SendMessage(DiscordTools.WebhookChannel.Logs,
136+
$"Exception in {ServiceName}:\n\n>>> {e.GetType()}: Logs saved to {fileName}");
137+
}
126138
catch (Exception e)
127139
{
128140
logger.LogError(e, "Exception in {service}", ServiceName);
141+
142+
await DiscordTools.SendMessage(DiscordTools.WebhookChannel.Logs,
143+
$"Exception in {ServiceName}:\n\n>>> {e.GetType()}: {e.Message}");
129144
}
130145

131146
TaskSchedulerService.Tasks.First(t => t.Name == ServiceName).IsRunning = false;

Tasks/VendorsAdepts.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,6 @@ public class VendorsAdepts(
2323

2424
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
2525
{
26-
using var scope = services.CreateScope();
27-
var db =
28-
scope.ServiceProvider
29-
.GetRequiredService<DbManager>();
30-
3126
// TODO: raise this to 5/10 minutes
3227
await Task.Delay(DateTimeExtensions.GetRoundTimeSpan(2), stoppingToken);
3328

@@ -45,6 +40,11 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
4540

4641
try
4742
{
43+
using var scope = services.CreateScope();
44+
var db =
45+
scope.ServiceProvider
46+
.GetRequiredService<DbManager>();
47+
4848
var vendorUser = db.Users.Include(u => u.BungieProfiles)
4949
.FirstOrDefault(x => x.Id == UserExtensions.SignId(Variables.OwnerId));
5050

Tasks/VendorsGunsmith.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,6 @@ public class VendorsGunsmith(
1818

1919
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
2020
{
21-
using var scope = services.CreateScope();
22-
var db =
23-
scope.ServiceProvider
24-
.GetRequiredService<DbManager>();
25-
2621
// TODO: raise this to 5/10 minutes
2722
await Task.Delay(DateTimeExtensions.GetRoundTimeSpan(2), stoppingToken);
2823

@@ -35,6 +30,11 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
3530

3631
try
3732
{
33+
using var scope = services.CreateScope();
34+
var db =
35+
scope.ServiceProvider
36+
.GetRequiredService<DbManager>();
37+
3838
var vendorUser = db.Users.Include(u => u.BungieProfiles)
3939
.FirstOrDefault(x => x.Id == UserExtensions.SignId(Variables.OwnerId));
4040

Tasks/VendorsIronBanner.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,6 @@ public class VendorsIronBanner(
1919

2020
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
2121
{
22-
using var scope = services.CreateScope();
23-
var db =
24-
scope.ServiceProvider
25-
.GetRequiredService<DbManager>();
26-
2722
// TODO: raise this to 5/10 minutes
2823
await Task.Delay(DateTimeExtensions.GetRoundTimeSpan(2), stoppingToken);
2924

@@ -36,6 +31,11 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
3631

3732
try
3833
{
34+
using var scope = services.CreateScope();
35+
var db =
36+
scope.ServiceProvider
37+
.GetRequiredService<DbManager>();
38+
3939
var userList = new List<VendorUser?>
4040
{
4141
db.VendorUsers.FirstOrDefault(x => x.VendorId == VendorId && x.Resets == 0 && x.Rank < 10),

Tasks/VendorsTrials.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,6 @@ public class VendorsTrials(
1919

2020
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
2121
{
22-
using var scope = services.CreateScope();
23-
var db =
24-
scope.ServiceProvider
25-
.GetRequiredService<DbManager>();
26-
2722
// TODO: raise this to 5/10 minutes
2823
await Task.Delay(DateTimeExtensions.GetRoundTimeSpan(2), stoppingToken);
2924

@@ -36,6 +31,11 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
3631

3732
try
3833
{
34+
using var scope = services.CreateScope();
35+
var db =
36+
scope.ServiceProvider
37+
.GetRequiredService<DbManager>();
38+
3939
var userList = new List<VendorUser?>
4040
{
4141
db.VendorUsers.FirstOrDefault(x => x.VendorId == VendorId && x.Resets == 0 && x.Rank < 10),

Tasks/VendorsWarTable.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,6 @@ public class VendorsWarTable(
1818

1919
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
2020
{
21-
using var scope = services.CreateScope();
22-
var db =
23-
scope.ServiceProvider
24-
.GetRequiredService<DbManager>();
25-
2621
// TODO: raise this to 5/10 minutes
2722
await Task.Delay(DateTimeExtensions.GetRoundTimeSpan(2), stoppingToken);
2823

@@ -35,6 +30,11 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
3530

3631
try
3732
{
33+
using var scope = services.CreateScope();
34+
var db =
35+
scope.ServiceProvider
36+
.GetRequiredService<DbManager>();
37+
3838
var vendorUser = db.Users.Include(u => u.BungieProfiles)
3939
.FirstOrDefault(x => x.Id == UserExtensions.SignId(Variables.BotId));
4040

Util/DateTimeExtensions.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,9 @@ public static DateTime GetRoundTime(DateTime currentTime, int roundMinutes)
1818

1919
return nextRoundTime;
2020
}
21+
22+
public static long GetCurrentTimestamp()
23+
{
24+
return DateTimeOffset.Now.ToUnixTimeSeconds();
25+
}
2126
}

Util/VendorTools.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,15 @@
55
using DotNetBungieAPI.Extensions;
66
using DotNetBungieAPI.Models.Destiny;
77
using DotNetBungieAPI.Models.Destiny.Definitions.Vendors;
8+
using DotNetBungieAPI.Models.Exceptions;
89
using DotNetBungieAPI.Service.Abstractions;
910

1011
namespace API.Util;
1112

1213
public static class VendorTools
1314
{
15+
private const string ServiceName = "VendorTools";
16+
1417
public static async Task<bool> SingleVendorUpdate(
1518
IBungieClient bungieClient,
1619
DbManager db,
@@ -105,11 +108,22 @@ public static async Task<bool> SingleVendorUpdate(
105108

106109
success = true;
107110
}
111+
catch (BungieHtmlResponseErrorException e)
112+
{
113+
logger.LogError(e, "Exception in {service}", ServiceName);
114+
115+
var fileName = $"Logs/bungie-error-{DateTimeExtensions.GetCurrentTimestamp()}.html";
116+
117+
await File.WriteAllTextAsync(fileName, e.Html, stoppingToken);
118+
119+
await DiscordTools.SendMessage(DiscordTools.WebhookChannel.Logs,
120+
$"Exception in {ServiceName}:\n\n>>> {e.GetType()}: Logs saved to {fileName}");
121+
}
108122
catch (Exception e)
109123
{
110124
await DiscordTools.SendMessage(DiscordTools.WebhookChannel.Logs,
111125
$"**Exception in SingleVendorUpdate({vendorId}).**\n\n>>> **{e.GetType()}**: {e.Message}");
112-
logger.LogError(e, "Exception in {service}", "SingleVendorUpdate");
126+
logger.LogError(e, "Exception in {service}", ServiceName);
113127
}
114128

115129
return success;

0 commit comments

Comments
 (0)