sharp-chat/SharpChat/S2CPackets/AuthFailS2CPacket.cs

44 lines
1.2 KiB
C#
Raw Normal View History

using System.Text;
2022-08-30 17:00:58 +02:00
namespace SharpChat.S2CPackets {
2025-04-25 22:14:48 +00: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() {
2023-02-07 16:01:56 +01:00
StringBuilder sb = new();
2022-08-30 17:00:58 +02:00
2025-04-25 22:14:48 +00:00
sb.Append("1\tn\t");
2022-08-30 17:00:58 +02:00
2025-04-25 22:14:48 +00:00
switch(reason) {
case Reason.AuthInvalid:
2022-08-30 17:00:58 +02:00
default:
sb.Append("authfail");
2022-08-30 17:00:58 +02:00
break;
case Reason.Exception:
sb.Append("userfail");
break;
2025-04-25 22:14:48 +00:00
case Reason.MaxSessions:
sb.Append("sockfail");
2022-08-30 17:00:58 +02:00
break;
2025-04-25 22:14:48 +00:00
case Reason.Banned:
sb.Append("joinfail\t");
if(expiresAt is null || expiresAt == DateTimeOffset.MaxValue)
sb.Append("-1");
else
sb.Append(expiresAt.Value.ToUnixTimeSeconds());
2022-08-30 17:00:58 +02:00
break;
}
return sb.ToString();
2022-08-30 17:00:58 +02:00
}
}
}