Exemplo n.º 1
0
        private async void CallRequestListener()
        {
            bool acceptCall = false;

            using (var tcpClient = await tcpListener.AcceptTcpClientAsync()) {
                var ns     = tcpClient.GetStream();
                var reader = new StreamReader(ns, Encoding.UTF8);
                var writer = new StreamWriter(ns, Encoding.UTF8);
                writer.AutoFlush = true;
                var json = await reader.ReadLineAsync();

                JsonClassResponse <UserInfo> incomingCall
                                  = JsonConvert.DeserializeObject <JsonClassResponse <UserInfo> >(json);
                send_to_address   = IPAddress.Parse(incomingCall.Response.ActualIP);
                sending_end_point = new IPEndPoint(send_to_address, listenPort);
                acceptCall        = true;
                if (acceptCall)
                {
                    writer.WriteLine(JsonConvert.SerializeObject(new JsonClassResponse <string>()
                    {
                        RID         = incomingCall.RID,
                        RequestCode = (int)RequestsCodes.OK,
                        Response    = RETURN_OK
                    }));
                    StartSendUDP();
                    StartListenUDP();
                }
            }
        }
Exemplo n.º 2
0
        public static string TakeClientRequest(JsonClassRequest jsonRequest, IPAddress ipaddress)
        {
            string login     = jsonRequest.Parameters[0];
            string password  = jsonRequest.Parameters[1];
            var    userLogin = userDatabaseOperations.TryToLoginUser(login, password, ipaddress.ToString());
            JsonClassResponse <UserLogin> response = new JsonClassResponse <UserLogin> {
                RID         = jsonRequest.RID,
                RequestCode = (int)RequestsCodes.WELCOME,
                Response    = userLogin,
            };

            return(JsonConvert.SerializeObject(response));
        }
Exemplo n.º 3
0
        /// <summary>
        /// Przetważa żądanie klietnta wywołując odpowiednią metodę z UserDatabaseOperations.
        /// </summary>
        /// <param name="IpAddres">Adres IP klienta</param>
        /// <param name="data">dane</param>
        public static string TakeClientRequest(JsonClassRequest jsonRequest)
        {
            var userInfoNO_Response = JsonConvert.SerializeObject(new JsonClassResponse <UserInfo>()
            {
                RID         = jsonRequest.RID,
                RequestCode = (int)RequestsCodes.NO,
                Response    = null
            });

            requestCode = (RequestsCodes)jsonRequest.RequestCode;
            switch (requestCode)
            {
            case RequestsCodes.REGISTER: {
                string login        = jsonRequest.Parameters[0];
                string firstName    = jsonRequest.Parameters[1];
                string secondName   = jsonRequest.Parameters[2];
                string hashPassword = jsonRequest.Parameters[3];
                if (userDatabaseOperations.TryRegisterNewUser(firstName, secondName, login, hashPassword, ""))
                {
                    return(JsonConvert.SerializeObject(new JsonClassResponse <string> {
                            RID = jsonRequest.RID,
                            RequestCode = (int)RequestsCodes.OK,
                            Response = UserDatabaseOperations.RETURN_OK
                        }));
                }
                else
                {
                    return(JsonConvert.SerializeObject(new JsonClassResponse <string> {
                            RID = jsonRequest.RID,
                            RequestCode = (int)RequestsCodes.NO,
                            Response = UserDatabaseOperations.RETURN_NO
                        }));
                }
            }

            case RequestsCodes.HELLO: {
                string login     = jsonRequest.Parameters[0];
                string password  = jsonRequest.Parameters[1];
                var    userLogin = userDatabaseOperations.TryToLoginUser(login, password);
                JsonClassResponse <UserLogin> response = new JsonClassResponse <UserLogin> {
                    RID         = jsonRequest.RID,
                    RequestCode = (int)RequestsCodes.WELCOME,
                    Response    = userLogin,
                };
                return(JsonConvert.SerializeObject(response));
            }

            case RequestsCodes.ADD_FRIEND_TO_LIST: {
            }
            break;

            case RequestsCodes.CHANE_USER_DATA:
                break;

            case RequestsCodes.CHANGE_USER_PASSWORD:
                break;

            case RequestsCodes.LOOK_FOR_USER_BY_NAME:
                break;

            case RequestsCodes.LOOK_FOR_USER_BY_LOGIN: {
                string login        = jsonRequest.Parameters[0];
                var    user         = userDatabaseOperations.LookForUser(login);
                int    responseCode = 0;
                if (user != null)
                {
                    responseCode = (int)RequestsCodes.OK;
                }
                else
                {
                    responseCode = (int)RequestsCodes.NO;
                }

                JsonClassResponse <UserInfo> response = new JsonClassResponse <UserInfo> {
                    RID         = jsonRequest.RID,
                    RequestCode = responseCode,
                    Response    = user,
                };
            }
            break;

            case RequestsCodes.LOGOUT: {
                Guid sessionId = new Guid();
                Guid.TryParse(jsonRequest.Parameters[0], out sessionId);
                int userId = 0;
                int.TryParse(jsonRequest.Parameters[1], out userId);
                int friendId = 0;
                int.TryParse(jsonRequest.Parameters[2], out friendId);
                userDatabaseOperations.LogoutUser(sessionId, userId);
            }
            break;

            case RequestsCodes.WELCOME:
                break;

            case RequestsCodes.CALL: {
                Guid sessionId = new Guid();
                Guid.TryParse(jsonRequest.Parameters[0], out sessionId);
                int userId = 0;
                int.TryParse(jsonRequest.Parameters[1], out userId);
                int friendId = 0;
                int.TryParse(jsonRequest.Parameters[2], out friendId);

                UserInfo friend = userDatabaseOperations.CallToUser(sessionId, userId, friendId);
                if (friend != null)
                {
                    if (friend.ActualIP != UserDatabaseOperations.RETURN_NO)
                    {
                        var user = userDatabaseOperations.FindOneUser(sessionId, userId);
                        JsonClassResponse <UserInfo> jsonResponse = new JsonClassResponse <UserInfo> {
                            RID         = jsonRequest.RID,
                            RequestCode = (int)RequestsCodes.RINGING,
                            Response    = UserInfo.Convert(user)
                        };
                        var friendResponse = Ring(friend.ActualIP, ClientPort, JsonConvert.SerializeObject(jsonResponse));
                        if (friendResponse == (int)RequestsCodes.OK)
                        {
                            return(JsonConvert.SerializeObject(new JsonClassResponse <UserInfo>()
                                {
                                    RID = jsonRequest.RID,
                                    RequestCode = (int)RequestsCodes.OK,
                                    Response = friend
                                }));
                        }
                        else
                        {
                            return(userInfoNO_Response);
                        }
                    }
                    else
                    {
                        return(userInfoNO_Response);
                    }

                    //JsonClassResponse<UserInfo> jsonFriendResponse = JsonConvert.DeserializeObject<JsonClassResponse<UserInfo>>(friendResponse);
                    //if(jsonFriendResponse.RequestCode == (int)RequestsCodes.OK) {
                    //    return friendResponse;
                    //}
                    //else {
                    //    return
                    //}
                }
                else
                {
                    JsonClassResponse <UserInfo> jsonNOResponse = new JsonClassResponse <UserInfo> {
                        RID         = jsonRequest.RID,
                        RequestCode = (int)RequestsCodes.RINGING,
                        Response    = null
                    };
                    return(JsonConvert.SerializeObject(jsonNOResponse));
                }
            }

            case RequestsCodes.RINGING:
                break;

            case RequestsCodes.OK:
                break;

            case RequestsCodes.BYE:
                break;

            case RequestsCodes.NO:
                break;

            default:
                break;
            }
            return("dd");
        }