예제 #1
0
 public IActionResult GetRoomsWithUser(IDMessage message)
 {
     if (IsLoginValid(message))
     {
         return(Ok(roomRepository.GetRoomsWithUser(message.ID)));
     }
     return(BadRequest());
 }
예제 #2
0
 public async Task <IActionResult> GetFilesByUser(IDMessage message)
 {
     if (IsLoginValid(message))
     {
         return(Ok(await repository.GetFilesByUser(message.ID)));
     }
     return(BadRequest());
 }
예제 #3
0
 public async Task <IActionResult> GetNewMessagesForUser(IDMessage message)
 {
     if (IsLoginValid(message))
     {
         return(Ok(await repo.GetNewMessagesForUser(message.ID)));
     }
     return(BadRequest());
 }
예제 #4
0
 public IActionResult GetRelAboutUser(IDMessage message)
 {
     if (IsLoginValid(message))
     {
         return(Ok(relationshipRepository.GetRelAboutUser(message.ID)));
     }
     return(BadRequest());
 }
예제 #5
0
 public IActionResult GetUsersInRoom(IDMessage message)
 {
     if (IsLoginValid(message))
     {
         var users = roomRepository.GetUsersInRoom(message.ID);
         return(Ok(users));
     }
     return(BadRequest());
 }
예제 #6
0
 public IActionResult RemoveRel(IDMessage message)
 {
     if (IsLoginValid(message))
     {
         relationshipRepository.RemoveRel(message.ID);
         return(Ok());
     }
     return(BadRequest());
 }
예제 #7
0
        public IActionResult RemoveRoom(IDMessage message)
        {
            if (IsLoginValid(message))
            {
                roomRepository.RemoveRoom(message.ID);

                return(Ok());
            }
            return(BadRequest());
        }
예제 #8
0
        public async Task <IActionResult> RemoveMessage(IDMessage message)
        {
            if (IsLoginValid(message))
            {
                await repo.RemoveMessage(message.ID);

                return(Ok());
            }
            return(BadRequest());
        }
예제 #9
0
 public IActionResult RemoveUser(IDMessage message)
 {
     if (IsLoginValid(message))
     {
         if (UserRepository.RemoveUser(message.ID))
         {
             return(Ok());
         }
         else
         {
             return(BadRequest());
         }
     }
     return(BadRequest());
 }
예제 #10
0
        public void Process()
        {
            try
            {
                Stream = client.GetStream();    //Gets stream

                InitializeUserData();           //Gets userData

                while (true)
                {
                    try
                    {
                        var message = GetMessage();  //While stream is available lets read stream
                        if (message.Length > 0)      //If message is not empty
                        {
                            var msg = IMessageDeserializable.Parse(message);

                            switch (msg.PostCode)
                            {
                            case { } i when(i >= 1 && i <= 4):
                            {
                                server.Notification();
                                server.BroadcastMessage(msg, Id);       //If this is regular message then broadcast it
                                break;
                            }

                            case 6:                                             //if client updates his UserData
                            {
                                var userDataMessage = msg as UserDataMessage;
                                if (userDataMessage?.Method == Method.Send)
                                {
                                    user = new User(userDataMessage?.Sender.UserName, userDataMessage.Sender.Color);     //Update UserData on server
                                }
                                break;
                            }

                            case 7:
                            {
                                var idMessage = msg as IDMessage;
                                if (idMessage?.Method == Method.Get)
                                {
                                    var sendMessage = new IDMessage(Method.Send, Id);
                                    Stream.Write(sendMessage.Serialize());
                                }

                                break;
                            }

                            case 9:                                     //If user Disconnecting
                            {
                                server.BroadcastMessage(msg, Id);       //Broadcast it
                                server.RemoveConnection(Id);            //And remove connection
                                break;
                            }

                            default:
                            {
                                continue;
                            }
                            }
                        }
                    }
                    catch
                    {
                        var disconnectionMsg = new ConnectionMessage(Connection.Disconnect, user);          //If there is error, disconnect this user
                        server.BroadcastMessage(disconnectionMsg, Id);
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                server.RemoveConnection(Id);
                Close();
            }
        }
예제 #11
0
        private void SendId()
        {
            var msg = new IDMessage(Method.Send, Id);

            Stream.Write(msg.Serialize());
        }