LogikalResponse.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using System;
  2. using Newtonsoft.Json;
  3. namespace InABox.Logikal
  4. {
  5. public abstract class LogikalResponse : LogikalObject
  6. {
  7. public LogikalStatus Status { get; set; } = LogikalStatus.Unknown;
  8. public static LogikalResponse FromMessage(LogikalMessage message)
  9. {
  10. if (message.Method == LogikalMethod.Connect)
  11. return JsonConvert.DeserializeObject<LogikalConnectResponse>(message.Payload);
  12. if (message.Method == LogikalMethod.Login)
  13. return JsonConvert.DeserializeObject<LogikalLoginResponse>(message.Payload);
  14. if (message.Method == LogikalMethod.Logout)
  15. return JsonConvert.DeserializeObject<LogikalLogoutResponse>(message.Payload);
  16. if (message.Method == LogikalMethod.Disconnect)
  17. return JsonConvert.DeserializeObject<LogikalDisconnectResponse>(message.Payload);
  18. if (message.Method == LogikalMethod.Error)
  19. return JsonConvert.DeserializeObject<LogikalErrorResponse>(message.Payload);
  20. throw new Exception("Unknown Message ID");
  21. }
  22. }
  23. public class LogikalErrorResponse : LogikalResponse
  24. {
  25. public override LogikalMethod Method() => LogikalMethod.Error;
  26. public String Message { get; set; }
  27. public LogikalErrorResponse()
  28. {
  29. Status = LogikalStatus.Error;
  30. }
  31. }
  32. }