CommandMessageContainer IFileSelector.GetDataFromFile() { var transportContainer = new CommandMessageContainer(CommandType.SendFile); var ofd = new OpenFileDialog { Multiselect = false }; if (DialogResult.OK == (new Invoker(ofd).Invoke())) { var fileName = ofd.FileName; var byteData = File.ReadAllBytes(fileName); var byteMessage = Convert.ToBase64String(byteData); var wordArray = fileName.Split('.'); var extension = wordArray[wordArray.Length - 1]; transportContainer.Args["File"] = byteMessage; transportContainer.Args["Extension"] = extension; } else { Console.WriteLine("File choosing failed."); } return(transportContainer); }
void ISender.Here() { var transportContainer = new CommandMessageContainer(CommandType.Here); var transportContainerString = JsonConvert.SerializeObject(transportContainer); var byteString = Encoding.UTF8.GetBytes(transportContainerString); stream.Write(byteString, 0, byteString.Length); }
void ISender.SendFile(CommandMessageContainer transportContainer, string recipientName = null) { transportContainer.Args["Recipient"] = recipientName; var transportContainerString = JsonConvert.SerializeObject(transportContainer); var byteString = Encoding.UTF8.GetBytes(transportContainerString); stream.Write(byteString, 0, byteString.Length); }
void IChatCore.CommandHandle(CommandMessageContainer commandMessage) { switch (commandMessage.Command) { case CommandType.Start: if (commandMessage.Args.ContainsKey("AccessToken")) { accessTokenStorage.Set(commandMessage.Args["AccessToken"].ToString()); } break; case CommandType.SetUsername: if (commandMessage.Args.ContainsKey("Name") && !string.IsNullOrEmpty(commandMessage.Args["Name"].ToString())) { displayMessageService.Write($"Username successfully changed. Your current username: {commandMessage.Args["Name"].ToString()}"); } else { displayMessageService.Write("Enter the name after /setusername command."); } break; case CommandType.Here: if (commandMessage.Args.ContainsKey("Users")) { displayMessageService.Write(commandMessage.Args["Users"].ToString()); } break; case CommandType.SendFile: if (commandMessage.Args.ContainsKey("File") && commandMessage.Args.ContainsKey("Extension")) { var byteString = Convert.FromBase64String(commandMessage.Args["File"].ToString()); var filename = $"{Guid.NewGuid().ToString()}.{commandMessage.Args["Extension"].ToString()}"; File.WriteAllBytes(filename, byteString); } break; case CommandType.Ping: sender.Pong(commandMessage.Args); break; case CommandType.Pong: if (commandMessage.Args.ContainsKey("ID") && Int32.Parse(commandMessage.Args["ID"].ToString()) == pingIdGenerator.CurrentPingIdGenerator) { pingIdGenerator.PingAnswered = true; } break; default: break; } }
void ISender.SetUsername(string name) { var transportContainer = new CommandMessageContainer(CommandType.SetUsername); transportContainer.Args["Name"] = name; var transportContainerString = JsonConvert.SerializeObject(transportContainer); var byteString = Encoding.UTF8.GetBytes(transportContainerString); stream.Write(byteString, 0, byteString.Length); }
void ISender.AuthorizeRequest() { var transportContainer = new CommandMessageContainer(CommandType.Start); transportContainer.Args["AccessToken"] = accessTokenStorage.Get(); var transportContainerString = JsonConvert.SerializeObject(transportContainer); var byteString = Encoding.UTF8.GetBytes(transportContainerString); stream.Write(byteString, 0, byteString.Length); }
void ISender.Ping(ClientConnection connection, int ID) { var transportContainer = new CommandMessageContainer(CommandType.Ping); transportContainer.Args["ID"] = ID; var transportContainerJsonString = JsonConvert.SerializeObject(transportContainer); var byteString = Encoding.UTF8.GetBytes(transportContainerJsonString); connection.Stream.Write(byteString, 0, byteString.Length); logger.Write(transportContainerJsonString); }
void ISender.StartCallback(ClientConnection connection) { var transportContainer = new CommandMessageContainer(CommandType.Start); transportContainer.Args["AccessToken"] = connection.UserObject.AccessToken; var transportContainerJsonString = JsonConvert.SerializeObject(transportContainer); var byteString = Encoding.UTF8.GetBytes(transportContainerJsonString); connection.Stream.Write(byteString, 0, byteString.Length); logger.Write(transportContainerJsonString); }
void ISender.SetUsernameCallback(ClientConnection connection, string username) { var transportContainer = new CommandMessageContainer(CommandType.SetUsername); transportContainer.Args["Name"] = username; var transportContainerJsonString = JsonConvert.SerializeObject(transportContainer); var byteString = Encoding.UTF8.GetBytes(transportContainerJsonString); connection.Stream.Write(byteString, 0, byteString.Length); logger.Write(transportContainerJsonString); }
void ISender.FileToAll(ClientConnection connection, CommandMessageContainer transportContainer) { var connections = connectionsService.Connections; var transportContainerJson = JsonConvert.SerializeObject(transportContainer); var byteString = Encoding.UTF8.GetBytes(transportContainerJson); foreach (var connectionItem in connections) { if (connectionItem != connection) { connectionItem.Stream.Write(byteString, 0, byteString.Length); } } logger.Write("File sended."); }
void ISender.FileToRecipient(string recipientName, CommandMessageContainer transportContainer) { var recipientConnections = connectionsService.Connections .Where(u => u.UserObject.Name == recipientName); var transportContainerJson = JsonConvert.SerializeObject(transportContainer); var byteString = Encoding.UTF8.GetBytes(transportContainerJson); foreach (var recipientConnection in recipientConnections) { recipientConnection.Stream.Write(byteString, 0, byteString.Length); } logger.Write("File sended."); }
void ISender.HereCallback(ClientConnection connection, string[] usersNames) { var usersNamesString = string.Join(",", usersNames); logger.Write(usersNamesString); var transportContainer = new CommandMessageContainer(CommandType.Here); transportContainer.Args["Users"] = usersNamesString; var transportContainerJsonString = JsonConvert.SerializeObject(transportContainer); var byteString = Encoding.UTF8.GetBytes(transportContainerJsonString); connection.Stream.Write(byteString, 0, byteString.Length); logger.Write(transportContainerJsonString); }
void ISender.Ping() { if (pingIdGenerator.PingAnswered) { pingIdGenerator.PingAnswered = false; var transportContainer = new CommandMessageContainer(CommandType.Ping); transportContainer.Args["ID"] = pingIdGenerator.NextPingIdGenerator; var transportContainerString = JsonConvert.SerializeObject(transportContainer); var byteString = Encoding.UTF8.GetBytes(transportContainerString); stream.Write(byteString, 0, byteString.Length); } else { disconnector.Disconnect(); } }
void ISender.BroadcastFile(ClientConnection connection, JObject Args) { var transportContainer = new CommandMessageContainer(CommandType.SendFile); if (Args != null && Args.ContainsKey("Extension") && Args.ContainsKey("File")) { transportContainer.Args["File"] = Args["File"].ToString(); transportContainer.Args["Extension"] = Args["Extension"].ToString(); } else { self.ServerNotification(connection, "Incorrect Args."); return; } if (Args.ContainsKey("Recipient")) { if (self.RecipientIsValid(Args)) { self.FileToRecipient(Args["Recipient"].ToString(), transportContainer); var recipientId = connectionsService.Connections.FirstOrDefault(u => u.UserObject.Name == Args["Recipient"].ToString()).UserObject.ID; dataStorage.SaveFile(connection.UserObject.ID, recipientId, Convert.FromBase64String(Args["File"].ToString()), Args["Extension"].ToString()); } } else { self.FileToAll(connection, transportContainer); dataStorage.SaveFile(connection.UserObject.ID, 0, Convert.FromBase64String(Args["File"].ToString()), Args["Extension"].ToString()); } }