/// <summary> /// Querys the serverinfos /// </summary> public override void GetServerInfo() { if (!IsOnline) { return; } Query(_QUERY_INFO); AddParams(ResponseString.Split('\\')); Query(_QUERY_RULES); AddParams(ResponseString.Split('\\')); Query(_QUERY_PLAYERS); ParsePlayers(); }
public ICollection <Message> GetMessageList() { string ResponseString; List <Message> ReturnArray = new List <Message>(); WriteMessage("LIST\r\n"); ResponseString = GetResponse(); if (!ResponseString.StartsWith("+OK", StringComparison.InvariantCultureIgnoreCase)) { throw new Pop3Exception(ResponseString); } bool Done = false; while (!Done) { Regex TempRegex = new Regex(Regex.Escape("+") + "OK.*\r\n"); if (!ResponseString.EndsWith("\r\n.\r\n", StringComparison.InvariantCulture)) { while (!ResponseString.EndsWith("\r\n.\r\n", StringComparison.InvariantCulture)) { ResponseString += GetResponse(); } } ResponseString = TempRegex.Replace(ResponseString, ""); string[] Seperator = { "\r\n" }; string[] Values = ResponseString.Split(Seperator, StringSplitOptions.RemoveEmptyEntries); foreach (string Value in Values) { string[] NewSeperator = { " " }; string[] Pair = Value.Split(NewSeperator, StringSplitOptions.RemoveEmptyEntries); if (Pair.Length > 1) { Message TempMessage = new Message(); TempMessage.MessageNumber = Int32.Parse(Pair[0], CultureInfo.InvariantCulture); TempMessage.MessageSize = Int32.Parse(Pair[1], CultureInfo.InvariantCulture); TempMessage.Retrieved = false; ReturnArray.Add(TempMessage); } else { Done = true; break; } } } return(ReturnArray); }
private void ParsePlayers() { if (!IsOnline) { return; } if (_params.ContainsKey("numplayers")) { _players = new PlayerCollection(); // Int16.Parse( _params["numplayers"] ) ); } string key, val; int pNr; string[] parts = ResponseString.Split('\\'); for (int i = 1; i < parts.Length; i++) { if (parts[i] == "queryid" || parts[i] == "final") { i++; continue; } key = parts[i].Substring(0, parts[i].IndexOf("_")); pNr = Int16.Parse(parts[i].Substring(parts[i].IndexOf("_") + 1)); val = parts[++i]; if (key == "teamname") { _teams.Add(val); } try { if (_players[pNr] == null) { _players.Insert(pNr, new Player()); } } catch (ArgumentOutOfRangeException) { _players.Insert(pNr, new Player()); } switch (key) { case "playername": case "player": _players[pNr].Name = val; break; case "score": case "frags": _players[pNr].Score = Int16.Parse(val); break; case "ping": _players[pNr].Ping = Int16.Parse(val); break; case "team": _players[pNr].Team = val; break; default: _players[pNr].Parameters.Add(key, val); break; } } }