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(); } } }
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)); }
/// <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"); }