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 changelog.FetchAndShowBuild(new APIChangelogBuild
{ {
Version = "2018.712.0", Version = "2018.712.0",
UpdateStream = new UpdateStream { Name = "lazer" }, UpdateStream = new APIUpdateStream { Name = "lazer" },
}); });
changelog.Show(); changelog.Show();
}); });

View File

@ -25,99 +25,21 @@ namespace osu.Game.Online.API.Requests.Responses
public DateTimeOffset CreatedAt { get; set; } public DateTimeOffset CreatedAt { get; set; }
[JsonProperty("update_stream")] [JsonProperty("update_stream")]
public UpdateStream UpdateStream { get; set; } public APIUpdateStream UpdateStream { get; set; }
[JsonProperty("changelog_entries")] [JsonProperty("changelog_entries")]
public List<ChangelogEntry> ChangelogEntries { get; set; } public List<APIChangelogEntry> ChangelogEntries { get; set; }
[JsonProperty("versions")] [JsonProperty("versions")]
public Versions Versions { get; set; } public VersionNativation Versions { get; set; }
}
public class Versions public class VersionNativation
{ {
[JsonProperty("next")] [JsonProperty("next")]
public APIChangelogBuild Next { get; set; } public APIChangelogBuild Next { get; set; }
[JsonProperty("previous")] [JsonProperty("previous")]
public APIChangelogBuild Previous { get; set; } 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; }
} }
} }

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<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); var streamBadge = new StreamBadge(updateStream);
streamBadge.Selected += onBadgeSelected; streamBadge.Selected += onBadgeSelected;

View File

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

View File

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

View File

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