using System; namespace SharpChat.Packet { public class AuthFailPacket : ServerPacket { public enum FailReason { AuthInvalid, MaxSessions, Banned, Null, } private readonly FailReason Reason; private readonly DateTimeOffset Expires; public AuthFailPacket(FailReason reason) { Reason = reason; } public AuthFailPacket(DateTimeOffset expires) { Reason = FailReason.Banned; Expires = expires; } public override 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.Year >= 2100 ? -1 : Expires.ToUnixTimeSeconds()); return packet; } } }