using Ryujinx.HLE.OsHle.Utilities; using System; using System.Linq; namespace Ryujinx.HLE.OsHle.Services.Acc { struct ProfileBase { public UserId UserId; public long Timestamp; public string Username; public ProfileBase(Profile User) { UserId = new UserId(User.UserId); Username = User.Username; Timestamp = ((DateTimeOffset)DateTime.Today).ToUnixTimeSeconds(); } } struct UserId { private readonly ulong LowBytes; private readonly ulong HighBytes; public UserId(string UserIdHex) { if (UserIdHex == null || UserIdHex.Length != 32 || !UserIdHex.All("0123456789abcdefABCDEF".Contains)) { throw new ArgumentException("UserId is not a valid Hex string", "UserIdHex"); } byte[] HexBytes = StringUtils.HexToBytes(UserIdHex); LowBytes = BitConverter.ToUInt64(HexBytes, 8); Array.Resize(ref HexBytes, 8); HighBytes = BitConverter.ToUInt64(HexBytes, 0); } public byte[] ToBytes() { return BitConverter.GetBytes(HighBytes).Concat(BitConverter.GetBytes(LowBytes)).ToArray(); } public override string ToString() { return BitConverter.ToString(ToBytes()).ToLower().Replace("-", string.Empty); } } }