diff --git a/osu.Game/Online/API/Requests/LookupUsersRequest.cs b/osu.Game/Online/API/Requests/LookupUsersRequest.cs index 6e98ce064e..99c1c551e4 100644 --- a/osu.Game/Online/API/Requests/LookupUsersRequest.cs +++ b/osu.Game/Online/API/Requests/LookupUsersRequest.cs @@ -10,21 +10,26 @@ namespace osu.Game.Online.API.Requests /// Looks up users with the given . /// In comparison to , the response here does not contain , /// but in exchange is subject to less stringent rate limiting, making it suitable for mass user listings. + /// + /// Providing a ruleset ID will give `global_rank`s in the response. /// public class LookupUsersRequest : APIRequest { public readonly int[] UserIds; + public readonly int? RulesetId; + private const int max_ids_per_request = 50; - public LookupUsersRequest(int[] userIds) + public LookupUsersRequest(int[] userIds, int? rulesetId = null) { if (userIds.Length > max_ids_per_request) throw new ArgumentException($"{nameof(LookupUsersRequest)} calls only support up to {max_ids_per_request} IDs at once"); UserIds = userIds; + RulesetId = rulesetId; } - protected override string Target => @"users/lookup/?ids[]=" + string.Join(@"&ids[]=", UserIds); + protected override string Target => @"users/lookup/?ids[]=" + string.Join(@"&ids[]=", UserIds) + (RulesetId != null ? "&ruleset_id=" + RulesetId : ""); } } diff --git a/osu.Game/Online/API/Requests/Responses/APIUser.cs b/osu.Game/Online/API/Requests/Responses/APIUser.cs index 6f122c58af..fa90e5cd50 100644 --- a/osu.Game/Online/API/Requests/Responses/APIUser.cs +++ b/osu.Game/Online/API/Requests/Responses/APIUser.cs @@ -247,6 +247,20 @@ namespace osu.Game.Online.API.Requests.Responses } } + // Only provided via /users/ batch lookups. Usually implicitly comes inside `UserStatistics`. + [JsonProperty(@"global_rank")] + [CanBeNull] + public GlobalRank Rank { get; set; } + + public class GlobalRank + { + [JsonProperty(@"rank")] + public int? Rank; + + [JsonProperty(@"ruleset_id")] + public int RulesetId; + } + [JsonProperty(@"rank_history")] private APIRankHistory rankHistory {