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

43 lines
1 KiB
C#

using System.Text;
namespace SharpChat.SockChat.S2CPackets;
public class AuthFailS2CPacket(
AuthFailS2CPacket.Reason reason,
DateTimeOffset? expiresAt = null
) : S2CPacket {
public enum Reason {
AuthInvalid,
MaxSessions,
Banned,
Exception,
}
public string Pack() {
StringBuilder sb = new();
sb.Append("1\tn\t");
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;
}
return sb.ToString();
}
}