public Message(string query)
{
if (query.Length > Client.BufferSize || query.Length < (":x!y " + Client.NOTICE + " z :").Length || query[0] != ':')
throw new ArgumentOutOfRangeException();
int z;
// RFC example:
// :[email protected] PRIVMSG Wiz :Are you receiving this message ?
z = query.IndexOf(':', 1);
if (z == -1)
throw new ArgumentOutOfRangeException();
Text = z + 1 >= query.Length ? string.Empty : query.Substring(z + 1);
string[] values = query.Substring(1, z - 2).Split(' ');
if (values.Length != 3)
throw new ArgumentOutOfRangeException();
User = new User(values[0]);
switch (values[1].ToUpperInvariant())
{
case Client.PRIVMSG:
Notice = false;
break;
case Client.NOTICE:
Notice = true;
break;
default:
throw new ArgumentOutOfRangeException();
}
Target = values[2];
}