.net 5.0 and apply formatting
This commit is contained in:
parent
f085b631a1
commit
3049122294
|
@ -1,5 +1,5 @@
|
|||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace ChatSharp
|
||||
{
|
||||
|
|
|
@ -1,51 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{4033AFFA-BEA3-4BDF-84EA-59A23360FD36}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>ChatSharp</RootNamespace>
|
||||
<AssemblyName>ChatSharp</AssemblyName>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<TargetFrameworks>netstandard2.0;net4</TargetFrameworks>
|
||||
<TargetFrameworks>net5.0</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DocumentationFile>bin\Debug\ChatSharp.xml</DocumentationFile>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild"></Target><Target Name="AfterBuild"></Target>
|
||||
-->
|
||||
</Project>
|
|
@ -19,7 +19,7 @@ namespace ChatSharp.Events
|
|||
/// The original topic.
|
||||
/// </summary>
|
||||
public string OldTopic { get; set; }
|
||||
|
||||
|
||||
internal ChannelTopicEventArgs(IrcChannel channel, string oldTopic, string topic)
|
||||
{
|
||||
Channel = channel;
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
using System;
|
||||
using System.Net.Sockets;
|
||||
|
||||
namespace ChatSharp.Events
|
||||
{
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
using System;
|
||||
using System.Net.Sockets;
|
||||
|
||||
namespace ChatSharp.Events
|
||||
{
|
||||
|
|
|
@ -30,7 +30,7 @@ namespace ChatSharp
|
|||
/// <summary>
|
||||
/// The reason provided for the kick (may be null).
|
||||
/// </summary>
|
||||
public string Reason { get; set; }
|
||||
public string Reason { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ namespace ChatSharp.Handlers
|
|||
case "LS":
|
||||
client.IsNegotiatingCapabilities = true;
|
||||
// Parse server capabilities
|
||||
var serverCapsString = (message.Parameters[2] == "*" ? message.Parameters[3] : message.Parameters[2]);
|
||||
var serverCapsString = message.Parameters[2] == "*" ? message.Parameters[3] : message.Parameters[2];
|
||||
serverCaps.AddRange(serverCapsString.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries));
|
||||
|
||||
// CAP 3.2 multiline support. Send CAP requests on the last CAP LS line.
|
||||
|
@ -77,7 +77,7 @@ namespace ChatSharp.Handlers
|
|||
|
||||
break;
|
||||
case "LIST":
|
||||
var activeCapsString = (message.Parameters[2] == "*" ? message.Parameters[3] : message.Parameters[2]);
|
||||
var activeCapsString = message.Parameters[2] == "*" ? message.Parameters[3] : message.Parameters[2];
|
||||
var activeCaps = activeCapsString.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
|
||||
// Check which cap we have that isn't active but the server lists
|
||||
|
@ -104,7 +104,8 @@ namespace ChatSharp.Handlers
|
|||
|
||||
// Disable each recently server-disabled capability
|
||||
disabledCaps.ForEach(
|
||||
cap => {
|
||||
cap =>
|
||||
{
|
||||
if (client.Capabilities.Contains(cap) && client.Capabilities[cap].IsEnabled)
|
||||
client.Capabilities.Disable(cap);
|
||||
}
|
||||
|
|
|
@ -75,8 +75,8 @@ namespace ChatSharp.Handlers
|
|||
|
||||
// Parse hostmask
|
||||
var nick = hostmask.Substring(0, hostmask.IndexOf("!"));
|
||||
var ident = hostmask.Substring(nick.Length + 1, hostmask.LastIndexOf("@") - (nick.Length + 1));
|
||||
var hostname = hostmask.Substring(hostmask.LastIndexOf("@") + 1);
|
||||
var ident = hostmask[(nick.Length + 1)..hostmask.LastIndexOf("@")];
|
||||
var hostname = hostmask[(hostmask.LastIndexOf("@") + 1)..];
|
||||
|
||||
// Get user modes
|
||||
var modes = client.ServerInfo.GetModesForNick(nick);
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
using ChatSharp.Events;
|
||||
using System.Linq;
|
||||
|
||||
namespace ChatSharp.Handlers
|
||||
{
|
||||
/// <summary>
|
||||
|
|
|
@ -4,8 +4,8 @@ namespace ChatSharp.Handlers
|
|||
{
|
||||
public static void HandleBanListPart(IrcClient client, IrcMessage message)
|
||||
{
|
||||
var parameterString = message.RawMessage.Substring(message.RawMessage.IndexOf(' '));
|
||||
var parameters = parameterString.Substring(parameterString.IndexOf(' ')).Split(' ');
|
||||
var parameterString = message.RawMessage[message.RawMessage.IndexOf(' ')..];
|
||||
var parameters = parameterString[parameterString.IndexOf(' ')..].Split(' ');
|
||||
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]),
|
||||
|
@ -15,14 +15,13 @@ namespace ChatSharp.Handlers
|
|||
public static void HandleBanListEnd(IrcClient client, IrcMessage message)
|
||||
{
|
||||
var request = client.RequestManager.DequeueOperation("GETMODE b " + message.Parameters[1]);
|
||||
if (request.Callback != null)
|
||||
request.Callback(request);
|
||||
request.Callback?.Invoke(request);
|
||||
}
|
||||
|
||||
public static void HandleExceptionListPart(IrcClient client, IrcMessage message)
|
||||
{
|
||||
var parameterString = message.RawMessage.Substring(message.RawMessage.IndexOf(' ') + 1);
|
||||
var parameters = parameterString.Substring(parameterString.IndexOf(' ') + 1).Split(' ');
|
||||
var parameterString = message.RawMessage[(message.RawMessage.IndexOf(' ') + 1)..];
|
||||
var parameters = parameterString[(parameterString.IndexOf(' ') + 1)..].Split(' ');
|
||||
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]),
|
||||
|
@ -32,14 +31,13 @@ namespace ChatSharp.Handlers
|
|||
public static void HandleExceptionListEnd(IrcClient client, IrcMessage message)
|
||||
{
|
||||
var request = client.RequestManager.DequeueOperation("GETMODE e " + message.Parameters[1]);
|
||||
if (request.Callback != null)
|
||||
request.Callback(request);
|
||||
request.Callback?.Invoke(request);
|
||||
}
|
||||
|
||||
public static void HandleInviteListPart(IrcClient client, IrcMessage message)
|
||||
{
|
||||
var parameterString = message.RawMessage.Substring(message.RawMessage.IndexOf(' ') + 1);
|
||||
var parameters = parameterString.Substring(parameterString.IndexOf(' ') + 1).Split(' ');
|
||||
var parameterString = message.RawMessage[(message.RawMessage.IndexOf(' ') + 1)..];
|
||||
var parameters = parameterString[(parameterString.IndexOf(' ') + 1)..].Split(' ');
|
||||
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]),
|
||||
|
@ -49,14 +47,13 @@ namespace ChatSharp.Handlers
|
|||
public static void HandleInviteListEnd(IrcClient client, IrcMessage message)
|
||||
{
|
||||
var request = client.RequestManager.DequeueOperation("GETMODE I " + message.Parameters[1]);
|
||||
if (request.Callback != null)
|
||||
request.Callback(request);
|
||||
request.Callback?.Invoke(request);
|
||||
}
|
||||
|
||||
public static void HandleQuietListPart(IrcClient client, IrcMessage message)
|
||||
{
|
||||
var parameterString = message.RawMessage.Substring(message.RawMessage.IndexOf(' ') + 1);
|
||||
var parameters = parameterString.Substring(parameterString.IndexOf(' ') + 1).Split(' ');
|
||||
var parameterString = message.RawMessage[(message.RawMessage.IndexOf(' ') + 1)..];
|
||||
var parameters = parameterString[(parameterString.IndexOf(' ') + 1)..].Split(' ');
|
||||
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]),
|
||||
|
@ -66,8 +63,7 @@ namespace ChatSharp.Handlers
|
|||
public static void HandleQuietListEnd(IrcClient client, IrcMessage message)
|
||||
{
|
||||
var request = client.RequestManager.DequeueOperation("GETMODE q " + message.Parameters[1]);
|
||||
if (request.Callback != null)
|
||||
request.Callback(request);
|
||||
request.Callback?.Invoke(request);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@ namespace ChatSharp.Handlers
|
|||
{
|
||||
if (message.Parameters.Length != 2)
|
||||
throw new IrcProtocolException("372 MOTD message is incorrectly formatted.");
|
||||
var part = message.Parameters[1].Substring(2);
|
||||
var part = message.Parameters[1][2..];
|
||||
MOTD += part + Environment.NewLine;
|
||||
client.OnMOTDPartReceived(new ServerMOTDEventArgs(part));
|
||||
}
|
||||
|
@ -27,19 +27,18 @@ namespace ChatSharp.Handlers
|
|||
client.OnConnectionComplete(new EventArgs());
|
||||
// Verify our identity
|
||||
VerifyOurIdentity(client);
|
||||
|
||||
}
|
||||
|
||||
public static void HandleMOTDNotFound(IrcClient client, IrcMessage message)
|
||||
{
|
||||
public static void HandleMOTDNotFound(IrcClient client, IrcMessage message)
|
||||
{
|
||||
client.OnMOTDReceived(new ServerMOTDEventArgs(MOTD));
|
||||
client.OnConnectionComplete(new EventArgs());
|
||||
|
||||
VerifyOurIdentity(client);
|
||||
}
|
||||
}
|
||||
|
||||
private static void VerifyOurIdentity(IrcClient client)
|
||||
{
|
||||
private static void VerifyOurIdentity(IrcClient client)
|
||||
{
|
||||
if (client.Settings.WhoIsOnConnect)
|
||||
{
|
||||
client.WhoIs(client.User.Nick, whois =>
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
using ChatSharp.Events;
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using System.Linq;
|
||||
|
||||
namespace ChatSharp.Handlers
|
||||
{
|
||||
|
@ -181,12 +180,12 @@ namespace ChatSharp.Handlers
|
|||
// TODO: Support the ones here that aren't done properly
|
||||
if (client.ServerInfo.SupportedChannelModes.ParameterizedSettings.Contains(c))
|
||||
{
|
||||
client.OnModeChanged(new ModeChangeEventArgs(channel.Name, new IrcUser(message.Prefix),
|
||||
client.OnModeChanged(new ModeChangeEventArgs(channel.Name, new IrcUser(message.Prefix),
|
||||
(add ? "+" : "-") + c + " " + message.Parameters[i++]));
|
||||
}
|
||||
else if (client.ServerInfo.SupportedChannelModes.ChannelLists.Contains(c))
|
||||
{
|
||||
client.OnModeChanged(new ModeChangeEventArgs(channel.Name, new IrcUser(message.Prefix),
|
||||
client.OnModeChanged(new ModeChangeEventArgs(channel.Name, new IrcUser(message.Prefix),
|
||||
(add ? "+" : "-") + c + " " + message.Parameters[i++]));
|
||||
}
|
||||
else if (client.ServerInfo.SupportedChannelModes.ChannelUserModes.Contains(c))
|
||||
|
@ -213,7 +212,7 @@ namespace ChatSharp.Handlers
|
|||
if (channel.UsersByMode[c].Contains(user.Nick))
|
||||
user.ChannelModes[channel] = null;
|
||||
}
|
||||
client.OnModeChanged(new ModeChangeEventArgs(channel.Name, new IrcUser(message.Prefix),
|
||||
client.OnModeChanged(new ModeChangeEventArgs(channel.Name, new IrcUser(message.Prefix),
|
||||
(add ? "+" : "-") + c + " " + message.Parameters[i++]));
|
||||
}
|
||||
if (client.ServerInfo.SupportedChannelModes.Settings.Contains(c))
|
||||
|
@ -225,7 +224,7 @@ namespace ChatSharp.Handlers
|
|||
}
|
||||
else
|
||||
channel.Mode = channel.Mode.Replace(c.ToString(), string.Empty);
|
||||
client.OnModeChanged(new ModeChangeEventArgs(channel.Name, new IrcUser(message.Prefix),
|
||||
client.OnModeChanged(new ModeChangeEventArgs(channel.Name, new IrcUser(message.Prefix),
|
||||
(add ? "+" : "-") + c));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace ChatSharp.Handlers
|
||||
{
|
||||
|
@ -14,7 +13,7 @@ namespace ChatSharp.Handlers
|
|||
if (message.Parameters[0] == "+")
|
||||
{
|
||||
// Based off irc-framework implementation
|
||||
var plainString = string.Format("{0}\0{0}\0{1}", client.User.Nick, client.User.Password);
|
||||
var plainString = $"{client.User.Nick}\0{client.User.Nick}\0{client.User.Password}";
|
||||
var b64Bytes = Encoding.UTF8.GetBytes(Convert.ToBase64String(Encoding.UTF8.GetBytes(plainString)));
|
||||
|
||||
while (b64Bytes.Length >= 400)
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
using ChatSharp.Events;
|
||||
using System.Linq;
|
||||
|
||||
namespace ChatSharp.Handlers
|
||||
{
|
||||
|
@ -20,7 +19,7 @@ namespace ChatSharp.Handlers
|
|||
else
|
||||
{
|
||||
key = item.Remove(item.IndexOf('='));
|
||||
value = item.Substring(item.IndexOf('=') + 1);
|
||||
value = item[(item.IndexOf('=') + 1)..];
|
||||
}
|
||||
// TODO: Consider doing this differently
|
||||
// TODO: Allow users to specify other things to handle
|
||||
|
@ -29,9 +28,9 @@ namespace ChatSharp.Handlers
|
|||
switch (key.ToUpper())
|
||||
{
|
||||
case "PREFIX":
|
||||
var modes = value.Substring(1, value.IndexOf(')') - 1);
|
||||
var prefixes = value.Substring(value.IndexOf(')') + 1);
|
||||
client.ServerInfo.Prefixes = new[] {modes, prefixes};
|
||||
var modes = value[1..value.IndexOf(')')];
|
||||
var prefixes = value[(value.IndexOf(')') + 1)..];
|
||||
client.ServerInfo.Prefixes = new[] { modes, prefixes };
|
||||
break;
|
||||
case "CHANTYPES":
|
||||
client.ServerInfo.ChannelTypes = value.ToCharArray();
|
||||
|
@ -58,7 +57,7 @@ namespace ChatSharp.Handlers
|
|||
for (int i = 0; i < limits.Length; i++)
|
||||
{
|
||||
var limitedModes = limits[i].Remove(limits[i].IndexOf(':'));
|
||||
var limit = int.Parse(limits[i].Substring(limits[i].IndexOf(':') + 1));
|
||||
var limit = int.Parse(limits[i][(limits[i].IndexOf(':') + 1)..]);
|
||||
foreach (var mode in limitedModes)
|
||||
client.ServerInfo.ModeListLimits[i] = new ServerInfo.ModeListLimit(mode, limit);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
using System;
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace ChatSharp.Handlers
|
||||
{
|
||||
|
@ -57,7 +57,7 @@ namespace ChatSharp.Handlers
|
|||
var channels = message.Parameters[2].Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
for (int i = 0; i < channels.Length; i++)
|
||||
if (!channels[i].StartsWith("#"))
|
||||
channels[i] = channels[i].Substring(1);
|
||||
channels[i] = channels[i][1..];
|
||||
whois.Channels = whois.Channels.Concat(channels).ToArray();
|
||||
}
|
||||
|
||||
|
@ -67,8 +67,7 @@ namespace ChatSharp.Handlers
|
|||
var whois = (WhoIs)request.State;
|
||||
if (!client.Users.Contains(whois.User.Nick))
|
||||
client.Users.Add(whois.User);
|
||||
if (request.Callback != null)
|
||||
request.Callback(request);
|
||||
request.Callback?.Invoke(request);
|
||||
client.OnWhoIsReceived(new Events.WhoIsReceivedEventArgs(whois));
|
||||
}
|
||||
|
||||
|
@ -80,15 +79,18 @@ namespace ChatSharp.Handlers
|
|||
if (query.Key != string.Empty && query.Value != null)
|
||||
{
|
||||
var whoList = (List<ExtendedWho>)client.RequestManager.PeekOperation(query.Key).State;
|
||||
var who = new ExtendedWho();
|
||||
|
||||
who.Channel = message.Parameters[1];
|
||||
who.User.User = message.Parameters[2];
|
||||
who.IP = message.Parameters[3];
|
||||
who.Server = message.Parameters[4];
|
||||
who.User.Nick = message.Parameters[5];
|
||||
who.Flags = message.Parameters[6];
|
||||
|
||||
var who = new ExtendedWho
|
||||
{
|
||||
Channel = message.Parameters[1],
|
||||
User = new IrcUser
|
||||
{
|
||||
User = message.Parameters[2],
|
||||
Nick = message.Parameters[5]
|
||||
},
|
||||
IP = message.Parameters[3],
|
||||
Server = message.Parameters[4],
|
||||
Flags = message.Parameters[6]
|
||||
};
|
||||
|
||||
var supposedRealName = message.Parameters[7];
|
||||
|
||||
|
@ -96,7 +98,7 @@ namespace ChatSharp.Handlers
|
|||
var hops = supposedRealName.Substring(0, supposedRealName.IndexOf(" "));
|
||||
who.Hops = int.Parse(hops);
|
||||
|
||||
var realName = supposedRealName.Substring(supposedRealName.IndexOf(" ") + 1);
|
||||
var realName = supposedRealName[(supposedRealName.IndexOf(" ") + 1)..];
|
||||
who.User.RealName = realName;
|
||||
|
||||
whoList.Add(who);
|
||||
|
|
|
@ -1,7 +1,4 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace ChatSharp
|
||||
namespace ChatSharp
|
||||
{
|
||||
/// <summary>
|
||||
/// A IRC capability.
|
||||
|
|
|
@ -14,7 +14,7 @@ namespace ChatSharp
|
|||
/// <summary>
|
||||
/// The channel topic. Will send a TOPIC command if set.
|
||||
/// </summary>
|
||||
public string Topic
|
||||
public string Topic
|
||||
{
|
||||
get
|
||||
{
|
||||
|
@ -123,8 +123,8 @@ namespace ChatSharp
|
|||
/// <returns></returns>
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
if (obj is IrcChannel)
|
||||
return Equals((IrcChannel)obj);
|
||||
if (obj is IrcChannel channel)
|
||||
return Equals(channel);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ namespace ChatSharp
|
|||
{
|
||||
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.", "message");
|
||||
if (illegalCharacters.Any(message.Contains)) throw new ArgumentException("Illegal characters are present in message.", nameof(message));
|
||||
string to = string.Join(",", destinations);
|
||||
SendRawMessage("PRIVMSG {0} :{1}{2}", to, PrivmsgPrefix, message);
|
||||
}
|
||||
|
@ -34,7 +34,7 @@ namespace ChatSharp
|
|||
{
|
||||
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.", "message");
|
||||
if (illegalCharacters.Any(message.Contains)) throw new ArgumentException("Illegal characters are present in message.", nameof(message));
|
||||
string to = string.Join(",", destinations);
|
||||
SendRawMessage("PRIVMSG {0} :\x0001ACTION {1}{2}\x0001", to, PrivmsgPrefix, message);
|
||||
}
|
||||
|
@ -46,7 +46,7 @@ namespace ChatSharp
|
|||
{
|
||||
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.", "message");
|
||||
if (illegalCharacters.Any(message.Contains)) throw new ArgumentException("Illegal characters are present in message.", nameof(message));
|
||||
string to = string.Join(",", destinations);
|
||||
SendRawMessage("NOTICE {0} :{1}{2}", to, PrivmsgPrefix, message);
|
||||
}
|
||||
|
@ -161,8 +161,7 @@ namespace ChatSharp
|
|||
var whois = new WhoIs();
|
||||
RequestManager.QueueOperation("WHOIS " + nick, new RequestOperation(whois, ro =>
|
||||
{
|
||||
if (callback != null)
|
||||
callback((WhoIs)ro.State);
|
||||
callback?.Invoke((WhoIs)ro.State);
|
||||
}));
|
||||
SendRawMessage("WHOIS {0}", nick);
|
||||
}
|
||||
|
@ -224,8 +223,7 @@ namespace ChatSharp
|
|||
RequestManager.QueueOperation("MODE " + channel, new RequestOperation(channel, ro =>
|
||||
{
|
||||
var c = Channels[(string)ro.State];
|
||||
if (callback != null)
|
||||
callback(c);
|
||||
callback?.Invoke(c);
|
||||
}));
|
||||
SendRawMessage("MODE {0}", channel);
|
||||
}
|
||||
|
@ -247,8 +245,7 @@ namespace ChatSharp
|
|||
RequestManager.QueueOperation("GETMODE " + mode + " " + channel, new RequestOperation(new MaskCollection(), ro =>
|
||||
{
|
||||
var c = (MaskCollection)ro.State;
|
||||
if (callback != null)
|
||||
callback(c);
|
||||
callback?.Invoke(c);
|
||||
}));
|
||||
SendRawMessage("MODE {0} {1}", channel, mode);
|
||||
}
|
||||
|
|
|
@ -152,11 +152,8 @@ namespace ChatSharp
|
|||
/// <param name="useSSL">Connect with SSL if true.</param>
|
||||
public IrcClient(string serverAddress, IrcUser user, bool useSSL = false)
|
||||
{
|
||||
if (serverAddress == null) throw new ArgumentNullException("serverAddress");
|
||||
if (user == null) throw new ArgumentNullException("user");
|
||||
|
||||
User = user;
|
||||
ServerAddress = serverAddress;
|
||||
User = user ?? throw new ArgumentNullException(nameof(user));
|
||||
ServerAddress = serverAddress ?? throw new ArgumentNullException(nameof(serverAddress));
|
||||
Encoding = Encoding.UTF8;
|
||||
Settings = new ClientSettings();
|
||||
Handlers = new Dictionary<string, MessageHandler>();
|
||||
|
@ -167,8 +164,8 @@ namespace ChatSharp
|
|||
ServerInfo = new ServerInfo();
|
||||
PrivmsgPrefix = "";
|
||||
Channels = User.Channels = new ChannelCollection(this);
|
||||
Users = new UserPool();
|
||||
Users.Add(User); // Add self to user pool
|
||||
// Add self to user pool
|
||||
Users = new UserPool { User };
|
||||
Capabilities = new CapabilityPool();
|
||||
|
||||
// List of supported capabilities
|
||||
|
@ -193,7 +190,7 @@ namespace ChatSharp
|
|||
ReadBuffer = new byte[ReadBufferLength];
|
||||
ReadBufferIndex = 0;
|
||||
PingTimer = new Timer(30000);
|
||||
PingTimer.Elapsed += (sender, e) =>
|
||||
PingTimer.Elapsed += (sender, e) =>
|
||||
{
|
||||
if (!string.IsNullOrEmpty(ServerNameFromPing))
|
||||
SendRawMessage("PING :{0}", ServerNameFromPing);
|
||||
|
@ -202,9 +199,9 @@ namespace ChatSharp
|
|||
checkQueue.Elapsed += (sender, e) =>
|
||||
{
|
||||
string nextMessage;
|
||||
if (WriteQueue.Count > 0)
|
||||
if (!WriteQueue.IsEmpty)
|
||||
{
|
||||
while (!WriteQueue.TryDequeue(out nextMessage));
|
||||
while (!WriteQueue.TryDequeue(out nextMessage)) ;
|
||||
SendRawMessage(nextMessage);
|
||||
}
|
||||
};
|
||||
|
@ -289,8 +286,7 @@ namespace ChatSharp
|
|||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
var socketException = e.InnerException as SocketException;
|
||||
if (socketException != null)
|
||||
if (e.InnerException is SocketException socketException)
|
||||
OnNetworkError(new SocketErrorEventArgs(socketException.SocketErrorCode));
|
||||
else
|
||||
throw;
|
||||
|
@ -375,8 +371,7 @@ namespace ChatSharp
|
|||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
var socketException = e.InnerException as SocketException;
|
||||
if (socketException != null)
|
||||
if (e.InnerException is SocketException socketException)
|
||||
OnNetworkError(new SocketErrorEventArgs(socketException.SocketErrorCode));
|
||||
else
|
||||
throw;
|
||||
|
@ -390,9 +385,9 @@ namespace ChatSharp
|
|||
OnRawMessageSent(new RawMessageEventArgs((string)result.AsyncState, true));
|
||||
|
||||
string nextMessage;
|
||||
if (WriteQueue.Count > 0)
|
||||
if (!WriteQueue.IsEmpty)
|
||||
{
|
||||
while (!WriteQueue.TryDequeue(out nextMessage));
|
||||
while (!WriteQueue.TryDequeue(out nextMessage)) ;
|
||||
SendRawMessage(nextMessage);
|
||||
}
|
||||
}
|
||||
|
@ -403,7 +398,7 @@ namespace ChatSharp
|
|||
public event EventHandler<Events.ErrorReplyEventArgs> ErrorReply;
|
||||
internal void OnErrorReply(Events.ErrorReplyEventArgs e)
|
||||
{
|
||||
if (ErrorReply != null) ErrorReply(this, e);
|
||||
ErrorReply?.Invoke(this, e);
|
||||
}
|
||||
/// <summary>
|
||||
/// Raised for errors.
|
||||
|
@ -411,7 +406,7 @@ namespace ChatSharp
|
|||
public event EventHandler<Events.ErrorEventArgs> Error;
|
||||
internal void OnError(Events.ErrorEventArgs e)
|
||||
{
|
||||
if (Error != null) Error(this, e);
|
||||
Error?.Invoke(this, e);
|
||||
}
|
||||
/// <summary>
|
||||
/// Raised for socket errors. ChatSharp does not automatically reconnect.
|
||||
|
@ -419,7 +414,7 @@ namespace ChatSharp
|
|||
public event EventHandler<SocketErrorEventArgs> NetworkError;
|
||||
internal void OnNetworkError(SocketErrorEventArgs e)
|
||||
{
|
||||
if (NetworkError != null) NetworkError(this, e);
|
||||
NetworkError?.Invoke(this, e);
|
||||
}
|
||||
/// <summary>
|
||||
/// Occurs when a raw message is sent.
|
||||
|
@ -427,7 +422,7 @@ namespace ChatSharp
|
|||
public event EventHandler<RawMessageEventArgs> RawMessageSent;
|
||||
internal void OnRawMessageSent(RawMessageEventArgs e)
|
||||
{
|
||||
if (RawMessageSent != null) RawMessageSent(this, e);
|
||||
RawMessageSent?.Invoke(this, e);
|
||||
}
|
||||
/// <summary>
|
||||
/// Occurs when a raw message received.
|
||||
|
@ -435,7 +430,7 @@ namespace ChatSharp
|
|||
public event EventHandler<RawMessageEventArgs> RawMessageReceived;
|
||||
internal void OnRawMessageReceived(RawMessageEventArgs e)
|
||||
{
|
||||
if (RawMessageReceived != null) RawMessageReceived(this, e);
|
||||
RawMessageReceived?.Invoke(this, e);
|
||||
}
|
||||
/// <summary>
|
||||
/// Occurs when a notice received.
|
||||
|
@ -443,7 +438,7 @@ namespace ChatSharp
|
|||
public event EventHandler<IrcNoticeEventArgs> NoticeReceived;
|
||||
internal void OnNoticeReceived(IrcNoticeEventArgs e)
|
||||
{
|
||||
if (NoticeReceived != null) NoticeReceived(this, e);
|
||||
NoticeReceived?.Invoke(this, e);
|
||||
}
|
||||
/// <summary>
|
||||
/// Occurs when the server has sent us part of the MOTD.
|
||||
|
@ -451,7 +446,7 @@ namespace ChatSharp
|
|||
public event EventHandler<ServerMOTDEventArgs> MOTDPartReceived;
|
||||
internal void OnMOTDPartReceived(ServerMOTDEventArgs e)
|
||||
{
|
||||
if (MOTDPartReceived != null) MOTDPartReceived(this, e);
|
||||
MOTDPartReceived?.Invoke(this, e);
|
||||
}
|
||||
/// <summary>
|
||||
/// Occurs when the entire server MOTD has been received.
|
||||
|
@ -459,7 +454,7 @@ namespace ChatSharp
|
|||
public event EventHandler<ServerMOTDEventArgs> MOTDReceived;
|
||||
internal void OnMOTDReceived(ServerMOTDEventArgs e)
|
||||
{
|
||||
if (MOTDReceived != null) MOTDReceived(this, e);
|
||||
MOTDReceived?.Invoke(this, e);
|
||||
}
|
||||
/// <summary>
|
||||
/// Occurs when a private message received. This can be a channel OR a user message.
|
||||
|
@ -467,7 +462,7 @@ namespace ChatSharp
|
|||
public event EventHandler<PrivateMessageEventArgs> PrivateMessageReceived;
|
||||
internal void OnPrivateMessageReceived(PrivateMessageEventArgs e)
|
||||
{
|
||||
if (PrivateMessageReceived != null) PrivateMessageReceived(this, e);
|
||||
PrivateMessageReceived?.Invoke(this, e);
|
||||
}
|
||||
/// <summary>
|
||||
/// Occurs when a message is received in an IRC channel.
|
||||
|
@ -475,7 +470,7 @@ namespace ChatSharp
|
|||
public event EventHandler<PrivateMessageEventArgs> ChannelMessageReceived;
|
||||
internal void OnChannelMessageReceived(PrivateMessageEventArgs e)
|
||||
{
|
||||
if (ChannelMessageReceived != null) ChannelMessageReceived(this, e);
|
||||
ChannelMessageReceived?.Invoke(this, e);
|
||||
}
|
||||
/// <summary>
|
||||
/// Occurs when a message is received from a user.
|
||||
|
@ -483,7 +478,7 @@ namespace ChatSharp
|
|||
public event EventHandler<PrivateMessageEventArgs> UserMessageReceived;
|
||||
internal void OnUserMessageReceived(PrivateMessageEventArgs e)
|
||||
{
|
||||
if (UserMessageReceived != null) UserMessageReceived(this, e);
|
||||
UserMessageReceived?.Invoke(this, e);
|
||||
}
|
||||
/// <summary>
|
||||
/// Raised if the nick you've chosen is in use. By default, ChatSharp will pick a
|
||||
|
@ -492,7 +487,7 @@ namespace ChatSharp
|
|||
public event EventHandler<ErronousNickEventArgs> NickInUse;
|
||||
internal void OnNickInUse(ErronousNickEventArgs e)
|
||||
{
|
||||
if (NickInUse != null) NickInUse(this, e);
|
||||
NickInUse?.Invoke(this, e);
|
||||
}
|
||||
/// <summary>
|
||||
/// Occurs when a user or channel mode is changed.
|
||||
|
@ -500,7 +495,7 @@ namespace ChatSharp
|
|||
public event EventHandler<ModeChangeEventArgs> ModeChanged;
|
||||
internal void OnModeChanged(ModeChangeEventArgs e)
|
||||
{
|
||||
if (ModeChanged != null) ModeChanged(this, e);
|
||||
ModeChanged?.Invoke(this, e);
|
||||
}
|
||||
/// <summary>
|
||||
/// Occurs when a user joins a channel.
|
||||
|
@ -508,7 +503,7 @@ namespace ChatSharp
|
|||
public event EventHandler<ChannelUserEventArgs> UserJoinedChannel;
|
||||
internal void OnUserJoinedChannel(ChannelUserEventArgs e)
|
||||
{
|
||||
if (UserJoinedChannel != null) UserJoinedChannel(this, e);
|
||||
UserJoinedChannel?.Invoke(this, e);
|
||||
}
|
||||
/// <summary>
|
||||
/// Occurs when a user parts a channel.
|
||||
|
@ -516,7 +511,7 @@ namespace ChatSharp
|
|||
public event EventHandler<ChannelUserEventArgs> UserPartedChannel;
|
||||
internal void OnUserPartedChannel(ChannelUserEventArgs e)
|
||||
{
|
||||
if (UserPartedChannel != null) UserPartedChannel(this, e);
|
||||
UserPartedChannel?.Invoke(this, e);
|
||||
}
|
||||
/// <summary>
|
||||
/// Occurs when we have received the list of users present in a channel.
|
||||
|
@ -524,7 +519,7 @@ namespace ChatSharp
|
|||
public event EventHandler<ChannelEventArgs> ChannelListReceived;
|
||||
internal void OnChannelListReceived(ChannelEventArgs e)
|
||||
{
|
||||
if (ChannelListReceived != null) ChannelListReceived(this, e);
|
||||
ChannelListReceived?.Invoke(this, e);
|
||||
}
|
||||
/// <summary>
|
||||
/// Occurs when we have received the topic of a channel.
|
||||
|
@ -532,7 +527,7 @@ namespace ChatSharp
|
|||
public event EventHandler<ChannelTopicEventArgs> ChannelTopicReceived;
|
||||
internal void OnChannelTopicReceived(ChannelTopicEventArgs e)
|
||||
{
|
||||
if (ChannelTopicReceived != null) ChannelTopicReceived(this, e);
|
||||
ChannelTopicReceived?.Invoke(this, e);
|
||||
}
|
||||
/// <summary>
|
||||
/// Occurs when the IRC connection is established and it is safe to begin interacting with the server.
|
||||
|
@ -540,7 +535,7 @@ namespace ChatSharp
|
|||
public event EventHandler<EventArgs> ConnectionComplete;
|
||||
internal void OnConnectionComplete(EventArgs e)
|
||||
{
|
||||
if (ConnectionComplete != null) ConnectionComplete(this, e);
|
||||
ConnectionComplete?.Invoke(this, e);
|
||||
}
|
||||
/// <summary>
|
||||
/// Occurs when we receive server info (such as max nick length).
|
||||
|
@ -548,7 +543,7 @@ namespace ChatSharp
|
|||
public event EventHandler<SupportsEventArgs> ServerInfoReceived;
|
||||
internal void OnServerInfoReceived(SupportsEventArgs e)
|
||||
{
|
||||
if (ServerInfoReceived != null) ServerInfoReceived(this, e);
|
||||
ServerInfoReceived?.Invoke(this, e);
|
||||
}
|
||||
/// <summary>
|
||||
/// Occurs when a user is kicked.
|
||||
|
@ -556,7 +551,7 @@ namespace ChatSharp
|
|||
public event EventHandler<KickEventArgs> UserKicked;
|
||||
internal void OnUserKicked(KickEventArgs e)
|
||||
{
|
||||
if (UserKicked != null) UserKicked(this, e);
|
||||
UserKicked?.Invoke(this, e);
|
||||
}
|
||||
/// <summary>
|
||||
/// Occurs when a WHOIS response is received.
|
||||
|
@ -564,7 +559,7 @@ namespace ChatSharp
|
|||
public event EventHandler<WhoIsReceivedEventArgs> WhoIsReceived;
|
||||
internal void OnWhoIsReceived(WhoIsReceivedEventArgs e)
|
||||
{
|
||||
if (WhoIsReceived != null) WhoIsReceived(this, e);
|
||||
WhoIsReceived?.Invoke(this, e);
|
||||
}
|
||||
/// <summary>
|
||||
/// Occurs when a user has changed their nick.
|
||||
|
@ -572,7 +567,7 @@ namespace ChatSharp
|
|||
public event EventHandler<NickChangedEventArgs> NickChanged;
|
||||
internal void OnNickChanged(NickChangedEventArgs e)
|
||||
{
|
||||
if (NickChanged != null) NickChanged(this, e);
|
||||
NickChanged?.Invoke(this, e);
|
||||
}
|
||||
/// <summary>
|
||||
/// Occurs when a user has quit.
|
||||
|
@ -580,7 +575,7 @@ namespace ChatSharp
|
|||
public event EventHandler<UserEventArgs> UserQuit;
|
||||
internal void OnUserQuit(UserEventArgs e)
|
||||
{
|
||||
if (UserQuit != null) UserQuit(this, e);
|
||||
UserQuit?.Invoke(this, e);
|
||||
}
|
||||
/// <summary>
|
||||
/// Occurs when a WHO (WHOX protocol) is received.
|
||||
|
|
|
@ -40,12 +40,12 @@ namespace ChatSharp
|
|||
public IrcMessage(string rawMessage)
|
||||
{
|
||||
RawMessage = rawMessage;
|
||||
Tags = new KeyValuePair<string, string>[] { };
|
||||
Tags = System.Array.Empty<KeyValuePair<string, string>>();
|
||||
|
||||
if (rawMessage.StartsWith("@"))
|
||||
{
|
||||
var rawTags = rawMessage.Substring(1, rawMessage.IndexOf(' ') - 1);
|
||||
rawMessage = rawMessage.Substring(rawMessage.IndexOf(' ') + 1);
|
||||
var rawTags = rawMessage[1..rawMessage.IndexOf(' ')];
|
||||
rawMessage = rawMessage[(rawMessage.IndexOf(' ') + 1)..];
|
||||
|
||||
// Parse tags as key value pairs
|
||||
var tags = new List<KeyValuePair<string, string>>();
|
||||
|
@ -53,12 +53,12 @@ namespace ChatSharp
|
|||
{
|
||||
var replacedTag = rawTag.Replace(@"\:", ";");
|
||||
// The spec declares `@a=` as a tag with an empty value, while `@b;` as a tag with a null value
|
||||
KeyValuePair<string, string> tag = new KeyValuePair<string, string>(replacedTag, null);
|
||||
KeyValuePair<string, string> tag = new(replacedTag, null);
|
||||
|
||||
if (replacedTag.Contains("="))
|
||||
{
|
||||
string key = replacedTag.Substring(0, replacedTag.IndexOf("="));
|
||||
string value = replacedTag.Substring(replacedTag.IndexOf("=") + 1);
|
||||
string value = replacedTag[(replacedTag.IndexOf("=") + 1)..];
|
||||
tag = new KeyValuePair<string, string>(key, value);
|
||||
}
|
||||
|
||||
|
@ -70,21 +70,21 @@ namespace ChatSharp
|
|||
|
||||
if (rawMessage.StartsWith(":"))
|
||||
{
|
||||
Prefix = rawMessage.Substring(1, rawMessage.IndexOf(' ') - 1);
|
||||
rawMessage = rawMessage.Substring(rawMessage.IndexOf(' ') + 1);
|
||||
Prefix = rawMessage[1..rawMessage.IndexOf(' ')];
|
||||
rawMessage = rawMessage[(rawMessage.IndexOf(' ') + 1)..];
|
||||
}
|
||||
|
||||
if (rawMessage.Contains(' '))
|
||||
{
|
||||
Command = rawMessage.Remove(rawMessage.IndexOf(' '));
|
||||
rawMessage = rawMessage.Substring(rawMessage.IndexOf(' ') + 1);
|
||||
rawMessage = rawMessage[(rawMessage.IndexOf(' ') + 1)..];
|
||||
// Parse parameters
|
||||
var parameters = new List<string>();
|
||||
while (!string.IsNullOrEmpty(rawMessage))
|
||||
{
|
||||
if (rawMessage.StartsWith(":"))
|
||||
{
|
||||
parameters.Add(rawMessage.Substring(1));
|
||||
parameters.Add(rawMessage[1..]);
|
||||
break;
|
||||
}
|
||||
if (!rawMessage.Contains(' '))
|
||||
|
@ -94,7 +94,7 @@ namespace ChatSharp
|
|||
break;
|
||||
}
|
||||
parameters.Add(rawMessage.Remove(rawMessage.IndexOf(' ')));
|
||||
rawMessage = rawMessage.Substring(rawMessage.IndexOf(' ') + 1);
|
||||
rawMessage = rawMessage[(rawMessage.IndexOf(' ') + 1)..];
|
||||
}
|
||||
Parameters = parameters.ToArray();
|
||||
}
|
||||
|
@ -102,7 +102,7 @@ namespace ChatSharp
|
|||
{
|
||||
// Violates RFC 1459, but we'll parse it anyway
|
||||
Command = rawMessage;
|
||||
Parameters = new string[0];
|
||||
Parameters = System.Array.Empty<string>();
|
||||
}
|
||||
|
||||
// Parse server-time message tag.
|
||||
|
|
|
@ -13,7 +13,7 @@ namespace ChatSharp
|
|||
|
||||
internal IrcProtocolException(string message) : base(message)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
using System;
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace ChatSharp
|
||||
|
@ -179,8 +178,8 @@ namespace ChatSharp
|
|||
/// </summary>
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
if (obj is IrcUser)
|
||||
return Equals((IrcUser)obj);
|
||||
if (obj is IrcUser user)
|
||||
return Equals(user);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace ChatSharp
|
||||
{
|
||||
|
@ -22,7 +21,7 @@ namespace ChatSharp
|
|||
/// </summary>
|
||||
public char? GetModeForPrefix(char prefix)
|
||||
{
|
||||
if (Prefixes[1].IndexOf(prefix) == -1)
|
||||
if (!Prefixes[1].Contains(prefix))
|
||||
return null;
|
||||
return Prefixes[0][Prefixes[1].IndexOf(prefix)];
|
||||
}
|
||||
|
@ -35,14 +34,14 @@ namespace ChatSharp
|
|||
public List<char?> GetModesForNick(string nick)
|
||||
{
|
||||
var supportedPrefixes = Prefixes[1];
|
||||
List<char?> modeList = new List<char?>();
|
||||
List<char> nickPrefixes = new List<char>();
|
||||
List<char?> modeList = new();
|
||||
List<char> nickPrefixes = new();
|
||||
|
||||
foreach (char prefix in supportedPrefixes)
|
||||
{
|
||||
if (nick.Contains(prefix))
|
||||
{
|
||||
nick.Remove(nick.IndexOf(prefix));
|
||||
_ = nick.Remove(nick.IndexOf(prefix));
|
||||
if (!nickPrefixes.Contains(prefix))
|
||||
{
|
||||
nickPrefixes.Add(prefix);
|
||||
|
|
|
@ -16,7 +16,7 @@ namespace ChatSharp
|
|||
/// A unix epoch representation of the timestamp.
|
||||
/// </summary>
|
||||
public double UnixTimestamp { get; internal set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Initializes and parses the timestamp received from the server.
|
||||
/// </summary>
|
||||
|
@ -41,7 +41,7 @@ namespace ChatSharp
|
|||
throw new ArgumentException("The timestamp string was provided in an invalid format.", date);
|
||||
|
||||
UnixTimestamp = parsedTimestamp;
|
||||
Date = (new DateTime(1970, 1, 1, 0, 0, 0).AddSeconds(UnixTimestamp));
|
||||
Date = new DateTime(1970, 1, 1, 0, 0, 0).AddSeconds(UnixTimestamp);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -58,8 +58,8 @@ namespace ChatSharp
|
|||
/// </summary>
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
if (obj is Timestamp)
|
||||
return Equals((Timestamp)obj);
|
||||
if (obj is Timestamp timestamp)
|
||||
return Equals(timestamp);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace ChatSharp
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace ChatSharp
|
||||
|
|
|
@ -10,7 +10,7 @@ namespace ChatSharp
|
|||
{
|
||||
User = new IrcUser();
|
||||
SecondsIdle = -1;
|
||||
Channels = new string[0];
|
||||
Channels = System.Array.Empty<string>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net;
|
||||
namespace ChatSharp
|
||||
{
|
||||
/// <summary>
|
||||
|
|
|
@ -1,74 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="..\packages\MSTest.TestAdapter.1.1.11\build\net45\MSTest.TestAdapter.props" Condition="Exists('..\packages\MSTest.TestAdapter.1.1.11\build\net45\MSTest.TestAdapter.props')" />
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{24D593EC-CA81-41DC-9FE7-A434DDDE229D}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>ChatSharp.Tests</RootNamespace>
|
||||
<AssemblyName>ChatSharp.Tests</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">15.0</VisualStudioVersion>
|
||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
||||
<ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages</ReferencePath>
|
||||
<IsCodedUITest>False</IsCodedUITest>
|
||||
<TestProjectType>UnitTest</TestProjectType>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\MSTest.TestFramework.1.1.11\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\MSTest.TestFramework.1.1.11\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<ProjectReference Include="..\ChatSharp\ChatSharp.csproj" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="IrcMessageTests.cs" />
|
||||
<Compile Include="IrcUserTests.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.*" />
|
||||
<PackageReference Include="MSTest.TestAdapter" Version="2.2.7" />
|
||||
<PackageReference Include="Microsoft.DotNet.UpgradeAssistant.Extensions.Default.Analyzers" Version="0.3.246501">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="MSTest.TestFramework" Version="2.2.7" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\ChatSharp\ChatSharp.csproj">
|
||||
<Project>{4033affa-bea3-4bdf-84ea-59a23360fd36}</Project>
|
||||
<Name>ChatSharp</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\MSTest.TestAdapter.1.1.11\build\net45\MSTest.TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.1.1.11\build\net45\MSTest.TestAdapter.props'))" />
|
||||
<Error Condition="!Exists('..\packages\MSTest.TestAdapter.1.1.11\build\net45\MSTest.TestAdapter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.1.1.11\build\net45\MSTest.TestAdapter.targets'))" />
|
||||
</Target>
|
||||
<Import Project="..\packages\MSTest.TestAdapter.1.1.11\build\net45\MSTest.TestAdapter.targets" Condition="Exists('..\packages\MSTest.TestAdapter.1.1.11\build\net45\MSTest.TestAdapter.targets')" />
|
||||
</Project>
|
|
@ -1,6 +1,5 @@
|
|||
using System;
|
||||
using ChatSharp;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace ChatSharp.Tests
|
||||
|
@ -13,7 +12,7 @@ namespace ChatSharp.Tests
|
|||
{
|
||||
try
|
||||
{
|
||||
IrcMessage fromMessage = new IrcMessage(@":user!~ident@host PRIVMSG target :Lorem ipsum dolor sit amet");
|
||||
IrcMessage fromMessage = new(@":user!~ident@host PRIVMSG target :Lorem ipsum dolor sit amet");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
@ -24,21 +23,21 @@ namespace ChatSharp.Tests
|
|||
[TestMethod]
|
||||
public void NewValidMessage_Command()
|
||||
{
|
||||
IrcMessage fromMessage = new IrcMessage(@":user!~ident@host PRIVMSG target :Lorem ipsum dolor sit amet");
|
||||
IrcMessage fromMessage = new(@":user!~ident@host PRIVMSG target :Lorem ipsum dolor sit amet");
|
||||
Assert.AreEqual(fromMessage.Command, "PRIVMSG");
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void NewValidMessage_Prefix()
|
||||
{
|
||||
IrcMessage fromMessage = new IrcMessage(@":user!~ident@host PRIVMSG target :Lorem ipsum dolor sit amet");
|
||||
IrcMessage fromMessage = new(@":user!~ident@host PRIVMSG target :Lorem ipsum dolor sit amet");
|
||||
Assert.AreEqual(fromMessage.Prefix, "user!~ident@host");
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void NewValidMessage_Params()
|
||||
{
|
||||
IrcMessage fromMessage = new IrcMessage(@":user!~ident@host PRIVMSG target :Lorem ipsum dolor sit amet");
|
||||
IrcMessage fromMessage = new(@":user!~ident@host PRIVMSG target :Lorem ipsum dolor sit amet");
|
||||
string[] compareParams = new string[] { "target", "Lorem ipsum dolor sit amet" };
|
||||
CollectionAssert.AreEqual(fromMessage.Parameters, compareParams);
|
||||
}
|
||||
|
@ -46,7 +45,7 @@ namespace ChatSharp.Tests
|
|||
[TestMethod]
|
||||
public void NewValidMessage_Tags()
|
||||
{
|
||||
IrcMessage fromMessage = new IrcMessage("@a=123;b=456;c=789 :user!~ident@host PRIVMSG target :Lorem ipsum dolor sit amet");
|
||||
IrcMessage fromMessage = new("@a=123;b=456;c=789 :user!~ident@host PRIVMSG target :Lorem ipsum dolor sit amet");
|
||||
KeyValuePair<string, string>[] compareTags = new KeyValuePair<string, string>[]
|
||||
{
|
||||
new KeyValuePair<string, string>("a", "123"),
|
||||
|
@ -59,11 +58,11 @@ namespace ChatSharp.Tests
|
|||
[TestMethod]
|
||||
public void NewValidMessage_Tags02()
|
||||
{
|
||||
IrcMessage fromMessage = new IrcMessage("@aaa=bbb;ccc;example.com/ddd=eee :nick!ident@host.com PRIVMSG me :Hello");
|
||||
IrcMessage fromMessage = new("@aaa=bbb;ccc;example.com/ddd=eee :nick!ident@host.com PRIVMSG me :Hello");
|
||||
KeyValuePair<string, string>[] compareTags = new KeyValuePair<string, string>[]
|
||||
{
|
||||
new KeyValuePair<string, string>("aaa", "bbb"),
|
||||
new KeyValuePair<string, string>("ccc", ""),
|
||||
new KeyValuePair<string, string>("ccc", null),
|
||||
new KeyValuePair<string, string>("example.com/ddd", "eee"),
|
||||
};
|
||||
CollectionAssert.AreEqual(fromMessage.Tags, compareTags);
|
||||
|
@ -72,7 +71,7 @@ namespace ChatSharp.Tests
|
|||
[TestMethod]
|
||||
public void NewValidMessage_TagsWithSemicolon()
|
||||
{
|
||||
IrcMessage fromMessage = new IrcMessage(@"@a=123\:456;b=456\:789;c=789\:123 :user!~ident@host PRIVMSG target :Lorem ipsum dolor sit amet");
|
||||
IrcMessage fromMessage = new(@"@a=123\:456;b=456\:789;c=789\:123 :user!~ident@host PRIVMSG target :Lorem ipsum dolor sit amet");
|
||||
KeyValuePair<string, string>[] compareTags = new KeyValuePair<string, string>[]
|
||||
{
|
||||
new KeyValuePair<string, string>("a", "123;456"),
|
||||
|
@ -85,7 +84,7 @@ namespace ChatSharp.Tests
|
|||
[TestMethod]
|
||||
public void NewValidMessage_TagsNoValue()
|
||||
{
|
||||
IrcMessage fromMessage = new IrcMessage("@a=;b :nick!ident@host.com PRIVMSG me :Hello");
|
||||
IrcMessage fromMessage = new("@a=;b :nick!ident@host.com PRIVMSG me :Hello");
|
||||
KeyValuePair<string, string>[] compareTags = new KeyValuePair<string, string>[]
|
||||
{
|
||||
new KeyValuePair<string, string>("a", ""),
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
using System;
|
||||
using ChatSharp;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
|
||||
namespace ChatSharp.Tests
|
||||
{
|
||||
|
@ -10,8 +8,8 @@ namespace ChatSharp.Tests
|
|||
[TestMethod]
|
||||
public void GetUserModes_NotNull_FiveModes()
|
||||
{
|
||||
IrcUser user = new IrcUser("~&@%+aji", "user");
|
||||
IrcClient client = new IrcClient("irc.address", user);
|
||||
IrcUser user = new("~&@%+aji", "user");
|
||||
IrcClient client = new("irc.address", user);
|
||||
|
||||
var userModes = client.ServerInfo.GetModesForNick(user.Nick);
|
||||
|
||||
|
@ -21,8 +19,8 @@ namespace ChatSharp.Tests
|
|||
[TestMethod]
|
||||
public void GetUserModes_NotNull_FourModes()
|
||||
{
|
||||
IrcUser user = new IrcUser("&@%+aji", "user");
|
||||
IrcClient client = new IrcClient("irc.address", user);
|
||||
IrcUser user = new("&@%+aji", "user");
|
||||
IrcClient client = new("irc.address", user);
|
||||
|
||||
var userModes = client.ServerInfo.GetModesForNick(user.Nick);
|
||||
|
||||
|
@ -32,8 +30,8 @@ namespace ChatSharp.Tests
|
|||
[TestMethod]
|
||||
public void GetUserModes_NotNull_ThreeModes()
|
||||
{
|
||||
IrcUser user = new IrcUser("@%+aji", "user");
|
||||
IrcClient client = new IrcClient("irc.address", user);
|
||||
IrcUser user = new("@%+aji", "user");
|
||||
IrcClient client = new("irc.address", user);
|
||||
|
||||
var userModes = client.ServerInfo.GetModesForNick(user.Nick);
|
||||
|
||||
|
@ -43,8 +41,8 @@ namespace ChatSharp.Tests
|
|||
[TestMethod]
|
||||
public void GetUserModes_NotNull_TwoModes()
|
||||
{
|
||||
IrcUser user = new IrcUser("%+aji", "user");
|
||||
IrcClient client = new IrcClient("irc.address", user);
|
||||
IrcUser user = new("%+aji", "user");
|
||||
IrcClient client = new("irc.address", user);
|
||||
|
||||
var userModes = client.ServerInfo.GetModesForNick(user.Nick);
|
||||
|
||||
|
@ -54,8 +52,8 @@ namespace ChatSharp.Tests
|
|||
[TestMethod]
|
||||
public void GetUserModes_NotNull_OneMode()
|
||||
{
|
||||
IrcUser user = new IrcUser("+aji", "user");
|
||||
IrcClient client = new IrcClient("irc.address", user);
|
||||
IrcUser user = new("+aji", "user");
|
||||
IrcClient client = new("irc.address", user);
|
||||
|
||||
var userModes = client.ServerInfo.GetModesForNick(user.Nick);
|
||||
|
||||
|
@ -65,8 +63,8 @@ namespace ChatSharp.Tests
|
|||
[TestMethod]
|
||||
public void GetUserModes_IsNull()
|
||||
{
|
||||
IrcUser user = new IrcUser("aji", "user");
|
||||
IrcClient client = new IrcClient("irc.address", user);
|
||||
IrcUser user = new("aji", "user");
|
||||
IrcClient client = new("irc.address", user);
|
||||
|
||||
var userModes = client.ServerInfo.GetModesForNick(user.Nick);
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
[assembly: AssemblyTitle("ChatSharpTests")]
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="MSTest.TestAdapter" version="1.1.11" targetFramework="net452" />
|
||||
<package id="MSTest.TestFramework" version="1.1.11" targetFramework="net452" />
|
||||
</packages>
|
Loading…
Reference in New Issue