From 666f9966216937cd93e4ce86d869d37719c75a52 Mon Sep 17 00:00:00 2001 From: CrosswaveOmega <62901101+CrosswaveOmega@users.noreply.github.com> Date: Fri, 25 Jul 2025 16:06:11 -0400 Subject: [PATCH 1/7] Update ArrowHeadApiService.cs adding From_Timestamp to NewsFeed task --- src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs b/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs index 0e2223a..135d557 100644 --- a/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs +++ b/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs @@ -74,9 +74,12 @@ public async Task> GetWarStatus(string season, string language, Can public async Task> LoadFeed(string season, string language, CancellationToken cancellationToken) { // If the `NewsFeedMaxEntries` flag is not set to 0 we pass it in. + + // TODO: add fromTimestamp to options.Value + var from_timestamp=0; var request = options.Value.NewsFeedMaxEntries is 0 - ? BuildRequest($"/api/NewsFeed/{season}", language) - : BuildRequest($"/api/NewsFeed/{season}?maxEntries=${options.Value.NewsFeedMaxEntries}", language); + ? BuildRequest($"/api/NewsFeed/{season}?fromTimestamp=${from_timestamp}", language) + : BuildRequest($"/api/NewsFeed/{season}?maxEntries=${options.Value.NewsFeedMaxEntries}&fromTimestamp=${from_timestamp}", language); using var response = await http.SendAsync(request, cancellationToken); From a74f02357fa701d5a99bb34b3d3ef047b6138134 Mon Sep 17 00:00:00 2001 From: CrosswaveOmega <62901101+CrosswaveOmega@users.noreply.github.com> Date: Fri, 25 Jul 2025 16:11:24 -0400 Subject: [PATCH 2/7] Update HelldiversSyncConfiguration.cs Adding NewsFeedFromTimestamp --- .../Configuration/HelldiversSyncConfiguration.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/Helldivers-2-Sync/Configuration/HelldiversSyncConfiguration.cs b/src/Helldivers-2-Sync/Configuration/HelldiversSyncConfiguration.cs index d82dc62..2b8acb8 100644 --- a/src/Helldivers-2-Sync/Configuration/HelldiversSyncConfiguration.cs +++ b/src/Helldivers-2-Sync/Configuration/HelldiversSyncConfiguration.cs @@ -35,4 +35,11 @@ public sealed class HelldiversSyncConfiguration /// Get the maximum number of entries returned by ArrowHead from the newsfeed API. /// public uint NewsFeedMaxEntries { get; set; } = 1024; + + + + /// + /// Get all News Feed Entries that where published after THIS timestamp + /// + public uint NewsFeedFromTimestamp { get; set; } = 1000; } From 53f273fd37e459d50fc02db7931add4d63440517 Mon Sep 17 00:00:00 2001 From: CrosswaveOmega <62901101+CrosswaveOmega@users.noreply.github.com> Date: Fri, 25 Jul 2025 16:13:15 -0400 Subject: [PATCH 3/7] Update ArrowHeadApiService.cs added NewsFeedFromTimestamp into ArrowHeadApiService, this prevents a crash. --- src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs b/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs index 135d557..944fe94 100644 --- a/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs +++ b/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs @@ -75,11 +75,10 @@ public async Task> LoadFeed(string season, string language, Cancell { // If the `NewsFeedMaxEntries` flag is not set to 0 we pass it in. - // TODO: add fromTimestamp to options.Value - var from_timestamp=0; + // fromTimestamp is in options.Value. This parameter is needed or else a 400 error will be reached. var request = options.Value.NewsFeedMaxEntries is 0 - ? BuildRequest($"/api/NewsFeed/{season}?fromTimestamp=${from_timestamp}", language) - : BuildRequest($"/api/NewsFeed/{season}?maxEntries=${options.Value.NewsFeedMaxEntries}&fromTimestamp=${from_timestamp}", language); + ? BuildRequest($"/api/NewsFeed/{season}?fromTimestamp=${options.Value.NewsFeedFromTimestamp}", language) + : BuildRequest($"/api/NewsFeed/{season}?maxEntries=${options.Value.NewsFeedMaxEntries}&fromTimestamp=${options.Value.NewsFeedFromTimestamp}", language); using var response = await http.SendAsync(request, cancellationToken); From 1be287b5e53eae19ec4d0fecb8282339739e19bc Mon Sep 17 00:00:00 2001 From: CrosswaveOmega Date: Sat, 26 Jul 2025 13:04:38 -0400 Subject: [PATCH 4/7] adding in formatting requests, and fixing what I found to be the acutal issue. ${} isn't to be used in C#! --- .../Configuration/HelldiversSyncConfiguration.cs | 4 +--- src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs | 5 ++--- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/Helldivers-2-Sync/Configuration/HelldiversSyncConfiguration.cs b/src/Helldivers-2-Sync/Configuration/HelldiversSyncConfiguration.cs index 2b8acb8..61819c7 100644 --- a/src/Helldivers-2-Sync/Configuration/HelldiversSyncConfiguration.cs +++ b/src/Helldivers-2-Sync/Configuration/HelldiversSyncConfiguration.cs @@ -36,10 +36,8 @@ public sealed class HelldiversSyncConfiguration /// public uint NewsFeedMaxEntries { get; set; } = 1024; - - /// - /// Get all News Feed Entries that where published after THIS timestamp + /// Get all news feed entries that were published after this timestamp /// public uint NewsFeedFromTimestamp { get; set; } = 1000; } diff --git a/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs b/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs index 944fe94..f31eb81 100644 --- a/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs +++ b/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs @@ -77,12 +77,11 @@ public async Task> LoadFeed(string season, string language, Cancell // fromTimestamp is in options.Value. This parameter is needed or else a 400 error will be reached. var request = options.Value.NewsFeedMaxEntries is 0 - ? BuildRequest($"/api/NewsFeed/{season}?fromTimestamp=${options.Value.NewsFeedFromTimestamp}", language) - : BuildRequest($"/api/NewsFeed/{season}?maxEntries=${options.Value.NewsFeedMaxEntries}&fromTimestamp=${options.Value.NewsFeedFromTimestamp}", language); + ? BuildRequest($"/api/NewsFeed/{season}?fromTimestamp={options.Value.NewsFeedFromTimestamp}", language) + : BuildRequest($"/api/NewsFeed/{season}?maxEntries={options.Value.NewsFeedMaxEntries}&fromTimestamp={options.Value.NewsFeedFromTimestamp}", 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); From c44e5d2325fd2719874628a2bdf8be25d4b41c00 Mon Sep 17 00:00:00 2001 From: CrosswaveOmega Date: Sat, 26 Jul 2025 13:43:25 -0400 Subject: [PATCH 5/7] correcting spacing --- src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs b/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs index f31eb81..6dbfcfa 100644 --- a/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs +++ b/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs @@ -75,16 +75,18 @@ public async Task> LoadFeed(string season, string language, Cancell { // If the `NewsFeedMaxEntries` flag is not set to 0 we pass it in. - // fromTimestamp is in options.Value. This parameter is needed or else a 400 error will be reached. + // fromTimestamp is in options.Value. This parameter is needed or else a 400 error will be reached every so often. var request = options.Value.NewsFeedMaxEntries is 0 ? BuildRequest($"/api/NewsFeed/{season}?fromTimestamp={options.Value.NewsFeedFromTimestamp}", language) : BuildRequest($"/api/NewsFeed/{season}?maxEntries={options.Value.NewsFeedMaxEntries}&fromTimestamp={options.Value.NewsFeedFromTimestamp}", 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); } From 480a2a8f48df2fe4b6f54221a0094800f03b6462 Mon Sep 17 00:00:00 2001 From: CrosswaveOmega <62901101+CrosswaveOmega@users.noreply.github.com> Date: Sat, 26 Jul 2025 18:18:32 -0400 Subject: [PATCH 6/7] Update ArrowHeadApiService.cs --- src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs b/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs index 6dbfcfa..ea28c36 100644 --- a/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs +++ b/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs @@ -74,7 +74,6 @@ public async Task> GetWarStatus(string season, string language, Can public async Task> LoadFeed(string season, string language, CancellationToken cancellationToken) { // If the `NewsFeedMaxEntries` flag is not set to 0 we pass it in. - // fromTimestamp is in options.Value. This parameter is needed or else a 400 error will be reached every so often. var request = options.Value.NewsFeedMaxEntries is 0 ? BuildRequest($"/api/NewsFeed/{season}?fromTimestamp={options.Value.NewsFeedFromTimestamp}", language) From 468ced850abed50f0e6fa2a9b74860aa655e14ee Mon Sep 17 00:00:00 2001 From: CrosswaveOmega <62901101+CrosswaveOmega@users.noreply.github.com> Date: Sun, 27 Jul 2025 17:52:31 -0400 Subject: [PATCH 7/7] Update ArrowHeadApiService.cs Co-authored-by: Wannes Gennar --- src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs b/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs index ea28c36..1ac5ae1 100644 --- a/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs +++ b/src/Helldivers-2-Sync/Services/ArrowHeadApiService.cs @@ -74,7 +74,7 @@ public async Task> GetWarStatus(string season, string language, Can public async Task> LoadFeed(string season, string language, CancellationToken cancellationToken) { // If the `NewsFeedMaxEntries` flag is not set to 0 we pass it in. - // fromTimestamp is in options.Value. This parameter is needed or else a 400 error will be reached every so often. + // This parameter needs to be passed or a 400 status code will be returned occasionally. var request = options.Value.NewsFeedMaxEntries is 0 ? BuildRequest($"/api/NewsFeed/{season}?fromTimestamp={options.Value.NewsFeedFromTimestamp}", language) : BuildRequest($"/api/NewsFeed/{season}?maxEntries={options.Value.NewsFeedMaxEntries}&fromTimestamp={options.Value.NewsFeedFromTimestamp}", language);