1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-13 15:52:54 +08:00

Split out web response classes into own files

This commit is contained in:
Dean Herbert 2019-05-13 17:24:33 +09:00
parent 27ca094421
commit 8ecd1912e1
10 changed files with 125 additions and 103 deletions

View File

@ -27,7 +27,7 @@ namespace osu.Game.Tests.Visual
changelog.FetchAndShowBuild(new APIChangelogBuild
{
Version = "2018.712.0",
UpdateStream = new UpdateStream { Name = "lazer" },
UpdateStream = new APIUpdateStream { Name = "lazer" },
});
changelog.Show();
});

View File

@ -25,99 +25,21 @@ namespace osu.Game.Online.API.Requests.Responses
public DateTimeOffset CreatedAt { get; set; }
[JsonProperty("update_stream")]
public UpdateStream UpdateStream { get; set; }
public APIUpdateStream UpdateStream { get; set; }
[JsonProperty("changelog_entries")]
public List<ChangelogEntry> ChangelogEntries { get; set; }
public List<APIChangelogEntry> ChangelogEntries { get; set; }
[JsonProperty("versions")]
public Versions Versions { get; set; }
}
public VersionNativation Versions { get; set; }
public class Versions
{
[JsonProperty("next")]
public APIChangelogBuild Next { get; set; }
public class VersionNativation
{
[JsonProperty("next")]
public APIChangelogBuild Next { get; set; }
[JsonProperty("previous")]
public APIChangelogBuild Previous { get; set; }
}
public class ChangelogEntry
{
[JsonProperty("id")]
public long? Id { get; set; }
[JsonProperty("repository")]
public string Repository { get; set; }
[JsonProperty("github_pull_request_id")]
public long? GithubPullRequestId { get; set; }
[JsonProperty("github_url")]
public string GithubUrl { get; set; }
[JsonProperty("url")]
public string Url { get; set; }
[JsonProperty("type")]
public string Type { get; set; }
[JsonProperty("category")]
public string Category { get; set; }
[JsonProperty("title")]
public string Title { get; set; }
[JsonProperty("message_html")]
public string MessageHtml { get; set; }
[JsonProperty("major")]
public bool? Major { get; set; }
[JsonProperty("created_at")]
public DateTimeOffset? CreatedAt { get; set; }
[JsonProperty("github_user")]
public GithubUser GithubUser { get; set; }
}
public class GithubUser
{
[JsonProperty("id")]
public long? Id { get; set; }
[JsonProperty("display_name")]
public string DisplayName { get; set; }
[JsonProperty("github_url")]
public string GithubUrl { get; set; }
[JsonProperty("osu_username")]
public string OsuUsername { get; set; }
[JsonProperty("user_id")]
public long? UserId { get; set; }
[JsonProperty("user_url")]
public string UserUrl { get; set; }
}
public class UpdateStream
{
[JsonProperty("id")]
public long Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("is_featured")]
public bool IsFeatured { get; set; }
[JsonProperty("display_name")]
public string DisplayName { get; set; }
[JsonProperty("latest_build")]
public APIChangelogBuild LatestBuild { get; set; }
[JsonProperty("previous")]
public APIChangelogBuild Previous { get; set; }
}
}
}

View File

@ -0,0 +1,47 @@
// 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;
using Newtonsoft.Json;
namespace osu.Game.Online.API.Requests.Responses
{
public class APIChangelogEntry
{
[JsonProperty("id")]
public long? Id { get; set; }
[JsonProperty("repository")]
public string Repository { get; set; }
[JsonProperty("github_pull_request_id")]
public long? GithubPullRequestId { get; set; }
[JsonProperty("github_url")]
public string GithubUrl { get; set; }
[JsonProperty("url")]
public string Url { get; set; }
[JsonProperty("type")]
public string Type { get; set; }
[JsonProperty("category")]
public string Category { get; set; }
[JsonProperty("title")]
public string Title { get; set; }
[JsonProperty("message_html")]
public string MessageHtml { get; set; }
[JsonProperty("major")]
public bool? Major { get; set; }
[JsonProperty("created_at")]
public DateTimeOffset? CreatedAt { get; set; }
[JsonProperty("github_user")]
public APIChangelogUser GithubUser { get; set; }
}
}

View File

@ -9,6 +9,6 @@ namespace osu.Game.Online.API.Requests.Responses
{
public List<APIChangelogBuild> Builds;
public List<UpdateStream> Streams;
public List<APIUpdateStream> Streams;
}
}

View File

@ -0,0 +1,28 @@
// 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 Newtonsoft.Json;
namespace osu.Game.Online.API.Requests.Responses
{
public class APIChangelogUser
{
[JsonProperty("id")]
public long? Id { get; set; }
[JsonProperty("display_name")]
public string DisplayName { get; set; }
[JsonProperty("github_url")]
public string GithubUrl { get; set; }
[JsonProperty("osu_username")]
public string OsuUsername { get; set; }
[JsonProperty("user_id")]
public long? UserId { get; set; }
[JsonProperty("user_url")]
public string UserUrl { get; set; }
}
}

View File

@ -0,0 +1,25 @@
// 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 Newtonsoft.Json;
namespace osu.Game.Online.API.Requests.Responses
{
public class APIUpdateStream
{
[JsonProperty("id")]
public long Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("is_featured")]
public bool IsFeatured { get; set; }
[JsonProperty("display_name")]
public string DisplayName { get; set; }
[JsonProperty("latest_build")]
public APIChangelogBuild LatestBuild { get; set; }
}
}

View File

@ -45,9 +45,9 @@ namespace osu.Game.Overlays.Changelog
};
}
public void Populate(List<UpdateStream> streams)
public void Populate(List<APIUpdateStream> streams)
{
foreach (UpdateStream updateStream in streams)
foreach (APIUpdateStream updateStream in streams)
{
var streamBadge = new StreamBadge(updateStream);
streamBadge.Selected += onBadgeSelected;

View File

@ -19,8 +19,8 @@ namespace osu.Game.Overlays.Changelog
{
private readonly TooltipIconButton chevronPrevious, chevronNext;
private readonly SortedDictionary<string, List<ChangelogEntry>> categories =
new SortedDictionary<string, List<ChangelogEntry>>();
private readonly SortedDictionary<string, List<APIChangelogEntry>> categories =
new SortedDictionary<string, List<APIChangelogEntry>>();
public delegate void BuildSelectedEventHandler(APIChangelogBuild build, EventArgs args);
@ -204,18 +204,18 @@ namespace osu.Game.Overlays.Changelog
BuildSelected?.Invoke(build, EventArgs.Empty);
}
public void GenerateText(List<ChangelogEntry> changelogEntries)
public void GenerateText(List<APIChangelogEntry> changelogEntries)
{
// sort entries by category
foreach (ChangelogEntry entry in changelogEntries)
foreach (APIChangelogEntry entry in changelogEntries)
{
if (!categories.ContainsKey(entry.Category))
categories.Add(entry.Category, new List<ChangelogEntry> { entry });
categories.Add(entry.Category, new List<APIChangelogEntry> { entry });
else
categories[entry.Category].Add(entry);
}
foreach (KeyValuePair<string, List<ChangelogEntry>> category in categories)
foreach (KeyValuePair<string, List<APIChangelogEntry>> category in categories)
{
ChangelogEntries.Add(new SpriteText
{
@ -224,7 +224,7 @@ namespace osu.Game.Overlays.Changelog
Margin = new MarginPadding { Top = 35, Bottom = 15 },
});
foreach (ChangelogEntry entry in category.Value)
foreach (APIChangelogEntry entry in category.Value)
{
LinkFlowContainer title = new LinkFlowContainer
{

View File

@ -32,11 +32,11 @@ namespace osu.Game.Overlays.Changelog
private SampleChannel sampleClick;
private SampleChannel sampleHover;
public readonly UpdateStream Stream;
public readonly APIUpdateStream Stream;
private readonly FillFlowContainer<SpriteText> text;
public StreamBadge(UpdateStream stream)
public StreamBadge(APIUpdateStream stream)
{
Stream = stream;

View File

@ -189,8 +189,8 @@ namespace osu.Game.Overlays
/// <summary>
/// Fetches and shows a specific build from a specific update stream.
/// </summary>
/// <param name="build">Must contain at least <see cref="UpdateStream.Name"/> and
/// <see cref="APIChangelogBuild.Version"/>. If <see cref="UpdateStream.DisplayName"/> and
/// <param name="build">Must contain at least <see cref="APIUpdateStream.Name"/> and
/// <see cref="APIChangelogBuild.Version"/>. If <see cref="APIUpdateStream.DisplayName"/> and
/// <see cref="APIChangelogBuild.DisplayVersion"/> are specified, the header will instantly display them.</param>
/// <param name="updateBadges">Whether to update badges. Should be set to false in case
/// the function is called by selecting a badge, to avoid an infinite loop.</param>