public async Task <GenericResponse <EliteStatsResponse> > GetStats(string gameUsername) { // Get corresponding player GenericResponse <TUserGame> eliteGame = await _userGameDataAccess.GetUserGame("elite", gameUsername); if (!eliteGame.Success) { return(new GenericResponse <EliteStatsResponse>($"{gameUsername} not found in the database", null)); } // First try to get stats from EDSM GenericResponse <EdsmResponse> edsmStats = await _eliteDataAccess.GetEdsmStatsFromSite(gameUsername); if (edsmStats.Success) { await _eliteDataAccess.UpdateCache(edsmStats.Result, eliteGame.Result); return(new GenericResponse <EliteStatsResponse>(edsmStats.Result.ConvertToResponse())); } else { edsmStats = await _eliteDataAccess.GetEdsmStatsFromCache(gameUsername); } // Response if (edsmStats.Success) { return(new GenericResponse <EliteStatsResponse>(edsmStats.Result.ConvertToResponse())); } else { return(new GenericResponse <EliteStatsResponse>(edsmStats.ErrorMessage, edsmStats.Exception)); } }
public async Task <GenericResponse <Gw2StatsResponse> > GetStats(string gameUsername) { // Get corresponding player GenericResponse <TUserGame> gw2Game = await _userGameDataAccess.GetUserGame("Gw2", gameUsername); if (!gw2Game.Success) { return(new GenericResponse <Gw2StatsResponse>($"{gameUsername} not found in the database", null)); } // First try to get stats from EDSM GenericResponse <Gw2StatsResponse> gw2Stats = await _gw2DataAccess.GetGw2StatsFromSite(gameUsername, gw2Game.Result.ApiKey); if (gw2Stats.Success) { await _gw2DataAccess.UpdateCache(gw2Stats.Result, gw2Game.Result); return(new GenericResponse <Gw2StatsResponse>(gw2Stats.Result)); } else { gw2Stats = await _gw2DataAccess.GetGw2StatsFromCache(gameUsername); } // Response if (gw2Stats.Success) { return(new GenericResponse <Gw2StatsResponse>(gw2Stats.Result)); } else { return(new GenericResponse <Gw2StatsResponse>(gw2Stats.ErrorMessage, gw2Stats.Exception)); } }