From 934c2440cca199ec1a76daedf9f391129b76e2dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Mon, 12 May 2025 09:54:56 +0200 Subject: [PATCH] Fetch more scores for supporter scope leaderboards MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Which are: global and team leaderboards with mods, and friends and country leaderboards. Only attempting this because of https://github.com/ppy/osu/issues/31056#issuecomment-2719787189. Not sure if this addresses the concern 🤷 --- .../Online/API/Requests/GetScoresRequest.cs | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/osu.Game/Online/API/Requests/GetScoresRequest.cs b/osu.Game/Online/API/Requests/GetScoresRequest.cs index ed26c77dd9..675be3f98e 100644 --- a/osu.Game/Online/API/Requests/GetScoresRequest.cs +++ b/osu.Game/Online/API/Requests/GetScoresRequest.cs @@ -7,15 +7,18 @@ using osu.Game.Rulesets; using osu.Game.Screens.Select.Leaderboards; using osu.Game.Online.API.Requests.Responses; using osu.Game.Rulesets.Mods; -using System.Text; using System.Collections.Generic; +using System.Globalization; using System.Linq; +using osu.Framework.IO.Network; +using osu.Game.Extensions; namespace osu.Game.Online.API.Requests { public class GetScoresRequest : APIRequest, IEquatable { - public const int MAX_SCORES_PER_REQUEST = 50; + public const int DEFAULT_SCORES_PER_REQUEST = 50; + public const int MAX_SCORES_PER_REQUEST = 100; private readonly IBeatmapInfo beatmapInfo; private readonly BeatmapLeaderboardScope scope; @@ -36,19 +39,20 @@ namespace osu.Game.Online.API.Requests this.mods = mods ?? Array.Empty(); } - protected override string Target => $@"beatmaps/{beatmapInfo.OnlineID}/scores{createQueryParameters()}"; + protected override string Target => $@"beatmaps/{beatmapInfo.OnlineID}/scores"; - private string createQueryParameters() + protected override WebRequest CreateWebRequest() { - StringBuilder query = new StringBuilder(@"?"); + var req = base.CreateWebRequest(); - query.Append($@"type={scope.ToString().ToLowerInvariant()}"); - query.Append($@"&mode={ruleset.ShortName}"); + req.AddParameter(@"type", scope.ToString().ToLowerInvariant()); + req.AddParameter(@"mode", ruleset.ShortName); foreach (var mod in mods) - query.Append($@"&mods[]={mod.Acronym}"); + req.AddParameter(@"mods[]", mod.Acronym); - return query.ToString(); + req.AddParameter(@"limit", (scope.RequiresSupporter(mods.Any()) ? MAX_SCORES_PER_REQUEST : DEFAULT_SCORES_PER_REQUEST).ToString(CultureInfo.InvariantCulture)); + return req; } public bool Equals(GetScoresRequest? other)