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
});
}
}