Merge branch 'master' into present-recommended

This commit is contained in:
Dean Herbert
2020-06-03 12:31:23 +09:00
committed by GitHub
492 changed files with 7953 additions and 3490 deletions

View File

@ -127,7 +127,7 @@ namespace osu.Game.Online.API
case APIState.Offline:
case APIState.Connecting:
//work to restore a connection...
// work to restore a connection...
if (!HasLogin)
{
State = APIState.Offline;
@ -180,7 +180,7 @@ namespace osu.Game.Online.API
break;
}
//hard bail if we can't get a valid access token.
// hard bail if we can't get a valid access token.
if (authentication.RequestAccessToken() == null)
{
Logout();
@ -274,7 +274,7 @@ namespace osu.Game.Online.API
{
req.Perform(this);
//we could still be in initialisation, at which point we don't want to say we're Online yet.
// we could still be in initialisation, at which point we don't want to say we're Online yet.
if (IsLoggedIn) State = APIState.Online;
failureCount = 0;
@ -339,7 +339,7 @@ namespace osu.Game.Online.API
log.Add($@"API failure count is now {failureCount}");
if (failureCount < 3)
//we might try again at an api level.
// we might try again at an api level.
return false;
if (State == APIState.Online)

View File

@ -98,7 +98,7 @@ namespace osu.Game.Online.API
if (checkAndScheduleFailure())
return;
if (!WebRequest.Aborted) //could have been aborted by a Cancel() call
if (!WebRequest.Aborted) // could have been aborted by a Cancel() call
{
Logger.Log($@"Performing request {this}", LoggingTarget.Network);
WebRequest.Perform();

View File

@ -0,0 +1,20 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
using System.Collections.Generic;
using JetBrains.Annotations;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace osu.Game.Online.API.Requests
{
/// <summary>
/// A collection of parameters which should be passed to the search endpoint to fetch the next page.
/// </summary>
public class Cursor
{
[UsedImplicitly]
[JsonExtensionData]
public IDictionary<string, JToken> Properties;
}
}

View File

@ -7,10 +7,7 @@ namespace osu.Game.Online.API.Requests
{
public abstract class ResponseWithCursor
{
/// <summary>
/// A collection of parameters which should be passed to the search endpoint to fetch the next page.
/// </summary>
[JsonProperty("cursor")]
public dynamic CursorJson;
public Cursor Cursor;
}
}

View File

@ -2,6 +2,7 @@
// See the LICENCE file in the repository root for full licence text.
using osu.Framework.IO.Network;
using osu.Game.Extensions;
using osu.Game.Overlays;
using osu.Game.Overlays.BeatmapListing;
using osu.Game.Rulesets;
@ -10,31 +11,41 @@ namespace osu.Game.Online.API.Requests
{
public class SearchBeatmapSetsRequest : APIRequest<SearchBeatmapSetsResponse>
{
public SearchCategory SearchCategory { get; set; }
public SearchCategory SearchCategory { get; }
public SortCriteria SortCriteria { get; set; }
public SortCriteria SortCriteria { get; }
public SortDirection SortDirection { get; set; }
public SortDirection SortDirection { get; }
public SearchGenre Genre { get; set; }
public SearchGenre Genre { get; }
public SearchLanguage Language { get; set; }
public SearchLanguage Language { get; }
private readonly string query;
private readonly RulesetInfo ruleset;
private readonly Cursor cursor;
private string directionString => SortDirection == SortDirection.Descending ? @"desc" : @"asc";
public SearchBeatmapSetsRequest(string query, RulesetInfo ruleset)
public SearchBeatmapSetsRequest(
string query,
RulesetInfo ruleset,
Cursor cursor = null,
SearchCategory searchCategory = SearchCategory.Any,
SortCriteria sortCriteria = SortCriteria.Ranked,
SortDirection sortDirection = SortDirection.Descending,
SearchGenre genre = SearchGenre.Any,
SearchLanguage language = SearchLanguage.Any)
{
this.query = string.IsNullOrEmpty(query) ? string.Empty : System.Uri.EscapeDataString(query);
this.ruleset = ruleset;
this.cursor = cursor;
SearchCategory = SearchCategory.Any;
SortCriteria = SortCriteria.Ranked;
SortDirection = SortDirection.Descending;
Genre = SearchGenre.Any;
Language = SearchLanguage.Any;
SearchCategory = searchCategory;
SortCriteria = sortCriteria;
SortDirection = sortDirection;
Genre = genre;
Language = language;
}
protected override WebRequest CreateWebRequest()
@ -55,6 +66,8 @@ namespace osu.Game.Online.API.Requests
req.AddParameter("sort", $"{SortCriteria.ToString().ToLowerInvariant()}_{directionString}");
req.AddCursor(cursor);
return req;
}