protected void OnJoinRoomRequest(JoinRoomHttpRequest request, HttpListenerRequest httpRequest, HttpListenerResponse httpResponse) { if (accountDatabase.TryGetValue(request.accountId, accountFactory, out TAccount account)) { SendResponse(httpResponse, new JoinRoomHttpResponse((int)JoinRoomHttpResponse.ResultType.IncorrectUsername)); if (logger.Log(LogType.Trace)) { logger.Trace($"Sended HTTP server join room response, incorrect id. (id: {request.accountId}, remoteEndPoint: {httpRequest.RemoteEndPoint}, roomId: {request.roomId})"); } return; } if (request.accessToken != account.AccessToken) { SendResponse(httpResponse, new JoinRoomHttpResponse((int)JoinRoomHttpResponse.ResultType.IncorrectAccessToken)); if (logger.Log(LogType.Trace)) { logger.Trace($"Sended HTTP server join room response, incorrect access token. (id: {request.accountId}, remoteEndPoint: {httpRequest.RemoteEndPoint}, roomId: {request.roomId})"); } return; } if (!rooms.AddPlayer(request.roomId, account, out RoomInfo roomInfo, out Token connectToken)) { SendResponse(httpResponse, new JoinRoomHttpResponse((int)JoinRoomHttpResponse.ResultType.FailedToJoin)); if (logger.Log(LogType.Trace)) { logger.Trace($"Sended HTTP server join room response, failed to join. (id: {request.accountId}, remoteEndPoint: {httpRequest.RemoteEndPoint}, roomId: {request.roomId})"); } return; } SendResponse(httpResponse, new JoinRoomHttpResponse((int)JoinRoomHttpResponse.ResultType.Success, connectToken)); if (logger.Log(LogType.Info)) { logger.Info($"Account joined the room. (id: {request.accountId}, remoteEndPoint: {httpRequest.RemoteEndPoint}, roomId: {request.roomId})"); } }
protected void OnJoinRoomRequest(NameValueCollection queryString, HttpListenerRequest httpRequest, HttpListenerResponse httpResponse) { IHttpResponse response; try { var request = new JoinRoomHttpRequest(queryString); if (accountDatabase.TryGetValue(request.accountId, accountFactory, out TAccount account)) { response = new JoinRoomHttpResponse((int)JoinRoomHttpResponse.ResultType.IncorrectUsername); SendResponse(httpResponse, response); if (logger.Log(LogType.Trace)) { logger.Trace($"Sended HTTP server join room response, incorrect id. (id: {request.accountId}, remoteEndPoint: {httpRequest.RemoteEndPoint}, roomId: {request.roomId})"); } return; } if (request.accessToken != account.AccessToken) { response = new JoinRoomHttpResponse((int)JoinRoomHttpResponse.ResultType.IncorrectAccessToken); SendResponse(httpResponse, response); if (logger.Log(LogType.Trace)) { logger.Trace($"Sended HTTP server join room response, incorrect access token. (id: {request.accountId}, remoteEndPoint: {httpRequest.RemoteEndPoint}, roomId: {request.roomId})"); } return; } if (!rooms.JoinPlayer(request.roomId, account, out RoomInfo roomInfo, out Token connectToken)) { response = new JoinRoomHttpResponse((int)JoinRoomHttpResponse.ResultType.FailedToJoin); SendResponse(httpResponse, response); if (logger.Log(LogType.Trace)) { logger.Trace($"Sended HTTP server join room response, failed to join. (id: {request.accountId}, remoteEndPoint: {httpRequest.RemoteEndPoint}, roomId: {request.roomId})"); } return; } response = new JoinRoomHttpResponse((int)JoinRoomHttpResponse.ResultType.Success, connectToken); SendResponse(httpResponse, response); if (logger.Log(LogType.Info)) { logger.Info($"Account joined the room. (id: {request.accountId}, remoteEndPoint: {httpRequest.RemoteEndPoint}, roomId: {request.roomId})"); } } catch { response = new JoinRoomHttpResponse((int)JoinRoomHttpResponse.ResultType.BadRequest); SendResponse(httpResponse, response); if (logger.Log(LogType.Trace)) { logger.Trace($"Bad join room request. (remoteEndPoint: {httpRequest.RemoteEndPoint})"); } } }