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

39 lines
1 KiB
C#

using System;
namespace SharpChat.SockChat.PacketsS2C {
public class AuthFailS2CPacket : ISockChatS2CPacket {
public enum FailReason {
AuthInvalid,
MaxSessions,
Banned,
Null,
}
private readonly FailReason Reason;
private readonly long Expires;
public AuthFailS2CPacket(FailReason reason) {
Reason = reason;
}
public AuthFailS2CPacket(DateTimeOffset expires) {
Reason = FailReason.Banned;
Expires = expires.Year >= 2100 ? -1 : expires.ToUnixTimeSeconds();
}
public string Pack() {
string packet = string.Format("1\tn\t{0}fail", Reason switch {
FailReason.AuthInvalid => "auth",
FailReason.MaxSessions => "sock",
FailReason.Banned => "join",
_ => "user",
});
if(Reason == FailReason.Banned)
packet += string.Format("\t{0}", Expires);
return packet;
}
}
}