diff --git a/.github/workflows/sync.yml b/.github/workflows/sync.yml index 98038b0..1a5af52 100644 --- a/.github/workflows/sync.yml +++ b/.github/workflows/sync.yml @@ -11,6 +11,7 @@ on: branches: ["master"] schedule: - cron: '0 0 * * *' + workflow_dispatch: jobs: validate-sync: diff --git a/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs b/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs index d74a857..7cb256a 100644 --- a/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs +++ b/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs @@ -22,6 +22,10 @@ HttpClient http { var request = BuildRequest("/api/WarSeason/current/WarID"); using var response = await http.SendAsync(request, cancellationToken); + + // Throw on error responses so we don't have to look down the entire serialisation tree. + response.EnsureSuccessStatusCode(); + await using var stream = await response.Content.ReadAsStreamAsync(cancellationToken); var memory = await CollectStream(stream, cancellationToken); var warId = JsonSerializer.Deserialize( @@ -39,6 +43,10 @@ public async Task> GetWarInfo(string season, CancellationToken canc { var request = BuildRequest($"/api/WarSeason/{season}/WarInfo"); using var response = await http.SendAsync(request, cancellationToken); + + // Throw on error responses so we don't have to look down the entire serialisation tree. + response.EnsureSuccessStatusCode(); + await using var stream = await response.Content.ReadAsStreamAsync(cancellationToken); return await CollectStream(stream, cancellationToken); @@ -51,6 +59,10 @@ public async Task> GetWarStatus(string season, string language, Can { var request = BuildRequest($"/api/WarSeason/{season}/Status", language); using var response = await http.SendAsync(request, cancellationToken); + + // Throw on error responses so we don't have to look down the entire serialisation tree. + response.EnsureSuccessStatusCode(); + await using var stream = await response.Content.ReadAsStreamAsync(cancellationToken); return await CollectStream(stream, cancellationToken); @@ -61,10 +73,13 @@ public async Task> GetWarStatus(string season, string language, Can /// public async Task> LoadFeed(string season, string language, CancellationToken cancellationToken) { - var request = BuildRequest($"/api/NewsFeed/{season}?maxEntries=1024", language); + var request = BuildRequest($"/api/NewsFeed/{season}", language); using var response = await http.SendAsync(request, cancellationToken); - await using var stream = await response.Content.ReadAsStreamAsync(cancellationToken); + // Throw on error responses so we don't have to look down the entire serialisation tree. + response.EnsureSuccessStatusCode(); + + await using var stream = await response.Content.ReadAsStreamAsync(cancellationToken); return await CollectStream(stream, cancellationToken); } @@ -75,6 +90,10 @@ public async Task> LoadAssignments(string season, string language, { var request = BuildRequest($"/api/v2/Assignment/War/{season}", language); using var response = await http.SendAsync(request, cancellationToken); + + // Throw on error responses so we don't have to look down the entire serialisation tree. + response.EnsureSuccessStatusCode(); + await using var stream = await response.Content.ReadAsStreamAsync(cancellationToken); return await CollectStream(stream, cancellationToken); @@ -87,6 +106,10 @@ public async Task> LoadSpaceStations(string season, long id, string { var request = BuildRequest($"/api/SpaceStation/{season}/{id}", language); using var response = await http.SendAsync(request, cancellationToken); + + // Throw on error responses so we don't have to look down the entire serialisation tree. + response.EnsureSuccessStatusCode(); + await using var stream = await response.Content.ReadAsStreamAsync(cancellationToken); return await CollectStream(stream, cancellationToken); @@ -99,6 +122,10 @@ public async Task> GetSummary(string season, CancellationToken canc { var request = BuildRequest($"/api/Stats/war/{season}/summary"); using var response = await http.SendAsync(request, cancellationToken); + + // Throw on error responses so we don't have to look down the entire serialisation tree. + response.EnsureSuccessStatusCode(); + await using var stream = await response.Content.ReadAsStreamAsync(cancellationToken); return await CollectStream(stream, cancellationToken);