using System.Text.Json.Serialization; using System.Threading; using System.Threading.Tasks; using Luski.net.Enums; using Luski.net.Interfaces; using Luski.net.JsonTypes.BaseTypes; namespace Luski.net.Structures; public class SocketUserBase : IncomingHTTP, IUser { [JsonPropertyName("id")] [JsonInclude] public long Id { get; internal set; } = default!; [JsonPropertyName("username")] [JsonInclude] public string DisplayName { get; internal set; } = default!; [JsonPropertyName("status")] [JsonInclude] public UserStatus Status { get; internal set; } = default!; [JsonPropertyName("picture_type")] [JsonInclude] public PictureType PictureType { get; internal set; } = default!; [JsonIgnore] public IServer Server { get; internal set; } = default!; public async Task GetAvatar(CancellationToken CancellationToken) { if (Server.Cache != null) { bool isc = System.IO.File.Exists($"{Server.Cache}/avatars/{Id}"); if (!isc) await Server.GetFromServer($"socketuserprofile/Avatar/{Id}", $"{Server.Cache}/avatars/{Id}", CancellationToken); } return System.IO.File.ReadAllBytes($"{Server.Cache}/avatars/{Id}"); } public Task GetUserKey(CancellationToken CancellationToken) { string data = Server.GetFromServer($"Keys/GetUserKey/{Id}", CancellationToken).Content.ReadAsStringAsync().Result; return Task.FromResult(long.Parse(data)); } } [JsonSerializable(typeof(SocketUserBase))] [JsonSourceGenerationOptions( GenerationMode = JsonSourceGenerationMode.Default, PropertyNamingPolicy = JsonKnownNamingPolicy.Unspecified, WriteIndented = false, DefaultIgnoreCondition = JsonIgnoreCondition.Never)] internal partial class SocketUserBaseContext : JsonSerializerContext { }