44using API . Util ;
55using DotNetBungieAPI . HashReferences ;
66using DotNetBungieAPI . Models . Destiny ;
7+ using DotNetBungieAPI . Models . Exceptions ;
78using DotNetBungieAPI . Service . Abstractions ;
89using 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 ;
0 commit comments