43 lines
1 KiB
C#
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();
|
|
}
|
|
}
|