/// <summary> /// Returns local client /// </summary> public TS3Models.Client GetWhoami() { if (IsConnected()) { ts3Connection.WriteLine("whoami"); TS3Models.Result result = TS3Helper.ParseResult(ReadAll(), false); return(new TS3Models.Client() { Result = result, Channel = new TS3Models.Channel() { CId = Convert.ToInt32(result.GetFirstResult("cid")) }, ClId = Convert.ToInt32(result.GetFirstResult("clid")) }); } return(null); }
/// <summary> /// Selects the client tab /// </summary> public TS3Models.Result Use(int?schandlerid = null) { if (IsConnected()) { string query = "use"; if (schandlerid != null) { query += string.Format(" schandlerid={0}", schandlerid); } ts3Connection.WriteLine(query); TS3Models.Result result = TS3Helper.ParseResult(ReadAll(), false); if (result != null && result.ErrorId == 0) { CurrentHandlerId = Convert.ToInt32(result.GetFirstResult("schandlerid")); } return(result); } return(null); }
internal bool Connect(string hostname = "localhost", int port = 25639) { if (!IsConnected()) { try { tcpClient = new TcpClient(hostname, port); if (!IsConnected()) { throw new Exception("Could not connect."); } } catch { return(false); } networkStream = tcpClient.GetStream(); streamReader = new StreamReader(networkStream); streamWriter = new StreamWriter(networkStream) { NewLine = "\n" }; // Ignore welcome message streamReader.ReadLine(); streamReader.ReadLine(); streamReader.ReadLine(); streamReader.ReadLine(); StartResponseLoop(); TS3Models.Result result = TS3Helper.ParseResult(ReadAll(), false); if (result != null && result.ErrorId == 0) { ts3Client.CurrentHandlerId = Convert.ToInt32(result.GetFirstResult("schandlerid")); } return(true); } return(false); }
private void ParseNotification(TS3Models.Notifications notification, TS3Models.Result result) { switch (notification) { #region Client case TS3Models.Notifications.notifytextmessage: if (OnTextMessage != null) { OnTextMessage(new TS3Models.TextMessage() { Result = result, TargetMode = (TS3Models.TextMessageTargetMode)Convert.ToInt32(result.GetFirstResult("targetmode")), Msg = result.GetFirstResult("msg"), Target = Convert.ToInt32(result.GetFirstResult("target")), Invoker = new TS3Models.Client() { ClId = Convert.ToInt32(result.GetFirstResult("invokerid")), ClientNickname = result.GetFirstResult("invokername"), ClientUniqueIdentifier = result.GetFirstResult("invokeruid"), } }); } break; case TS3Models.Notifications.notifyclientpoke: if (OnClientPoke != null) { OnClientPoke(new TS3Models.ClientPoke() { Result = result, Msg = result.GetFirstResult("msg"), Invoker = new TS3Models.Client() { ClId = Convert.ToInt32(result.GetFirstResult("invokerid")), ClientNickname = result.GetFirstResult("invokername"), ClientUniqueIdentifier = result.GetFirstResult("invokeruid"), } }); } break; case TS3Models.Notifications.notifycliententerview: if (OnClientEnterView != null) { OnClientEnterView(new TS3Models.ClientEnterView() { Result = result, CfId = Convert.ToInt32(result.GetFirstResult("cfid")), CtId = Convert.ToInt32(result.GetFirstResult("ctid")), Reason = (TS3Models.ReasonIdentifier)Convert.ToInt32(result.GetFirstResult("reasonid")), Client = new TS3Models.Client().FillWithResult(result) }); } break; case TS3Models.Notifications.notifyclientleftview: if (OnClientLeftView != null) { OnClientLeftView(new TS3Models.ClientLeftView() { Result = result, CfId = Convert.ToInt32(result.GetFirstResult("cfid")), CtId = Convert.ToInt32(result.GetFirstResult("ctid")), Reason = (TS3Models.ReasonIdentifier)Convert.ToInt32(result.GetFirstResult("reasonid")), Invoker = new TS3Models.Client() { ClId = Convert.ToInt32(result.GetFirstResult("invokerid")), ClientNickname = result.GetFirstResult("invokername"), ClientUniqueIdentifier = result.GetFirstResult("invokeruid"), }, ReasonMsg = result.GetFirstResult("reasonmsg"), BanTime = Convert.ToInt32(result.GetFirstResult("bantime")), ClId = Convert.ToInt32(result.GetFirstResult("clid")) }); } break; case TS3Models.Notifications.notifyclientmoved: if (OnClientMoved != null) { List <TS3Models.Client> clients = new List <TS3Models.Client>(); foreach (Dictionary <string, string> list in result.ResultsList) { string id = result.GetResultByList(list, "clid"); if (!string.IsNullOrEmpty(id)) { clients.Add(new TS3Models.Client() { ClId = Convert.ToInt32(id) }); } } OnClientMoved(new TS3Models.ClientMoved() { Result = result, Channel = new TS3Models.Channel() { CId = Convert.ToInt32(result.GetFirstResult("ctid")) }, Reason = (TS3Models.ReasonIdentifier)Convert.ToInt32(result.GetFirstResult("reasonid")), Invoker = new TS3Models.Client() { ClId = Convert.ToInt32(result.GetFirstResult("invokerid")), ClientNickname = result.GetFirstResult("invokername"), ClientUniqueIdentifier = result.GetFirstResult("invokeruid"), }, Clients = clients }); } break; #endregion #region Channel case TS3Models.Notifications.notifychannelmoved: if (OnChannelMoved != null) { OnChannelMoved(new TS3Models.ChannelMoved() { Result = result, Reason = (TS3Models.ReasonIdentifier)Convert.ToInt32(result.GetFirstResult("reasonid")), Invoker = new TS3Models.Client() { ClId = Convert.ToInt32(result.GetFirstResult("invokerid")), ClientNickname = result.GetFirstResult("invokername"), ClientUniqueIdentifier = result.GetFirstResult("invokeruid"), }, Channel = new TS3Models.Channel().FillWithResult(result) }); } break; case TS3Models.Notifications.notifychanneledited: if (OnChannelEdited != null) { OnChannelEdited(new TS3Models.ChannelEdited() { Result = result, Reason = (TS3Models.ReasonIdentifier)Convert.ToInt32(result.GetFirstResult("reasonid")), Invoker = new TS3Models.Client() { ClId = Convert.ToInt32(result.GetFirstResult("invokerid")), ClientNickname = result.GetFirstResult("invokername"), ClientUniqueIdentifier = result.GetFirstResult("invokeruid"), }, Channel = new TS3Models.Channel().FillWithResult(result) }); } break; case TS3Models.Notifications.notifychannelcreated: if (OnChannelCreated != null) { OnChannelCreated(new TS3Models.ChannelCreated() { Result = result, Invoker = new TS3Models.Client() { ClId = Convert.ToInt32(result.GetFirstResult("invokerid")), ClientNickname = result.GetFirstResult("invokername"), ClientUniqueIdentifier = result.GetFirstResult("invokeruid"), }, Channel = new TS3Models.Channel().FillWithResult(result) }); } break; case TS3Models.Notifications.notifychanneldeleted: if (OnChannelDeleted != null) { OnChannelDeleted(new TS3Models.ChannelDeleted() { Result = result, Invoker = new TS3Models.Client() { ClId = Convert.ToInt32(result.GetFirstResult("invokerid")), ClientNickname = result.GetFirstResult("invokername"), ClientUniqueIdentifier = result.GetFirstResult("invokeruid"), }, Channel = new TS3Models.Channel().FillWithResult(result) }); } break; #endregion #region Server case TS3Models.Notifications.notifyserveredited: if (OnServerEdited != null) { OnServerEdited(new TS3Models.ServerEdited() { Result = result, Reason = (TS3Models.ReasonIdentifier)Convert.ToInt32(result.GetFirstResult("reasonid")), Invoker = new TS3Models.Client() { ClId = Convert.ToInt32(result.GetFirstResult("invokerid")), ClientNickname = result.GetFirstResult("invokername"), ClientUniqueIdentifier = result.GetFirstResult("invokeruid"), }, VirtualServer = new TS3Models.VirtualServer().FillWithResult(result) }); } break; case TS3Models.Notifications.notifyservergrouplist: if (OnServerGroupList != null) { List <TS3Models.ServerGroup> serverGroups = new List <TS3Models.ServerGroup>(); foreach (Dictionary <string, string> res in result.ResultsList) { serverGroups.Add(new TS3Models.ServerGroup().FillWithResult(result, res)); } OnServerGroupList(serverGroups); } break; #endregion } }