sharp-chat/SharpChat.SockChat/S2CPackets/AuthFailS2CPacket.cs

44 lines
1 KiB
C#
Raw Normal View History

using System.Text;
2022-08-30 17:00:58 +02:00
namespace SharpChat.SockChat.S2CPackets;
2022-08-30 17:00:58 +02:00
public class AuthFailS2CPacket(
AuthFailS2CPacket.Reason reason,
DateTimeOffset? expiresAt = null
) : S2CPacket {
public enum Reason {
AuthInvalid,
MaxSessions,
Banned,
Exception,
}
2022-08-30 17:00:58 +02:00
public string Pack() {
StringBuilder sb = new();
2022-08-30 17:00:58 +02:00
sb.Append("1\tn\t");
2022-08-30 17:00:58 +02:00
switch(reason) {
case Reason.AuthInvalid:
default:
sb.Append("authfail");
break;
case Reason.Exception:
sb.Append("userfail");
break;
case Reason.MaxSessions:
sb.Append("sockfail");
break;
case Reason.Banned:
sb.Append("joinfail\t");
if(expiresAt is null || expiresAt == DateTimeOffset.MaxValue)
sb.Append("-1");
else
sb.Append(expiresAt.Value.ToUnixTimeSeconds());
break;
2022-08-30 17:00:58 +02:00
}
return sb.ToString();
2022-08-30 17:00:58 +02:00
}
}