public async Task GetGameConnection()

in Runtime/Core/ApiGatewayManagement/ApiGateway.cs [122:188]


        public async Task<GetGameConnectionResponse> GetGameConnection(GetGameConnectionRequest request)
        {
            try
            {
                if (!IsValid(request))
                {
                    return Response.Fail(new GetGameConnectionResponse
                    {
                        ErrorCode = ErrorCode.InvalidParameters
                    });
                }

                (bool success, string errorCode, string token) =
                    _jwtTokenExpirationCheck.RefreshTokenIfExpired(request, _userIdentity);

                if (!success)
                {
                    return Response.Fail(new GetGameConnectionResponse
                    {
                        ErrorCode = errorCode
                    });
                }

                (HttpStatusCode statusCode, string body) response = await _httpWrapper.Post(
                        request.ApiGatewayEndpoint,
                        token,
                        "get_game_connection"
                    );

                if (response.statusCode == HttpStatusCode.OK)
                {
                    GetGameConnectionResult result = JsonConvert.DeserializeObject<GetGameConnectionResult>
                        (response.body);

                    return Response.Ok(new GetGameConnectionResponse
                    {
                        Ready = true,
                        IpAddress = result.IpAddress,
                        DnsName = result.DnsName,
                        Port = result.Port,
                        PlayerSessionId = result.PlayerSessionId,
                        IdToken = token
                    });
                }

                if (response.statusCode == HttpStatusCode.NoContent)
                {
                    return Response.Ok(new GetGameConnectionResponse { IdToken = token });
                }

                return Response.Fail(new GetGameConnectionResponse
                {
                    ErrorCode = ErrorCode.ApiGatewayRequestError,
                    ErrorMessage = FormatRequestError(response)
                });
            }
            catch (Exception ex)
            {
                Logger.LogError(ex, ex.Message);

                return Response.Fail(new GetGameConnectionResponse
                {
                    ErrorCode = ErrorCode.UnknownError,
                    ErrorMessage = ex.Message
                });
            }
        }