// Copyright (c) ppy Pty Ltd . 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 APIMenuImage : IEquatable { /// /// A URL pointing to the image which should be displayed. Generally should be an @2x image filename. /// [JsonProperty(@"image")] public string Image { get; init; } = string.Empty; /// /// A URL that should be opened on clicking the image. /// [JsonProperty(@"url")] public string Url { get; init; } = string.Empty; /// /// The time at which this item should begin displaying. If null, will display immediately. /// [JsonProperty(@"begins")] public DateTimeOffset? Begins { get; set; } /// /// The time at which this item should stop displaying. If null, will display indefinitely. /// [JsonProperty(@"expires")] public DateTimeOffset? Expires { get; set; } public bool Equals(APIMenuImage? other) { if (ReferenceEquals(null, other)) return false; if (ReferenceEquals(this, other)) return true; return Image == other.Image && Url == other.Url; } public override bool Equals(object? obj) { if (ReferenceEquals(null, obj)) return false; if (ReferenceEquals(this, obj)) return true; if (obj.GetType() != GetType()) return false; return Equals((APIMenuImage)obj); } public override int GetHashCode() { return HashCode.Combine(Image, Url); } } }