use string interpolation
This commit is contained in:
parent
32d3731be9
commit
3fadf262e6
|
@ -74,7 +74,7 @@ namespace ChatSharp.Handlers
|
|||
continue;
|
||||
|
||||
// Parse hostmask
|
||||
var nick = hostmask.Substring(0, hostmask.IndexOf("!", StringComparison.Ordinal));
|
||||
var nick = hostmask[..hostmask.IndexOf("!", StringComparison.Ordinal)];
|
||||
var ident = hostmask[(nick.Length + 1)..hostmask.LastIndexOf("@", StringComparison.Ordinal)];
|
||||
var hostname = hostmask[(hostmask.LastIndexOf("@", StringComparison.Ordinal) + 1)..];
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ namespace ChatSharp.Handlers
|
|||
{
|
||||
var parameterString = message.Format()[message.Format().IndexOf(' ')..];
|
||||
var parameters = parameterString[parameterString.IndexOf(' ')..].Split(' ');
|
||||
var request = client.RequestManager.PeekOperation("GETMODE b " + parameters[1]);
|
||||
var request = client.RequestManager.PeekOperation($"GETMODE b {parameters[1]}");
|
||||
var list = (MaskCollection)request.State;
|
||||
list.Add(new Mask(parameters[2], client.Users.GetOrAdd(parameters[3]),
|
||||
IrcClient.DateTimeFromIrcTime(int.Parse(parameters[4]))));
|
||||
|
@ -14,7 +14,7 @@ namespace ChatSharp.Handlers
|
|||
|
||||
public static void HandleBanListEnd(IrcClient client, IrcMessage message)
|
||||
{
|
||||
var request = client.RequestManager.DequeueOperation("GETMODE b " + message.Parameters[1]);
|
||||
var request = client.RequestManager.DequeueOperation($"GETMODE b {message.Parameters[1]}");
|
||||
request.Callback?.Invoke(request);
|
||||
}
|
||||
|
||||
|
@ -22,7 +22,7 @@ namespace ChatSharp.Handlers
|
|||
{
|
||||
var parameterString = message.Format()[(message.Format().IndexOf(' ') + 1)..];
|
||||
var parameters = parameterString[(parameterString.IndexOf(' ') + 1)..].Split(' ');
|
||||
var request = client.RequestManager.PeekOperation("GETMODE e " + parameters[1]);
|
||||
var request = client.RequestManager.PeekOperation($"GETMODE e {parameters[1]}");
|
||||
var list = (MaskCollection)request.State;
|
||||
list.Add(new Mask(parameters[2], client.Users.GetOrAdd(parameters[3]),
|
||||
IrcClient.DateTimeFromIrcTime(int.Parse(parameters[4]))));
|
||||
|
@ -30,7 +30,7 @@ namespace ChatSharp.Handlers
|
|||
|
||||
public static void HandleExceptionListEnd(IrcClient client, IrcMessage message)
|
||||
{
|
||||
var request = client.RequestManager.DequeueOperation("GETMODE e " + message.Parameters[1]);
|
||||
var request = client.RequestManager.DequeueOperation($"GETMODE e {message.Parameters[1]}");
|
||||
request.Callback?.Invoke(request);
|
||||
}
|
||||
|
||||
|
@ -38,7 +38,7 @@ namespace ChatSharp.Handlers
|
|||
{
|
||||
var parameterString = message.Format()[(message.Format().IndexOf(' ') + 1)..];
|
||||
var parameters = parameterString[(parameterString.IndexOf(' ') + 1)..].Split(' ');
|
||||
var request = client.RequestManager.PeekOperation("GETMODE I " + parameters[1]);
|
||||
var request = client.RequestManager.PeekOperation($"GETMODE I {parameters[1]}");
|
||||
var list = (MaskCollection)request.State;
|
||||
list.Add(new Mask(parameters[2], client.Users.GetOrAdd(parameters[3]),
|
||||
IrcClient.DateTimeFromIrcTime(int.Parse(parameters[4]))));
|
||||
|
@ -46,7 +46,7 @@ namespace ChatSharp.Handlers
|
|||
|
||||
public static void HandleInviteListEnd(IrcClient client, IrcMessage message)
|
||||
{
|
||||
var request = client.RequestManager.DequeueOperation("GETMODE I " + message.Parameters[1]);
|
||||
var request = client.RequestManager.DequeueOperation($"GETMODE I {message.Parameters[1]}");
|
||||
request.Callback?.Invoke(request);
|
||||
}
|
||||
|
||||
|
@ -54,7 +54,7 @@ namespace ChatSharp.Handlers
|
|||
{
|
||||
var parameterString = message.Format()[(message.Format().IndexOf(' ') + 1)..];
|
||||
var parameters = parameterString[(parameterString.IndexOf(' ') + 1)..].Split(' ');
|
||||
var request = client.RequestManager.PeekOperation("GETMODE q " + parameters[1]);
|
||||
var request = client.RequestManager.PeekOperation($"GETMODE q {parameters[1]}");
|
||||
var list = (MaskCollection)request.State;
|
||||
list.Add(new Mask(parameters[2], client.Users.GetOrAdd(parameters[3]),
|
||||
IrcClient.DateTimeFromIrcTime(int.Parse(parameters[4]))));
|
||||
|
@ -62,7 +62,7 @@ namespace ChatSharp.Handlers
|
|||
|
||||
public static void HandleQuietListEnd(IrcClient client, IrcMessage message)
|
||||
{
|
||||
var request = client.RequestManager.DequeueOperation("GETMODE q " + message.Parameters[1]);
|
||||
var request = client.RequestManager.DequeueOperation($"GETMODE q {message.Parameters[1]}");
|
||||
request.Callback?.Invoke(request);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -187,12 +187,12 @@ namespace ChatSharp.Handlers
|
|||
if (client.ServerInfo.SupportedChannelModes.ParameterizedSettings.Contains(c))
|
||||
{
|
||||
client.OnModeChanged(new ModeChangeEventArgs(channel.Name, new IrcUser(message.Source),
|
||||
(add ? "+" : "-") + c + " " + message.Parameters[i++]));
|
||||
$"{(add ? "+" : "-")}{c} {message.Parameters[i++]}"));
|
||||
}
|
||||
else if (client.ServerInfo.SupportedChannelModes.ChannelLists.Contains(c))
|
||||
{
|
||||
client.OnModeChanged(new ModeChangeEventArgs(channel.Name, new IrcUser(message.Source),
|
||||
(add ? "+" : "-") + c + " " + message.Parameters[i++]));
|
||||
$"{(add ? "+" : "-")}{c} {message.Parameters[i++]}"));
|
||||
}
|
||||
else if (client.ServerInfo.SupportedChannelModes.ChannelUserModes.Contains(c))
|
||||
{
|
||||
|
@ -218,7 +218,7 @@ namespace ChatSharp.Handlers
|
|||
}
|
||||
|
||||
client.OnModeChanged(new ModeChangeEventArgs(channel.Name, new IrcUser(message.Source),
|
||||
(add ? "+" : "-") + c + " " + message.Parameters[i++]));
|
||||
$"{(add ? "+" : "-")}{c} {message.Parameters[i++]}"));
|
||||
}
|
||||
|
||||
if (client.ServerInfo.SupportedChannelModes.Settings.Contains(c))
|
||||
|
@ -244,7 +244,7 @@ namespace ChatSharp.Handlers
|
|||
|
||||
if (message.Command == "324")
|
||||
{
|
||||
var operation = client.RequestManager.DequeueOperation("MODE " + channel.Name);
|
||||
var operation = client.RequestManager.DequeueOperation($"MODE {channel.Name}");
|
||||
operation.Callback(operation);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ namespace ChatSharp.Handlers
|
|||
{
|
||||
if (message.Parameters != null && message.Parameters.Count >= 6)
|
||||
{
|
||||
var whois = (WhoIs)client.RequestManager.PeekOperation("WHOIS " + message.Parameters[1]).State;
|
||||
var whois = (WhoIs)client.RequestManager.PeekOperation($"WHOIS {message.Parameters[1]}").State;
|
||||
whois.User.Nick = message.Parameters[1];
|
||||
whois.User.User = message.Parameters[2];
|
||||
whois.User.Hostname = message.Parameters[3];
|
||||
|
@ -29,32 +29,32 @@ namespace ChatSharp.Handlers
|
|||
|
||||
public static void HandleWhoIsLoggedInAs(IrcClient client, IrcMessage message)
|
||||
{
|
||||
var whois = (WhoIs)client.RequestManager.PeekOperation("WHOIS " + message.Parameters[1]).State;
|
||||
var whois = (WhoIs)client.RequestManager.PeekOperation($"WHOIS {message.Parameters[1]}").State;
|
||||
whois.LoggedInAs = message.Parameters[2];
|
||||
}
|
||||
|
||||
public static void HandleWhoIsServer(IrcClient client, IrcMessage message)
|
||||
{
|
||||
var whois = (WhoIs)client.RequestManager.PeekOperation("WHOIS " + message.Parameters[1]).State;
|
||||
var whois = (WhoIs)client.RequestManager.PeekOperation($"WHOIS {message.Parameters[1]}").State;
|
||||
whois.Server = message.Parameters[2];
|
||||
whois.ServerInfo = message.Parameters[3];
|
||||
}
|
||||
|
||||
public static void HandleWhoIsOperator(IrcClient client, IrcMessage message)
|
||||
{
|
||||
var whois = (WhoIs)client.RequestManager.PeekOperation("WHOIS " + message.Parameters[1]).State;
|
||||
var whois = (WhoIs)client.RequestManager.PeekOperation($"WHOIS {message.Parameters[1]}").State;
|
||||
whois.IrcOp = true;
|
||||
}
|
||||
|
||||
public static void HandleWhoIsIdle(IrcClient client, IrcMessage message)
|
||||
{
|
||||
var whois = (WhoIs)client.RequestManager.PeekOperation("WHOIS " + message.Parameters[1]).State;
|
||||
var whois = (WhoIs)client.RequestManager.PeekOperation($"WHOIS {message.Parameters[1]}").State;
|
||||
whois.SecondsIdle = int.Parse(message.Parameters[2]);
|
||||
}
|
||||
|
||||
public static void HandleWhoIsChannels(IrcClient client, IrcMessage message)
|
||||
{
|
||||
var whois = (WhoIs)client.RequestManager.PeekOperation("WHOIS " + message.Parameters[1]).State;
|
||||
var whois = (WhoIs)client.RequestManager.PeekOperation($"WHOIS {message.Parameters[1]}").State;
|
||||
var channels = message.Parameters[2].Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
for (var i = 0; i < channels.Length; i++)
|
||||
if (!channels[i].StartsWith("#"))
|
||||
|
@ -64,7 +64,7 @@ namespace ChatSharp.Handlers
|
|||
|
||||
public static void HandleWhoIsEnd(IrcClient client, IrcMessage message)
|
||||
{
|
||||
var request = client.RequestManager.DequeueOperation("WHOIS " + message.Parameters[1]);
|
||||
var request = client.RequestManager.DequeueOperation($"WHOIS {message.Parameters[1]}");
|
||||
var whois = (WhoIs)request.State;
|
||||
if (!client.Users.Contains(whois.User.Nick))
|
||||
client.Users.Add(whois.User);
|
||||
|
@ -227,7 +227,8 @@ namespace ChatSharp.Handlers
|
|||
{
|
||||
if (client.ServerInfo.ExtendedWho)
|
||||
{
|
||||
var query = client.RequestManager.PendingOperations.FirstOrDefault(kvp => kvp.Key.StartsWith("WHO " + message.Parameters[1]));
|
||||
var query = client.RequestManager.PendingOperations.FirstOrDefault(kvp => kvp.Key.StartsWith(
|
||||
$"WHO {message.Parameters[1]}"));
|
||||
var request = client.RequestManager.DequeueOperation(query.Key);
|
||||
var whoxList = (List<ExtendedWho>)request.State;
|
||||
|
||||
|
@ -240,7 +241,8 @@ namespace ChatSharp.Handlers
|
|||
}
|
||||
else
|
||||
{
|
||||
var query = client.RequestManager.PendingOperations.FirstOrDefault(kvp => kvp.Key == "WHO " + message.Parameters[1]);
|
||||
var query = client.RequestManager.PendingOperations.FirstOrDefault(kvp => kvp.Key ==
|
||||
$"WHO {message.Parameters[1]}");
|
||||
var request = client.RequestManager.DequeueOperation(query.Key);
|
||||
var whoList = (List<ExtendedWho>)request.State;
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@ namespace ChatSharp
|
|||
/// The name, including the prefix (i.e. #), of this channel.
|
||||
/// </summary>
|
||||
/// <value>The name.</value>
|
||||
public string Name { get; internal set; }
|
||||
public string Name { get; }
|
||||
|
||||
/// <summary>
|
||||
/// The channel mode. May be null if we have not received the mode yet.
|
||||
|
|
|
@ -20,11 +20,7 @@ namespace ChatSharp
|
|||
/// </summary>
|
||||
public void SendMessage(string message, params string[] destinations)
|
||||
{
|
||||
const string illegalCharacters = "\r\n\0";
|
||||
if (destinations == null || !destinations.Any())
|
||||
throw new InvalidOperationException("Message must have at least one target.");
|
||||
if (illegalCharacters.Any(message.Contains))
|
||||
throw new ArgumentException("Illegal characters are present in message.", nameof(message));
|
||||
IllegalCharacters(message, destinations);
|
||||
var to = string.Join(",", destinations);
|
||||
SendRawMessage("PRIVMSG {0} :{1}{2}", to, PrivmsgPrefix, message);
|
||||
}
|
||||
|
@ -34,11 +30,7 @@ namespace ChatSharp
|
|||
/// </summary>
|
||||
public void SendAction(string message, params string[] destinations)
|
||||
{
|
||||
const string illegalCharacters = "\r\n\0";
|
||||
if (destinations == null || !destinations.Any())
|
||||
throw new InvalidOperationException("Message must have at least one target.");
|
||||
if (illegalCharacters.Any(message.Contains))
|
||||
throw new ArgumentException("Illegal characters are present in message.", nameof(message));
|
||||
IllegalCharacters(message, destinations);
|
||||
var to = string.Join(",", destinations);
|
||||
SendRawMessage("PRIVMSG {0} :\x0001ACTION {1}{2}\x0001", to, PrivmsgPrefix, message);
|
||||
}
|
||||
|
@ -47,14 +39,19 @@ namespace ChatSharp
|
|||
/// Sends a NOTICE to one or more destinations (channels or users).
|
||||
/// </summary>
|
||||
public void SendNotice(string message, params string[] destinations)
|
||||
{
|
||||
IllegalCharacters(message, destinations);
|
||||
var to = string.Join(",", destinations);
|
||||
SendRawMessage("NOTICE {0} :{1}{2}", to, PrivmsgPrefix, message);
|
||||
}
|
||||
|
||||
private static void IllegalCharacters(string message, string[] destinations)
|
||||
{
|
||||
const string illegalCharacters = "\r\n\0";
|
||||
if (destinations == null || !destinations.Any())
|
||||
throw new InvalidOperationException("Message must have at least one target.");
|
||||
if (illegalCharacters.Any(message.Contains))
|
||||
throw new ArgumentException("Illegal characters are present in message.", nameof(message));
|
||||
var to = string.Join(",", destinations);
|
||||
SendRawMessage("NOTICE {0} :{1}{2}", to, PrivmsgPrefix, message);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -92,7 +89,7 @@ namespace ChatSharp
|
|||
SendRawMessage(joinCmd, channel);
|
||||
|
||||
// account-notify capability
|
||||
var flags = WhoxField.Nick | WhoxField.Hostname | WhoxField.AccountName | WhoxField.Username;
|
||||
const WhoxField flags = WhoxField.Nick | WhoxField.Hostname | WhoxField.AccountName | WhoxField.Username;
|
||||
|
||||
if (Capabilities.IsEnabled("account-notify"))
|
||||
Who(channel, WhoxFlag.None, flags, whoList =>
|
||||
|
@ -148,30 +145,24 @@ namespace ChatSharp
|
|||
SendRawMessage("INVITE {1} {0}", channel, user);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sends a WHOIS query asking for information on the given nick.
|
||||
/// </summary>
|
||||
public void WhoIs(string nick)
|
||||
{
|
||||
WhoIs(nick, null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sends a WHOIS query asking for information on the given nick, and a callback
|
||||
/// to run when we have received the response.
|
||||
/// </summary>
|
||||
public void WhoIs(string nick, Action<WhoIs> callback)
|
||||
public void WhoIs(string nick, Action<WhoIs> callback = null)
|
||||
{
|
||||
var whois = new WhoIs();
|
||||
RequestManager.QueueOperation("WHOIS " + nick, new RequestOperation(whois, ro => { callback?.Invoke((WhoIs)ro.State); }));
|
||||
SendRawMessage("WHOIS {0}", nick);
|
||||
var message = $"WHOIS {nick}";
|
||||
RequestManager.QueueOperation(message,
|
||||
new RequestOperation(whois, ro => { callback?.Invoke((WhoIs)ro.State); }));
|
||||
SendRawMessage(message);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sends an extended WHO query asking for specific information about a single user
|
||||
/// or the users in a channel, and runs a callback when we have received the response.
|
||||
/// </summary>
|
||||
public void Who(string target, WhoxFlag flags, WhoxField fields, Action<List<ExtendedWho>> callback)
|
||||
public void Who(string target, WhoxFlag flags, WhoxField whoxField, Action<List<ExtendedWho>> callback)
|
||||
{
|
||||
if (ServerInfo.ExtendedWho)
|
||||
{
|
||||
|
@ -181,13 +172,12 @@ namespace ChatSharp
|
|||
var queryType = RandomNumber.Next(0, 999);
|
||||
|
||||
// Add the querytype field if it wasn't defined
|
||||
var _fields = fields;
|
||||
if ((fields & WhoxField.QueryType) == 0)
|
||||
_fields |= WhoxField.QueryType;
|
||||
var fields = whoxField;
|
||||
if ((whoxField & WhoxField.QueryType) == 0)
|
||||
fields |= WhoxField.QueryType;
|
||||
|
||||
var whoQuery = string.Format("WHO {0} {1}%{2},{3}", target, flags.AsString(), _fields.AsString(),
|
||||
queryType);
|
||||
var queryKey = $"WHO {target} {queryType} {_fields:D}";
|
||||
var whoQuery = $"WHO {target} {flags.AsString()}%{fields.AsString()},{queryType}";
|
||||
var queryKey = $"WHO {target} {queryType} {fields:D}";
|
||||
|
||||
RequestManager.QueueOperation(queryKey,
|
||||
new RequestOperation(whox, ro => { callback?.Invoke((List<ExtendedWho>)ro.State); }));
|
||||
|
@ -196,7 +186,6 @@ namespace ChatSharp
|
|||
else
|
||||
{
|
||||
var whox = new List<ExtendedWho>();
|
||||
|
||||
var whoQuery = $"WHO {target}";
|
||||
|
||||
RequestManager.QueueOperation(whoQuery,
|
||||
|
@ -205,25 +194,18 @@ namespace ChatSharp
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Requests the mode of a channel from the server.
|
||||
/// </summary>
|
||||
public void GetMode(string channel)
|
||||
{
|
||||
GetMode(channel, null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Requests the mode of a channel from the server, and passes it to a callback later.
|
||||
/// </summary>
|
||||
public void GetMode(string channel, Action<IrcChannel> callback)
|
||||
public void GetMode(string channel, Action<IrcChannel> callback = null)
|
||||
{
|
||||
RequestManager.QueueOperation("MODE " + channel, new RequestOperation(channel, ro =>
|
||||
var message = $"MODE {channel}";
|
||||
RequestManager.QueueOperation(message, new RequestOperation(channel, ro =>
|
||||
{
|
||||
var c = Channels[(string)ro.State];
|
||||
callback?.Invoke(c);
|
||||
}));
|
||||
SendRawMessage("MODE {0}", channel);
|
||||
SendRawMessage(message);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -240,11 +222,8 @@ namespace ChatSharp
|
|||
/// </summary>
|
||||
public void GetModeList(string channel, char mode, Action<MaskCollection> callback)
|
||||
{
|
||||
RequestManager.QueueOperation("GETMODE " + mode + " " + channel, new RequestOperation(new MaskCollection(), ro =>
|
||||
{
|
||||
var c = (MaskCollection)ro.State;
|
||||
callback?.Invoke(c);
|
||||
}));
|
||||
RequestManager.QueueOperation($"MODE {mode} {channel}",
|
||||
new RequestOperation(new MaskCollection(), ro => callback?.Invoke((MaskCollection)ro.State)));
|
||||
SendRawMessage("MODE {0} {1}", channel, mode);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -84,7 +84,7 @@ namespace ChatSharp
|
|||
/// </summary>
|
||||
public string ServerAddress
|
||||
{
|
||||
get => ServerHostname + ":" + ServerPort;
|
||||
get => $"{ServerHostname}:{ServerPort}";
|
||||
internal set
|
||||
{
|
||||
var parts = value.Split(':');
|
||||
|
@ -180,7 +180,7 @@ namespace ChatSharp
|
|||
if (Handlers.ContainsKey(message.ToUpper()))
|
||||
Console.WriteLine("Warning: {0} handler has been overwritten", message);
|
||||
#endif
|
||||
message = message.ToUpper();
|
||||
message = message.ToUpperInvariant();
|
||||
Handlers[message] = handler;
|
||||
}
|
||||
|
||||
|
@ -222,18 +222,10 @@ namespace ChatSharp
|
|||
Socket.BeginConnect(ServerHostname, ServerPort, ConnectComplete, null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Send a QUIT message and disconnect.
|
||||
/// </summary>
|
||||
public void Quit()
|
||||
{
|
||||
Quit(null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Send a QUIT message with a reason and disconnect.
|
||||
/// </summary>
|
||||
public void Quit(string reason)
|
||||
public void Quit(string reason = null)
|
||||
{
|
||||
if (reason == null)
|
||||
SendRawMessage("QUIT");
|
||||
|
@ -348,7 +340,7 @@ namespace ChatSharp
|
|||
}
|
||||
|
||||
message = string.Format(message, format);
|
||||
var data = Encoding.GetBytes(message + "\r\n");
|
||||
var data = Encoding.GetBytes($"{message}\r\n");
|
||||
|
||||
if (!IsWriting)
|
||||
{
|
||||
|
@ -397,9 +389,9 @@ namespace ChatSharp
|
|||
|
||||
OnRawMessageSent(new RawMessageEventArgs((string)result.AsyncState, true));
|
||||
|
||||
string nextMessage;
|
||||
if (!WriteQueue.IsEmpty)
|
||||
{
|
||||
string nextMessage;
|
||||
while (!WriteQueue.TryDequeue(out nextMessage))
|
||||
{
|
||||
}
|
||||
|
@ -520,7 +512,7 @@ namespace ChatSharp
|
|||
|
||||
/// <summary>
|
||||
/// Raised if the nick you've chosen is in use. By default, ChatSharp will pick a
|
||||
/// random nick to use instead. Set ErronousNickEventArgs.DoNotHandle to prevent this.
|
||||
/// random nick to use instead. Set ErroneousNickEventArgs.DoNotHandle to prevent this.
|
||||
/// </summary>
|
||||
public event EventHandler<ErroneousNickEventArgs> NickInUse;
|
||||
|
||||
|
|
Loading…
Reference in New Issue