diff --git a/osu.Game/Online/API/APIRequest.cs b/osu.Game/Online/API/APIRequest.cs
index fcbd4d314a..0956c749a2 100644
--- a/osu.Game/Online/API/APIRequest.cs
+++ b/osu.Game/Online/API/APIRequest.cs
@@ -14,7 +14,7 @@ namespace osu.Game.Online.API
/// Type of the response (used for deserialisation).
public abstract class APIRequest : APIRequest
{
- protected override WebRequest CreateWebRequest() => new JsonWebRequest(Uri);
+ protected override WebRequest CreateWebRequest() => new OsuJsonWebRequest(Uri);
public T Result => ((JsonWebRequest)WebRequest).ResponseObject;
@@ -30,6 +30,16 @@ namespace osu.Game.Online.API
/// This will be scheduled to the API's internal scheduler (run on update thread automatically).
///
public new event APISuccessHandler Success;
+
+ private class OsuJsonWebRequest : JsonWebRequest
+ {
+ public OsuJsonWebRequest(string uri)
+ : base(uri)
+ {
+ }
+
+ protected override string UserAgent => "osu!";
+ }
}
///
@@ -39,7 +49,7 @@ namespace osu.Game.Online.API
{
protected abstract string Target { get; }
- protected virtual WebRequest CreateWebRequest() => new WebRequest(Uri);
+ protected virtual WebRequest CreateWebRequest() => new OsuWebRequest(Uri);
protected virtual string Uri => $@"{API.Endpoint}/api/v2/{Target}";
@@ -152,6 +162,16 @@ namespace osu.Game.Online.API
[JsonProperty("error")]
public string ErrorMessage { get; set; }
}
+
+ private class OsuWebRequest : WebRequest
+ {
+ public OsuWebRequest(string uri)
+ : base(uri)
+ {
+ }
+
+ protected override string UserAgent => "osu!";
+ }
}
public class APIException : InvalidOperationException