public static void ParseCommand(Command command) { String result = Protocol.Server.UnknownCommand; switch (command.ClientCommand) { case Protocol.Client.AuthSend: result = AuthSend(command); break; case Protocol.Client.ChatSend: result = ChatSend(command); break; case Protocol.Client.ListFriends: result = ListFriends(command); break; case Protocol.Client.Logout: result = Logout(command); break; case Protocol.Client.SetStatus: result = SetStatus(command); break; default: break; } command.Connection.Send(result); }
public static String Logout(Command command) { command.Steam.Disconnect(); command.Connection.IsAuthorized = false; return Protocol.Server.LoggedOut; }
public static String AuthSend(Command command) { Logging.Logger.Get().Log("AuthSend(" + command + ")"); if (command.Parameters.Length == 1 && command.Parameters[0].Length > 0) { command.Steam.Connect(command.Parameters[0]); return Protocol.Server.AuthSending; } return Protocol.Server.InvalidArgument; }
public static String ListFriends(Command command) { StringBuilder result = new StringBuilder(); SteamFriends friends = command.Steam.Friends; int count = friends.GetFriendCount(); for (int i = 0; i < count; i++) { if (result.Length > 0) result.Append(';'); SteamID steamId = friends.GetFriendByIndex(i); String name = friends.GetFriendPersonaName(steamId); EPersonaState state = friends.GetFriendPersonaState(steamId); String game = friends.GetFriendGamePlayedName(steamId); name = name.Replace('|', ' '); result.Append(steamId + "|" + '"' + name + '"' + "|" + state + "|" + game); } return Protocol.Server.ListFriends + " " + Protocol.Server.Success + " " + result.ToString(); }
public static String ChatSend(Command command) { SteamFriends friends = command.Steam.Friends; if (command.Parameters.Length == 2) { int count = friends.GetFriendCount(); for (int i = 0; i < count; i++) { SteamID id = friends.GetFriendByIndex(i); if(id.ToString() == command.Parameters[0]) { friends.SendChatMessage(id, EChatEntryType.ChatMsg, command.Parameters[1].Trim('"')); return Protocol.Server.Success; } } return Protocol.Server.NoSuchFriend; } return Protocol.Server.InvalidArgument; }
public static String SetStatus(Command command) { String result = Protocol.Server.InvalidArgument; if(command.Parameters.Length == 1) { String status = command.Parameters[0]; SteamFriends friends = command.Steam.Friends; switch (status.ToLower()) { case "away": friends.SetPersonaState(EPersonaState.Away); result = Protocol.Server.Success; break; case "busy": friends.SetPersonaState(EPersonaState.Busy); result = Protocol.Server.Success; break; case "online": friends.SetPersonaState(EPersonaState.Online); result = Protocol.Server.Success; break; case "offline": friends.SetPersonaState(EPersonaState.Offline); result = Protocol.Server.Success; break; case "snooze": friends.SetPersonaState(EPersonaState.Snooze); result = Protocol.Server.Success; break; default: result = Protocol.Server.InvalidArgument; break; } } return result; }