RpcValidateResult.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using System;
  2. using InABox.Clients;
  3. using InABox.Core;
  4. namespace InABox.Rpc
  5. {
  6. public class RpcValidateResult : IRpcCommandResult, IValidationData
  7. {
  8. public ValidationStatus Status { get; set; }
  9. public Guid UserGuid { get; set; }
  10. public string? UserID { get; set; }
  11. public Guid SecurityID { get; set; }
  12. public Guid SessionID { get; set; }
  13. public string? Recipient2FA { get; set; }
  14. public DateTime PasswordExpiration { get; set; }
  15. public RpcValidateResult()
  16. {
  17. UserID = "";
  18. }
  19. public void SerializeBinary(CoreBinaryWriter writer)
  20. {
  21. writer.Write((int)Status);
  22. writer.Write(UserGuid);
  23. writer.Write(UserID ?? string.Empty);
  24. writer.Write(SecurityID);
  25. writer.Write(SessionID);
  26. writer.Write(Recipient2FA ?? string.Empty);
  27. writer.Write(PasswordExpiration.ToUniversalTime().Ticks);
  28. }
  29. public void DeserializeBinary(CoreBinaryReader reader)
  30. {
  31. Status = (ValidationStatus)reader.ReadInt32();
  32. UserGuid = reader.ReadGuid();
  33. UserID = reader.ReadString();
  34. SecurityID = reader.ReadGuid();
  35. SessionID = reader.ReadGuid();
  36. Recipient2FA = reader.ReadString();
  37. PasswordExpiration = new DateTime(reader.ReadInt64(), DateTimeKind.Utc).ToLocalTime();
  38. }
  39. public string FullDescription() => Status.ToString();
  40. }
  41. }