public void BanUser(string username, string duration, string reason) { // Check for valid parameters if (!GameData.UserName.IsValid(username)) { User.Send(GameMessage.CommandGeneralInvalidUser, ServerMessageType.GUI, username); return; } if (StringComparer.OrdinalIgnoreCase.Equals(User.Name, username)) { User.Send(GameMessage.SelfBanFailed, ServerMessageType.GUI); return; } var target = World.FindUser(username); if (target == null) { return; } if (target.Permissions > User.Permissions) { User.Send(GameMessage.BanInsufficientPermissions, ServerMessageType.GUI, username); return; } if (string.IsNullOrEmpty(duration)) { User.Send(GameMessage.CommandGeneralInvalidParameter, ServerMessageType.GUI, "duration"); return; } // Parse the duration TimeSpan dur; string parseFailReason; if (!DurationParser.TryParse(duration, out dur, out parseFailReason)) { User.Send(GameMessage.CommandGeneralInvalidParameterEx, ServerMessageType.GUI, "duration", parseFailReason); return; } // Perform the ban and notify the issuer if it was successful or not BanManagerFailReason banFailReason; if (!BanningManager.Instance.TryAddUserBan(username, dur, reason, User.Name, out banFailReason)) { // Ban failed User.Send(GameMessage.BanUserFailed, ServerMessageType.GUI, username, banFailReason.GetDetailedString()); } else { // Ban successful User.Send(GameMessage.BanUserSuccessful, ServerMessageType.GUI, username); } }
public void Should_parse_correctly(string input, TimeSpan expected) { TimeSpan result; var success = DurationParser.TryParse(input, out result); success.Should().BeTrue(); result.Should().Be(expected); }
public void BanUser(string username, string duration, string reason) { // Check for valid parameters if (!GameData.UserName.IsValid(username)) { User.Send(GameMessage.CommandGeneralInvalidUser, ServerMessageType.GUI, username); return; } if (string.IsNullOrEmpty(duration)) { User.Send(GameMessage.CommandGeneralInvalidParameter, ServerMessageType.GUI, "duration"); return; } // Parse the duration TimeSpan dur; string parseFailReason; if (!DurationParser.TryParse(duration, out dur, out parseFailReason)) { User.Send(GameMessage.CommandGeneralInvalidParameterEx, ServerMessageType.GUI, "duration", parseFailReason); return; } // Perform the ban and notify the issuer if it was successful or not BanManagerFailReason banFailReason; if (!BanningManager.Instance.TryAddUserBan(username, dur, reason, User.Name, out banFailReason)) { // Ban failed User.Send(GameMessage.BanUserFailed, ServerMessageType.GUI, username, banFailReason.GetDetailedString()); } else { // Ban successful User.Send(GameMessage.BanUserSuccessful, ServerMessageType.GUI, username); } }
public void Should_fail_if_input_is_not_a_correct_duration(string input, string reason) { var success = DurationParser.TryParse(input, out _); success.Should().BeFalse($"because {reason}. Input: [{input}]"); }